From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 09:56:36 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 09:56:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSN5Y-0001L5-BP; Mon, 02 Mar 2015 09:56:36 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YSN5W-0001L0-3H
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 09:56:34 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	3E/63-03219-1D334F45; Mon, 02 Mar 2015 09:56:33 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-31.messagelabs.com!1425290189!12192216!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31381 invoked from network); 2 Mar 2015 09:56:30 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 09:56:30 -0000
X-IronPort-AV: E=Sophos;i="5.09,674,1418083200"; d="scan'208,217";a="32596133"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Christian Refvik <christian.refvik@onlive.com>, Fabio Fantoni
	<fabio.fantoni@m2r.biz>
Thread-Topic: [win-pv-devel] Building Windows PV Drivers - Fails	with	Static
	Driver Verifier
Thread-Index: AQHQUTjLD/gHi0FzYU2h67kO3BcOMZ0Cx3FAgACtaQCAAM49UIABHecAgAOZ5jA=
Date: Mon, 2 Mar 2015 09:56:28 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025821129@AMSPEX01CL01.citrite.net>
References: <B4DC7AAB07005D4DA887F0BE517884F2A32AA9@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0257E4607@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A33142@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0257F3CFC@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A38FE6@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02581C182@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A39789@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02581D9E6@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A3A114@mailbox02.onlive.corp>
In-Reply-To: <B4DC7AAB07005D4DA887F0BE517884F2A3A114@mailbox02.onlive.corp>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers -
	Fails	with	Static	Driver Verifier
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5806507494878055024=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============5806507494878055024==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Christian,

Your disk specs are using very dated format so I'm not sure what the toolst=
ack will do with them. Probably best use newer style and then check blkback=
 is coming up correctly, or perhaps use a qdisk backend (which is a bit slo=
wer but, being userspace, is a bit easier to monitor).

  Paul

From: Christian Refvik [mailto:christian.refvik@onlive.com]
Sent: 28 February 2015 03:53
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

I setup an LVM storage for the VM, but its on another physical volume than =
Dom0.

My HVM disk config looks something like this, which I'm assuming is pretty =
typical:

boot=3D "cd"
disk =3D [ 'phy:/dev/virtual_machines/windows_server_2012_r2_64bit,hdb,w' ,=
 'file:/home/user/virtual_machines/windows_server_2012_r2_64bit/server.iso,=
hda:cdrom,r' ]

The only thing I've thought is that there could be an issue with the Linux =
PV backend drivers that you are connecting to.  How can I confirm whether t=
hey are running successfully so that the Windows VM can connect?  Or is QEM=
U supposed to handle the backend PV drivers?

Thanks for your help,
Christian


From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Friday, February 27, 2015 2:00 AM
To: Christian Refvik; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  I probably don't need to dump. Looking at the log, you have a very specif=
ic failure: You have a bugcheck 0xED (UNMOUNTABLE_BOOT_VOLUME). (See https:=
//msdn.microsoft.com/en-us/library/windows/hardware/ff560355%28v=3Dvs.85%29=
.aspx for details). Parameter 2 tells me that the failure status code is C0=
000010, which is STATUS_INVALID_DEVICE_REQUEST. I'm not entirely sure what =
request this refers to, but in the log there are a lot of:

xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 27)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 4a)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 4b)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 14c)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 14d)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 24e)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 24f)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 350)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 351)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 452)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 453)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 554)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 555)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 656)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 657)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 758)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 759)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 83a)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 86b)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 86c)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 8ad)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 8ee)

which suggest that your storage backend is unhappy about something. As you =
can see the unsupported operation is a read, which is clearly going to be p=
retty fatal when it comes to accessing your boot disk. How are you setting =
up your VM's disk?

  Paul

From: Christian Refvik [mailto:christian.refvik@onlive.com]
Sent: 26 February 2015 22:32
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

I looked at the memory.dmp with windbg and can send you the file, if you'd =
like.  There didn't appear to be much, except the issue at the bottom:
Probably caused by : xenbus.sys ( xenbus!EvtchnUnmask+35 )

I'll try to rebuild the drivers with 'build.py checked nosdv' and see if th=
ere is more useful information.  I've attached the qemu log output using xe=
n_platform_log.

Please let me know if there is anything else.

Thanks,
Christian


From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Thursday, February 26, 2015 3:34 AM
To: Christian Refvik; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  Can you get a crash dump out? After the BSOD if you reboot into safe mode=
 (by hitting F8 a lot while the BIOS is running) then you should hopefully =
find a file called MEMORY.DMP in C:\WINDOWS. If you can put this somewhere =
I can get to it then I can probably diagnose the crash for you.
  Failing that, if you enable logging in QEMU (assuming you're using upstre=
am) by creating a file called 'events' somewhere containing the line:

xen_platform_log

..and then add the following line to your xl.cfg

device_model_args=3D[ "-trace", "events=3D/<path to wherever>/events" ]

...you should start seeing messages from the PV drivers in the qemu log and=
 when the BSOD occurs you should get a stack dump.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 25 February 2015 20:21
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Hi Paul and Fabio,

I haven't reported back, but I wanted to let you know what I did:


1.       All the Windows PV drivers build successfully with 'build.py free =
nosdv'

2.       Enabled Test Build

a.       Opened the command prompt as Administrator

b.      bcdedit.exe -set TESTSIGNING ON

c.       Reboot

3.       Installed XenBus and Reboot

4.       Installed XenIface and Reboot

When I installed either XenNet or XenVbd, this caused a hard crash on reboo=
t.  The way to work around this issue is to reboot into a Last Known Good c=
onfiguration and uninstall XenNet and XenVbd.  I do not know what the issue=
 is at this point.  I have updated to Xen 4.5 and I'm using CentOS 7 with a=
 Xen enabled kernel configuration.  My DomU is Windows 2012 R2.

Although I've enabled netbk and blkbk in the CentOS 7 kernel, how do I veri=
fy if these devices are successfully running in Dom0?

Thanks,
Christian

From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Monday, February 9, 2015 2:03 AM
To: Christian Refvik
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Hi Christian,

  The cert is a test cert so you'll also need to make sure testsigning is o=
n. It may be that dpinst is vetoing installation of a test signed boot star=
t driver unless testsigning has already been enabled (it certainly pops up =
a dialog warning of this if you don't use /C). I'll see if I can repro what=
 you're seeing though. There's probably more info on the failure in c:\wind=
ows\inf\setupapi.dev.log too.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 06 February 2015 23:10
To: Paul Durrant
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

Thanks - I'm disabling SDV and everything builds fine.  However, I can't in=
stall the Xenbus package on Windows 2012 Server R2.

c:\xenbits\pvdrivers\win\xenbus\xenbus\x64>dpinst /C

INFO:   Option set: dumping log info to console.
INFO:   Current working directory: 'c:\xenbits\pvdrivers\win\xenbus\xenbus\=
x64'
INFO:   Running on path 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64'
INFO:   No valid 'dpinst.xml' file provided.
INFO:   Found driver package: 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64\x=
enbus.inf'.
INFO:   Preinstalling 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64\xenbus.in=
f' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000247)
INFO:   Returning with code 0x80010000



Under Other Devices, there is a PCI Device in device manager which appears =
to be the XenBus:

Device PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\3&267a616a&2&18 was con=
figured.

Driver Name: null
Class Guid: {00000000-0000-0000-0000-000000000000}
Driver Date:
Driver Version:
Driver Provider:
Driver Section:
Driver Rank: 0x0
Matching Device Id:
Outranked Drivers:
Device Updated: false

I'm using Xen 4.2 and using the default upstream QEMU.  I've also installed=
 the PFX file c:\xenbits\pvdrivers\win\xenbus\src\xenbus.pfx to be sure tha=
t there is no issues validating the driver.

Any help would be appreciated.

Thanks,
Christian

From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Friday, February 6, 2015 1:55 AM
To: Christian Refvik
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  I'll have a look at the latest code. In general though SDV builds are a b=
it fragile. SDV has a tendency to leave log files locked causing weird fail=
ures on a fairly random basis. Unless you really want the SDV output I'd re=
commend building without it in the normal case. If you do want the output I=
 suggest only running it in a freshly cloned repo where it has never been r=
un before.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 06 February 2015 00:01
To: Paul Durrant
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: [win-pv-devel] Building Windows PV Drivers - Fails with Static Dri=
ver Verifier

Hi Paul,

Today I tried building the Xenbus drivers with 'build.py checked', but the =
build fails.  If I build without running SDV (Static Driver Verifier), ever=
ything is fine.   There are some warnings (as shown below) and the projects=
 in the solution are setup to treat warnings as errors.

What should I do to use the SDV to verify the PV drivers?  Is this a known =
issue and I should just disable SDV?

Thanks for your help,
Christian





C:\xenbits\pvdrivers\xenbus\vs2013\xen>msbuild.exe /m:1 /p:Configuration=3D=
"Windows 8 Release" /p:Platform=3D"x64" /t:"Build"  xen.vcxproj
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34003]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 2/5/2015 3:34:26 PM.
Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" on node 1 (Bui=
ld target(s)).
PrepareForBuild:
  Creating directory "..\xen\Windows8Release\x64\".
  Creating directory "..\Windows8Release\x64\".
  Creating directory "..\xen\Windows8Release\x64\xen.tlog\".
InitializeBuildStatus:
  Creating "..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild" because =
"AlwaysCreate" was specified.
_MASM:
  Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
  cmd.exe /C "C:\Users\christian.refvik\AppData\Local\Temp\tmp95adf46008a64=
d249a0db183cc77a012.cmd"
  ml64.exe /c /nologo /Zi /Fo"..\xen\Windows8Release\x64\hypercall_thunk.ob=
j" /W3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
_MASM:
Skipping target "_MASM" because all output files are up-to-date with respec=
t to the input files.
CustomBuildStep:
Skipping target "CustomBuildStep" because all output files are up-to-date w=
ith respect to the input files.
ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\CL.e=
xe /c /I"C:\Program Files (x86)\Windows Kits\8.1\\include\km" /I..\xen\Wind=
ows8Release\x64\ /Zi /nologo /Wall /WX /MP /Ox /Os /Oy- /D CODE_ANALYSIS /D=
 __x86_64__ /D "__MODULE__=3D\"XEN\"" /D POOL_NX_OPTIN=3D1 /D _WIN64 /D _AM=
D64_ /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 /D N=
TDDI_VERSION=3D0x06020000 /D _AMD64_ /GF /Gm- /Zp8 /GS /Gy /fp:precise
  registry.c
  driver.c
  event_channel.c
  grant_table.c
  hvm.c
  xen_version.c
  hypercall.c
  memory.c
  sched.c
  log.c
  bug_check.c
  module.c
  process.c
  acpi.c
  system.c
ResourceCompile:
  C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe /D _WIN64 /D _AMD6=
4_=3D1 /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 /D=
 NTDDI_VERSION=3D0x06020000 /l"0x0409" /I"C:\Program Files (x86)\Windows Ki=
ts\8.1\Include\UM" /I..\xen\Windows8Release\x64\ /nologo /fo"..\xen\Windows=
8Release\x64\xen.res" ..\..\src\xen\xen.rc
Link:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\link=
.exe /ERRORREPORT:QUEUE /OUT:"..\Windows8Release\x64\xen.sys" /VERSION:"6.3=
" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Win=
dows Kits\8.1\lib\win8\KM\x64/libcntpr.lib" "C:\Program Files (x86)\Windows=
 Kits\8.1\lib\win8\KM\x64/aux_klib.lib" "C:\Program Files (x86)\Windows Kit=
s\8.1\lib\win8\KM\x64\BufferOverflowFastFailK.lib" "C:\Pro
 ..\xen\Windows8Release\x64\xen.res
  ..\xen\Windows8Release\x64\registry.obj
  ..\xen\Windows8Release\x64\driver.obj
  ..\xen\Windows8Release\x64\event_channel.obj
  ..\xen\Windows8Release\x64\grant_table.obj
  ..\xen\Windows8Release\x64\hvm.obj
  ..\xen\Windows8Release\x64\xen_version.obj
  ..\xen\Windows8Release\x64\hypercall.obj
  ..\xen\Windows8Release\x64\memory.obj
  ..\xen\Windows8Release\x64\sched.obj
  ..\xen\Windows8Release\x64\log.obj
  ..\xen\Windows8Release\x64\bug_check.obj
  ..\xen\Windows8Release\x64\module.obj
  ..\xen\Windows8Release\x64\process.obj
  ..\xen\Windows8Release\x64\acpi.obj
  ..\xen\Windows8Release\x64\system.obj
     Creating library ..\Windows8Release\x64\xen.lib and object ..\Windows8=
Release\x64\xen.exp
  xen.vcxproj -> C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\=
x64\xen.sys
DriverTestSign:
  Sign Inputs: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x6=
4\xen.sys
  C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sh=
a1 "337D411D5F99F4EED21E8E88BF82CDC8AF3F64F5"
  Done Adding Additional Store
  Successfully signed: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Re=
lease\x64\xen.sys

  Certificate used for signing: issued to =3D XENBUS (TEST) and thumbprint =
=3D 337D411D5F99F4EED21E8E88BF82CDC8AF3F64F5
  Exported Certificate: ..\Windows8Release\x64\xen.cer
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(178): warning C6102: Usin=
g 'Length' from failed function call at line '175'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(368): warning C6102: Usin=
g 'Size' from failed function call at line '364'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(469): warning C6102: Usin=
g 'Size' from failed function call at line '465'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(602): warning C6102: Usin=
g 'Size' from failed function call at line '598'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(827): warning C6102: Usin=
g 'Size' from failed function call at line '823'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(899): warning C6102: Usin=
g 'Size' from failed function call at line '894'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
FinalizeBuildStatus:
  Deleting file "..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild".
  Touching "..\xen\Windows8Release\x64\xen.tlog\xen.lastbuildstate".
Done Building Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" =
(Build target(s)).

Build succeeded.

"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (Build target) (1) ->
(RunNativeCodeAnalysis target) ->
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(178): warning C6102: Us=
ing 'Length' from failed function call at line '175'. [C:\xenbits\pvdrivers=
\xenbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(368): warning C6102: Us=
ing 'Size' from failed function call at line '364'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(469): warning C6102: Us=
ing 'Size' from failed function call at line '465'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(602): warning C6102: Us=
ing 'Size' from failed function call at line '598'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(827): warning C6102: Us=
ing 'Size' from failed function call at line '823'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(899): warning C6102: Us=
ing 'Size' from failed function call at line '894'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]

    6 Warning(s)
    0 Error(s)

Time Elapsed 00:00:05.74

C:\xenbits\pvdrivers\xenbus\vs2013\xen>if errorlevel 1 goto error

C:\xenbits\pvdrivers\xenbus\vs2013\xen>exit 0
['vs2013', 'xen', 'sdv']
['vs2013', 'xen', 'sdv.temp']
['vs2013', 'xen', 'staticdv.job']
['vs2013', 'xen', 'refine.sdv']
['vs2013', 'xen', 'sdv-map.h']
vs2013\xen
['C:\\Users\\christian.refvik\\Development\\xenbits\\pvdrivers\\xenbus\\msb=
uild.bat']

C:\xenbits\pvdrivers\xenbus\vs2013\xen>call "C:\Program Files (x86)\Microso=
ft Visual Studio 12.0\VC\vcvarsall.bat" x86

C:\xenbits\pvdrivers\xenbus\vs2013\xen>msbuild.exe /m:1 /p:Configuration=3D=
"Windows 8 Release" /p:Platform=3D"x64" /t:"sdv" /p:Inputs=3D"/scan" xen.vc=
xproj
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34003]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 2/5/2015 3:34:32 PM.
Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" on node 1 (sdv=
 target(s)).
sdv:
  staticdv.exe /scan
  ---------------------------------------------------------------------
  Microsoft (R) Windows (R) Static Driver Verifier Version 4.0.500.1
  Copyright (C) Microsoft Corporation.  All rights reserved.
  ---------------------------------------------------------------------
  SDV is building for <Windows 8 Release|x64>
  SDV is building for <Windows 8 Release|x64>
  The call to "Build" failed.
EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: warni=
ng treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xenb=
us\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxp=
roj]

EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: warni=
ng treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xenb=
us\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxp=
roj]

  SDV exit code: 5
  SDV encountered errors when scanning the driver. Please ensure roletypes =
are present and/or consult SDV documentation.
C:\Program Files (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,=
9): error MSB3075: The command "staticdv.exe /scan" exited with code 5. Ple=
ase verify that you have sufficient rights to run this command. [C:\xenbits=
\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]
Done Building Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" =
(sdv target(s)) -- FAILED.

Build FAILED.

"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (sdv target) (1) ->
(sdv target) ->
  EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: war=
ning treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xe=
nbus\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]
  EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: war=
ning treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xe=
nbus\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]


"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (sdv target) (1) ->
(sdv target) ->
  C:\Program Files (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(6=
5,9): error MSB3075: The command "staticdv.exe /scan" exited with code 5. P=
lease verify that you have sufficient rights to run this command. [C:\xenbi=
ts\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]

    2 Warning(s)
    1 Error(s)

Time Elapsed 00:00:06.51

C:\xenbits\pvdrivers\xenbus\vs2013\xen>if errorlevel 1 goto error

C:\xenbits\pvdrivers\xenbus\vs2013\xen>exit 1
Traceback (most recent call last):
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 370, in <module>
    run_sdv('xen', driver, vs)
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 204, in run_sdv
    '/p:Inputs=3D"/scan"', os.path.join(vs, name))
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 124, in msbuild
    raise msbuild_failure(configuration)
__main__.msbuild_failure: 'Windows 8 Release'

C:\xenbits\pvdrivers\xenbus>


--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D054CF.26C320F0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:Verdana;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:0cm;
	margin-left:36.0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:windowtext;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle24
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle25
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-GB" link=3D"#0563C1" vlink=3D"#954F72" style=3D"tab-interv=
al:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D">Christian,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D">Your disk specs are using very dated format so
 I&#8217;m not sure what the toolstack will do with them. Probably best use=
 newer style and then check
<span class=3D"SpellE">blkback</span> is coming up correctly, or perhaps us=
e a <span class=3D"SpellE">
qdisk</span> backend (which is a bit slower but, being <span class=3D"Spell=
E">userspace</span>, is a bit easier to monitor).<o:p></o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=
=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quo=
t;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;;mso-ansi-language:EN-US">
 Christian Refvik [mailto:christian.refvik@onlive.com] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 28 February 2015 03:53=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> win-pv-devel@lists.xenpr=
oject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I setup an LVM storage for the VM, but its on another physical v=
olume than Dom0.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">My HVM disk config looks something like this, which I&#8217;m as=
suming is pretty typical:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">boot=3D &quot;cd&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">disk =3D [ 'phy:/dev/virtual_machines/windows_server_2012_r2_64b=
it,hdb,w' , 'file:/home/user/virtual_machines/windows_server_2012_r2_64bit/=
server.iso,hda:cdrom,r'
 ]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><a name=3D"_MailEndCompose"></a><font size=3D"2" col=
or=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.=
0pt;color:#1F497D;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">The only thing I&#8217;ve thought is that there could be an issu=
e with the Linux PV backend drivers that you are connecting
 to.&nbsp; How can I confirm whether they are running successfully so that =
the Windows VM can connect?&nbsp; Or is QEMU supposed to handle the backend=
 PV drivers?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks for your help,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Friday, February 27, 2=
015 2:00 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik; Fabio =
Fantoni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; I probably don&#8217;=
t need to dump. Looking at the log, you have a very specific failure: You h=
ave a bugcheck 0xED (UNMOUNTABLE_BOOT_VOLUME). (See
<a href=3D"https://msdn.microsoft.com/en-us/library/windows/hardware/ff5603=
55%28v=3Dvs.85%29.aspx">
https://msdn.microsoft.com/en-us/library/windows/hardware/ff560355%28v=3Dvs=
.85%29.aspx</a> for details). Parameter 2 tells me that the failure status =
code is C0000010, which is STATUS_INVALID_DEVICE_REQUEST. I&#8217;m not ent=
irely sure what request this refers to,
 but in the log there are a lot of:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 27=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 4a=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 4b=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 14=
c)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 14=
d)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 24=
e)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 24=
f)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 35=
0)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 35=
1)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 45=
2)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 45=
3)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 55=
4)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 55=
5)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 65=
6)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 65=
7)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 75=
8)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 75=
9)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 83=
a)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 86=
b)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 86=
c)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 8a=
d)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 8e=
e)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">which suggest that your stor=
age backend is unhappy about something. As you can see the unsupported oper=
ation is a read, which is clearly going to
 be pretty fatal when it comes to accessing your boot disk. How are you set=
ting up your VM&#8217;s disk?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
 Christian Refvik [<a href=3D"mailto:christian.refvik@onlive.com">mailto:ch=
ristian.refvik@onlive.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 26 February 2015 22:32=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I looked at the memory.dmp with windbg and can send you the file=
, if you&#8217;d like.&nbsp; There didn&#8217;t appear to be
 much, except the issue at the bottom:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Probably caused by : xenbus.sys ( xenbus!EvtchnUnmask&#43;35 )<o=
:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I&#8217;ll try to rebuild the drivers with &#8216;build.py check=
ed nosdv&#8217; and see if there is more useful information.&nbsp;
 I&#8217;ve attached the qemu log output using xen_platform_log.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Please let me know if there is anything else.<o:p></o:p></span><=
/font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Thursday, February 26,=
 2015 3:34 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik; Fabio =
Fantoni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Can you get a crash d=
ump out? After the BSOD if you reboot into safe mode (by hitting F8 a lot w=
hile the BIOS is running) then you should hopefully
 find a file called MEMORY.DMP in C:\WINDOWS. If you can put this somewhere=
 I can get to it then I can probably diagnose the crash for you.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Failing that, if you =
enable logging in QEMU (assuming you&#8217;re using upstream) by creating a=
 file called &#8216;events&#8217; somewhere containing the line:<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log<o:p></o:p><=
/span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">..and then add the following=
 line to your xl.cfg<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">device_model_args=3D[ &quot;=
-trace&quot;, &quot;events=3D/&lt;path to wherever&gt;/events&quot; ]<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&#8230;you should start seei=
ng messages from the PV drivers in the qemu log and when the BSOD occurs yo=
u should get a stack dump.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 25 February 2015 20:21=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Hi Paul and Fabio,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I haven&#8217;t reported back, but I wanted to let you know what=
 I did:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">1.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">All the Windows PV drivers build successful=
ly with &#8216;build.py free nosdv&#8217;<o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">2.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Enabled Test Build<o:p></o:p></span></font>=
</p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">a.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Opened the command prompt as Administrator<=
o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">b.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">bcdedit.exe &#8211;set TESTSIGNING ON<o:p><=
/o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">c.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Reboot<o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">3.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Installed XenBus and Reboot<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">4.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Installed XenIface and Reboot<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">When I installed either XenNet or XenVbd, this caused a hard cra=
sh on reboot.&nbsp; The way to work around this issue
 is to reboot into a Last Known Good configuration and uninstall XenNet and=
 XenVbd.&nbsp; I do not know what the issue is at this point.&nbsp; I have =
updated to Xen 4.5 and I&#8217;m using CentOS 7 with a Xen enabled kernel c=
onfiguration.&nbsp; My DomU is Windows 2012 R2.<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Although I&#8217;ve enabled netbk and blkbk in the CentOS 7 kern=
el, how do I verify if these devices are successfully
 running in Dom0?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Monday, February 9, 20=
15 2:03 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Hi Christian,<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; The cert is a test ce=
rt so you&#8217;ll also need to make sure testsigning is on. It may be that=
 dpinst is vetoing installation of a test signed boot
 start driver unless testsigning has already been enabled (it certainly pop=
s up a dialog warning of this if you don&#8217;t use /C). I&#8217;ll see if=
 I can repro what you&#8217;re seeing though. There&#8217;s probably more i=
nfo on the failure in c:\windows\inf\setupapi.dev.log too.<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 06 February 2015 23:10=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks &#8211; I&#8217;m disabling SDV and everything builds fin=
e.&nbsp; However, I can&#8217;t install the Xenbus package on Windows
 2012 Server R2.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">c:\xenbits\pvdrivers\win\xenbus\xenbus\x64&gt;dpinst /C<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Option set: dumping log info to console.<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Current working directory: 'c:\xenbits\pvdrive=
rs\win\xenbus\xenbus\x64'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Running on path 'c:\xenbits\pvdrivers\win\xenb=
us\xenbus\x64'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; No valid 'dpinst.xml' file provided.<o:p></o:p=
></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Found driver package: 'c:\xenbits\pvdrivers\wi=
n\xenbus\xenbus\x64\xenbus.inf'.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Preinstalling 'c:\xenbits\pvdrivers\win\xenbus=
\xenbus\x64\xenbus.inf' ...<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; ENTER:&nbsp; DriverPackagePreinstallW<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; RETURN: DriverPackagePreinstallW&nbsp; (0xE000=
0247)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Returning with code 0x80010000<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Under Other Devices, there is a PCI Device in device manager whi=
ch appears to be the XenBus:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Device PCI\VEN_5853&amp;DEV_0001&amp;SUBSYS_00015853&amp;REV_01\=
3&amp;267a616a&amp;2&amp;18 was configured.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Name: null<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Class Guid: {00000000-0000-0000-0000-000000000000}<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Date:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Version:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Provider:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Section:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Rank: 0x0<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Matching Device Id:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Outranked Drivers:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Device Updated: false<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I&#8217;m using Xen 4.2 and using the default upstream QEMU.&nbs=
p; I&#8217;ve also installed the PFX file c:\xenbits\pvdrivers\win\xenbus\s=
rc\xenbus.pfx
 to be sure that there is no issues validating the driver.<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Any help would be appreciated.&nbsp;
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Friday, February 6, 20=
15 1:55 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; I&#8217;ll have a loo=
k at the latest code. In general though SDV builds are a bit fragile. SDV h=
as a tendency to leave log files locked causing weird
 failures on a fairly random basis. Unless you really want the SDV output I=
&#8217;d recommend building without it in the normal case. If you do want t=
he output I suggest only running it in a freshly cloned repo where it has n=
ever been run before.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 06 February 2015 00:01=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] Buil=
ding Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p></spa=
n></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Hi Paul,<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Today I tried buildin=
g the Xenbus drivers with &#8216;build.py checked&#8217;, but the build fai=
ls.&nbsp; If I build without running SDV (Static Driver Verifier),
 everything is fine.&nbsp; &nbsp;There are some warnings (as shown below) a=
nd the projects in the solution are setup to treat warnings as errors.<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">What should I do to u=
se the SDV to verify the PV drivers?&nbsp; Is this a known issue and I shou=
ld just disable SDV?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Thanks for your help,=
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Christian<o:p></o:p><=
/span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;msbuild.exe /m:1 /p:Configuration=3D&quot;Windows 8 Re=
lease&quot; /p:Platform=3D&quot;x64&quot; /t:&quot;Build&quot;&nbsp; xen.vc=
xproj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Microsoft (R) Build E=
ngine version 12.0.21005.1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">[Microsoft .NET Frame=
work, version 4.0.30319.34003]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Copyright (C) Microso=
ft Corporation. All rights reserved.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build started 2/5/201=
5 3:34:26 PM.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Project &quot;C:\xenb=
its\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; on node 1 (Build target(s=
)).<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">PrepareForBuild:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\xen\Windows8Release\x64\&quot;.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\Windows8Release\x64\&quot;.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\xen\Windows8Release\x64\xen.tlog\&quot;.<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">InitializeBuildStatus=
:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating &quot=
;..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild&quot; because &quot;=
AlwaysCreate&quot; was specified.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">_MASM:<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Assembling ..\=
..\src\xen\amd64\hypercall_thunk.asm...<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; cmd.exe /C &qu=
ot;C:\Users\christian.refvik\AppData\Local\Temp\tmp95adf46008a64d249a0db183=
cc77a012.cmd&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ml64.exe /c /n=
ologo /Zi /Fo&quot;..\xen\Windows8Release\x64\hypercall_thunk.obj&quot; /W3=
 /errorReport:prompt&nbsp; /Ta..\..\src\xen\amd64\hypercall_thunk.asm<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">_MASM:<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Skipping target &quot=
;_MASM&quot; because all output files are up-to-date with respect to the in=
put files.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">CustomBuildStep:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Skipping target &quot=
;CustomBuildStep&quot; because all output files are up-to-date with respect=
 to the input files.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">ClCompile:<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\CL.exe /c /I&quot;C:=
\Program Files (x86)\Windows Kits\8.1\\include\km&quot; /I..\xen\Windows8Re=
lease\x64\
 /Zi /nologo /Wall /WX /MP /Ox /Os /Oy- /D CODE_ANALYSIS /D __x86_64__ /D &=
quot;__MODULE__=3D\&quot;XEN\&quot;&quot; /D POOL_NX_OPTIN=3D1 /D _WIN64 /D=
 _AMD64_ /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 =
/D NTDDI_VERSION=3D0x06020000 /D _AMD64_ /GF /Gm- /Zp8 /GS /Gy /fp:precise<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; registry.c<o:p=
></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; driver.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; event_channel.=
c<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; grant_table.c<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; hvm.c<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; xen_version.c<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; hypercall.c<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; memory.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; sched.c<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; log.c<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; bug_check.c<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; module.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; process.c<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; acpi.c<o:p></o=
:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; system.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">ResourceCompile:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\bin\x86\rc.exe /D _WIN64 /D _AMD64_=3D1 /D AMD64 =
/D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1
 /D NTDDI_VERSION=3D0x06020000 /l&quot;0x0409&quot; /I&quot;C:\Program File=
s (x86)\Windows Kits\8.1\Include\UM&quot; /I..\xen\Windows8Release\x64\ /no=
logo /fo&quot;..\xen\Windows8Release\x64\xen.res&quot; ..\..\src\xen\xen.rc=
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Link:<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\link.exe /ERRORREPOR=
T:QUEUE /OUT:&quot;..\Windows8Release\x64\xen.sys&quot; /VERSION:&quot;6.3&=
quot;
 /INCREMENTAL:NO /NOLOGO /WX /SECTION:&quot;INIT,d&quot; &quot;C:\Program F=
iles (x86)\Windows Kits\8.1\lib\win8\KM\x64/libcntpr.lib&quot; &quot;C:\Pro=
gram Files (x86)\Windows Kits\8.1\lib\win8\KM\x64/aux_klib.lib&quot; &quot;=
C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x64\BufferOverflowFastF=
ailK.lib&quot;
 &quot;C:\Pro<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;..\xen\Windows8=
Release\x64\xen.res<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\registry.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\driver.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\event_channel.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\grant_table.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\hvm.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\xen_version.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\hypercall.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\memory.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\sched.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\log.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\bug_check.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\module.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\process.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\acpi.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\system.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nb=
sp; Creating library ..\Windows8Release\x64\xen.lib and object ..\Windows8R=
elease\x64\xen.exp<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; xen.vcxproj -&=
gt; C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sys<o=
:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">DriverTestSign:<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Sign Inputs: C=
:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sys<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 &quot;337D411=
D5F99F4EED21E8E88BF82CDC8AF3F64F5&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Done Adding Ad=
ditional Store<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Successfully s=
igned: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sy=
s<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Certificate us=
ed for signing: issued to =3D XENBUS (TEST) and thumbprint =3D 337D411D5F99=
F4EED21E8E88BF82CDC8AF3F64F5<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Exported Certi=
ficate: ..\Windows8Release\x64\xen.cer<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(178): warning C6102: Using 'Length' from faile=
d function call at line '175'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.=
vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(368): warning C6102: Using 'Size' from failed =
function call at line '364'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(469): warning C6102: Using 'Size' from failed =
function call at line '465'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(602): warning C6102: Using 'Size' from failed =
function call at line '598'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(827): warning C6102: Using 'Size' from failed =
function call at line '823'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(899): warning C6102: Using 'Size' from failed =
function call at line '894'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">FinalizeBuildStatus:<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Deleting file =
&quot;..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild&quot;.<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Touching &quot=
;..\xen\Windows8Release\x64\xen.tlog\xen.lastbuildstate&quot;.<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Done Building Project=
 &quot;C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; (Build targ=
et(s)).<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build succeeded.<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (Build target) (1) -&gt;<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(RunNativeCodeAnalysi=
s target) -&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(178): warning C6102: Using 'Length' fro=
m failed function call at line '175'. [C:\xenbits\pvdrivers\xenbus\vs2013\x=
en\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(368): warning C6102: Using 'Size' from =
failed function call at line '364'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(469): warning C6102: Using 'Size' from =
failed function call at line '465'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(602): warning C6102: Using 'Size' from =
failed function call at line '598'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(827): warning C6102: Using 'Size' from =
failed function call at line '823'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(899): warning C6102: Using 'Size' from =
failed function call at line '894'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 6 =
Warning(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 0 =
Error(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Time Elapsed 00:00:05=
.74<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;if errorlevel 1 goto error<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;exit 0<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v.temp']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'st=
aticdv.job']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 're=
fine.sdv']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v-map.h']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">vs2013\xen<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['C:\\Users\\christia=
n.refvik\\Development\\xenbits\\pvdrivers\\xenbus\\msbuild.bat']<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;call &quot;C:\Program Files (x86)\Microsoft Visual Stu=
dio 12.0\VC\vcvarsall.bat&quot; x86<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;msbuild.exe /m:1 /p:Configuration=3D&quot;Windows 8 Re=
lease&quot; /p:Platform=3D&quot;x64&quot; /t:&quot;sdv&quot; /p:Inputs=3D&q=
uot;/scan&quot;
 xen.vcxproj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Microsoft (R) Build E=
ngine version 12.0.21005.1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">[Microsoft .NET Frame=
work, version 4.0.30319.34003]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Copyright (C) Microso=
ft Corporation. All rights reserved.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build started 2/5/201=
5 3:34:32 PM.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Project &quot;C:\xenb=
its\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; on node 1 (sdv target(s))=
.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">sdv:<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; staticdv.exe /=
scan<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; --------------=
-------------------------------------------------------<o:p></o:p></span></=
font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Microsoft (R) =
Windows (R) Static Driver Verifier Version 4.0.500.1<o:p></o:p></span></fon=
t></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Copyright (C) =
Microsoft Corporation.&nbsp; All rights reserved.<o:p></o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; --------------=
-------------------------------------------------------<o:p></o:p></span></=
font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV is buildin=
g for &lt;Windows 8 Release|x64&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV is buildin=
g for &lt;Windows 8 Release|x64&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; The call to &q=
uot;Build&quot; failed.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">EXEC : Build warning =
: ..\..\src\common\registry.c(224): error C2220: warning treated as error -=
 no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcx=
proj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">EXEC : Build warning =
: ..\..\src\common\registry.c(224): error C2220: warning treated as error -=
 no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcx=
proj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV exit code:=
 5<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV encountere=
d errors when scanning the driver. Please ensure roletypes are present and/=
or consult SDV documentation.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\Program Files (x86=
)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,9): error MSB3075: Th=
e command &quot;staticdv.exe /scan&quot; exited with
 code 5. Please verify that you have sufficient rights to run this command.=
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Done Building Project=
 &quot;C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target=
(s)) -- FAILED.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build FAILED.<o:p></o=
:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target) (1) -&gt;<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(sdv target) -&gt;<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; EXEC : Build w=
arning : ..\..\src\common\registry.c(224): error C2220: warning treated as =
error - no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\=
xen.vcxproj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; EXEC : Build w=
arning : ..\..\src\common\registry.c(224): error C2220: warning treated as =
error - no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\=
xen.vcxproj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target) (1) -&gt;<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(sdv target) -&gt;<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,9): error MSB3=
075: The command &quot;staticdv.exe /scan&quot; exited with
 code 5. Please verify that you have sufficient rights to run this command.=
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 2 =
Warning(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 1 =
Error(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Time Elapsed 00:00:06=
.51<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;if errorlevel 1 goto error<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;exit 1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Traceback (most recen=
t call last):<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 370, in &lt;module&gt;<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; ru=
n_sdv('xen', driver, vs)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 204, in run_sdv<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; '/=
p:Inputs=3D&quot;/scan&quot;', os.path.join(vs, name))<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 124, in msbuild<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; ra=
ise msbuild_failure(configuration)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">__main__.msbuild_fail=
ure: 'Windows 8 Release'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_--


--===============5806507494878055024==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5806507494878055024==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 09:56:36 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 09:56:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSN5Y-0001L5-BP; Mon, 02 Mar 2015 09:56:36 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YSN5W-0001L0-3H
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 09:56:34 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	3E/63-03219-1D334F45; Mon, 02 Mar 2015 09:56:33 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-31.messagelabs.com!1425290189!12192216!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31381 invoked from network); 2 Mar 2015 09:56:30 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 09:56:30 -0000
X-IronPort-AV: E=Sophos;i="5.09,674,1418083200"; d="scan'208,217";a="32596133"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Christian Refvik <christian.refvik@onlive.com>, Fabio Fantoni
	<fabio.fantoni@m2r.biz>
Thread-Topic: [win-pv-devel] Building Windows PV Drivers - Fails	with	Static
	Driver Verifier
Thread-Index: AQHQUTjLD/gHi0FzYU2h67kO3BcOMZ0Cx3FAgACtaQCAAM49UIABHecAgAOZ5jA=
Date: Mon, 2 Mar 2015 09:56:28 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025821129@AMSPEX01CL01.citrite.net>
References: <B4DC7AAB07005D4DA887F0BE517884F2A32AA9@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0257E4607@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A33142@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0257F3CFC@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A38FE6@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02581C182@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A39789@mailbox02.onlive.corp>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02581D9E6@AMSPEX01CL01.citrite.net>
	<B4DC7AAB07005D4DA887F0BE517884F2A3A114@mailbox02.onlive.corp>
In-Reply-To: <B4DC7AAB07005D4DA887F0BE517884F2A3A114@mailbox02.onlive.corp>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers -
	Fails	with	Static	Driver Verifier
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5806507494878055024=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============5806507494878055024==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Christian,

Your disk specs are using very dated format so I'm not sure what the toolst=
ack will do with them. Probably best use newer style and then check blkback=
 is coming up correctly, or perhaps use a qdisk backend (which is a bit slo=
wer but, being userspace, is a bit easier to monitor).

  Paul

From: Christian Refvik [mailto:christian.refvik@onlive.com]
Sent: 28 February 2015 03:53
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

I setup an LVM storage for the VM, but its on another physical volume than =
Dom0.

My HVM disk config looks something like this, which I'm assuming is pretty =
typical:

boot=3D "cd"
disk =3D [ 'phy:/dev/virtual_machines/windows_server_2012_r2_64bit,hdb,w' ,=
 'file:/home/user/virtual_machines/windows_server_2012_r2_64bit/server.iso,=
hda:cdrom,r' ]

The only thing I've thought is that there could be an issue with the Linux =
PV backend drivers that you are connecting to.  How can I confirm whether t=
hey are running successfully so that the Windows VM can connect?  Or is QEM=
U supposed to handle the backend PV drivers?

Thanks for your help,
Christian


From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Friday, February 27, 2015 2:00 AM
To: Christian Refvik; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  I probably don't need to dump. Looking at the log, you have a very specif=
ic failure: You have a bugcheck 0xED (UNMOUNTABLE_BOOT_VOLUME). (See https:=
//msdn.microsoft.com/en-us/library/windows/hardware/ff560355%28v=3Dvs.85%29=
.aspx for details). Parameter 2 tells me that the failure status code is C0=
000010, which is STATUS_INVALID_DEVICE_REQUEST. I'm not entirely sure what =
request this refers to, but in the log there are a lot of:

xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 27)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 4a)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 4b)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 14c)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 14d)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 24e)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 24f)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 350)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 351)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 452)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 453)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 554)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 555)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 656)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 657)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 758)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 759)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 83a)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 86b)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 86c)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 8ad)
xen_platform_log xen platform: XENVBD|PdoCompleteResponse:Target[1] : READ =
BLKIF_RSP_EOPNOTSUPP (Tag 8ee)

which suggest that your storage backend is unhappy about something. As you =
can see the unsupported operation is a read, which is clearly going to be p=
retty fatal when it comes to accessing your boot disk. How are you setting =
up your VM's disk?

  Paul

From: Christian Refvik [mailto:christian.refvik@onlive.com]
Sent: 26 February 2015 22:32
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

I looked at the memory.dmp with windbg and can send you the file, if you'd =
like.  There didn't appear to be much, except the issue at the bottom:
Probably caused by : xenbus.sys ( xenbus!EvtchnUnmask+35 )

I'll try to rebuild the drivers with 'build.py checked nosdv' and see if th=
ere is more useful information.  I've attached the qemu log output using xe=
n_platform_log.

Please let me know if there is anything else.

Thanks,
Christian


From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Thursday, February 26, 2015 3:34 AM
To: Christian Refvik; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  Can you get a crash dump out? After the BSOD if you reboot into safe mode=
 (by hitting F8 a lot while the BIOS is running) then you should hopefully =
find a file called MEMORY.DMP in C:\WINDOWS. If you can put this somewhere =
I can get to it then I can probably diagnose the crash for you.
  Failing that, if you enable logging in QEMU (assuming you're using upstre=
am) by creating a file called 'events' somewhere containing the line:

xen_platform_log

..and then add the following line to your xl.cfg

device_model_args=3D[ "-trace", "events=3D/<path to wherever>/events" ]

...you should start seeing messages from the PV drivers in the qemu log and=
 when the BSOD occurs you should get a stack dump.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 25 February 2015 20:21
To: Paul Durrant; Fabio Fantoni
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Hi Paul and Fabio,

I haven't reported back, but I wanted to let you know what I did:


1.       All the Windows PV drivers build successfully with 'build.py free =
nosdv'

2.       Enabled Test Build

a.       Opened the command prompt as Administrator

b.      bcdedit.exe -set TESTSIGNING ON

c.       Reboot

3.       Installed XenBus and Reboot

4.       Installed XenIface and Reboot

When I installed either XenNet or XenVbd, this caused a hard crash on reboo=
t.  The way to work around this issue is to reboot into a Last Known Good c=
onfiguration and uninstall XenNet and XenVbd.  I do not know what the issue=
 is at this point.  I have updated to Xen 4.5 and I'm using CentOS 7 with a=
 Xen enabled kernel configuration.  My DomU is Windows 2012 R2.

Although I've enabled netbk and blkbk in the CentOS 7 kernel, how do I veri=
fy if these devices are successfully running in Dom0?

Thanks,
Christian

From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Monday, February 9, 2015 2:03 AM
To: Christian Refvik
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Hi Christian,

  The cert is a test cert so you'll also need to make sure testsigning is o=
n. It may be that dpinst is vetoing installation of a test signed boot star=
t driver unless testsigning has already been enabled (it certainly pops up =
a dialog warning of this if you don't use /C). I'll see if I can repro what=
 you're seeing though. There's probably more info on the failure in c:\wind=
ows\inf\setupapi.dev.log too.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 06 February 2015 23:10
To: Paul Durrant
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: Re: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Paul,

Thanks - I'm disabling SDV and everything builds fine.  However, I can't in=
stall the Xenbus package on Windows 2012 Server R2.

c:\xenbits\pvdrivers\win\xenbus\xenbus\x64>dpinst /C

INFO:   Option set: dumping log info to console.
INFO:   Current working directory: 'c:\xenbits\pvdrivers\win\xenbus\xenbus\=
x64'
INFO:   Running on path 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64'
INFO:   No valid 'dpinst.xml' file provided.
INFO:   Found driver package: 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64\x=
enbus.inf'.
INFO:   Preinstalling 'c:\xenbits\pvdrivers\win\xenbus\xenbus\x64\xenbus.in=
f' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000247)
INFO:   Returning with code 0x80010000



Under Other Devices, there is a PCI Device in device manager which appears =
to be the XenBus:

Device PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\3&267a616a&2&18 was con=
figured.

Driver Name: null
Class Guid: {00000000-0000-0000-0000-000000000000}
Driver Date:
Driver Version:
Driver Provider:
Driver Section:
Driver Rank: 0x0
Matching Device Id:
Outranked Drivers:
Device Updated: false

I'm using Xen 4.2 and using the default upstream QEMU.  I've also installed=
 the PFX file c:\xenbits\pvdrivers\win\xenbus\src\xenbus.pfx to be sure tha=
t there is no issues validating the driver.

Any help would be appreciated.

Thanks,
Christian

From: Paul Durrant [mailto:Paul.Durrant@citrix.com]
Sent: Friday, February 6, 2015 1:55 AM
To: Christian Refvik
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: RE: [win-pv-devel] Building Windows PV Drivers - Fails with Static=
 Driver Verifier

Christian,

  I'll have a look at the latest code. In general though SDV builds are a b=
it fragile. SDV has a tendency to leave log files locked causing weird fail=
ures on a fairly random basis. Unless you really want the SDV output I'd re=
commend building without it in the normal case. If you do want the output I=
 suggest only running it in a freshly cloned repo where it has never been r=
un before.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Christian Refvik
Sent: 06 February 2015 00:01
To: Paul Durrant
Cc: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Subject: [win-pv-devel] Building Windows PV Drivers - Fails with Static Dri=
ver Verifier

Hi Paul,

Today I tried building the Xenbus drivers with 'build.py checked', but the =
build fails.  If I build without running SDV (Static Driver Verifier), ever=
ything is fine.   There are some warnings (as shown below) and the projects=
 in the solution are setup to treat warnings as errors.

What should I do to use the SDV to verify the PV drivers?  Is this a known =
issue and I should just disable SDV?

Thanks for your help,
Christian





C:\xenbits\pvdrivers\xenbus\vs2013\xen>msbuild.exe /m:1 /p:Configuration=3D=
"Windows 8 Release" /p:Platform=3D"x64" /t:"Build"  xen.vcxproj
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34003]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 2/5/2015 3:34:26 PM.
Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" on node 1 (Bui=
ld target(s)).
PrepareForBuild:
  Creating directory "..\xen\Windows8Release\x64\".
  Creating directory "..\Windows8Release\x64\".
  Creating directory "..\xen\Windows8Release\x64\xen.tlog\".
InitializeBuildStatus:
  Creating "..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild" because =
"AlwaysCreate" was specified.
_MASM:
  Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
  cmd.exe /C "C:\Users\christian.refvik\AppData\Local\Temp\tmp95adf46008a64=
d249a0db183cc77a012.cmd"
  ml64.exe /c /nologo /Zi /Fo"..\xen\Windows8Release\x64\hypercall_thunk.ob=
j" /W3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
_MASM:
Skipping target "_MASM" because all output files are up-to-date with respec=
t to the input files.
CustomBuildStep:
Skipping target "CustomBuildStep" because all output files are up-to-date w=
ith respect to the input files.
ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\CL.e=
xe /c /I"C:\Program Files (x86)\Windows Kits\8.1\\include\km" /I..\xen\Wind=
ows8Release\x64\ /Zi /nologo /Wall /WX /MP /Ox /Os /Oy- /D CODE_ANALYSIS /D=
 __x86_64__ /D "__MODULE__=3D\"XEN\"" /D POOL_NX_OPTIN=3D1 /D _WIN64 /D _AM=
D64_ /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 /D N=
TDDI_VERSION=3D0x06020000 /D _AMD64_ /GF /Gm- /Zp8 /GS /Gy /fp:precise
  registry.c
  driver.c
  event_channel.c
  grant_table.c
  hvm.c
  xen_version.c
  hypercall.c
  memory.c
  sched.c
  log.c
  bug_check.c
  module.c
  process.c
  acpi.c
  system.c
ResourceCompile:
  C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe /D _WIN64 /D _AMD6=
4_=3D1 /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 /D=
 NTDDI_VERSION=3D0x06020000 /l"0x0409" /I"C:\Program Files (x86)\Windows Ki=
ts\8.1\Include\UM" /I..\xen\Windows8Release\x64\ /nologo /fo"..\xen\Windows=
8Release\x64\xen.res" ..\..\src\xen\xen.rc
Link:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\link=
.exe /ERRORREPORT:QUEUE /OUT:"..\Windows8Release\x64\xen.sys" /VERSION:"6.3=
" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Win=
dows Kits\8.1\lib\win8\KM\x64/libcntpr.lib" "C:\Program Files (x86)\Windows=
 Kits\8.1\lib\win8\KM\x64/aux_klib.lib" "C:\Program Files (x86)\Windows Kit=
s\8.1\lib\win8\KM\x64\BufferOverflowFastFailK.lib" "C:\Pro
 ..\xen\Windows8Release\x64\xen.res
  ..\xen\Windows8Release\x64\registry.obj
  ..\xen\Windows8Release\x64\driver.obj
  ..\xen\Windows8Release\x64\event_channel.obj
  ..\xen\Windows8Release\x64\grant_table.obj
  ..\xen\Windows8Release\x64\hvm.obj
  ..\xen\Windows8Release\x64\xen_version.obj
  ..\xen\Windows8Release\x64\hypercall.obj
  ..\xen\Windows8Release\x64\memory.obj
  ..\xen\Windows8Release\x64\sched.obj
  ..\xen\Windows8Release\x64\log.obj
  ..\xen\Windows8Release\x64\bug_check.obj
  ..\xen\Windows8Release\x64\module.obj
  ..\xen\Windows8Release\x64\process.obj
  ..\xen\Windows8Release\x64\acpi.obj
  ..\xen\Windows8Release\x64\system.obj
     Creating library ..\Windows8Release\x64\xen.lib and object ..\Windows8=
Release\x64\xen.exp
  xen.vcxproj -> C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\=
x64\xen.sys
DriverTestSign:
  Sign Inputs: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x6=
4\xen.sys
  C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sh=
a1 "337D411D5F99F4EED21E8E88BF82CDC8AF3F64F5"
  Done Adding Additional Store
  Successfully signed: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Re=
lease\x64\xen.sys

  Certificate used for signing: issued to =3D XENBUS (TEST) and thumbprint =
=3D 337D411D5F99F4EED21E8E88BF82CDC8AF3F64F5
  Exported Certificate: ..\Windows8Release\x64\xen.cer
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(178): warning C6102: Usin=
g 'Length' from failed function call at line '175'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(368): warning C6102: Usin=
g 'Size' from failed function call at line '364'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(469): warning C6102: Usin=
g 'Size' from failed function call at line '465'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(602): warning C6102: Usin=
g 'Size' from failed function call at line '598'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(827): warning C6102: Usin=
g 'Size' from failed function call at line '823'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
c:\xenbits\pvdrivers\xenbus\src\common\registry.c(899): warning C6102: Usin=
g 'Size' from failed function call at line '894'. [C:\xenbits\pvdrivers\xen=
bus\vs2013\xen\xen.vcxproj]
FinalizeBuildStatus:
  Deleting file "..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild".
  Touching "..\xen\Windows8Release\x64\xen.tlog\xen.lastbuildstate".
Done Building Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" =
(Build target(s)).

Build succeeded.

"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (Build target) (1) ->
(RunNativeCodeAnalysis target) ->
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(178): warning C6102: Us=
ing 'Length' from failed function call at line '175'. [C:\xenbits\pvdrivers=
\xenbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(368): warning C6102: Us=
ing 'Size' from failed function call at line '364'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(469): warning C6102: Us=
ing 'Size' from failed function call at line '465'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(602): warning C6102: Us=
ing 'Size' from failed function call at line '598'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(827): warning C6102: Us=
ing 'Size' from failed function call at line '823'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]
  c:\xenbits\pvdrivers\xenbus\src\common\registry.c(899): warning C6102: Us=
ing 'Size' from failed function call at line '894'. [C:\xenbits\pvdrivers\x=
enbus\vs2013\xen\xen.vcxproj]

    6 Warning(s)
    0 Error(s)

Time Elapsed 00:00:05.74

C:\xenbits\pvdrivers\xenbus\vs2013\xen>if errorlevel 1 goto error

C:\xenbits\pvdrivers\xenbus\vs2013\xen>exit 0
['vs2013', 'xen', 'sdv']
['vs2013', 'xen', 'sdv.temp']
['vs2013', 'xen', 'staticdv.job']
['vs2013', 'xen', 'refine.sdv']
['vs2013', 'xen', 'sdv-map.h']
vs2013\xen
['C:\\Users\\christian.refvik\\Development\\xenbits\\pvdrivers\\xenbus\\msb=
uild.bat']

C:\xenbits\pvdrivers\xenbus\vs2013\xen>call "C:\Program Files (x86)\Microso=
ft Visual Studio 12.0\VC\vcvarsall.bat" x86

C:\xenbits\pvdrivers\xenbus\vs2013\xen>msbuild.exe /m:1 /p:Configuration=3D=
"Windows 8 Release" /p:Platform=3D"x64" /t:"sdv" /p:Inputs=3D"/scan" xen.vc=
xproj
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34003]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 2/5/2015 3:34:32 PM.
Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" on node 1 (sdv=
 target(s)).
sdv:
  staticdv.exe /scan
  ---------------------------------------------------------------------
  Microsoft (R) Windows (R) Static Driver Verifier Version 4.0.500.1
  Copyright (C) Microsoft Corporation.  All rights reserved.
  ---------------------------------------------------------------------
  SDV is building for <Windows 8 Release|x64>
  SDV is building for <Windows 8 Release|x64>
  The call to "Build" failed.
EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: warni=
ng treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xenb=
us\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxp=
roj]

EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: warni=
ng treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xenb=
us\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxp=
roj]

  SDV exit code: 5
  SDV encountered errors when scanning the driver. Please ensure roletypes =
are present and/or consult SDV documentation.
C:\Program Files (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,=
9): error MSB3075: The command "staticdv.exe /scan" exited with code 5. Ple=
ase verify that you have sufficient rights to run this command. [C:\xenbits=
\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]
Done Building Project "C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" =
(sdv target(s)) -- FAILED.

Build FAILED.

"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (sdv target) (1) ->
(sdv target) ->
  EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: war=
ning treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xe=
nbus\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]
  EXEC : Build warning : ..\..\src\common\registry.c(224): error C2220: war=
ning treated as error - no 'object' file generated [C:\xenbits\pvdrivers\xe=
nbus\vs2013\xen\xen.vcxproj] [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]


"C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj" (sdv target) (1) ->
(sdv target) ->
  C:\Program Files (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(6=
5,9): error MSB3075: The command "staticdv.exe /scan" exited with code 5. P=
lease verify that you have sufficient rights to run this command. [C:\xenbi=
ts\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]

    2 Warning(s)
    1 Error(s)

Time Elapsed 00:00:06.51

C:\xenbits\pvdrivers\xenbus\vs2013\xen>if errorlevel 1 goto error

C:\xenbits\pvdrivers\xenbus\vs2013\xen>exit 1
Traceback (most recent call last):
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 370, in <module>
    run_sdv('xen', driver, vs)
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 204, in run_sdv
    '/p:Inputs=3D"/scan"', os.path.join(vs, name))
  File "C:\xenbits\pvdrivers\xenbus\build.py", line 124, in msbuild
    raise msbuild_failure(configuration)
__main__.msbuild_failure: 'Windows 8 Release'

C:\xenbits\pvdrivers\xenbus>


--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D054CF.26C320F0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:Verdana;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:0cm;
	margin-left:36.0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:windowtext;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle24
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle25
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-GB" link=3D"#0563C1" vlink=3D"#954F72" style=3D"tab-interv=
al:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D">Christian,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D">Your disk specs are using very dated format so
 I&#8217;m not sure what the toolstack will do with them. Probably best use=
 newer style and then check
<span class=3D"SpellE">blkback</span> is coming up correctly, or perhaps us=
e a <span class=3D"SpellE">
qdisk</span> backend (which is a bit slower but, being <span class=3D"Spell=
E">userspace</span>, is a bit easier to monitor).<o:p></o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;mso-ascii-font-family:Calibri;mso-hansi-fon=
t-family:Calibri;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=
=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quo=
t;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;;mso-ansi-language:EN-US">
 Christian Refvik [mailto:christian.refvik@onlive.com] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 28 February 2015 03:53=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> win-pv-devel@lists.xenpr=
oject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I setup an LVM storage for the VM, but its on another physical v=
olume than Dom0.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">My HVM disk config looks something like this, which I&#8217;m as=
suming is pretty typical:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">boot=3D &quot;cd&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">disk =3D [ 'phy:/dev/virtual_machines/windows_server_2012_r2_64b=
it,hdb,w' , 'file:/home/user/virtual_machines/windows_server_2012_r2_64bit/=
server.iso,hda:cdrom,r'
 ]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><a name=3D"_MailEndCompose"></a><font size=3D"2" col=
or=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.=
0pt;color:#1F497D;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">The only thing I&#8217;ve thought is that there could be an issu=
e with the Linux PV backend drivers that you are connecting
 to.&nbsp; How can I confirm whether they are running successfully so that =
the Windows VM can connect?&nbsp; Or is QEMU supposed to handle the backend=
 PV drivers?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks for your help,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Friday, February 27, 2=
015 2:00 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik; Fabio =
Fantoni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; I probably don&#8217;=
t need to dump. Looking at the log, you have a very specific failure: You h=
ave a bugcheck 0xED (UNMOUNTABLE_BOOT_VOLUME). (See
<a href=3D"https://msdn.microsoft.com/en-us/library/windows/hardware/ff5603=
55%28v=3Dvs.85%29.aspx">
https://msdn.microsoft.com/en-us/library/windows/hardware/ff560355%28v=3Dvs=
.85%29.aspx</a> for details). Parameter 2 tells me that the failure status =
code is C0000010, which is STATUS_INVALID_DEVICE_REQUEST. I&#8217;m not ent=
irely sure what request this refers to,
 but in the log there are a lot of:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 27=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 4a=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 4b=
)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 14=
c)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 14=
d)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 24=
e)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 24=
f)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 35=
0)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 35=
1)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 45=
2)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 45=
3)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 55=
4)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 55=
5)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 65=
6)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 65=
7)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 75=
8)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 75=
9)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 83=
a)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 86=
b)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 86=
c)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 8a=
d)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log xen platfor=
m: XENVBD|PdoCompleteResponse:Target[1] : READ BLKIF_RSP_EOPNOTSUPP (Tag 8e=
e)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">which suggest that your stor=
age backend is unhappy about something. As you can see the unsupported oper=
ation is a read, which is clearly going to
 be pretty fatal when it comes to accessing your boot disk. How are you set=
ting up your VM&#8217;s disk?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
 Christian Refvik [<a href=3D"mailto:christian.refvik@onlive.com">mailto:ch=
ristian.refvik@onlive.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 26 February 2015 22:32=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I looked at the memory.dmp with windbg and can send you the file=
, if you&#8217;d like.&nbsp; There didn&#8217;t appear to be
 much, except the issue at the bottom:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Probably caused by : xenbus.sys ( xenbus!EvtchnUnmask&#43;35 )<o=
:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I&#8217;ll try to rebuild the drivers with &#8216;build.py check=
ed nosdv&#8217; and see if there is more useful information.&nbsp;
 I&#8217;ve attached the qemu log output using xen_platform_log.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Please let me know if there is anything else.<o:p></o:p></span><=
/font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Thursday, February 26,=
 2015 3:34 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik; Fabio =
Fantoni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Can you get a crash d=
ump out? After the BSOD if you reboot into safe mode (by hitting F8 a lot w=
hile the BIOS is running) then you should hopefully
 find a file called MEMORY.DMP in C:\WINDOWS. If you can put this somewhere=
 I can get to it then I can probably diagnose the crash for you.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Failing that, if you =
enable logging in QEMU (assuming you&#8217;re using upstream) by creating a=
 file called &#8216;events&#8217; somewhere containing the line:<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">xen_platform_log<o:p></o:p><=
/span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">..and then add the following=
 line to your xl.cfg<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">device_model_args=3D[ &quot;=
-trace&quot;, &quot;events=3D/&lt;path to wherever&gt;/events&quot; ]<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&#8230;you should start seei=
ng messages from the PV drivers in the qemu log and when the BSOD occurs yo=
u should get a stack dump.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 25 February 2015 20:21=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; Fabio Fant=
oni<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Hi Paul and Fabio,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I haven&#8217;t reported back, but I wanted to let you know what=
 I did:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">1.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">All the Windows PV drivers build successful=
ly with &#8216;build.py free nosdv&#8217;<o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">2.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Enabled Test Build<o:p></o:p></span></font>=
</p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">a.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Opened the command prompt as Administrator<=
o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">b.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">bcdedit.exe &#8211;set TESTSIGNING ON<o:p><=
/o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:72.0pt;text-indent:-18.0=
pt"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US=
" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-language:EN-US">c.</span=
></font><font size=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span l=
ang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Times New Roman&qu=
ot;,&quot;serif&quot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Reboot<o:p></o:p></span></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">3.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Installed XenBus and Reboot<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-18.0pt"><font size=3D"2=
" color=3D"#1f497d" face=3D"Calibri"><span lang=3D"EN-US" style=3D"font-siz=
e:11.0pt;color:#1F497D;mso-ansi-language:EN-US">4.</span></font><font size=
=3D"1" color=3D"#1f497d" face=3D"Times New Roman"><span lang=3D"EN-US" styl=
e=3D"font-size:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&qu=
ot;;color:#1F497D;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;
</span></font><font color=3D"#1f497d"><span lang=3D"EN-US" style=3D"color:#=
1F497D;mso-ansi-language:EN-US">Installed XenIface and Reboot<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">When I installed either XenNet or XenVbd, this caused a hard cra=
sh on reboot.&nbsp; The way to work around this issue
 is to reboot into a Last Known Good configuration and uninstall XenNet and=
 XenVbd.&nbsp; I do not know what the issue is at this point.&nbsp; I have =
updated to Xen 4.5 and I&#8217;m using CentOS 7 with a Xen enabled kernel c=
onfiguration.&nbsp; My DomU is Windows 2012 R2.<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Although I&#8217;ve enabled netbk and blkbk in the CentOS 7 kern=
el, how do I verify if these devices are successfully
 running in Dom0?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Monday, February 9, 20=
15 2:03 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Hi Christian,<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; The cert is a test ce=
rt so you&#8217;ll also need to make sure testsigning is on. It may be that=
 dpinst is vetoing installation of a test signed boot
 start driver unless testsigning has already been enabled (it certainly pop=
s up a dialog warning of this if you don&#8217;t use /C). I&#8217;ll see if=
 I can repro what you&#8217;re seeing though. There&#8217;s probably more i=
nfo on the failure in c:\windows\inf\setupapi.dev.log too.<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 06 February 2015 23:10=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Paul,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks &#8211; I&#8217;m disabling SDV and everything builds fin=
e.&nbsp; However, I can&#8217;t install the Xenbus package on Windows
 2012 Server R2.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">c:\xenbits\pvdrivers\win\xenbus\xenbus\x64&gt;dpinst /C<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Option set: dumping log info to console.<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Current working directory: 'c:\xenbits\pvdrive=
rs\win\xenbus\xenbus\x64'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Running on path 'c:\xenbits\pvdrivers\win\xenb=
us\xenbus\x64'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; No valid 'dpinst.xml' file provided.<o:p></o:p=
></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Found driver package: 'c:\xenbits\pvdrivers\wi=
n\xenbus\xenbus\x64\xenbus.inf'.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Preinstalling 'c:\xenbits\pvdrivers\win\xenbus=
\xenbus\x64\xenbus.inf' ...<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; ENTER:&nbsp; DriverPackagePreinstallW<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; RETURN: DriverPackagePreinstallW&nbsp; (0xE000=
0247)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">INFO:&nbsp;&nbsp; Returning with code 0x80010000<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Under Other Devices, there is a PCI Device in device manager whi=
ch appears to be the XenBus:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Device PCI\VEN_5853&amp;DEV_0001&amp;SUBSYS_00015853&amp;REV_01\=
3&amp;267a616a&amp;2&amp;18 was configured.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Name: null<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Class Guid: {00000000-0000-0000-0000-000000000000}<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Date:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Version:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Provider:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Section:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Driver Rank: 0x0<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Matching Device Id:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Outranked Drivers:
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Device Updated: false<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">I&#8217;m using Xen 4.2 and using the default upstream QEMU.&nbs=
p; I&#8217;ve also installed the PFX file c:\xenbits\pvdrivers\win\xenbus\s=
rc\xenbus.pfx
 to be sure that there is no issues validating the driver.<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Any help would be appreciated.&nbsp;
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Thanks,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US">Christian<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span lang=3D"EN-US" style=3D"font-size:11.0pt;color:#1F497D;mso-ansi-langu=
age:EN-US"><o:p>&nbsp;</o:p></span></font></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Calibri"><span lang=3D"EN-US" style=3D"font-size:11.0pt;mso-ansi-lang=
uage:EN-US;font-weight:bold">From:</span></font></b><span lang=3D"EN-US" st=
yle=3D"mso-ansi-language:EN-US"> Paul Durrant [<a href=3D"mailto:Paul.Durra=
nt@citrix.com">mailto:Paul.Durrant@citrix.com</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> Friday, February 6, 20=
15 1:55 AM<br>
<b><span style=3D"font-weight:bold">To:</span></b> Christian Refvik<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> RE: [win-pv-devel] =
Building Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p><=
/span></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">Christian,<o:p></o:p></span>=
</font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; I&#8217;ll have a loo=
k at the latest code. In general though SDV builds are a bit fragile. SDV h=
as a tendency to leave log files locked causing weird
 failures on a fairly random basis. Unless you really want the SDV output I=
&#8217;d recommend building without it in the normal case. If you do want t=
he output I suggest only running it in a freshly cloned repo where it has n=
ever been run before.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D">&nbsp; Paul<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;color:#1F497D"><o:p>&nbsp;</o:p></span></fo=
nt></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" fa=
ce=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&q=
uot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight=
:bold">From:</span></font></b><font size=3D"2" face=3D"Tahoma"><span lang=
=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;s=
ans-serif&quot;;mso-ansi-language:EN-US">
</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a hre=
f=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" fac=
e=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;=
,&quot;sans-serif&quot;">win-pv-devel-bounces@lists.xenproject.org</span></=
font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-US" style=
=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;=
mso-ansi-language:EN-US">
 [</span></font><span lang=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a h=
ref=3D"mailto:win-pv-devel-bounces@lists.xenproject.org"><font size=3D"2" f=
ace=3D"Tahoma"><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;">mailto:win-pv-devel-bounces@lists.xenproject.org=
</span></font></a></span><font size=3D"2" face=3D"Tahoma"><span lang=3D"EN-=
US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-ser=
if&quot;;mso-ansi-language:EN-US">]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Christian Refvi=
k<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 06 February 2015 00:01=
<br>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> </span></font><span lang=
=3D"EN-US" style=3D"mso-ansi-language:EN-US"><a href=3D"mailto:win-pv-devel=
@lists.xenproject.org"><font size=3D"2" face=3D"Tahoma"><span style=3D"font=
-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">win-pv-=
devel@lists.xenproject.org</span></font></a></span><font size=3D"2" face=3D=
"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] Buil=
ding Windows PV Drivers - Fails with Static Driver Verifier<o:p></o:p></spa=
n></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span style=3D"fon=
t-size:11.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Hi Paul,<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Today I tried buildin=
g the Xenbus drivers with &#8216;build.py checked&#8217;, but the build fai=
ls.&nbsp; If I build without running SDV (Static Driver Verifier),
 everything is fine.&nbsp; &nbsp;There are some warnings (as shown below) a=
nd the projects in the solution are setup to treat warnings as errors.<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">What should I do to u=
se the SDV to verify the PV drivers?&nbsp; Is this a known issue and I shou=
ld just disable SDV?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Thanks for your help,=
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Christian<o:p></o:p><=
/span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;msbuild.exe /m:1 /p:Configuration=3D&quot;Windows 8 Re=
lease&quot; /p:Platform=3D&quot;x64&quot; /t:&quot;Build&quot;&nbsp; xen.vc=
xproj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Microsoft (R) Build E=
ngine version 12.0.21005.1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">[Microsoft .NET Frame=
work, version 4.0.30319.34003]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Copyright (C) Microso=
ft Corporation. All rights reserved.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build started 2/5/201=
5 3:34:26 PM.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Project &quot;C:\xenb=
its\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; on node 1 (Build target(s=
)).<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">PrepareForBuild:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\xen\Windows8Release\x64\&quot;.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\Windows8Release\x64\&quot;.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating direc=
tory &quot;..\xen\Windows8Release\x64\xen.tlog\&quot;.<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">InitializeBuildStatus=
:<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Creating &quot=
;..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild&quot; because &quot;=
AlwaysCreate&quot; was specified.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">_MASM:<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Assembling ..\=
..\src\xen\amd64\hypercall_thunk.asm...<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; cmd.exe /C &qu=
ot;C:\Users\christian.refvik\AppData\Local\Temp\tmp95adf46008a64d249a0db183=
cc77a012.cmd&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ml64.exe /c /n=
ologo /Zi /Fo&quot;..\xen\Windows8Release\x64\hypercall_thunk.obj&quot; /W3=
 /errorReport:prompt&nbsp; /Ta..\..\src\xen\amd64\hypercall_thunk.asm<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">_MASM:<o:p></o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Skipping target &quot=
;_MASM&quot; because all output files are up-to-date with respect to the in=
put files.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">CustomBuildStep:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Skipping target &quot=
;CustomBuildStep&quot; because all output files are up-to-date with respect=
 to the input files.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">ClCompile:<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\CL.exe /c /I&quot;C:=
\Program Files (x86)\Windows Kits\8.1\\include\km&quot; /I..\xen\Windows8Re=
lease\x64\
 /Zi /nologo /Wall /WX /MP /Ox /Os /Oy- /D CODE_ANALYSIS /D __x86_64__ /D &=
quot;__MODULE__=3D\&quot;XEN\&quot;&quot; /D POOL_NX_OPTIN=3D1 /D _WIN64 /D=
 _AMD64_ /D AMD64 /D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1 =
/D NTDDI_VERSION=3D0x06020000 /D _AMD64_ /GF /Gm- /Zp8 /GS /Gy /fp:precise<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; registry.c<o:p=
></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; driver.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; event_channel.=
c<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; grant_table.c<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; hvm.c<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; xen_version.c<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; hypercall.c<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; memory.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; sched.c<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; log.c<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; bug_check.c<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; module.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; process.c<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; acpi.c<o:p></o=
:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; system.c<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">ResourceCompile:<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\bin\x86\rc.exe /D _WIN64 /D _AMD64_=3D1 /D AMD64 =
/D _WIN32_WINNT=3D0x0602 /D WINVER=3D0x0602 /D WINNT=3D1
 /D NTDDI_VERSION=3D0x06020000 /l&quot;0x0409&quot; /I&quot;C:\Program File=
s (x86)\Windows Kits\8.1\Include\UM&quot; /I..\xen\Windows8Release\x64\ /no=
logo /fo&quot;..\xen\Windows8Release\x64\xen.res&quot; ..\..\src\xen\xen.rc=
<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Link:<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\link.exe /ERRORREPOR=
T:QUEUE /OUT:&quot;..\Windows8Release\x64\xen.sys&quot; /VERSION:&quot;6.3&=
quot;
 /INCREMENTAL:NO /NOLOGO /WX /SECTION:&quot;INIT,d&quot; &quot;C:\Program F=
iles (x86)\Windows Kits\8.1\lib\win8\KM\x64/libcntpr.lib&quot; &quot;C:\Pro=
gram Files (x86)\Windows Kits\8.1\lib\win8\KM\x64/aux_klib.lib&quot; &quot;=
C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x64\BufferOverflowFastF=
ailK.lib&quot;
 &quot;C:\Pro<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;..\xen\Windows8=
Release\x64\xen.res<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\registry.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\driver.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\event_channel.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\grant_table.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\hvm.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\xen_version.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\hypercall.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\memory.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\sched.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\log.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\bug_check.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\module.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\process.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\acpi.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; ..\xen\Windows=
8Release\x64\system.obj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp;&nb=
sp; Creating library ..\Windows8Release\x64\xen.lib and object ..\Windows8R=
elease\x64\xen.exp<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; xen.vcxproj -&=
gt; C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sys<o=
:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">DriverTestSign:<o:p><=
/o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Sign Inputs: C=
:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sys<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 &quot;337D411=
D5F99F4EED21E8E88BF82CDC8AF3F64F5&quot;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Done Adding Ad=
ditional Store<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Successfully s=
igned: C:\xenbits\pvdrivers\xenbus\vs2013\xen\..\Windows8Release\x64\xen.sy=
s<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Certificate us=
ed for signing: issued to =3D XENBUS (TEST) and thumbprint =3D 337D411D5F99=
F4EED21E8E88BF82CDC8AF3F64F5<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Exported Certi=
ficate: ..\Windows8Release\x64\xen.cer<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(178): warning C6102: Using 'Length' from faile=
d function call at line '175'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.=
vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(368): warning C6102: Using 'Size' from failed =
function call at line '364'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(469): warning C6102: Using 'Size' from failed =
function call at line '465'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(602): warning C6102: Using 'Size' from failed =
function call at line '598'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(827): warning C6102: Using 'Size' from failed =
function call at line '823'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">c:\xenbits\pvdrivers\=
xenbus\src\common\registry.c(899): warning C6102: Using 'Size' from failed =
function call at line '894'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vc=
xproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">FinalizeBuildStatus:<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Deleting file =
&quot;..\xen\Windows8Release\x64\xen.tlog\unsuccessfulbuild&quot;.<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Touching &quot=
;..\xen\Windows8Release\x64\xen.tlog\xen.lastbuildstate&quot;.<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Done Building Project=
 &quot;C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; (Build targ=
et(s)).<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build succeeded.<o:p>=
</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (Build target) (1) -&gt;<o:p></o:=
p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(RunNativeCodeAnalysi=
s target) -&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(178): warning C6102: Using 'Length' fro=
m failed function call at line '175'. [C:\xenbits\pvdrivers\xenbus\vs2013\x=
en\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(368): warning C6102: Using 'Size' from =
failed function call at line '364'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(469): warning C6102: Using 'Size' from =
failed function call at line '465'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(602): warning C6102: Using 'Size' from =
failed function call at line '598'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(827): warning C6102: Using 'Size' from =
failed function call at line '823'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; c:\xenbits\pvd=
rivers\xenbus\src\common\registry.c(899): warning C6102: Using 'Size' from =
failed function call at line '894'. [C:\xenbits\pvdrivers\xenbus\vs2013\xen=
\xen.vcxproj]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 6 =
Warning(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 0 =
Error(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Time Elapsed 00:00:05=
.74<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;if errorlevel 1 goto error<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;exit 0<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v.temp']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'st=
aticdv.job']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 're=
fine.sdv']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['vs2013', 'xen', 'sd=
v-map.h']<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">vs2013\xen<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">['C:\\Users\\christia=
n.refvik\\Development\\xenbits\\pvdrivers\\xenbus\\msbuild.bat']<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;call &quot;C:\Program Files (x86)\Microsoft Visual Stu=
dio 12.0\VC\vcvarsall.bat&quot; x86<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;msbuild.exe /m:1 /p:Configuration=3D&quot;Windows 8 Re=
lease&quot; /p:Platform=3D&quot;x64&quot; /t:&quot;sdv&quot; /p:Inputs=3D&q=
uot;/scan&quot;
 xen.vcxproj<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Microsoft (R) Build E=
ngine version 12.0.21005.1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">[Microsoft .NET Frame=
work, version 4.0.30319.34003]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Copyright (C) Microso=
ft Corporation. All rights reserved.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build started 2/5/201=
5 3:34:32 PM.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Project &quot;C:\xenb=
its\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; on node 1 (sdv target(s))=
.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">sdv:<o:p></o:p></span=
></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; staticdv.exe /=
scan<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; --------------=
-------------------------------------------------------<o:p></o:p></span></=
font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Microsoft (R) =
Windows (R) Static Driver Verifier Version 4.0.500.1<o:p></o:p></span></fon=
t></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; Copyright (C) =
Microsoft Corporation.&nbsp; All rights reserved.<o:p></o:p></span></font><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; --------------=
-------------------------------------------------------<o:p></o:p></span></=
font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV is buildin=
g for &lt;Windows 8 Release|x64&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV is buildin=
g for &lt;Windows 8 Release|x64&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; The call to &q=
uot;Build&quot; failed.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">EXEC : Build warning =
: ..\..\src\common\registry.c(224): error C2220: warning treated as error -=
 no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcx=
proj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">EXEC : Build warning =
: ..\..\src\common\registry.c(224): error C2220: warning treated as error -=
 no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcx=
proj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV exit code:=
 5<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; SDV encountere=
d errors when scanning the driver. Please ensure roletypes are present and/=
or consult SDV documentation.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\Program Files (x86=
)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,9): error MSB3075: Th=
e command &quot;staticdv.exe /scan&quot; exited with
 code 5. Please verify that you have sufficient rights to run this command.=
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Done Building Project=
 &quot;C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target=
(s)) -- FAILED.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Build FAILED.<o:p></o=
:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target) (1) -&gt;<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(sdv target) -&gt;<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; EXEC : Build w=
arning : ..\..\src\common\registry.c(224): error C2220: warning treated as =
error - no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\=
xen.vcxproj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; EXEC : Build w=
arning : ..\..\src\common\registry.c(224): error C2220: warning treated as =
error - no 'object' file generated [C:\xenbits\pvdrivers\xenbus\vs2013\xen\=
xen.vcxproj]
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&quot;C:\xenbits\pvdr=
ivers\xenbus\vs2013\xen\xen.vcxproj&quot; (sdv target) (1) -&gt;<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">(sdv target) -&gt;<o:=
p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; C:\Program Fil=
es (x86)\Windows Kits\8.1\build\windowsdriver.Sdv.targets(65,9): error MSB3=
075: The command &quot;staticdv.exe /scan&quot; exited with
 code 5. Please verify that you have sufficient rights to run this command.=
 [C:\xenbits\pvdrivers\xenbus\vs2013\xen\xen.vcxproj]<o:p></o:p></span></fo=
nt></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 2 =
Warning(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; 1 =
Error(s)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Time Elapsed 00:00:06=
.51<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;if errorlevel 1 goto error<o:p></o:p></span></font></p=
>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus\vs2013\xen&gt;exit 1<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">Traceback (most recen=
t call last):<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 370, in &lt;module&gt;<o:p></=
o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; ru=
n_sdv('xen', driver, vs)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 204, in run_sdv<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; '/=
p:Inputs=3D&quot;/scan&quot;', os.path.join(vs, name))<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp; File &quot;C:\=
xenbits\pvdrivers\xenbus\build.py&quot;, line 124, in msbuild<o:p></o:p></s=
pan></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">&nbsp;&nbsp;&nbsp; ra=
ise msbuild_failure(configuration)<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">__main__.msbuild_fail=
ure: 'Windows 8 Release'<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US">C:\xenbits\pvdrivers\=
xenbus&gt;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" face=3D"Calibri"><span lang=3D"EN-U=
S" style=3D"font-size:11.0pt;mso-ansi-language:EN-US"><o:p>&nbsp;</o:p></sp=
an></font></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025821129AMSPEX01CL01cit_--


--===============5806507494878055024==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5806507494878055024==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 13:18:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 13:18:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSQEr-0001bo-Ac; Mon, 02 Mar 2015 13:18:25 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSQEq-0001bR-5o
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 13:18:24 +0000
Received: from [85.158.137.68] by server-14.bemta-3.messagelabs.com id
	B6/C6-02885-F1364F45; Mon, 02 Mar 2015 13:18:23 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1425302302!12214272!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29293 invoked from network); 2 Mar 2015 13:18:22 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 13:18:22 -0000
Received: by wggx12 with SMTP id x12so33313478wgg.11
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 05:18:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xJ2TPC7QZKdBzBJ531Dfbxkx9G0AUQK/+kPna74FWkQ=;
	b=io1KMQo8dGeHK4/nGjB9lYOVUaw0zdTHUaAuRMZa5ET70bitYUxDKp4x2OqpFXmrM8
	pyEttezp4Y9WwRM+XGNyI7fd6r7u+B6upixOb3H0A085U6UGT7oXO9t2a3k7Wveqcvbz
	yqFVNWjj5ZYrMV/xTZ36MXuilsrUBGs7qM/QL1pw70MYPVMq/4yxrVJ3JimgHt/QdHff
	DG4JbGngXNy1cWCSNlRkk1fCxwC7cVAQTQgqJhqNRkkwpDFWT5uH+WHBVldGHG+/FZ8i
	avvs/A830iKMpmRCO5QA6tk+JwVqfp9otLD5naCnLloUBeeQv3zPMmYljTDCRRrdk3Fv
	LsNQ==
X-Received: by 10.181.13.146 with SMTP id ey18mr36034233wid.84.1425302302567; 
	Mon, 02 Mar 2015 05:18:22 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id v16sm16041109wib.5.2015.03.02.05.18.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 05:18:21 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 13:18:11 +0000
Message-Id: <1425302291-11932-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

A mis-annotation of some ZwQueryXXX operations is causing SDV to fail
when it notices code in registry.c using the length being passed back
from a failed call. The code is correct according to the documentation of
those functions so this patch suppresses the warnings.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/common/registry.c | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/common/registry.c b/src/common/registry.c
index 81a20cf..bfddbcc 100644
--- a/src/common/registry.c
+++ b/src/common/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 13:18:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 13:18:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSQEr-0001bo-Ac; Mon, 02 Mar 2015 13:18:25 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSQEq-0001bR-5o
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 13:18:24 +0000
Received: from [85.158.137.68] by server-14.bemta-3.messagelabs.com id
	B6/C6-02885-F1364F45; Mon, 02 Mar 2015 13:18:23 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1425302302!12214272!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29293 invoked from network); 2 Mar 2015 13:18:22 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 13:18:22 -0000
Received: by wggx12 with SMTP id x12so33313478wgg.11
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 05:18:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xJ2TPC7QZKdBzBJ531Dfbxkx9G0AUQK/+kPna74FWkQ=;
	b=io1KMQo8dGeHK4/nGjB9lYOVUaw0zdTHUaAuRMZa5ET70bitYUxDKp4x2OqpFXmrM8
	pyEttezp4Y9WwRM+XGNyI7fd6r7u+B6upixOb3H0A085U6UGT7oXO9t2a3k7Wveqcvbz
	yqFVNWjj5ZYrMV/xTZ36MXuilsrUBGs7qM/QL1pw70MYPVMq/4yxrVJ3JimgHt/QdHff
	DG4JbGngXNy1cWCSNlRkk1fCxwC7cVAQTQgqJhqNRkkwpDFWT5uH+WHBVldGHG+/FZ8i
	avvs/A830iKMpmRCO5QA6tk+JwVqfp9otLD5naCnLloUBeeQv3zPMmYljTDCRRrdk3Fv
	LsNQ==
X-Received: by 10.181.13.146 with SMTP id ey18mr36034233wid.84.1425302302567; 
	Mon, 02 Mar 2015 05:18:22 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id v16sm16041109wib.5.2015.03.02.05.18.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 05:18:21 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 13:18:11 +0000
Message-Id: <1425302291-11932-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

A mis-annotation of some ZwQueryXXX operations is causing SDV to fail
when it notices code in registry.c using the length being passed back
from a failed call. The code is correct according to the documentation of
those functions so this patch suppresses the warnings.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/common/registry.c | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/common/registry.c b/src/common/registry.c
index 81a20cf..bfddbcc 100644
--- a/src/common/registry.c
+++ b/src/common/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 15:48:12 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 15:48:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSSZo-0004V0-Gs; Mon, 02 Mar 2015 15:48:12 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSSZn-0004UX-00
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 15:48:11 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	87/C1-02898-A3684F45; Mon, 02 Mar 2015 15:48:10 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1425311289!7866268!1
X-Originating-IP: [74.125.82.44]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12445 invoked from network); 2 Mar 2015 15:48:09 -0000
Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com)
	(74.125.82.44)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 15:48:09 -0000
Received: by wggz12 with SMTP id z12so34359962wgg.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 07:48:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=x0Vb/osNj+QFTXFNlnljeVtcIfaR7CqzefvKT/s7kko=;
	b=0PJhkqkDEWC8k9UPjLhW+a8jnhmOK+7BrFCSWdW9CX397kpnBMtHblQrq+hXbvzJ7l
	RUupCydSzCpvLg/Id4ks9GRnT0MF5DGZm4wPktaUig8MaUfHHSIOtHGJzch0NNbh8vgE
	2sVOVkD2ih6ERIdJwqBAxA5GUOolxvNrJ2XPQfFP8mg/wxgsX4vdBt0ugxyrxuDEhYTf
	qd2t7tcxfmTfWqDwcZ7wv/gH7ChNs6W9VpmNK5yeCIFjur/3TxuAm6qusq4SjktVIzpZ
	EDNQpSrwqsxNHV08B5gC6U5j4l/2txBHS9OAZD96zEeKXnT6luc1GavIam2Izy1pR24P
	bOHA==
X-Received: by 10.194.80.193 with SMTP id t1mr61357964wjx.8.1425311289480;
	Mon, 02 Mar 2015 07:48:09 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fu1sm16598681wic.2.2015.03.02.07.48.08
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 07:48:08 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 15:47:57 +0000
Message-Id: <1425311277-14120-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The code in registry.c needs the same prefast suppression as it does in
XENBUS.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/registry.c | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/xenvif/registry.c b/src/xenvif/registry.c
index 5843ef5..519d3f6 100644
--- a/src/xenvif/registry.c
+++ b/src/xenvif/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 15:48:12 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 15:48:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSSZo-0004V0-Gs; Mon, 02 Mar 2015 15:48:12 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSSZn-0004UX-00
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 15:48:11 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	87/C1-02898-A3684F45; Mon, 02 Mar 2015 15:48:10 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1425311289!7866268!1
X-Originating-IP: [74.125.82.44]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12445 invoked from network); 2 Mar 2015 15:48:09 -0000
Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com)
	(74.125.82.44)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 15:48:09 -0000
Received: by wggz12 with SMTP id z12so34359962wgg.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 07:48:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=x0Vb/osNj+QFTXFNlnljeVtcIfaR7CqzefvKT/s7kko=;
	b=0PJhkqkDEWC8k9UPjLhW+a8jnhmOK+7BrFCSWdW9CX397kpnBMtHblQrq+hXbvzJ7l
	RUupCydSzCpvLg/Id4ks9GRnT0MF5DGZm4wPktaUig8MaUfHHSIOtHGJzch0NNbh8vgE
	2sVOVkD2ih6ERIdJwqBAxA5GUOolxvNrJ2XPQfFP8mg/wxgsX4vdBt0ugxyrxuDEhYTf
	qd2t7tcxfmTfWqDwcZ7wv/gH7ChNs6W9VpmNK5yeCIFjur/3TxuAm6qusq4SjktVIzpZ
	EDNQpSrwqsxNHV08B5gC6U5j4l/2txBHS9OAZD96zEeKXnT6luc1GavIam2Izy1pR24P
	bOHA==
X-Received: by 10.194.80.193 with SMTP id t1mr61357964wjx.8.1425311289480;
	Mon, 02 Mar 2015 07:48:09 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fu1sm16598681wic.2.2015.03.02.07.48.08
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 07:48:08 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 15:47:57 +0000
Message-Id: <1425311277-14120-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The code in registry.c needs the same prefast suppression as it does in
XENBUS.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/registry.c | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/xenvif/registry.c b/src/xenvif/registry.c
index 5843ef5..519d3f6 100644
--- a/src/xenvif/registry.c
+++ b/src/xenvif/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 15:53:47 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 15:53:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSSfD-0005ET-62; Mon, 02 Mar 2015 15:53:47 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSSfB-0005EA-Eg
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 15:53:45 +0000
Received: from [193.109.254.147] by server-15.bemta-14.messagelabs.com id
	6B/77-02770-88784F45; Mon, 02 Mar 2015 15:53:44 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1425311623!14009720!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16079 invoked from network); 2 Mar 2015 15:53:43 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 15:53:43 -0000
Received: by wghl2 with SMTP id l2so34335660wgh.9
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 07:53:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=6nlAVUawHnzLe7YDmJFhmKq/fL5Bi/VL0tRBsSUw5ME=;
	b=drNpwctzV77aCgEFfv5U/moOSJjZ8UEArx2sQhD/aH3sVG1isRL85+vo4uaDRHuzH6
	R1YT0ZIxSakRyU8CIzchdjymVc73xvihnIkhubwMxuWIYytd5EDrMBWPRimE0wSpPQDA
	4EXmHTpHvSXxXgiltZ9k+dVIzOM87g2Fqtg5bT0Cc/7KxtubcoqjMAzT1Bs5WjP7Hr+v
	AeNuXmodjlxegTfncOwRwcRXti3Qmn8WvLAaagK7pRU0gDD9Qo0/wh3LinfnyI7sg0AU
	Rm14JsOfKD3/4rB50vemA1doWFEx5LPpdgiffQc4VRBXUPDp+ar/k2riq4t1rsSIp9de
	kCdQ==
X-Received: by 10.194.158.234 with SMTP id wx10mr60967856wjb.23.1425311623513; 
	Mon, 02 Mar 2015 07:53:43 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id m9sm16544340wiz.24.2015.03.02.07.53.42
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 07:53:42 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 15:53:32 +0000
Message-Id: <1425311612-11772-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Further VS2013 SDV fixes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The last set of fixes was not complete. SDV failed again, later on, in
building xenbus.sys.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/bus.c | 4 +++-
 src/xenbus/fdo.c | 6 ++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/xenbus/bus.c b/src/xenbus/bus.c
index bf0bec7..1cd527f 100644
--- a/src/xenbus/bus.c
+++ b/src/xenbus/bus.c
@@ -122,8 +122,10 @@ BusGetDmaAdapter(
 
     if (Context->InterceptDmaAdapter != 0) {
         RTL_OSVERSIONINFOEXW    VersionInformation;
+        NTSTATUS                status;
 
-        RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation);
+        status = RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation);
+        ASSERT(NT_SUCCESS(status));
 
         if (VersionInformation.dwMajorVersion == 6 &&
             VersionInformation.dwMinorVersion == 0) {
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 76cac4f..17a74ab 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -1822,6 +1822,7 @@ FdoConnectInterrupt(
     )
 {
     IO_CONNECT_INTERRUPT_PARAMETERS     Connect;
+    BOOLEAN                             Found;
     ULONG                               Cpu;
     NTSTATUS                            status;
 
@@ -1869,12 +1870,13 @@ FdoConnectInterrupt(
     (*Interrupt)->Vector = (UCHAR)Connect.FullySpecified.Vector;
 
 #if defined(__i386__)
-    (VOID)_BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
 #elif defined(__x86_64__)
-    (VOID)_BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
 #else
 #error 'Unrecognised architecture'
 #endif
+    ASSERT(Found);
 
     (*Interrupt)->Cpu = Cpu;
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 15:53:47 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 15:53:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSSfD-0005ET-62; Mon, 02 Mar 2015 15:53:47 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSSfB-0005EA-Eg
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 15:53:45 +0000
Received: from [193.109.254.147] by server-15.bemta-14.messagelabs.com id
	6B/77-02770-88784F45; Mon, 02 Mar 2015 15:53:44 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1425311623!14009720!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16079 invoked from network); 2 Mar 2015 15:53:43 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 15:53:43 -0000
Received: by wghl2 with SMTP id l2so34335660wgh.9
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 07:53:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=6nlAVUawHnzLe7YDmJFhmKq/fL5Bi/VL0tRBsSUw5ME=;
	b=drNpwctzV77aCgEFfv5U/moOSJjZ8UEArx2sQhD/aH3sVG1isRL85+vo4uaDRHuzH6
	R1YT0ZIxSakRyU8CIzchdjymVc73xvihnIkhubwMxuWIYytd5EDrMBWPRimE0wSpPQDA
	4EXmHTpHvSXxXgiltZ9k+dVIzOM87g2Fqtg5bT0Cc/7KxtubcoqjMAzT1Bs5WjP7Hr+v
	AeNuXmodjlxegTfncOwRwcRXti3Qmn8WvLAaagK7pRU0gDD9Qo0/wh3LinfnyI7sg0AU
	Rm14JsOfKD3/4rB50vemA1doWFEx5LPpdgiffQc4VRBXUPDp+ar/k2riq4t1rsSIp9de
	kCdQ==
X-Received: by 10.194.158.234 with SMTP id wx10mr60967856wjb.23.1425311623513; 
	Mon, 02 Mar 2015 07:53:43 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id m9sm16544340wiz.24.2015.03.02.07.53.42
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 07:53:42 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 15:53:32 +0000
Message-Id: <1425311612-11772-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Further VS2013 SDV fixes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The last set of fixes was not complete. SDV failed again, later on, in
building xenbus.sys.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/bus.c | 4 +++-
 src/xenbus/fdo.c | 6 ++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/xenbus/bus.c b/src/xenbus/bus.c
index bf0bec7..1cd527f 100644
--- a/src/xenbus/bus.c
+++ b/src/xenbus/bus.c
@@ -122,8 +122,10 @@ BusGetDmaAdapter(
 
     if (Context->InterceptDmaAdapter != 0) {
         RTL_OSVERSIONINFOEXW    VersionInformation;
+        NTSTATUS                status;
 
-        RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation);
+        status = RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation);
+        ASSERT(NT_SUCCESS(status));
 
         if (VersionInformation.dwMajorVersion == 6 &&
             VersionInformation.dwMinorVersion == 0) {
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 76cac4f..17a74ab 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -1822,6 +1822,7 @@ FdoConnectInterrupt(
     )
 {
     IO_CONNECT_INTERRUPT_PARAMETERS     Connect;
+    BOOLEAN                             Found;
     ULONG                               Cpu;
     NTSTATUS                            status;
 
@@ -1869,12 +1870,13 @@ FdoConnectInterrupt(
     (*Interrupt)->Vector = (UCHAR)Connect.FullySpecified.Vector;
 
 #if defined(__i386__)
-    (VOID)_BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
 #elif defined(__x86_64__)
-    (VOID)_BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
 #else
 #error 'Unrecognised architecture'
 #endif
+    ASSERT(Found);
 
     (*Interrupt)->Cpu = Cpu;
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 16:26:16 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 16:26:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSTAe-0003gN-1y; Mon, 02 Mar 2015 16:26:16 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSTAc-0003gG-PO
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 16:26:14 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	C9/25-03710-62F84F45; Mon, 02 Mar 2015 16:26:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1425313573!8585962!1
X-Originating-IP: [74.125.82.42]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28103 invoked from network); 2 Mar 2015 16:26:13 -0000
Received: from mail-wg0-f42.google.com (HELO mail-wg0-f42.google.com)
	(74.125.82.42)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 16:26:13 -0000
Received: by wghk14 with SMTP id k14so34575438wgh.4
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 08:26:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xHD+Mmd+YlnZEH54aa+iTJu3uHLnTSmxxYcX+Sahigw=;
	b=rcF9laoicac2j15RNXFCnLYobOvt8GbVsloFOu4+4PksyBow/m8WSHQg9ThFqY/T3r
	OFNAxeyUNsJxrlEv6VnVSp3oL97MotDnPC+x/GFtIjZdNaaQ2U1kN4kkg5rm3DxXL/6n
	QN/xiHh7GPgVXoFxtOghK0Hrn3LtAkxWjQkZJiI4akgQl9PhZZXd988vp2SUnRTrpUMJ
	bm4THmoOph4EkzmmIDwRmqm3muJ6yG3ndvfG/p7YwhoI4RdPCviagGLbZJjm7Bac+mcH
	vLcwY+R9Lv1dsRTwlDul2YXbLSyqZzXf+semlJTLUDgA5IqD8ORUmsC0ZKmmT67Y/St9
	RKIw==
X-Received: by 10.180.102.199 with SMTP id fq7mr36471491wib.89.1425313572914; 
	Mon, 02 Mar 2015 08:26:12 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id w4sm8445396wib.19.2015.03.02.08.26.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 08:26:12 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 16:26:02 +0000
Message-Id: <1425313562-13872-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 5 +++++
 src/xennet/driver.c  | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b094519..82fcbd1 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1708,6 +1708,9 @@ fail1:
     return status;
 }
 
+#pragma prefast(push)
+#pragma prefast(disable:6102)
+
 #define READ_PROPERTY(field, name, defaultval, handle)  \
     do {                                                \
         NDIS_STATUS                     _Status;        \
@@ -1763,6 +1766,8 @@ fail1:
 
 #undef READ_PROPERTY
 
+#pragma prefast(pop)
+
 static NDIS_STATUS
 AdapterSetRegistrationAttributes(
     IN  PXENNET_ADAPTER Adapter
diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index f0ba962..c6a4896 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -486,6 +486,7 @@ DriverEntry (
                           ConfigurationHandle,
                           &ParameterName,
                           NdisParameterInteger);
+#pragma prefast(suppress:6102)
     if (ndisStatus == NDIS_STATUS_SUCCESS &&
         ParameterValue->ParameterType == NdisParameterInteger)
         FailCreateClose = ParameterValue->ParameterData.IntegerData;
@@ -499,6 +500,7 @@ DriverEntry (
                           ConfigurationHandle,
                           &ParameterName,
                           NdisParameterInteger);
+#pragma prefast(suppress:6102)
     if (ndisStatus == NDIS_STATUS_SUCCESS &&
         ParameterValue->ParameterType == NdisParameterInteger)
         FailDeviceControl = ParameterValue->ParameterData.IntegerData;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 16:26:16 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 16:26:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSTAe-0003gN-1y; Mon, 02 Mar 2015 16:26:16 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSTAc-0003gG-PO
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 16:26:14 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	C9/25-03710-62F84F45; Mon, 02 Mar 2015 16:26:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1425313573!8585962!1
X-Originating-IP: [74.125.82.42]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28103 invoked from network); 2 Mar 2015 16:26:13 -0000
Received: from mail-wg0-f42.google.com (HELO mail-wg0-f42.google.com)
	(74.125.82.42)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 16:26:13 -0000
Received: by wghk14 with SMTP id k14so34575438wgh.4
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 08:26:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xHD+Mmd+YlnZEH54aa+iTJu3uHLnTSmxxYcX+Sahigw=;
	b=rcF9laoicac2j15RNXFCnLYobOvt8GbVsloFOu4+4PksyBow/m8WSHQg9ThFqY/T3r
	OFNAxeyUNsJxrlEv6VnVSp3oL97MotDnPC+x/GFtIjZdNaaQ2U1kN4kkg5rm3DxXL/6n
	QN/xiHh7GPgVXoFxtOghK0Hrn3LtAkxWjQkZJiI4akgQl9PhZZXd988vp2SUnRTrpUMJ
	bm4THmoOph4EkzmmIDwRmqm3muJ6yG3ndvfG/p7YwhoI4RdPCviagGLbZJjm7Bac+mcH
	vLcwY+R9Lv1dsRTwlDul2YXbLSyqZzXf+semlJTLUDgA5IqD8ORUmsC0ZKmmT67Y/St9
	RKIw==
X-Received: by 10.180.102.199 with SMTP id fq7mr36471491wib.89.1425313572914; 
	Mon, 02 Mar 2015 08:26:12 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id w4sm8445396wib.19.2015.03.02.08.26.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 08:26:12 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 16:26:02 +0000
Message-Id: <1425313562-13872-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 5 +++++
 src/xennet/driver.c  | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b094519..82fcbd1 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1708,6 +1708,9 @@ fail1:
     return status;
 }
 
+#pragma prefast(push)
+#pragma prefast(disable:6102)
+
 #define READ_PROPERTY(field, name, defaultval, handle)  \
     do {                                                \
         NDIS_STATUS                     _Status;        \
@@ -1763,6 +1766,8 @@ fail1:
 
 #undef READ_PROPERTY
 
+#pragma prefast(pop)
+
 static NDIS_STATUS
 AdapterSetRegistrationAttributes(
     IN  PXENNET_ADAPTER Adapter
diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index f0ba962..c6a4896 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -486,6 +486,7 @@ DriverEntry (
                           ConfigurationHandle,
                           &ParameterName,
                           NdisParameterInteger);
+#pragma prefast(suppress:6102)
     if (ndisStatus == NDIS_STATUS_SUCCESS &&
         ParameterValue->ParameterType == NdisParameterInteger)
         FailCreateClose = ParameterValue->ParameterData.IntegerData;
@@ -499,6 +500,7 @@ DriverEntry (
                           ConfigurationHandle,
                           &ParameterName,
                           NdisParameterInteger);
+#pragma prefast(suppress:6102)
     if (ndisStatus == NDIS_STATUS_SUCCESS &&
         ParameterValue->ParameterType == NdisParameterInteger)
         FailDeviceControl = ParameterValue->ParameterData.IntegerData;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 17:27:03 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 17:27:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSU7T-0006Mg-MY; Mon, 02 Mar 2015 17:27:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSU7S-0006MF-EY
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 17:27:02 +0000
Received: from [85.158.139.211] by server-8.bemta-5.messagelabs.com id
	25/83-03712-56D94F45; Mon, 02 Mar 2015 17:27:01 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-206.messagelabs.com!1425317220!12452276!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17244 invoked from network); 2 Mar 2015 17:27:01 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-7.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 17:27:01 -0000
Received: by wghk14 with SMTP id k14so34932945wgh.3
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 09:27:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=Tg2dDUfx/RpaVwO43F8fOnkLlyvvwfTYTTLYm9cq4Jw=;
	b=xIVuzbQsNEQSb7VbLGLS4NgAHQ8jrLQ1Sg8g8Ic5rtAbWWZ2z7f/PoSApPqfPsgdie
	uy84UQB+/rJlp/XmrmDvGdmv+XrtdG/u0R37ZFRKjoMBJ/1y5+KAcm7+Q5s2uCB7Xo4S
	sVTcBFMf5JZB/dYnaBZ6p+BlprIxxtqVL8DeTuLjt1KgEjG0uQ10oXjHZFDTBPGvALgO
	3y8funeX0hCRV/aR0V1CgEXkQ4e6k6kuPFTUS8uBZ6nb4YvFv2BhqPxZfyGsLhiN2QV3
	HIVfaBsZk5gYSlH+voulWnUrgc4jVYubMdapfwC0FtG1Y4XYudci74IffAzdT1AzEga6
	M50w==
X-Received: by 10.181.12.105 with SMTP id ep9mr38047827wid.85.1425317220804;
	Mon, 02 Mar 2015 09:27:00 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fu1sm16979920wic.2.2015.03.02.09.26.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 09:26:59 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 17:26:43 +0000
Message-Id: <1425317203-13916-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvbd/buffer.c   |  1 +
 src/xenvbd/driver.c   |  4 +++-
 src/xenvbd/fdo.c      |  5 ++---
 src/xenvbd/pdo.c      |  1 +
 src/xenvbd/registry.c | 38 ++++++++++++++++++++++++--------------
 5 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/src/xenvbd/buffer.c b/src/xenvbd/buffer.c
index 029543e..6e35790 100644
--- a/src/xenvbd/buffer.c
+++ b/src/xenvbd/buffer.c
@@ -130,6 +130,7 @@ __IsOnList(
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
     for (Entry = ListHead->Flink; Entry != ListHead; Entry = Entry->Flink) {
+        ASSERT3P(Entry, !=, NULL);
         if (Entry == ListItem) {
             Found = TRUE;
             break;
diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c
index 08f9b12..f5f73ca 100644
--- a/src/xenvbd/driver.c
+++ b/src/xenvbd/driver.c
@@ -120,10 +120,12 @@ __DriverGetSystemStartParams(
 
     RtlInitUnicodeString(&Unicode, L"SystemStartOptions");
     Status = ZwQueryValueKey(Key, &Unicode, KeyValuePartialInformation, NULL, 0, &Size);
-    if (Status != STATUS_BUFFER_TOO_SMALL)
+    if (Status != STATUS_BUFFER_TOO_SMALL &&
+        Status != STATUS_BUFFER_OVERFLOW)
         goto fail2;
 
     Status = STATUS_NO_MEMORY;
+#pragma prefast(suppress:6102)
     Value = (PKEY_VALUE_PARTIAL_INFORMATION)__AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Size, XENVBD_POOL_TAG);
     if (Value == NULL)
         goto fail3;
diff --git a/src/xenvbd/fdo.c b/src/xenvbd/fdo.c
index 60d8cd9..f240a97 100644
--- a/src/xenvbd/fdo.c
+++ b/src/xenvbd/fdo.c
@@ -1211,7 +1211,7 @@ FdoDevicePower(
 }
 
 __checkReturn
-__drv_maxIRQL(DISPATCH_LEVEL)
+__drv_maxIRQL(PASSIVE_LEVEL)
 static NTSTATUS
 __FdoInitialize(
     __in PXENVBD_FDO             Fdo
@@ -1796,10 +1796,9 @@ FdoMapDeviceObjectToPdo(
     Status = __FdoExtractTargetId(String, &TargetId);
     if (NT_SUCCESS(Status)) {
         __FdoSetDeviceObject(Fdo, TargetId, DeviceObject);
+        Verbose("0x%p --> Target %d (%ws)\n", DeviceObject, TargetId, String);
     }
 
-    Verbose("0x%p --> Target %d (%ws)\n", DeviceObject, TargetId, String);
-
     // String is PagedPool, allocated by lower driver
     ASSERT3U(KeGetCurrentIrql(), <=, APC_LEVEL);
     ExFreePool(String);
diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 3f18621..76b0112 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -621,6 +621,7 @@ PdoDestroy(
                                  FALSE,
                                  NULL,
                                  WaitBlock);
+#pragma prefast(suppress:6102)
         __PdoFree(WaitBlock);
     }
 
diff --git a/src/xenvbd/registry.c b/src/xenvbd/registry.c
index 2308908..883bcb4 100644
--- a/src/xenvbd/registry.c
+++ b/src/xenvbd/registry.c
@@ -171,16 +171,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -365,9 +365,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -466,9 +468,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -599,9 +603,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -824,9 +830,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -895,10 +903,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 17:27:03 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 17:27:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSU7T-0006Mg-MY; Mon, 02 Mar 2015 17:27:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSU7S-0006MF-EY
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 17:27:02 +0000
Received: from [85.158.139.211] by server-8.bemta-5.messagelabs.com id
	25/83-03712-56D94F45; Mon, 02 Mar 2015 17:27:01 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-206.messagelabs.com!1425317220!12452276!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17244 invoked from network); 2 Mar 2015 17:27:01 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-7.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 17:27:01 -0000
Received: by wghk14 with SMTP id k14so34932945wgh.3
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 09:27:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=Tg2dDUfx/RpaVwO43F8fOnkLlyvvwfTYTTLYm9cq4Jw=;
	b=xIVuzbQsNEQSb7VbLGLS4NgAHQ8jrLQ1Sg8g8Ic5rtAbWWZ2z7f/PoSApPqfPsgdie
	uy84UQB+/rJlp/XmrmDvGdmv+XrtdG/u0R37ZFRKjoMBJ/1y5+KAcm7+Q5s2uCB7Xo4S
	sVTcBFMf5JZB/dYnaBZ6p+BlprIxxtqVL8DeTuLjt1KgEjG0uQ10oXjHZFDTBPGvALgO
	3y8funeX0hCRV/aR0V1CgEXkQ4e6k6kuPFTUS8uBZ6nb4YvFv2BhqPxZfyGsLhiN2QV3
	HIVfaBsZk5gYSlH+voulWnUrgc4jVYubMdapfwC0FtG1Y4XYudci74IffAzdT1AzEga6
	M50w==
X-Received: by 10.181.12.105 with SMTP id ep9mr38047827wid.85.1425317220804;
	Mon, 02 Mar 2015 09:27:00 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fu1sm16979920wic.2.2015.03.02.09.26.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 09:26:59 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 17:26:43 +0000
Message-Id: <1425317203-13916-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvbd/buffer.c   |  1 +
 src/xenvbd/driver.c   |  4 +++-
 src/xenvbd/fdo.c      |  5 ++---
 src/xenvbd/pdo.c      |  1 +
 src/xenvbd/registry.c | 38 ++++++++++++++++++++++++--------------
 5 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/src/xenvbd/buffer.c b/src/xenvbd/buffer.c
index 029543e..6e35790 100644
--- a/src/xenvbd/buffer.c
+++ b/src/xenvbd/buffer.c
@@ -130,6 +130,7 @@ __IsOnList(
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
     for (Entry = ListHead->Flink; Entry != ListHead; Entry = Entry->Flink) {
+        ASSERT3P(Entry, !=, NULL);
         if (Entry == ListItem) {
             Found = TRUE;
             break;
diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c
index 08f9b12..f5f73ca 100644
--- a/src/xenvbd/driver.c
+++ b/src/xenvbd/driver.c
@@ -120,10 +120,12 @@ __DriverGetSystemStartParams(
 
     RtlInitUnicodeString(&Unicode, L"SystemStartOptions");
     Status = ZwQueryValueKey(Key, &Unicode, KeyValuePartialInformation, NULL, 0, &Size);
-    if (Status != STATUS_BUFFER_TOO_SMALL)
+    if (Status != STATUS_BUFFER_TOO_SMALL &&
+        Status != STATUS_BUFFER_OVERFLOW)
         goto fail2;
 
     Status = STATUS_NO_MEMORY;
+#pragma prefast(suppress:6102)
     Value = (PKEY_VALUE_PARTIAL_INFORMATION)__AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Size, XENVBD_POOL_TAG);
     if (Value == NULL)
         goto fail3;
diff --git a/src/xenvbd/fdo.c b/src/xenvbd/fdo.c
index 60d8cd9..f240a97 100644
--- a/src/xenvbd/fdo.c
+++ b/src/xenvbd/fdo.c
@@ -1211,7 +1211,7 @@ FdoDevicePower(
 }
 
 __checkReturn
-__drv_maxIRQL(DISPATCH_LEVEL)
+__drv_maxIRQL(PASSIVE_LEVEL)
 static NTSTATUS
 __FdoInitialize(
     __in PXENVBD_FDO             Fdo
@@ -1796,10 +1796,9 @@ FdoMapDeviceObjectToPdo(
     Status = __FdoExtractTargetId(String, &TargetId);
     if (NT_SUCCESS(Status)) {
         __FdoSetDeviceObject(Fdo, TargetId, DeviceObject);
+        Verbose("0x%p --> Target %d (%ws)\n", DeviceObject, TargetId, String);
     }
 
-    Verbose("0x%p --> Target %d (%ws)\n", DeviceObject, TargetId, String);
-
     // String is PagedPool, allocated by lower driver
     ASSERT3U(KeGetCurrentIrql(), <=, APC_LEVEL);
     ExFreePool(String);
diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 3f18621..76b0112 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -621,6 +621,7 @@ PdoDestroy(
                                  FALSE,
                                  NULL,
                                  WaitBlock);
+#pragma prefast(suppress:6102)
         __PdoFree(WaitBlock);
     }
 
diff --git a/src/xenvbd/registry.c b/src/xenvbd/registry.c
index 2308908..883bcb4 100644
--- a/src/xenvbd/registry.c
+++ b/src/xenvbd/registry.c
@@ -171,16 +171,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -365,9 +365,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -466,9 +468,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -599,9 +603,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -824,9 +830,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -895,10 +903,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 17:48:39 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 17:48:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSUSN-0002LT-94; Mon, 02 Mar 2015 17:48:39 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSUSL-0002Kf-Mw
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 17:48:37 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	80/8B-02994-572A4F45; Mon, 02 Mar 2015 17:48:37 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1425318516!14003211!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31077 invoked from network); 2 Mar 2015 17:48:36 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 17:48:36 -0000
Received: by wivr20 with SMTP id r20so16774146wiv.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 09:48:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=3YNtLfquwfJK8v5eGJqNyzT2BsioXCLQrDAWEjT6X7A=;
	b=XvyBIzFk9D0wuc18W7TgNai+rPvYVcInzzPCjGYa3S///tB/LYYq00se+qWWsQtL1O
	soJHvpSsV+kQ7riXKEfcKtZ48Ae5n9VgnMP7ixyLN7hVUGbExsW0+5vm903HMmRZx3sc
	ZE0UgOq1mBMGPxVACkrOSW3eJduIP0gBnYkcQVlrvnGalIYcxS656bSulT4eiwRh+EuS
	S/EJNEq30ggJBAgrzVQju9m3Ibc2epQiRUQNghDjffgPT4hy9l9eD22UviKRMOW8KmC5
	CrlbCe8Nik/xbvwBXhEL9sOV+9Id2CsSXMjx3GPsYifmUKtTWIqJqsTpMbfm6psBerci
	hNHA==
X-Received: by 10.180.37.110 with SMTP id x14mr37976331wij.45.1425318515772;
	Mon, 02 Mar 2015 09:48:35 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id t9sm17004212wia.15.2015.03.02.09.48.33
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 09:48:34 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 17:48:24 +0000
Message-Id: <1425318504-8492-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also update the assert.h header.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xeniface/assert.h   | 67 ++++++++++++++++++++++++++++++++++++-------------
 src/xeniface/registry.c | 38 +++++++++++++++++-----------
 src/xeniface/wmi.c      |  8 +++++-
 3 files changed, 80 insertions(+), 33 deletions(-)

diff --git a/src/xeniface/assert.h b/src/xeniface/assert.h
index 4229f7c..83b215f 100644
--- a/src/xeniface/assert.h
+++ b/src/xeniface/assert.h
@@ -37,7 +37,7 @@
 #include "log.h"
 
 static FORCEINLINE VOID
-__BugCheck(
+__Bug(
     IN  ULONG       Code,
     IN  ULONG_PTR   Parameter1,
     IN  ULONG_PTR   Parameter2,
@@ -62,11 +62,11 @@ __BugCheck(
             ULONG       _Line = __LINE__;                       \
                                                                 \
             Error("BUG: " _TEXT "\n");                          \
-            __BugCheck(ASSERTION_FAILURE,                       \
-                       (ULONG_PTR)_Text,                        \
-                       (ULONG_PTR)_File,                        \
-                       (ULONG_PTR)_Line,                        \
-                       0);                                      \
+            __Bug(ASSERTION_FAILURE,                            \
+                  (ULONG_PTR)_Text,                             \
+                  (ULONG_PTR)_File,                             \
+                  (ULONG_PTR)_Line,                             \
+                  0);                                           \
         } while (FALSE)
 
 #define BUG_ON(_EXP)                \
@@ -98,7 +98,7 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %llu\n", #_X, _Lval);   \
                 Error("%s = %llu\n", #_Y, _Rval);   \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
@@ -109,7 +109,7 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %lld\n", #_X, _Lval);   \
                 Error("%s = %lld\n", #_Y, _Rval);   \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
@@ -120,16 +120,34 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %p\n", #_X, _Lval);     \
                 Error("%s = %p\n", #_Y, _Rval);     \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
 #else   // DBG
 
-#define ASSERT(_EXP)
-#define ASSERT3U(_X, _OP, _Y)
-#define ASSERT3S(_X, _OP, _Y)
-#define ASSERT3P(_X, _OP, _Y)
+static FORCEINLINE VOID
+_IgnoreAssertion(
+    IN  BOOLEAN Value
+    )
+{
+    UNREFERENCED_PARAMETER(Value);
+}
+
+#define ASSERT(_EXP)                        \
+        do {                                \
+            _IgnoreAssertion(_EXP);         \
+            __analysis_assume(_EXP);        \
+        } while (FALSE)
+
+#define ASSERT3U(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
+
+#define ASSERT3S(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
+
+#define ASSERT3P(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
 
 #endif  // DBG
 
@@ -161,17 +179,30 @@ _IsZeroMemory(
     return TRUE;
 }
 
-#define IsZeroMemory(_Buffer, _Length) \
-        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
-
 #else   // TEST_MEMORY
 
-#define IsZeroMemory(_Buffer, _Length)  TRUE
+static __inline BOOLEAN
+_IsZeroMemory(
+    IN  const PCHAR Caller,
+    IN  const PCHAR Name,
+    IN  PVOID       Buffer,
+    IN  ULONG       Length
+    )
+{
+    UNREFERENCED_PARAMETER(Caller);
+    UNREFERENCED_PARAMETER(Name);
+    UNREFERENCED_PARAMETER(Buffer);
+    UNREFERENCED_PARAMETER(Length);
+
+    return TRUE;
+}
 
 #endif  // TEST_MEMORY
 
+#define IsZeroMemory(_Buffer, _Length) \
+        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
+
 #define IMPLY(_X, _Y)   (!(_X) || (_Y))
 #define EQUIV(_X, _Y)   (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X)))
 
 #endif  // _XENIFACE_ASSERT_H
-
diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c
index 5843ef5..519d3f6 100644
--- a/src/xeniface/registry.c
+++ b/src/xeniface/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
diff --git a/src/xeniface/wmi.c b/src/xeniface/wmi.c
index bbdb780..4285ada 100644
--- a/src/xeniface/wmi.c
+++ b/src/xeniface/wmi.c
@@ -1159,7 +1159,13 @@ CreateNewSession(XENIFACE_FDO *fdoData,
     fdoData->Sessions++;
     UnlockSessions(fdoData);
     InitializeObjectAttributes(&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
-    (VOID) PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session);
+
+    status = PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session);
+    if (!NT_SUCCESS(status)) {
+            RtlFreeAnsiString(&ansi); 
+            ExFreePool(session);
+            return status;
+    }
     ObReferenceObjectByHandle(hthread, THREAD_ALL_ACCESS, NULL, KernelMode,  &session->WatchThread, NULL);
     RtlFreeAnsiString(&ansi);
     return STATUS_SUCCESS;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 02 17:48:39 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 02 Mar 2015 17:48:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSUSN-0002LT-94; Mon, 02 Mar 2015 17:48:39 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSUSL-0002Kf-Mw
	for win-pv-devel@lists.xenproject.org; Mon, 02 Mar 2015 17:48:37 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	80/8B-02994-572A4F45; Mon, 02 Mar 2015 17:48:37 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1425318516!14003211!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31077 invoked from network); 2 Mar 2015 17:48:36 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Mar 2015 17:48:36 -0000
Received: by wivr20 with SMTP id r20so16774146wiv.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 02 Mar 2015 09:48:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=3YNtLfquwfJK8v5eGJqNyzT2BsioXCLQrDAWEjT6X7A=;
	b=XvyBIzFk9D0wuc18W7TgNai+rPvYVcInzzPCjGYa3S///tB/LYYq00se+qWWsQtL1O
	soJHvpSsV+kQ7riXKEfcKtZ48Ae5n9VgnMP7ixyLN7hVUGbExsW0+5vm903HMmRZx3sc
	ZE0UgOq1mBMGPxVACkrOSW3eJduIP0gBnYkcQVlrvnGalIYcxS656bSulT4eiwRh+EuS
	S/EJNEq30ggJBAgrzVQju9m3Ibc2epQiRUQNghDjffgPT4hy9l9eD22UviKRMOW8KmC5
	CrlbCe8Nik/xbvwBXhEL9sOV+9Id2CsSXMjx3GPsYifmUKtTWIqJqsTpMbfm6psBerci
	hNHA==
X-Received: by 10.180.37.110 with SMTP id x14mr37976331wij.45.1425318515772;
	Mon, 02 Mar 2015 09:48:35 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id t9sm17004212wia.15.2015.03.02.09.48.33
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 02 Mar 2015 09:48:34 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon,  2 Mar 2015 17:48:24 +0000
Message-Id: <1425318504-8492-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix VS2013 SDV failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also update the assert.h header.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xeniface/assert.h   | 67 ++++++++++++++++++++++++++++++++++++-------------
 src/xeniface/registry.c | 38 +++++++++++++++++-----------
 src/xeniface/wmi.c      |  8 +++++-
 3 files changed, 80 insertions(+), 33 deletions(-)

diff --git a/src/xeniface/assert.h b/src/xeniface/assert.h
index 4229f7c..83b215f 100644
--- a/src/xeniface/assert.h
+++ b/src/xeniface/assert.h
@@ -37,7 +37,7 @@
 #include "log.h"
 
 static FORCEINLINE VOID
-__BugCheck(
+__Bug(
     IN  ULONG       Code,
     IN  ULONG_PTR   Parameter1,
     IN  ULONG_PTR   Parameter2,
@@ -62,11 +62,11 @@ __BugCheck(
             ULONG       _Line = __LINE__;                       \
                                                                 \
             Error("BUG: " _TEXT "\n");                          \
-            __BugCheck(ASSERTION_FAILURE,                       \
-                       (ULONG_PTR)_Text,                        \
-                       (ULONG_PTR)_File,                        \
-                       (ULONG_PTR)_Line,                        \
-                       0);                                      \
+            __Bug(ASSERTION_FAILURE,                            \
+                  (ULONG_PTR)_Text,                             \
+                  (ULONG_PTR)_File,                             \
+                  (ULONG_PTR)_Line,                             \
+                  0);                                           \
         } while (FALSE)
 
 #define BUG_ON(_EXP)                \
@@ -98,7 +98,7 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %llu\n", #_X, _Lval);   \
                 Error("%s = %llu\n", #_Y, _Rval);   \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
@@ -109,7 +109,7 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %lld\n", #_X, _Lval);   \
                 Error("%s = %lld\n", #_Y, _Rval);   \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
@@ -120,16 +120,34 @@ __BugCheck(
             if (!(_Lval _OP _Rval)) {               \
                 Error("%s = %p\n", #_X, _Lval);     \
                 Error("%s = %p\n", #_Y, _Rval);     \
-                ASSERT(_X _OP _Y);                  \
+                ASSERT((_X) _OP (_Y));              \
             }                                       \
         } while (FALSE)
 
 #else   // DBG
 
-#define ASSERT(_EXP)
-#define ASSERT3U(_X, _OP, _Y)
-#define ASSERT3S(_X, _OP, _Y)
-#define ASSERT3P(_X, _OP, _Y)
+static FORCEINLINE VOID
+_IgnoreAssertion(
+    IN  BOOLEAN Value
+    )
+{
+    UNREFERENCED_PARAMETER(Value);
+}
+
+#define ASSERT(_EXP)                        \
+        do {                                \
+            _IgnoreAssertion(_EXP);         \
+            __analysis_assume(_EXP);        \
+        } while (FALSE)
+
+#define ASSERT3U(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
+
+#define ASSERT3S(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
+
+#define ASSERT3P(_X, _OP, _Y)           \
+        ASSERT((_X) _OP (_Y))
 
 #endif  // DBG
 
@@ -161,17 +179,30 @@ _IsZeroMemory(
     return TRUE;
 }
 
-#define IsZeroMemory(_Buffer, _Length) \
-        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
-
 #else   // TEST_MEMORY
 
-#define IsZeroMemory(_Buffer, _Length)  TRUE
+static __inline BOOLEAN
+_IsZeroMemory(
+    IN  const PCHAR Caller,
+    IN  const PCHAR Name,
+    IN  PVOID       Buffer,
+    IN  ULONG       Length
+    )
+{
+    UNREFERENCED_PARAMETER(Caller);
+    UNREFERENCED_PARAMETER(Name);
+    UNREFERENCED_PARAMETER(Buffer);
+    UNREFERENCED_PARAMETER(Length);
+
+    return TRUE;
+}
 
 #endif  // TEST_MEMORY
 
+#define IsZeroMemory(_Buffer, _Length) \
+        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
+
 #define IMPLY(_X, _Y)   (!(_X) || (_Y))
 #define EQUIV(_X, _Y)   (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X)))
 
 #endif  // _XENIFACE_ASSERT_H
-
diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c
index 5843ef5..519d3f6 100644
--- a/src/xeniface/registry.c
+++ b/src/xeniface/registry.c
@@ -168,16 +168,16 @@ RegistryOpenHardwareKey(
         goto fail1;
 
     Length = 0;
-    (VOID) ZwQueryKey(SubKey,
-                      KeyNameInformation,
-                      NULL,
-                      0,
-                      &Length);
-
-    status = STATUS_INVALID_PARAMETER;
-    if (Length == 0)
+    status = ZwQueryKey(SubKey,
+                        KeyNameInformation,
+                        NULL,
+                        0,
+                        &Length);
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
-    
+
+#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -362,9 +362,11 @@ RegistryEnumerateSubKeys(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -463,9 +465,11 @@ RegistryEnumerateValues(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
+#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -596,9 +600,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -821,9 +827,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -892,10 +900,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_TOO_SMALL)
+    if (status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
+#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
diff --git a/src/xeniface/wmi.c b/src/xeniface/wmi.c
index bbdb780..4285ada 100644
--- a/src/xeniface/wmi.c
+++ b/src/xeniface/wmi.c
@@ -1159,7 +1159,13 @@ CreateNewSession(XENIFACE_FDO *fdoData,
     fdoData->Sessions++;
     UnlockSessions(fdoData);
     InitializeObjectAttributes(&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
-    (VOID) PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session);
+
+    status = PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session);
+    if (!NT_SUCCESS(status)) {
+            RtlFreeAnsiString(&ansi); 
+            ExFreePool(session);
+            return status;
+    }
     ObReferenceObjectByHandle(hthread, THREAD_ALL_ACCESS, NULL, KernelMode,  &session->WatchThread, NULL);
     RtlFreeAnsiString(&ansi);
     return STATUS_SUCCESS;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 03 10:31:27 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 03 Mar 2015 10:31:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSk6p-0005Lx-7q; Tue, 03 Mar 2015 10:31:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSk6n-0005LU-HP
	for win-pv-devel@lists.xenproject.org; Tue, 03 Mar 2015 10:31:25 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
	CD/2A-02997-C7D85F45; Tue, 03 Mar 2015 10:31:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1425378683!12422972!1
X-Originating-IP: [74.125.82.44]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7827 invoked from network); 3 Mar 2015 10:31:23 -0000
Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com)
	(74.125.82.44)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Mar 2015 10:31:23 -0000
Received: by wggy19 with SMTP id y19so38999092wgg.10
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 03 Mar 2015 02:31:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=l+Yv0K0POmcAI7sarUIB2rQ0rDV3MtuXd5ZmpqXz7wU=;
	b=cB5kio+R6KGeUkKlRRYBYSgE0B/vMOCKcWO7/+CfxDy0nHD/t4LDBUFo42E2Cry+bX
	rtbwT/6LbWx7szyoWJwq+dX+NWSxLxsRzxgPFtyMcIe+u/gI69GmLEo7HHiZkd2yPET4
	u6lkoqCQzop5pLN9t8SzEgMaduHXlzZWApVUZi6xr4O5riWxGZD9wQ0YhBh7l2ec0txt
	jDUFTpEK4JfHVud9/wBE5cxVDcgrIj3rllMzFIZ//Nbw/KZmzwYlysOt3IL20NkWA1lz
	1WN+o7UOTpWvGy1ukteyDxn7Oj76NB6WX6Yn3t/kPBT8qc7f78XTBV8bKM3VhdW9J5ke
	yUow==
X-Received: by 10.194.133.196 with SMTP id pe4mr44366366wjb.76.1425378683358; 
	Tue, 03 Mar 2015 02:31:23 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ul1sm710020wjc.0.2015.03.03.02.31.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 03 Mar 2015 02:31:22 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue,  3 Mar 2015 10:29:34 +0000
Message-Id: <1425378574-13868-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] A further VS2013 SDV fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvbd/buffer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xenvbd/buffer.c b/src/xenvbd/buffer.c
index 6e35790..3caadcb 100644
--- a/src/xenvbd/buffer.c
+++ b/src/xenvbd/buffer.c
@@ -129,6 +129,7 @@ __IsOnList(
     ASSERT3P(ListHead, !=, ListItem);
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
+#pragma prefast(suppress:6011)
     for (Entry = ListHead->Flink; Entry != ListHead; Entry = Entry->Flink) {
         ASSERT3P(Entry, !=, NULL);
         if (Entry == ListItem) {
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 03 10:31:27 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 03 Mar 2015 10:31:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YSk6p-0005Lx-7q; Tue, 03 Mar 2015 10:31:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YSk6n-0005LU-HP
	for win-pv-devel@lists.xenproject.org; Tue, 03 Mar 2015 10:31:25 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
	CD/2A-02997-C7D85F45; Tue, 03 Mar 2015 10:31:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1425378683!12422972!1
X-Originating-IP: [74.125.82.44]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7827 invoked from network); 3 Mar 2015 10:31:23 -0000
Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com)
	(74.125.82.44)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Mar 2015 10:31:23 -0000
Received: by wggy19 with SMTP id y19so38999092wgg.10
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 03 Mar 2015 02:31:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=l+Yv0K0POmcAI7sarUIB2rQ0rDV3MtuXd5ZmpqXz7wU=;
	b=cB5kio+R6KGeUkKlRRYBYSgE0B/vMOCKcWO7/+CfxDy0nHD/t4LDBUFo42E2Cry+bX
	rtbwT/6LbWx7szyoWJwq+dX+NWSxLxsRzxgPFtyMcIe+u/gI69GmLEo7HHiZkd2yPET4
	u6lkoqCQzop5pLN9t8SzEgMaduHXlzZWApVUZi6xr4O5riWxGZD9wQ0YhBh7l2ec0txt
	jDUFTpEK4JfHVud9/wBE5cxVDcgrIj3rllMzFIZ//Nbw/KZmzwYlysOt3IL20NkWA1lz
	1WN+o7UOTpWvGy1ukteyDxn7Oj76NB6WX6Yn3t/kPBT8qc7f78XTBV8bKM3VhdW9J5ke
	yUow==
X-Received: by 10.194.133.196 with SMTP id pe4mr44366366wjb.76.1425378683358; 
	Tue, 03 Mar 2015 02:31:23 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ul1sm710020wjc.0.2015.03.03.02.31.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 03 Mar 2015 02:31:22 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue,  3 Mar 2015 10:29:34 +0000
Message-Id: <1425378574-13868-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] A further VS2013 SDV fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvbd/buffer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xenvbd/buffer.c b/src/xenvbd/buffer.c
index 6e35790..3caadcb 100644
--- a/src/xenvbd/buffer.c
+++ b/src/xenvbd/buffer.c
@@ -129,6 +129,7 @@ __IsOnList(
     ASSERT3P(ListHead, !=, ListItem);
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
+#pragma prefast(suppress:6011)
     for (Entry = ListHead->Flink; Entry != ListHead; Entry = Entry->Flink) {
         ASSERT3P(Entry, !=, NULL);
         if (Entry == ListItem) {
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 04 10:08:21 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 04 Mar 2015 10:08:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YT6E1-0002tI-QX; Wed, 04 Mar 2015 10:08:21 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YT6E0-0002t9-RV
	for win-pv-devel@lists.xenproject.org; Wed, 04 Mar 2015 10:08:20 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	76/F6-03168-499D6F45; Wed, 04 Mar 2015 10:08:20 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1425463699!14524349!1
X-Originating-IP: [209.85.212.182]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	SUBJECT_RANDOMQ,UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25265 invoked from network); 4 Mar 2015 10:08:19 -0000
Received: from mail-wi0-f182.google.com (HELO mail-wi0-f182.google.com)
	(209.85.212.182)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	4 Mar 2015 10:08:19 -0000
Received: by wiwh11 with SMTP id h11so29390084wiw.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 04 Mar 2015 02:08:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=YRc5avEIpqa8yALEgDxxXGc8NTDN5oToJwhEWgDiMfM=;
	b=oTdQN+GA7veR2ezRs8ESQ067y2/XM5Ik7V9b3/s4OQ6exBRlYS5VhA5apA0+obgJwl
	9BRgodzGT3b4sjfGuiP0JQ6wHNm9gWerRWe8yfqYAo0F0HtROflS6rMq2HrxKz8UgNhz
	f1WHijWK6WdakqIvpBpuzX7LfZAMUTeEM6PJqZocYh8SBfyrRdpTL48NuYQCwpABx1eI
	YRzTyKnXB7B3RH6g2YdaZD6gKG4AT2P7VK6ea8YeyoeMZgk/wHDQcOl//oeKBukPbVfk
	cijCGQkYOrqnmNlJkzF+izmptxkC0c7XZofFnrRlIPxxqoCkreNo15kcbGEiUedgkjPw
	vWdw==
X-Received: by 10.194.89.163 with SMTP id bp3mr5810921wjb.145.1425463698934;
	Wed, 04 Mar 2015 02:08:18 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id dj4sm5240975wjc.13.2015.03.04.02.08.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 04 Mar 2015 02:08:18 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed,  4 Mar 2015 10:08:03 +0000
Message-Id: <1425463683-14744-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix WHQL induced BSODs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The PNP Rebalance Fail Restart Device test causes BSODs due to incorrect
PnP state assumptions about the FDO. This patch fixes these problems
allowing the test to pass.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/fdo.c | 20 ++++++++++++++++++--
 src/xenvif/pdo.c |  8 ++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/fdo.c b/src/xenvif/fdo.c
index d2ce513..6b1aeff 100644
--- a/src/xenvif/fdo.c
+++ b/src/xenvif/fdo.c
@@ -158,6 +158,16 @@ __FdoGetDevicePnpState(
     return Dx->DevicePnpState;
 }
 
+static FORCEINLINE DEVICE_PNP_STATE
+__FdoGetPreviousDevicePnpState(
+    IN  PXENVIF_FDO Fdo
+    )
+{
+    PXENVIF_DX      Dx = Fdo->Dx;
+
+    return Dx->PreviousDevicePnpState;
+}
+
 static FORCEINLINE VOID
 __FdoSetDevicePowerState(
     IN  PXENVIF_FDO         Fdo,
@@ -621,7 +631,8 @@ FdoAddPhysicalDeviceObject(
     ASSERT3U(Fdo->References, !=, 0);
     Fdo->References++;
 
-    PdoResume(Pdo);
+    if (__FdoGetDevicePowerState(Fdo) == PowerDeviceD0)
+        PdoResume(Pdo);
 }
 
 VOID
@@ -637,7 +648,8 @@ FdoRemovePhysicalDeviceObject(
     Dx = (PXENVIF_DX)DeviceObject->DeviceExtension;
     ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
 
-    PdoSuspend(Pdo);
+    if (__FdoGetDevicePowerState(Fdo) == PowerDeviceD0)
+        PdoSuspend(Pdo);
 
     RemoveEntryList(&Dx->ListEntry);
     ASSERT3U(Fdo->References, !=, 0);
@@ -1485,6 +1497,9 @@ FdoRemoveDevice(
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
 
+    if (__FdoGetPreviousDevicePnpState(Fdo) != Started)
+        goto done;
+
     KeClearEvent(&Fdo->ScanEvent);
     ThreadWake(Fdo->ScanThread);
 
@@ -1531,6 +1546,7 @@ FdoRemoveDevice(
 
     RtlZeroMemory(&Fdo->Resource, sizeof (FDO_RESOURCE) * RESOURCE_COUNT);
 
+done:
     __FdoSetDevicePnpState(Fdo, Deleted);
 
     // We must release our reference before the PDO is destroyed
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index a7755d2..5ce6c50 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -2533,7 +2533,11 @@ PdoResume(
     IN  PXENVIF_PDO     Pdo
     )
 {
+    Trace("====>\n");
+
     FrontendResume(__PdoGetFrontend(Pdo));
+
+    Trace("<====\n");
 }
 
 VOID
@@ -2541,7 +2545,11 @@ PdoSuspend(
     IN  PXENVIF_PDO     Pdo
     )
 {
+    Trace("====>\n");
+
     FrontendSuspend(__PdoGetFrontend(Pdo));
+
+    Trace("<====\n");
 }
 
 NTSTATUS
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 04 10:08:21 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 04 Mar 2015 10:08:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YT6E1-0002tI-QX; Wed, 04 Mar 2015 10:08:21 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YT6E0-0002t9-RV
	for win-pv-devel@lists.xenproject.org; Wed, 04 Mar 2015 10:08:20 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	76/F6-03168-499D6F45; Wed, 04 Mar 2015 10:08:20 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1425463699!14524349!1
X-Originating-IP: [209.85.212.182]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	SUBJECT_RANDOMQ,UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25265 invoked from network); 4 Mar 2015 10:08:19 -0000
Received: from mail-wi0-f182.google.com (HELO mail-wi0-f182.google.com)
	(209.85.212.182)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	4 Mar 2015 10:08:19 -0000
Received: by wiwh11 with SMTP id h11so29390084wiw.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 04 Mar 2015 02:08:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=YRc5avEIpqa8yALEgDxxXGc8NTDN5oToJwhEWgDiMfM=;
	b=oTdQN+GA7veR2ezRs8ESQ067y2/XM5Ik7V9b3/s4OQ6exBRlYS5VhA5apA0+obgJwl
	9BRgodzGT3b4sjfGuiP0JQ6wHNm9gWerRWe8yfqYAo0F0HtROflS6rMq2HrxKz8UgNhz
	f1WHijWK6WdakqIvpBpuzX7LfZAMUTeEM6PJqZocYh8SBfyrRdpTL48NuYQCwpABx1eI
	YRzTyKnXB7B3RH6g2YdaZD6gKG4AT2P7VK6ea8YeyoeMZgk/wHDQcOl//oeKBukPbVfk
	cijCGQkYOrqnmNlJkzF+izmptxkC0c7XZofFnrRlIPxxqoCkreNo15kcbGEiUedgkjPw
	vWdw==
X-Received: by 10.194.89.163 with SMTP id bp3mr5810921wjb.145.1425463698934;
	Wed, 04 Mar 2015 02:08:18 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id dj4sm5240975wjc.13.2015.03.04.02.08.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 04 Mar 2015 02:08:18 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed,  4 Mar 2015 10:08:03 +0000
Message-Id: <1425463683-14744-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix WHQL induced BSODs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The PNP Rebalance Fail Restart Device test causes BSODs due to incorrect
PnP state assumptions about the FDO. This patch fixes these problems
allowing the test to pass.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/fdo.c | 20 ++++++++++++++++++--
 src/xenvif/pdo.c |  8 ++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/fdo.c b/src/xenvif/fdo.c
index d2ce513..6b1aeff 100644
--- a/src/xenvif/fdo.c
+++ b/src/xenvif/fdo.c
@@ -158,6 +158,16 @@ __FdoGetDevicePnpState(
     return Dx->DevicePnpState;
 }
 
+static FORCEINLINE DEVICE_PNP_STATE
+__FdoGetPreviousDevicePnpState(
+    IN  PXENVIF_FDO Fdo
+    )
+{
+    PXENVIF_DX      Dx = Fdo->Dx;
+
+    return Dx->PreviousDevicePnpState;
+}
+
 static FORCEINLINE VOID
 __FdoSetDevicePowerState(
     IN  PXENVIF_FDO         Fdo,
@@ -621,7 +631,8 @@ FdoAddPhysicalDeviceObject(
     ASSERT3U(Fdo->References, !=, 0);
     Fdo->References++;
 
-    PdoResume(Pdo);
+    if (__FdoGetDevicePowerState(Fdo) == PowerDeviceD0)
+        PdoResume(Pdo);
 }
 
 VOID
@@ -637,7 +648,8 @@ FdoRemovePhysicalDeviceObject(
     Dx = (PXENVIF_DX)DeviceObject->DeviceExtension;
     ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
 
-    PdoSuspend(Pdo);
+    if (__FdoGetDevicePowerState(Fdo) == PowerDeviceD0)
+        PdoSuspend(Pdo);
 
     RemoveEntryList(&Dx->ListEntry);
     ASSERT3U(Fdo->References, !=, 0);
@@ -1485,6 +1497,9 @@ FdoRemoveDevice(
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
 
+    if (__FdoGetPreviousDevicePnpState(Fdo) != Started)
+        goto done;
+
     KeClearEvent(&Fdo->ScanEvent);
     ThreadWake(Fdo->ScanThread);
 
@@ -1531,6 +1546,7 @@ FdoRemoveDevice(
 
     RtlZeroMemory(&Fdo->Resource, sizeof (FDO_RESOURCE) * RESOURCE_COUNT);
 
+done:
     __FdoSetDevicePnpState(Fdo, Deleted);
 
     // We must release our reference before the PDO is destroyed
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index a7755d2..5ce6c50 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -2533,7 +2533,11 @@ PdoResume(
     IN  PXENVIF_PDO     Pdo
     )
 {
+    Trace("====>\n");
+
     FrontendResume(__PdoGetFrontend(Pdo));
+
+    Trace("<====\n");
 }
 
 VOID
@@ -2541,7 +2545,11 @@ PdoSuspend(
     IN  PXENVIF_PDO     Pdo
     )
 {
+    Trace("====>\n");
+
     FrontendSuspend(__PdoGetFrontend(Pdo));
+
+    Trace("<====\n");
 }
 
 NTSTATUS
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 04 13:02:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 04 Mar 2015 13:02:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YT8w4-0000nF-I3; Wed, 04 Mar 2015 13:02:00 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YT8w3-0000m9-J5
	for win-pv-devel@lists.xenproject.org; Wed, 04 Mar 2015 13:01:59 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
	26/61-02635-64207F45; Wed, 04 Mar 2015 13:01:58 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1425474117!14602180!1
X-Originating-IP: [209.85.212.170]
X-SpamReason: No, hits=0.0 required=7.0 tests=SUBJECT_RANDOMQ, UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20816 invoked from network); 4 Mar 2015 13:01:58 -0000
Received: from mail-wi0-f170.google.com (HELO mail-wi0-f170.google.com)
	(209.85.212.170)
	by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	4 Mar 2015 13:01:58 -0000
Received: by widex7 with SMTP id ex7so28614335wid.1
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 04 Mar 2015 05:01:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=Vp+FH4Vu8hjLX7iWuHCwyGDZgsRE04T0ox+a3b7BIf4=;
	b=0lkQSN1umz1DTU01tnAL0EuIaK70xGnA6uqF3KNV3Wa1wundG+URA822/YKqklgg2w
	1u1p8Qx9XMCIUlyGXpIpRCZ01FphEssGmAirgx08YYwbSOL1x2ayO9GpLeVQxMoWH72w
	nK+V1bo+s9ujsmuzgzw5A6af4b7BPoAl/7rJgRlLj0A28oeE7kxzQ3gpBalOE2yn37bu
	BITKEay7GoqJGJsPB7qFQu5YykE+YXGC9sk0sLBN8VULiFX+zy8QR/5SzQgZlO5wwiyj
	DZgxd5YFAh+sR1iQ3OnuNidWDzMfoUFdtL2S50RX+jsqxC3HxECRRfcUtvcSt2kU9vEt
	HJ7Q==
X-Received: by 10.180.73.171 with SMTP id m11mr12068584wiv.21.1425474117725;
	Wed, 04 Mar 2015 05:01:57 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id b4sm25135195wic.2.2015.03.04.05.01.54
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 04 Mar 2015 05:01:55 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed,  4 Mar 2015 13:01:43 +0000
Message-Id: <1425474103-9528-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix WHQL Multiple processor group device
	test BSOD
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Some of the fakery done by this test causes a BSOD in the code in the
XEN driver that attempts to build a mapping from Windows CPU index to
Xen vcpu id. Applying this patch to re-work the code slightly fixes the
BSOD and allows the test to pass.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xen/system.c | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/xen/system.c b/src/xen/system.c
index eb06bec..ea3bc4e 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -48,11 +48,10 @@
 #define XEN_SYSTEM_TAG  'TSYS'
 
 typedef struct _SYSTEM_CPU {
+    ULONG   Index;
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
-    KDPC    Dpc;
-    KEVENT  Event;
 } SYSTEM_CPU, *PSYSTEM_CPU;
 
 typedef struct _SYSTEM_CONTEXT {
@@ -343,13 +342,14 @@ SystemCpuInformation(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
+    PKEVENT         Event = _Context;
     ULONG           Index;
     PSYSTEM_CPU     Cpu;
     ULONG           EBX;
     ULONG           ECX;
     ULONG           EDX;
 
-    UNREFERENCED_PARAMETER(_Context);
+    UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
@@ -357,7 +357,7 @@ SystemCpuInformation(
     Cpu = Context->Cpu[Index];
 
     ASSERT(Cpu != NULL);
-    ASSERT3P(Dpc, ==, &Cpu->Dpc);
+    ASSERT3U(Cpu->Index, ==, Index);
 
     Info("====> (%u)\n", Index);
 
@@ -376,7 +376,7 @@ SystemCpuInformation(
     Info("APIC ID: %02X\n", Cpu->ApicID);
     Info("PROCESSOR ID: %02X\n", Cpu->ProcessorID);
 
-    KeSetEvent(&Cpu->Event, IO_NO_INCREMENT, FALSE);
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
 
     Info("<==== (%u)\n", Index);
 }
@@ -409,24 +409,28 @@ SystemProcessorChangeCallback(
             break;
         }
 
+        Cpu->Index = Index;
         ASSERT3P(Context->Cpu[Index], ==, NULL);
         Context->Cpu[Index] = Cpu;
         break;
     }
     case KeProcessorAddCompleteNotify: {
         PSYSTEM_CPU Cpu = Context->Cpu[Index];
-        PKDPC       Dpc = &Cpu->Dpc;
-        PKEVENT     Event = &Cpu->Event;
+        KEVENT      Event;
+        KDPC        Dpc;
+
+        ASSERT(Cpu != NULL);
+        ASSERT3U(Cpu->Index, ==, Index);
 
-        KeInitializeDpc(Dpc, SystemCpuInformation, (PVOID)(ULONG_PTR)Index);
-        KeSetImportanceDpc(Dpc, HighImportance);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Index);
+        KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeEvent(Event, NotificationEvent, FALSE);
+        KeInitializeDpc(&Dpc, SystemCpuInformation, &Event);
+        KeSetImportanceDpc(&Dpc, HighImportance);
+        KeSetTargetProcessorDpc(&Dpc, (CCHAR)Index);
 
-        KeInsertQueueDpc(Dpc, NULL, NULL);
+        KeInsertQueueDpc(&Dpc, NULL, NULL);
 
-        (VOID) KeWaitForSingleObject(Event,
+        (VOID) KeWaitForSingleObject(&Event,
                                      Executive,
                                      KernelMode,
                                      FALSE,
@@ -437,6 +441,7 @@ SystemProcessorChangeCallback(
         PSYSTEM_CPU Cpu = Context->Cpu[Index];
 
         ASSERT(Cpu != NULL);
+        ASSERT3U(Cpu->Index, ==, Index);
 
         Context->Cpu[Index] = NULL;
         __SystemFree(Cpu);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 04 13:02:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 04 Mar 2015 13:02:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YT8w4-0000nF-I3; Wed, 04 Mar 2015 13:02:00 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YT8w3-0000m9-J5
	for win-pv-devel@lists.xenproject.org; Wed, 04 Mar 2015 13:01:59 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
	26/61-02635-64207F45; Wed, 04 Mar 2015 13:01:58 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1425474117!14602180!1
X-Originating-IP: [209.85.212.170]
X-SpamReason: No, hits=0.0 required=7.0 tests=SUBJECT_RANDOMQ, UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20816 invoked from network); 4 Mar 2015 13:01:58 -0000
Received: from mail-wi0-f170.google.com (HELO mail-wi0-f170.google.com)
	(209.85.212.170)
	by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	4 Mar 2015 13:01:58 -0000
Received: by widex7 with SMTP id ex7so28614335wid.1
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 04 Mar 2015 05:01:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=Vp+FH4Vu8hjLX7iWuHCwyGDZgsRE04T0ox+a3b7BIf4=;
	b=0lkQSN1umz1DTU01tnAL0EuIaK70xGnA6uqF3KNV3Wa1wundG+URA822/YKqklgg2w
	1u1p8Qx9XMCIUlyGXpIpRCZ01FphEssGmAirgx08YYwbSOL1x2ayO9GpLeVQxMoWH72w
	nK+V1bo+s9ujsmuzgzw5A6af4b7BPoAl/7rJgRlLj0A28oeE7kxzQ3gpBalOE2yn37bu
	BITKEay7GoqJGJsPB7qFQu5YykE+YXGC9sk0sLBN8VULiFX+zy8QR/5SzQgZlO5wwiyj
	DZgxd5YFAh+sR1iQ3OnuNidWDzMfoUFdtL2S50RX+jsqxC3HxECRRfcUtvcSt2kU9vEt
	HJ7Q==
X-Received: by 10.180.73.171 with SMTP id m11mr12068584wiv.21.1425474117725;
	Wed, 04 Mar 2015 05:01:57 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id b4sm25135195wic.2.2015.03.04.05.01.54
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 04 Mar 2015 05:01:55 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed,  4 Mar 2015 13:01:43 +0000
Message-Id: <1425474103-9528-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix WHQL Multiple processor group device
	test BSOD
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Some of the fakery done by this test causes a BSOD in the code in the
XEN driver that attempts to build a mapping from Windows CPU index to
Xen vcpu id. Applying this patch to re-work the code slightly fixes the
BSOD and allows the test to pass.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xen/system.c | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/xen/system.c b/src/xen/system.c
index eb06bec..ea3bc4e 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -48,11 +48,10 @@
 #define XEN_SYSTEM_TAG  'TSYS'
 
 typedef struct _SYSTEM_CPU {
+    ULONG   Index;
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
-    KDPC    Dpc;
-    KEVENT  Event;
 } SYSTEM_CPU, *PSYSTEM_CPU;
 
 typedef struct _SYSTEM_CONTEXT {
@@ -343,13 +342,14 @@ SystemCpuInformation(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
+    PKEVENT         Event = _Context;
     ULONG           Index;
     PSYSTEM_CPU     Cpu;
     ULONG           EBX;
     ULONG           ECX;
     ULONG           EDX;
 
-    UNREFERENCED_PARAMETER(_Context);
+    UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
@@ -357,7 +357,7 @@ SystemCpuInformation(
     Cpu = Context->Cpu[Index];
 
     ASSERT(Cpu != NULL);
-    ASSERT3P(Dpc, ==, &Cpu->Dpc);
+    ASSERT3U(Cpu->Index, ==, Index);
 
     Info("====> (%u)\n", Index);
 
@@ -376,7 +376,7 @@ SystemCpuInformation(
     Info("APIC ID: %02X\n", Cpu->ApicID);
     Info("PROCESSOR ID: %02X\n", Cpu->ProcessorID);
 
-    KeSetEvent(&Cpu->Event, IO_NO_INCREMENT, FALSE);
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
 
     Info("<==== (%u)\n", Index);
 }
@@ -409,24 +409,28 @@ SystemProcessorChangeCallback(
             break;
         }
 
+        Cpu->Index = Index;
         ASSERT3P(Context->Cpu[Index], ==, NULL);
         Context->Cpu[Index] = Cpu;
         break;
     }
     case KeProcessorAddCompleteNotify: {
         PSYSTEM_CPU Cpu = Context->Cpu[Index];
-        PKDPC       Dpc = &Cpu->Dpc;
-        PKEVENT     Event = &Cpu->Event;
+        KEVENT      Event;
+        KDPC        Dpc;
+
+        ASSERT(Cpu != NULL);
+        ASSERT3U(Cpu->Index, ==, Index);
 
-        KeInitializeDpc(Dpc, SystemCpuInformation, (PVOID)(ULONG_PTR)Index);
-        KeSetImportanceDpc(Dpc, HighImportance);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Index);
+        KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeEvent(Event, NotificationEvent, FALSE);
+        KeInitializeDpc(&Dpc, SystemCpuInformation, &Event);
+        KeSetImportanceDpc(&Dpc, HighImportance);
+        KeSetTargetProcessorDpc(&Dpc, (CCHAR)Index);
 
-        KeInsertQueueDpc(Dpc, NULL, NULL);
+        KeInsertQueueDpc(&Dpc, NULL, NULL);
 
-        (VOID) KeWaitForSingleObject(Event,
+        (VOID) KeWaitForSingleObject(&Event,
                                      Executive,
                                      KernelMode,
                                      FALSE,
@@ -437,6 +441,7 @@ SystemProcessorChangeCallback(
         PSYSTEM_CPU Cpu = Context->Cpu[Index];
 
         ASSERT(Cpu != NULL);
+        ASSERT3U(Cpu->Index, ==, Index);
 
         Context->Cpu[Index] = NULL;
         __SystemFree(Cpu);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 10:00:32 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 10:00:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTSa0-0008F0-On; Thu, 05 Mar 2015 10:00:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YTSZz-0008Ev-7e
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 10:00:31 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	A0/D2-03164-E3928F45; Thu, 05 Mar 2015 10:00:30 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1425549629!13238068!1
X-Originating-IP: [74.125.82.174]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5471 invoked from network); 5 Mar 2015 10:00:29 -0000
Received: from mail-we0-f174.google.com (HELO mail-we0-f174.google.com)
	(74.125.82.174)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 10:00:29 -0000
Received: by wesx3 with SMTP id x3so5230061wes.4
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 05 Mar 2015 02:00:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=i3JUcmQ+F0G7UHxKpQlr73ZF+2FORBDw/6iciOox/II=;
	b=IRpLUan13saFhacZ+LvCaJtOnzabQWNNL+NMFiBHIZp1jbZw0ogUaDoQDMO+CRVLrG
	zxp2hBmaUbXl+nzn/NS0OPTDgwbMUM9TG+KHXsO84BnNTNyZNo6aO6yFPpYj7J0Du3vL
	CF1ZprohiYOKyMax/w94CvJKNhRgX6vY59sdSYHVLWjQKcB/HSn4brnfn6I6EP7DH6Oe
	mI5AlV09QjLM4t3BFCXHqxaOI6oTHBMMxNEdyCBr9UVgASsHHpTJA32PUrYbG8Svz4iz
	HEne+wtxsj4S2gZmTaNxGrEwNZ22yPhnfXUvC6eK90PcjS/ZGuvouR+zlkzXBHZHbJnl
	zilg==
X-Received: by 10.180.206.144 with SMTP id lo16mr21401757wic.28.1425549629001; 
	Thu, 05 Mar 2015 02:00:29 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id gz3sm10901757wib.1.2015.03.05.02.00.28
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 05 Mar 2015 02:00:28 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu,  5 Mar 2015 10:00:18 +0000
Message-Id: <1425549618-17936-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix memory leak
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Verifier discovered a memory leak on shutdown of XENVIF. This is because
the per-ring path used for talking to multi-queue aware backends is not
freed in the case where there is only one queue. This patch simply removes
that check as it is incorrect.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 12b6287..7e9989a 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -238,7 +238,7 @@ FrontendFormatPath(
     NTSTATUS                status;
 
     Length = (ULONG)(strlen(__FrontendGetPath(Frontend)) +
-                     strlen("/queue-00") +
+                     strlen("/queue-XX") +
                      1) * sizeof (CHAR);
 
     Path = __FrontendAllocate(Length);
@@ -268,8 +268,7 @@ FrontendFreePath(
     IN  PCHAR               Path
     )
 {
-    if (__FrontendGetQueueCount(Frontend) == 1)
-        return;
+    UNREFERENCED_PARAMETER(Frontend);
 
     __FrontendFree(Path);
 }
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 10:00:32 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 10:00:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTSa0-0008F0-On; Thu, 05 Mar 2015 10:00:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YTSZz-0008Ev-7e
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 10:00:31 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	A0/D2-03164-E3928F45; Thu, 05 Mar 2015 10:00:30 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1425549629!13238068!1
X-Originating-IP: [74.125.82.174]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5471 invoked from network); 5 Mar 2015 10:00:29 -0000
Received: from mail-we0-f174.google.com (HELO mail-we0-f174.google.com)
	(74.125.82.174)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 10:00:29 -0000
Received: by wesx3 with SMTP id x3so5230061wes.4
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 05 Mar 2015 02:00:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=i3JUcmQ+F0G7UHxKpQlr73ZF+2FORBDw/6iciOox/II=;
	b=IRpLUan13saFhacZ+LvCaJtOnzabQWNNL+NMFiBHIZp1jbZw0ogUaDoQDMO+CRVLrG
	zxp2hBmaUbXl+nzn/NS0OPTDgwbMUM9TG+KHXsO84BnNTNyZNo6aO6yFPpYj7J0Du3vL
	CF1ZprohiYOKyMax/w94CvJKNhRgX6vY59sdSYHVLWjQKcB/HSn4brnfn6I6EP7DH6Oe
	mI5AlV09QjLM4t3BFCXHqxaOI6oTHBMMxNEdyCBr9UVgASsHHpTJA32PUrYbG8Svz4iz
	HEne+wtxsj4S2gZmTaNxGrEwNZ22yPhnfXUvC6eK90PcjS/ZGuvouR+zlkzXBHZHbJnl
	zilg==
X-Received: by 10.180.206.144 with SMTP id lo16mr21401757wic.28.1425549629001; 
	Thu, 05 Mar 2015 02:00:29 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id gz3sm10901757wib.1.2015.03.05.02.00.28
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 05 Mar 2015 02:00:28 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu,  5 Mar 2015 10:00:18 +0000
Message-Id: <1425549618-17936-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix memory leak
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Verifier discovered a memory leak on shutdown of XENVIF. This is because
the per-ring path used for talking to multi-queue aware backends is not
freed in the case where there is only one queue. This patch simply removes
that check as it is incorrect.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 12b6287..7e9989a 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -238,7 +238,7 @@ FrontendFormatPath(
     NTSTATUS                status;
 
     Length = (ULONG)(strlen(__FrontendGetPath(Frontend)) +
-                     strlen("/queue-00") +
+                     strlen("/queue-XX") +
                      1) * sizeof (CHAR);
 
     Path = __FrontendAllocate(Length);
@@ -268,8 +268,7 @@ FrontendFreePath(
     IN  PCHAR               Path
     )
 {
-    if (__FrontendGetQueueCount(Frontend) == 1)
-        return;
+    UNREFERENCED_PARAMETER(Frontend);
 
     __FrontendFree(Path);
 }
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 12:17:17 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 12:17:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTUiL-0008RK-Hs; Thu, 05 Mar 2015 12:17:17 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YTUiJ-0008RD-JD
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 12:17:15 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	BC/0C-02753-A4948F45; Thu, 05 Mar 2015 12:17:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1425557834!9531200!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29585 invoked from network); 5 Mar 2015 12:17:14 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 12:17:14 -0000
Received: by wevk48 with SMTP id k48so9085950wev.7
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 05 Mar 2015 04:17:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=V4Ey9YschrZCx86csW9ExsYqOp0rLixBSx0IvSB/q3Y=;
	b=qnvHzfIv38NeJGNxz/9W47kt6sRmfszYQLLdaYZEZH3Titnia/FNT+bc7/w91gp7U/
	OJfapt3/DbS7Dpjgrp2w8OPoJI92uSygpUlBUL5dRLJU9TCTACLzD5UDsY4JCHEisWrn
	ypsZpOps4At0R44JDSBtsjbkuGR0umjulEW662hOKehK6HCCTGkF/qi58ykB68KCH7pw
	Df8d6ZRHlpfVHkKRDg6yLeLxOhfnuLGvBuh4WFQRbN1l7Ncxq9hNuvQw6f1hFw1t4GEx
	KmSSUbBtthl3Qjy01NPqr2kzvCCIN4nZYqnh41G6kXPqHl99Ef8E67QcQia/mONVGFT2
	hlzA==
X-Received: by 10.180.126.98 with SMTP id mx2mr64703126wib.18.1425557833852;
	Thu, 05 Mar 2015 04:17:13 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id
	jy7sm29465338wid.22.2015.03.05.04.17.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 05 Mar 2015 04:17:13 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu,  5 Mar 2015 12:15:21 +0000
Message-Id: <1425557721-18488-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] __DbgPrintEnable() cannot be called on
	paging path
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The system power up code in XENFILT re-enables DbgPrint hooking.
Unfortunately the undocumented kernel call it uses may require a page-in
and so causes a deadlock when XENVBD is responsible for the page file,
since it depends upon XENFILT to power up.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenfilt/fdo.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index 4736ac7..1597a15 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -1457,10 +1457,6 @@ FdoSetSystemPowerUp(
           SystemPowerStateName(__FdoGetSystemPowerState(Fdo)),
           SystemPowerStateName(SystemState));
 
-    if (SystemState < PowerSystemHibernate &&
-        __FdoGetSystemPowerState(Fdo) >= PowerSystemHibernate)
-        __DbgPrintEnable();
-
     __FdoSetSystemPowerState(Fdo, SystemState);
 
 done:
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 12:17:17 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 12:17:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTUiL-0008RK-Hs; Thu, 05 Mar 2015 12:17:17 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YTUiJ-0008RD-JD
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 12:17:15 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	BC/0C-02753-A4948F45; Thu, 05 Mar 2015 12:17:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1425557834!9531200!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29585 invoked from network); 5 Mar 2015 12:17:14 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 12:17:14 -0000
Received: by wevk48 with SMTP id k48so9085950wev.7
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 05 Mar 2015 04:17:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=V4Ey9YschrZCx86csW9ExsYqOp0rLixBSx0IvSB/q3Y=;
	b=qnvHzfIv38NeJGNxz/9W47kt6sRmfszYQLLdaYZEZH3Titnia/FNT+bc7/w91gp7U/
	OJfapt3/DbS7Dpjgrp2w8OPoJI92uSygpUlBUL5dRLJU9TCTACLzD5UDsY4JCHEisWrn
	ypsZpOps4At0R44JDSBtsjbkuGR0umjulEW662hOKehK6HCCTGkF/qi58ykB68KCH7pw
	Df8d6ZRHlpfVHkKRDg6yLeLxOhfnuLGvBuh4WFQRbN1l7Ncxq9hNuvQw6f1hFw1t4GEx
	KmSSUbBtthl3Qjy01NPqr2kzvCCIN4nZYqnh41G6kXPqHl99Ef8E67QcQia/mONVGFT2
	hlzA==
X-Received: by 10.180.126.98 with SMTP id mx2mr64703126wib.18.1425557833852;
	Thu, 05 Mar 2015 04:17:13 -0800 (PST)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id
	jy7sm29465338wid.22.2015.03.05.04.17.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 05 Mar 2015 04:17:13 -0800 (PST)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu,  5 Mar 2015 12:15:21 +0000
Message-Id: <1425557721-18488-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] __DbgPrintEnable() cannot be called on
	paging path
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The system power up code in XENFILT re-enables DbgPrint hooking.
Unfortunately the undocumented kernel call it uses may require a page-in
and so causes a deadlock when XENVBD is responsible for the page file,
since it depends upon XENFILT to power up.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenfilt/fdo.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index 4736ac7..1597a15 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -1457,10 +1457,6 @@ FdoSetSystemPowerUp(
           SystemPowerStateName(__FdoGetSystemPowerState(Fdo)),
           SystemPowerStateName(SystemState));
 
-    if (SystemState < PowerSystemHibernate &&
-        __FdoGetSystemPowerState(Fdo) >= PowerSystemHibernate)
-        __DbgPrintEnable();
-
     __FdoSetSystemPowerState(Fdo, SystemState);
 
 done:
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 16:04:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTYGO-0007Ki-Ed; Thu, 05 Mar 2015 16:04:40 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1YTYGN-0007Kd-53
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 16:04:39 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	E6/E5-03165-69E78F45; Thu, 05 Mar 2015 16:04:38 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1425571476!13290592!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4641 invoked from network); 5 Mar 2015 16:04:37 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 16:04:37 -0000
X-IronPort-AV: E=Sophos;i="5.11,347,1422921600"; d="scan'208";a="240431037"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 5 Mar 2015 15:47:51 +0000
Message-ID: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
	success
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

When buffer is >= 8-bytes, return a 8-byte buffer,
when buffer is >= 4-bytes, return a 4-byte buffer,
else, indicate 8-bytes required and indicate failure

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xennet/adapter.c | 47 ++++++++++++++++++++++++-----------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b094519..f85ce12 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1151,17 +1151,16 @@ __CopyBuffer(
     IN  PVOID               Buffer,
     IN  ULONG               BufferLength,
     IN  PVOID               Source,
-    IN OUT PULONG           SourceLength
+    IN  ULONG               SourceLength
     )
 {
-    if (BufferLength >= *SourceLength) {
-        RtlCopyMemory(Buffer, Source, *SourceLength);
+    if (BufferLength >= SourceLength) {
+        RtlCopyMemory(Buffer, Source, SourceLength);
         return NDIS_STATUS_SUCCESS;
-    } else {
-        *SourceLength = BufferLength;
-        RtlCopyMemory(Buffer, Source, *SourceLength);
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
     }
+
+    RtlCopyMemory(Buffer, Source, BufferLength);
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
@@ -1172,14 +1171,14 @@ __SetUlong(
     IN OUT PULONG           SourceLength
     )
 {
+    *SourceLength = sizeof(ULONG);
+
     if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = Source;
-        *SourceLength = sizeof(ULONG);
+        *(PULONG)Buffer = (ULONG)Source;
         return NDIS_STATUS_SUCCESS;
-    } else {
-        *SourceLength = 0;
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
     }
+
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
@@ -1190,18 +1189,20 @@ __SetUlong64(
     IN OUT PULONG           SourceLength
     )
 {
+    *SourceLength = sizeof(ULONGLONG);
+
     if (BufferLength >= sizeof(ULONGLONG)) {
         *(PULONGLONG)Buffer = Source;
-        *SourceLength = sizeof(ULONGLONG);
         return NDIS_STATUS_SUCCESS;
-    } else if (BufferLength == sizeof(ULONG)) {
+    }
+
+    if (BufferLength >= sizeof(ULONG)) {
         *(PULONG)Buffer = (ULONG)Source;
         *SourceLength = sizeof(ULONG);
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
-    } else {
-        *SourceLength = 0;
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
+        return NDIS_STATUS_SUCCESS;
     }
+
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 NDIS_STATUS
@@ -1230,7 +1231,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &Adapter->Capabilities,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_PNP_QUERY_POWER:
@@ -1244,7 +1245,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &XennetSupportedOids[0],
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_HARDWARE_STATUS:
@@ -1288,7 +1289,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   COMPANY_NAME_STR,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_VENDOR_DRIVER_VERSION:
@@ -1336,7 +1337,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_802_3_CURRENT_ADDRESS:
@@ -1347,7 +1348,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_MAXIMUM_FRAME_SIZE:
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 16:04:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTYGO-0007Ki-Ed; Thu, 05 Mar 2015 16:04:40 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1YTYGN-0007Kd-53
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 16:04:39 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	E6/E5-03165-69E78F45; Thu, 05 Mar 2015 16:04:38 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1425571476!13290592!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4641 invoked from network); 5 Mar 2015 16:04:37 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 16:04:37 -0000
X-IronPort-AV: E=Sophos;i="5.11,347,1422921600"; d="scan'208";a="240431037"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 5 Mar 2015 15:47:51 +0000
Message-ID: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
	success
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

When buffer is >= 8-bytes, return a 8-byte buffer,
when buffer is >= 4-bytes, return a 4-byte buffer,
else, indicate 8-bytes required and indicate failure

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xennet/adapter.c | 47 ++++++++++++++++++++++++-----------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b094519..f85ce12 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1151,17 +1151,16 @@ __CopyBuffer(
     IN  PVOID               Buffer,
     IN  ULONG               BufferLength,
     IN  PVOID               Source,
-    IN OUT PULONG           SourceLength
+    IN  ULONG               SourceLength
     )
 {
-    if (BufferLength >= *SourceLength) {
-        RtlCopyMemory(Buffer, Source, *SourceLength);
+    if (BufferLength >= SourceLength) {
+        RtlCopyMemory(Buffer, Source, SourceLength);
         return NDIS_STATUS_SUCCESS;
-    } else {
-        *SourceLength = BufferLength;
-        RtlCopyMemory(Buffer, Source, *SourceLength);
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
     }
+
+    RtlCopyMemory(Buffer, Source, BufferLength);
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
@@ -1172,14 +1171,14 @@ __SetUlong(
     IN OUT PULONG           SourceLength
     )
 {
+    *SourceLength = sizeof(ULONG);
+
     if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = Source;
-        *SourceLength = sizeof(ULONG);
+        *(PULONG)Buffer = (ULONG)Source;
         return NDIS_STATUS_SUCCESS;
-    } else {
-        *SourceLength = 0;
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
     }
+
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
@@ -1190,18 +1189,20 @@ __SetUlong64(
     IN OUT PULONG           SourceLength
     )
 {
+    *SourceLength = sizeof(ULONGLONG);
+
     if (BufferLength >= sizeof(ULONGLONG)) {
         *(PULONGLONG)Buffer = Source;
-        *SourceLength = sizeof(ULONGLONG);
         return NDIS_STATUS_SUCCESS;
-    } else if (BufferLength == sizeof(ULONG)) {
+    }
+
+    if (BufferLength >= sizeof(ULONG)) {
         *(PULONG)Buffer = (ULONG)Source;
         *SourceLength = sizeof(ULONG);
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
-    } else {
-        *SourceLength = 0;
-        return NDIS_STATUS_BUFFER_TOO_SHORT;
+        return NDIS_STATUS_SUCCESS;
     }
+
+    return NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 NDIS_STATUS
@@ -1230,7 +1231,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &Adapter->Capabilities,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_PNP_QUERY_POWER:
@@ -1244,7 +1245,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &XennetSupportedOids[0],
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_HARDWARE_STATUS:
@@ -1288,7 +1289,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   COMPANY_NAME_STR,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_VENDOR_DRIVER_VERSION:
@@ -1336,7 +1337,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_802_3_CURRENT_ADDRESS:
@@ -1347,7 +1348,7 @@ AdapterQueryInformation(
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  &BytesWritten);
+                                  BytesWritten);
         break;
 
     case OID_GEN_MAXIMUM_FRAME_SIZE:
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 16:27:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 16:27:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTYcs-0002Kt-Il; Thu, 05 Mar 2015 16:27:54 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YTYcr-0002Ko-Sv
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 16:27:54 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	3B/BD-10942-90488F45; Thu, 05 Mar 2015 16:27:53 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1425572872!11031942!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=SUBJECT_RANDOMQ,
	UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22574 invoked from network); 5 Mar 2015 16:27:52 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 16:27:52 -0000
X-IronPort-AV: E=Sophos;i="5.11,348,1422921600"; d="scan'208";a="32694290"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
	success
Thread-Index: AQHQV2AdXES/o+fzKkaA6ppe+SnFEJ0OEu+w
Date: Thu, 5 Mar 2015 16:27:51 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025826554@AMSPEX01CL01.citrite.net>
References: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are
	a	success
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen Smith
> Sent: 05 March 2015 15:48
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
> success
> 
> When buffer is >= 8-bytes, return a 8-byte buffer,
> when buffer is >= 4-bytes, return a 4-byte buffer,
> else, indicate 8-bytes required and indicate failure
> 
> Signed-off-by: Owen Smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

...and applied. Thanks!

  Paul

> ---
>  src/xennet/adapter.c | 47 ++++++++++++++++++++++++----------------------
> -
>  1 file changed, 24 insertions(+), 23 deletions(-)
> 
> diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
> index b094519..f85ce12 100644
> --- a/src/xennet/adapter.c
> +++ b/src/xennet/adapter.c
> @@ -1151,17 +1151,16 @@ __CopyBuffer(
>      IN  PVOID               Buffer,
>      IN  ULONG               BufferLength,
>      IN  PVOID               Source,
> -    IN OUT PULONG           SourceLength
> +    IN  ULONG               SourceLength
>      )
>  {
> -    if (BufferLength >= *SourceLength) {
> -        RtlCopyMemory(Buffer, Source, *SourceLength);
> +    if (BufferLength >= SourceLength) {
> +        RtlCopyMemory(Buffer, Source, SourceLength);
>          return NDIS_STATUS_SUCCESS;
> -    } else {
> -        *SourceLength = BufferLength;
> -        RtlCopyMemory(Buffer, Source, *SourceLength);
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
>      }
> +
> +    RtlCopyMemory(Buffer, Source, BufferLength);
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  static FORCEINLINE NDIS_STATUS
> @@ -1172,14 +1171,14 @@ __SetUlong(
>      IN OUT PULONG           SourceLength
>      )
>  {
> +    *SourceLength = sizeof(ULONG);
> +
>      if (BufferLength >= sizeof(ULONG)) {
> -        *(PULONG)Buffer = Source;
> -        *SourceLength = sizeof(ULONG);
> +        *(PULONG)Buffer = (ULONG)Source;
>          return NDIS_STATUS_SUCCESS;
> -    } else {
> -        *SourceLength = 0;
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
>      }
> +
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  static FORCEINLINE NDIS_STATUS
> @@ -1190,18 +1189,20 @@ __SetUlong64(
>      IN OUT PULONG           SourceLength
>      )
>  {
> +    *SourceLength = sizeof(ULONGLONG);
> +
>      if (BufferLength >= sizeof(ULONGLONG)) {
>          *(PULONGLONG)Buffer = Source;
> -        *SourceLength = sizeof(ULONGLONG);
>          return NDIS_STATUS_SUCCESS;
> -    } else if (BufferLength == sizeof(ULONG)) {
> +    }
> +
> +    if (BufferLength >= sizeof(ULONG)) {
>          *(PULONG)Buffer = (ULONG)Source;
>          *SourceLength = sizeof(ULONG);
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
> -    } else {
> -        *SourceLength = 0;
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
> +        return NDIS_STATUS_SUCCESS;
>      }
> +
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  NDIS_STATUS
> @@ -1230,7 +1231,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &Adapter->Capabilities,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_PNP_QUERY_POWER:
> @@ -1244,7 +1245,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &XennetSupportedOids[0],
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_HARDWARE_STATUS:
> @@ -1288,7 +1289,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    COMPANY_NAME_STR,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_VENDOR_DRIVER_VERSION:
> @@ -1336,7 +1337,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &EthernetAddress,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_802_3_CURRENT_ADDRESS:
> @@ -1347,7 +1348,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &EthernetAddress,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_MAXIMUM_FRAME_SIZE:
> --
> 1.9.4.msysgit.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 05 16:27:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 05 Mar 2015 16:27:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YTYcs-0002Kt-Il; Thu, 05 Mar 2015 16:27:54 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YTYcr-0002Ko-Sv
	for win-pv-devel@lists.xenproject.org; Thu, 05 Mar 2015 16:27:54 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	3B/BD-10942-90488F45; Thu, 05 Mar 2015 16:27:53 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1425572872!11031942!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=SUBJECT_RANDOMQ,
	UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22574 invoked from network); 5 Mar 2015 16:27:52 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	5 Mar 2015 16:27:52 -0000
X-IronPort-AV: E=Sophos;i="5.11,348,1422921600"; d="scan'208";a="32694290"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
	success
Thread-Index: AQHQV2AdXES/o+fzKkaA6ppe+SnFEJ0OEu+w
Date: Thu, 5 Mar 2015 16:27:51 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025826554@AMSPEX01CL01.citrite.net>
References: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1425570471-17068-1-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are
	a	success
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen Smith
> Sent: 05 March 2015 15:48
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH] [WHQL] 64bit OIDs: 4-byte results are a
> success
> 
> When buffer is >= 8-bytes, return a 8-byte buffer,
> when buffer is >= 4-bytes, return a 4-byte buffer,
> else, indicate 8-bytes required and indicate failure
> 
> Signed-off-by: Owen Smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

...and applied. Thanks!

  Paul

> ---
>  src/xennet/adapter.c | 47 ++++++++++++++++++++++++----------------------
> -
>  1 file changed, 24 insertions(+), 23 deletions(-)
> 
> diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
> index b094519..f85ce12 100644
> --- a/src/xennet/adapter.c
> +++ b/src/xennet/adapter.c
> @@ -1151,17 +1151,16 @@ __CopyBuffer(
>      IN  PVOID               Buffer,
>      IN  ULONG               BufferLength,
>      IN  PVOID               Source,
> -    IN OUT PULONG           SourceLength
> +    IN  ULONG               SourceLength
>      )
>  {
> -    if (BufferLength >= *SourceLength) {
> -        RtlCopyMemory(Buffer, Source, *SourceLength);
> +    if (BufferLength >= SourceLength) {
> +        RtlCopyMemory(Buffer, Source, SourceLength);
>          return NDIS_STATUS_SUCCESS;
> -    } else {
> -        *SourceLength = BufferLength;
> -        RtlCopyMemory(Buffer, Source, *SourceLength);
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
>      }
> +
> +    RtlCopyMemory(Buffer, Source, BufferLength);
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  static FORCEINLINE NDIS_STATUS
> @@ -1172,14 +1171,14 @@ __SetUlong(
>      IN OUT PULONG           SourceLength
>      )
>  {
> +    *SourceLength = sizeof(ULONG);
> +
>      if (BufferLength >= sizeof(ULONG)) {
> -        *(PULONG)Buffer = Source;
> -        *SourceLength = sizeof(ULONG);
> +        *(PULONG)Buffer = (ULONG)Source;
>          return NDIS_STATUS_SUCCESS;
> -    } else {
> -        *SourceLength = 0;
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
>      }
> +
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  static FORCEINLINE NDIS_STATUS
> @@ -1190,18 +1189,20 @@ __SetUlong64(
>      IN OUT PULONG           SourceLength
>      )
>  {
> +    *SourceLength = sizeof(ULONGLONG);
> +
>      if (BufferLength >= sizeof(ULONGLONG)) {
>          *(PULONGLONG)Buffer = Source;
> -        *SourceLength = sizeof(ULONGLONG);
>          return NDIS_STATUS_SUCCESS;
> -    } else if (BufferLength == sizeof(ULONG)) {
> +    }
> +
> +    if (BufferLength >= sizeof(ULONG)) {
>          *(PULONG)Buffer = (ULONG)Source;
>          *SourceLength = sizeof(ULONG);
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
> -    } else {
> -        *SourceLength = 0;
> -        return NDIS_STATUS_BUFFER_TOO_SHORT;
> +        return NDIS_STATUS_SUCCESS;
>      }
> +
> +    return NDIS_STATUS_BUFFER_TOO_SHORT;
>  }
> 
>  NDIS_STATUS
> @@ -1230,7 +1231,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &Adapter->Capabilities,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_PNP_QUERY_POWER:
> @@ -1244,7 +1245,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &XennetSupportedOids[0],
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_HARDWARE_STATUS:
> @@ -1288,7 +1289,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    COMPANY_NAME_STR,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_VENDOR_DRIVER_VERSION:
> @@ -1336,7 +1337,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &EthernetAddress,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_802_3_CURRENT_ADDRESS:
> @@ -1347,7 +1348,7 @@ AdapterQueryInformation(
>          ndisStatus = __CopyBuffer(Buffer,
>                                    BufferLength,
>                                    &EthernetAddress,
> -                                  &BytesWritten);
> +                                  BytesWritten);
>          break;
> 
>      case OID_GEN_MAXIMUM_FRAME_SIZE:
> --
> 1.9.4.msysgit.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 10 20:15:57 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 10 Mar 2015 20:15:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVQZJ-0001nV-81; Tue, 10 Mar 2015 20:15:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YVQZI-0001nQ-04
	for win-pv-devel@lists.xenproject.org; Tue, 10 Mar 2015 20:15:56 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	15/7D-02760-BF05FF45; Tue, 10 Mar 2015 20:15:55 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1426018553!11757004!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 18984 invoked from network); 10 Mar 2015 20:15:54 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-27.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 10 Mar 2015 20:15:54 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 9EBF621389
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 10 Mar 2015 16:15:51 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 10 Mar 2015 16:15:53 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:content-type:content-transfer-encoding;
	s=mesmtp; bh=7o5qRRMNaZQn+p0povfar3ceTy4=; b=hQekOI9y0PAuwXpiv8
	+1U/2xDAPsbOSzjTUK0w9aA2NBfgWcaQNoERnDuWcUm6PmAC5b2W2ihOfh0IlHCW
	DRlbpdKI1V1a7Piv/lOYjxYY3B9U/x39niCzbO+V7n55pVXBNNlg9IaS0UcR/x2m
	cOIPL0NXfQsdbq96iSELCev/M=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:content-type:content-transfer-encoding;
	s=smtpout; bh=7o5qRRMNaZQn+p0povfar3ceTy4=; b=VNvdHFAfVJatBWWl+
	TrdRe+o9w4QfLA273QAd9xD9/HBY6At81Zn/BjWwqDXk75GYN9tJ8Erh8THJxMn8
	dPAsuFeJrMPYykb5hKOmekNWtl6plLbcbB6cNTMLda+5b+AvcJuEy7kh06DW5/LK
	3M+iR1B2ksxsh/i9s7SnaFv4fc=
X-Sasl-enc: uXYRYBGdwi4OaIKYprr9KMQIgexw97mBKfRd1LA6kpp6 1426018552
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 909B6C002A3
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 10 Mar 2015 16:15:52 -0400 (EDT)
Message-ID: <54FF50FF.3070304@invisiblethingslab.com>
Date: Tue, 10 Mar 2015 21:15:59 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: win-pv-devel@lists.xenproject.org
Content-Length: 4527
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpIaSwKCkknbSB1
bmFibGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZSBJIGp1c3Qgc3Vic2Ny
aWJlZCB0bwp0aGlzIGxpc3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxh
c3QgbWVzc2FnZSBpcyBoZXJlOgpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMv
aHRtbC93aW4tcHYtZGV2ZWwvMjAxNS0wMS9tc2cwMDA2MC4KaHRtbCkKCkZpcnN0LCBzb21lIGJh
Y2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kIHByZXR0eQptdWNo
IHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5kb3dz
IGZvcgpRdWJlcyBPUyAoaHR0cHM6Ly93aWtpLnF1YmVzLW9zLm9yZy8pLiBTb21lIG9mIHlvdSBt
YXkgaGF2ZSBoZWFyZCBvZgpRdWJlcyAtLSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0IGNy
ZWF0aW5nIGEgc2VjdXJlIE9TIGJhc2VkIG9uCmxpZ2h0d2VpZ2h0IEFwcFZNcywgY3VycmVudGx5
IHVzaW5nIExpbnV4L1hlbiBhcyBiYXNlLiBJdCBzdXBwb3J0cwpXaW5kb3dzIEhWTXMgYW5kIG91
ciBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlcgpkb21VcyAo
c2VydmljZXMgbGlrZSBkYXRhIHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLCBzZWFtbGVzcyBH
VUkKZXhwZXJpZW5jZSBldGMpLgoKV2UncmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmluYWxpemluZyB0
aGUgbmV4dCBtYWpvciByZWxlYXNlIChyMykgb2YKUXViZXMsIGl0IHdpbGwgdXNlIFhlbiA0LjQg
aW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXIgV2luZG93cwp0b29scywgdGhleSBh
cmUgKGN1cnJlbnRseSkgdXNpbmcgUFYgZHJpdmVycyBiYXNlZCBvbiBKYW1lcyBIYXJwZXIncyBj
b2QKZS4KCk91ciBpbnRlci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHVzZXMgdmNoYW4gKGlu
IGZhY3QsIHZjaGFuCm9yaWdpbmF0ZXMgZnJvbSBvdXIgcGF0Y2ggYWNjZXB0ZWQgaW50byBYZW4n
cyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4KSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdpbmRvd3Mg
bGlidmNoYW4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcyBzdGF0ZWQKYWJvdmUsIGl0IHVzZXMgb2xk
IFBWIGRyaXZlcnMgaW50ZXJmYWNlcy4gWW91IGNhbiBmaW5kIGl0IGhlcmU6Cmh0dHBzOi8vZ2l0
aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuCgpUaGF0IGltcGxlbWVudGF0aW9u
IGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuIGZ1bmN0aW9ucyBhcmUKbm90IGlt
cGxlbWVudGVkLiBJdCBkaWRuJ3QgbWF0dGVyIGZvciBRdWJlcyByMiwgd2hlcmUgYWxsIHZjaGFu
CmNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbiBRdWJlcyBy
MyBob3dldmVyLCB3ZQpuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNlIG9mIHJlZGVzaWduZWQgaW50
ZXItVk0gY29tbXVuaWNhdGlvbgpwcm90b2NvbCB0aGF0IGFsbG93cyBkaXJlY3QgVk0tVk0gY29t
bXVuaWNhdGlvbiBhZnRlciBkb20wIGFyYml0cmF0aW9uLgoKVW5mb3J0dW5hdGVseSBIYXJwZXIn
cyBkcml2ZXJzIGRvbid0IHNlZW0gdG8gaW1wbGVtZW50IHRoZSBuZWVkZWQKa2VybmVsIGludGVy
ZmFjZXMgZm9yIHRoYXQgYXMgd2VsbC4gSSBkaWRuJ3QgbmVlZCB0byBsb29rIGludG8gUFYKZHJp
dmVycyBzb3VyY2VzIGJlZm9yZSwgYnV0IGl0IHNlZW1zIEkgd2lsbCBuZWVkIHRvIGRvIHRoYXQg
bm93IDopIEkKZm91bmQgdGhlIG5ldyBQViBkcml2ZXJzIGFuZCB0aGlzIG1haWxpbmcgbGlzdCwg
Zm91bmQgdGhlIHRocmVhZCBhYm91dAp2Y2hhbiBpbXBsZW1lbnRhdGlvbi4uLiBhbmQgdGhhdCdz
IHByZXR0eSBtdWNoIGl0IGZvciBub3cuCgpBcyBJIHNhaWQsIEkgZG9uJ3QgaGF2ZSBtdWNoIGV4
cGVyaWVuY2UgaW4gWGVuIEFQSXMgKGRpZG4ndCBuZWVkIHRvCnRpbmtlciB3aXRoIHRoZW0gZGly
ZWN0bHkgYmVmb3JlKS4gSSBkbywgaG93ZXZlciwgaGF2ZSBleHRlbnNpdmUKV2luQVBJIGtub3ds
ZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3MgZHJpdmVyIGRldmVsb3BtZW50CmV4
cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRvb2xzIGlzIGEgY3VzdG9tIGRpc3BsYXkgZHJp
dmVyIHRoYXQKYWxsb3dzIG5vLWNvcHkgdmlkZW8gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4g
SSBtYW5hZ2VkIHRvIGJ1aWxkIHRoZQpuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24g
b3VyIGRldiBRdWJlcyBidWlsZCBzb29uLgoKU28sIHRvIHN1bW1hcml6ZSwgSSdtIHZlcnkgaW50
ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEgV2luZG93cyB2Y2hhbgppbXBsZW1lbnRhdGlvbiBvbiB0
b3Agb2YgdGhlIG5ldyBQViBkcml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcgdGhyb3VnaAp0aGUgZHJp
dmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRo
ZQplbnZpcm9ubWVudC4gSWYgYW55b25lIG1hbmFnZWQgdG8gZ2V0IHNvbWV0aGluZyB3b3JraW5n
LCBvciBqdXN0IGhhcwppZGVhcywgbGV0IG1lIGtub3cuCgpDaGVlcnMsCgotIC0tIApSYWZhxYIg
V29qZHnFgmEKUXViZXMgVG9vbHMgZm9yIFdpbmRvd3MgZGV2ZWxvcGVyCi0tLS0tQkVHSU4gUEdQ
IFNJR05BVFVSRS0tLS0tCgppUUVjQkFFQkFnQUdCUUpVLzFEL0FBb0pFSVdpOXJCMkdyVzdWSFFI
LzJ2Z3dLVEE0eEpvZXpaQit2eEMrVU5ECmY3SGt2RGNWREtmRkhST2t3V0hxcTdmbG54RkxqNjE4
SExyWFp4dG1yclphMzBTMWNDK1hReHNPcVhpNGlvcFoKb1BCUkR5aGpXeVZvNW1idWh0MGNBWHkv
bmZSeEUwMjZaMG96Q2ZtdnJwYlhaZTk0Ryt3MU8vdGE3ZldXL1QvQgpQUUREbDBvQWNyaVRkWk05
S3VTZk5QNDkydnJMVk02aU5qM3U3UW1wVjZZVkxQRGVVS3BnZ05GMGdqK08wTG5hCk5lRmVsTzlj
dUNCMUVUa3VXZmoxcjVQdkFwdFpNZHFVbDhEbGducHhJVThlcDRBb1dxSTVnMlVxZUw2aEJCN0gK
MnZHb0k1SDRaWTJ1R1g5bUMxbWF1a1ovclFYM3RPb2ROc3daRGhvcEtrWnhZMTZLUkRiKzZSRjBm
UTRsMzZFPQo9djlKdgotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0KCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 10 20:15:57 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 10 Mar 2015 20:15:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVQZJ-0001nV-81; Tue, 10 Mar 2015 20:15:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YVQZI-0001nQ-04
	for win-pv-devel@lists.xenproject.org; Tue, 10 Mar 2015 20:15:56 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	15/7D-02760-BF05FF45; Tue, 10 Mar 2015 20:15:55 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1426018553!11757004!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 18984 invoked from network); 10 Mar 2015 20:15:54 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-27.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 10 Mar 2015 20:15:54 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 9EBF621389
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 10 Mar 2015 16:15:51 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 10 Mar 2015 16:15:53 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:content-type:content-transfer-encoding;
	s=mesmtp; bh=7o5qRRMNaZQn+p0povfar3ceTy4=; b=hQekOI9y0PAuwXpiv8
	+1U/2xDAPsbOSzjTUK0w9aA2NBfgWcaQNoERnDuWcUm6PmAC5b2W2ihOfh0IlHCW
	DRlbpdKI1V1a7Piv/lOYjxYY3B9U/x39niCzbO+V7n55pVXBNNlg9IaS0UcR/x2m
	cOIPL0NXfQsdbq96iSELCev/M=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:content-type:content-transfer-encoding;
	s=smtpout; bh=7o5qRRMNaZQn+p0povfar3ceTy4=; b=VNvdHFAfVJatBWWl+
	TrdRe+o9w4QfLA273QAd9xD9/HBY6At81Zn/BjWwqDXk75GYN9tJ8Erh8THJxMn8
	dPAsuFeJrMPYykb5hKOmekNWtl6plLbcbB6cNTMLda+5b+AvcJuEy7kh06DW5/LK
	3M+iR1B2ksxsh/i9s7SnaFv4fc=
X-Sasl-enc: uXYRYBGdwi4OaIKYprr9KMQIgexw97mBKfRd1LA6kpp6 1426018552
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 909B6C002A3
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 10 Mar 2015 16:15:52 -0400 (EDT)
Message-ID: <54FF50FF.3070304@invisiblethingslab.com>
Date: Tue, 10 Mar 2015 21:15:59 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: win-pv-devel@lists.xenproject.org
Content-Length: 4527
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpIaSwKCkknbSB1
bmFibGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZSBJIGp1c3Qgc3Vic2Ny
aWJlZCB0bwp0aGlzIGxpc3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxh
c3QgbWVzc2FnZSBpcyBoZXJlOgpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMv
aHRtbC93aW4tcHYtZGV2ZWwvMjAxNS0wMS9tc2cwMDA2MC4KaHRtbCkKCkZpcnN0LCBzb21lIGJh
Y2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kIHByZXR0eQptdWNo
IHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5kb3dz
IGZvcgpRdWJlcyBPUyAoaHR0cHM6Ly93aWtpLnF1YmVzLW9zLm9yZy8pLiBTb21lIG9mIHlvdSBt
YXkgaGF2ZSBoZWFyZCBvZgpRdWJlcyAtLSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0IGNy
ZWF0aW5nIGEgc2VjdXJlIE9TIGJhc2VkIG9uCmxpZ2h0d2VpZ2h0IEFwcFZNcywgY3VycmVudGx5
IHVzaW5nIExpbnV4L1hlbiBhcyBiYXNlLiBJdCBzdXBwb3J0cwpXaW5kb3dzIEhWTXMgYW5kIG91
ciBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlcgpkb21VcyAo
c2VydmljZXMgbGlrZSBkYXRhIHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLCBzZWFtbGVzcyBH
VUkKZXhwZXJpZW5jZSBldGMpLgoKV2UncmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmluYWxpemluZyB0
aGUgbmV4dCBtYWpvciByZWxlYXNlIChyMykgb2YKUXViZXMsIGl0IHdpbGwgdXNlIFhlbiA0LjQg
aW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXIgV2luZG93cwp0b29scywgdGhleSBh
cmUgKGN1cnJlbnRseSkgdXNpbmcgUFYgZHJpdmVycyBiYXNlZCBvbiBKYW1lcyBIYXJwZXIncyBj
b2QKZS4KCk91ciBpbnRlci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHVzZXMgdmNoYW4gKGlu
IGZhY3QsIHZjaGFuCm9yaWdpbmF0ZXMgZnJvbSBvdXIgcGF0Y2ggYWNjZXB0ZWQgaW50byBYZW4n
cyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4KSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdpbmRvd3Mg
bGlidmNoYW4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcyBzdGF0ZWQKYWJvdmUsIGl0IHVzZXMgb2xk
IFBWIGRyaXZlcnMgaW50ZXJmYWNlcy4gWW91IGNhbiBmaW5kIGl0IGhlcmU6Cmh0dHBzOi8vZ2l0
aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuCgpUaGF0IGltcGxlbWVudGF0aW9u
IGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuIGZ1bmN0aW9ucyBhcmUKbm90IGlt
cGxlbWVudGVkLiBJdCBkaWRuJ3QgbWF0dGVyIGZvciBRdWJlcyByMiwgd2hlcmUgYWxsIHZjaGFu
CmNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbiBRdWJlcyBy
MyBob3dldmVyLCB3ZQpuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNlIG9mIHJlZGVzaWduZWQgaW50
ZXItVk0gY29tbXVuaWNhdGlvbgpwcm90b2NvbCB0aGF0IGFsbG93cyBkaXJlY3QgVk0tVk0gY29t
bXVuaWNhdGlvbiBhZnRlciBkb20wIGFyYml0cmF0aW9uLgoKVW5mb3J0dW5hdGVseSBIYXJwZXIn
cyBkcml2ZXJzIGRvbid0IHNlZW0gdG8gaW1wbGVtZW50IHRoZSBuZWVkZWQKa2VybmVsIGludGVy
ZmFjZXMgZm9yIHRoYXQgYXMgd2VsbC4gSSBkaWRuJ3QgbmVlZCB0byBsb29rIGludG8gUFYKZHJp
dmVycyBzb3VyY2VzIGJlZm9yZSwgYnV0IGl0IHNlZW1zIEkgd2lsbCBuZWVkIHRvIGRvIHRoYXQg
bm93IDopIEkKZm91bmQgdGhlIG5ldyBQViBkcml2ZXJzIGFuZCB0aGlzIG1haWxpbmcgbGlzdCwg
Zm91bmQgdGhlIHRocmVhZCBhYm91dAp2Y2hhbiBpbXBsZW1lbnRhdGlvbi4uLiBhbmQgdGhhdCdz
IHByZXR0eSBtdWNoIGl0IGZvciBub3cuCgpBcyBJIHNhaWQsIEkgZG9uJ3QgaGF2ZSBtdWNoIGV4
cGVyaWVuY2UgaW4gWGVuIEFQSXMgKGRpZG4ndCBuZWVkIHRvCnRpbmtlciB3aXRoIHRoZW0gZGly
ZWN0bHkgYmVmb3JlKS4gSSBkbywgaG93ZXZlciwgaGF2ZSBleHRlbnNpdmUKV2luQVBJIGtub3ds
ZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3MgZHJpdmVyIGRldmVsb3BtZW50CmV4
cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRvb2xzIGlzIGEgY3VzdG9tIGRpc3BsYXkgZHJp
dmVyIHRoYXQKYWxsb3dzIG5vLWNvcHkgdmlkZW8gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4g
SSBtYW5hZ2VkIHRvIGJ1aWxkIHRoZQpuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24g
b3VyIGRldiBRdWJlcyBidWlsZCBzb29uLgoKU28sIHRvIHN1bW1hcml6ZSwgSSdtIHZlcnkgaW50
ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEgV2luZG93cyB2Y2hhbgppbXBsZW1lbnRhdGlvbiBvbiB0
b3Agb2YgdGhlIG5ldyBQViBkcml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcgdGhyb3VnaAp0aGUgZHJp
dmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRo
ZQplbnZpcm9ubWVudC4gSWYgYW55b25lIG1hbmFnZWQgdG8gZ2V0IHNvbWV0aGluZyB3b3JraW5n
LCBvciBqdXN0IGhhcwppZGVhcywgbGV0IG1lIGtub3cuCgpDaGVlcnMsCgotIC0tIApSYWZhxYIg
V29qZHnFgmEKUXViZXMgVG9vbHMgZm9yIFdpbmRvd3MgZGV2ZWxvcGVyCi0tLS0tQkVHSU4gUEdQ
IFNJR05BVFVSRS0tLS0tCgppUUVjQkFFQkFnQUdCUUpVLzFEL0FBb0pFSVdpOXJCMkdyVzdWSFFI
LzJ2Z3dLVEE0eEpvZXpaQit2eEMrVU5ECmY3SGt2RGNWREtmRkhST2t3V0hxcTdmbG54RkxqNjE4
SExyWFp4dG1yclphMzBTMWNDK1hReHNPcVhpNGlvcFoKb1BCUkR5aGpXeVZvNW1idWh0MGNBWHkv
bmZSeEUwMjZaMG96Q2ZtdnJwYlhaZTk0Ryt3MU8vdGE3ZldXL1QvQgpQUUREbDBvQWNyaVRkWk05
S3VTZk5QNDkydnJMVk02aU5qM3U3UW1wVjZZVkxQRGVVS3BnZ05GMGdqK08wTG5hCk5lRmVsTzlj
dUNCMUVUa3VXZmoxcjVQdkFwdFpNZHFVbDhEbGducHhJVThlcDRBb1dxSTVnMlVxZUw2aEJCN0gK
MnZHb0k1SDRaWTJ1R1g5bUMxbWF1a1ovclFYM3RPb2ROc3daRGhvcEtrWnhZMTZLUkRiKzZSRjBm
UTRsMzZFPQo9djlKdgotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0KCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:17:08 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:17:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViNg-0002QI-O7; Wed, 11 Mar 2015 15:17:08 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YViNf-0002Q1-Ck
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:17:07 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	EF/02-28920-27C50055; Wed, 11 Mar 2015 15:17:06 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426087024!10974047!1
X-Originating-IP: [74.125.82.179]
X-SpamReason: No, hits=1.4 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_20_30,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29839 invoked from network); 11 Mar 2015 15:17:04 -0000
Received: from mail-we0-f179.google.com (HELO mail-we0-f179.google.com)
	(74.125.82.179)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:17:04 -0000
Received: by wesw55 with SMTP id w55so9988787wes.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 08:17:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:content-type;
	bh=LeFFbSg7CvMbWStvueTYzJP+D0Yb8ChdiSTEotdgrnY=;
	b=HKpEJJH55FM6uBBi+Wit39b/0QAEuermsZtoyZc+8LCYvdKumFkC/6ohgFTQ4wlW5m
	ySrU0PrY3zB+6LdX0LvfghvrVUVMremvxDjRSxqUYQIUVMdN83KVdjnaYvV5+l3yX7pS
	TjnPrcxtqxiv+eJNobAdJGR5W5wErpiu3CF3rurg8G7NRLgjhlsOpoyyrXTHXMW8tRQ5
	WLuyX9SFJGEuGimW6Y6QVJMHGFOEmiXIksEr5xDsCbgrK1dA6lrQ3/BXaOI+A8N7SYpm
	eWTVPf5fI/kTkudIXR2pEU4joVEG/KuyAIr3WJqGO02WCO4VeEGf+qWADUCJvIEOZ1QQ
	qakA==
X-Gm-Message-State: ALoCoQkBD4rTAPFWiUNSOmC8KMtUERcAYmcCkJYSEpdy4G/+d1Kyon7SpKZNzsW2K9aSWkVrfHg1
X-Received: by 10.180.92.136 with SMTP id cm8mr18372859wib.41.1426087023509;
	Wed, 11 Mar 2015 08:17:03 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	bd1sm25211245wib.13.2015.03.11.08.17.01
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 08:17:02 -0700 (PDT)
Message-ID: <55005C86.6040605@m2r.biz>
Date: Wed, 11 Mar 2015 16:17:26 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Content-Type: multipart/mixed; boundary="------------060302050908010005030809"
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060302050908010005030809
Content-Type: multipart/alternative;
 boundary="------------050403040404050004010308"


--------------050403040404050004010308
Content-Type: text/plain; charset=iso-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

As I reported time ago there was strange thing when update network 
components: give "ready to use" instead of "device updated" message at 
end of driver component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
(24.09.2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
(24.09.2014)

Is probably the first build I installed in this domU and that I already 
uninstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
(05.03.2015)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
(05.03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
(03.03.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's 
kern.log and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.



--------------050403040404050004010308
Content-Type: text/html; charset=iso-8859-15
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    As I reported time ago there was strange thing when update network
    components: give "ready to use" instead of "device updated" message
    at end of driver component install.<br>
    Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
    xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0)
    (24.09.2014)<br>
    xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0)
    (24.09.2014)<br>
    <br>
    Is probably the first build I installed in this domU and that I
    already uninstall from control center time ago.<br>
    <br>
    other components instead seems loaded correctly the latest build
    installed:<br>
    xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41)
    (05.03.2015)<br>
    xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0
    (41) (05.03.2015)<br>
    xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0
    (18) (03.03.2015)<br>
    xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13
    (2/3/2015)<br>
    <br>
    ----------<br>
    <br>
    I saw also these errors in qemu log:<br>
    ...<br>
    <blockquote type="cite">xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000200 - 000003ff]<br>
      <b>xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
        (c000009a)</b><br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000400 - 000005ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000600 - 000007ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000800 - 000009ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000a00 - 00000bff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000c00 - 00000dff]</blockquote>
    ...<br>
    Can someone tell me something about?<br>
    Can they be related to some failed memory balloning error in dom0's
    kern.log and syslog?<br>
    <br>
    Full qemu log in attachment is needed.<br>
    <br>
    If you need more informations and/or tests tell me and I'll post
    them.<br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <br>
  </body>
</html>

--------------050403040404050004010308--

--------------060302050908010005030809
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7.log"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.983000 ms, bitrate 1290485192 bps (1230.702583 Mbps)
red_dispatcher_set_cursor_peer: 
inputs_connect: inputs channel client create
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XEN|AcpiFindRsdp: 0x00000000000F0D90
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|AcpiGetXsdt: 0x00000000FC00A010
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: PROCESSOR ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: PROCESSOR ID: 01
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN: HYPERCALL PAGE 0 @ 00000000.036a0000
xen_platform_log xen platform: XEN: 4.6-unstable
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800255D660 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800252FAC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F4040 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F45D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F55D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F65D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F75D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F95D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FA5D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FB5D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FD040 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FE040 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FFAC0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: ACTIVE DEVICE PRESENT
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENFILT|DriverSetFilterState: PENDING
xen_platform_log xen platform: XENFILT|PdoDestroy: FFFFFA80016F95D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30) (device disappeared)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: DISABLED
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80024E4B50 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024E5638: Shared LevelSensitive CPU 0 VECTOR 51
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016EEF58: DeviceExclusive Latched CPU 0 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016EED08: DeviceExclusive Latched CPU 1 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: XENBUS|FdoCreateIoSpace: 00000000.f8000000 - 00000000.f8ffffff
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[0] @ 00000000.2e6fd000
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[1] @ 00000000.2e17e000
xen_platform_log xen platform: XENBUS|EvtchnAbiAcquire: FIFO
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 1
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: STORE: EVTCHN 1
xen_platform_log xen platform: EVTCHN_FIFO: EVENTARRAY[0] @ 00000000.2dbff000
xen_platform_log xen platform: XENBUS|EvtchnFifoExpand: added ports [00000000 - 000003ff]
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000006)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002537AC0 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800253BAC0 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002547AC0 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.0.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.18 (3/3/2015)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)
xen_platform_log xen platform: XENDISK|FdoCreate:FFFFFA8002563040
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 3)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/vbd/2/768)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000020 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/1000
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT INDIRECT 
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : INDIRECT 100
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA80025426A0 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENDISK|PdoCreate:FFFFFA800253C7D0
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA8002690060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA8002690060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002BBD910 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F1E8C FFFFFA8002BCC560
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F0DD4 FFFFFA8002BCC570
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F1968 FFFFFA8002BCC780
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA8002BCC810 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 00000000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 00000000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 00000000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 00000000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 00000000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000c00 - 00000dff]
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002C65D40 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Guest agent lite main loop starting
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to XenTime
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: hosttimeIsUTC: Open Registry Key
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Time is now  2015.3.11 15:40:45.345
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to 2015.3.11 15:40:45.566
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to add feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Establish watch control/shutdown
xen_platform_log xen platform: XENIFACE|StartWatch: Start Watch FFFFFA8002BC2600
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to advertise features
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:MethodExec Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SessionStart Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVValue Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVPath Failed 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Failed to advertise shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to kick xapi 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent woke up for 3
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Fire 000000000021DA60
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fire feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Check if we need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: No need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fired feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
red_channel_client_disconnect: rcc=0x7fb13cf1f070 (channel=0x7fb13cce8ef0 type=3 id=0)
red_channel_client_disconnect_dummy: rcc=0x7fb13cf2cc20 (channel=0x7fb13cdaa860 type=5 id=0)
snd_channel_put: SndChannel=0x7fb13cf232b0 freed
red_channel_client_disconnect_dummy: rcc=0x7fb13d005270 (channel=0x7fb13cda67b0 type=6 id=0)
snd_channel_put: SndChannel=0x7fb13cff4a30 freed
red_channel_client_disconnect: rcc=0x7fb13d2f3280 (channel=0x7fb13cd9da80 type=2 id=0)
red_channel_client_disconnect: rcc=0x7fb13d0d8fa0 (channel=0x7fb13cdfcaa0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7fb13d195230 (channel=0x7fb13ce09b00 type=9 id=1)
red_channel_client_disconnect: rcc=0x7fb13d19a570 (channel=0x7fb13ce0c630 type=9 id=2)
red_channel_client_disconnect: rcc=0x7fb13cd2e5f0 (channel=0x7fb13cd9e210 type=4 id=0)
red_channel_client_disconnect: rcc=0x7fb13d0e5360 (channel=0x7fb13ce0d2d0 type=9 id=3)
red_channel_client_disconnect: rcc=0x7fb13d0d2b20 (channel=0x7fb13ccdd460 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7fb13d0d2b20
red_client_destroy: destroy client 0x7fb13cdfb170 with #channels=6
red_dispatcher_disconnect_cursor_peer: 
red_dispatcher_disconnect_display_peer: 
main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.877000 ms, bitrate 1615141955 bps (1540.319400 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 

--------------060302050908010005030809
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060302050908010005030809--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:17:08 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:17:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViNg-0002QI-O7; Wed, 11 Mar 2015 15:17:08 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YViNf-0002Q1-Ck
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:17:07 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	EF/02-28920-27C50055; Wed, 11 Mar 2015 15:17:06 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426087024!10974047!1
X-Originating-IP: [74.125.82.179]
X-SpamReason: No, hits=1.4 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_20_30,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29839 invoked from network); 11 Mar 2015 15:17:04 -0000
Received: from mail-we0-f179.google.com (HELO mail-we0-f179.google.com)
	(74.125.82.179)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:17:04 -0000
Received: by wesw55 with SMTP id w55so9988787wes.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 08:17:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:content-type;
	bh=LeFFbSg7CvMbWStvueTYzJP+D0Yb8ChdiSTEotdgrnY=;
	b=HKpEJJH55FM6uBBi+Wit39b/0QAEuermsZtoyZc+8LCYvdKumFkC/6ohgFTQ4wlW5m
	ySrU0PrY3zB+6LdX0LvfghvrVUVMremvxDjRSxqUYQIUVMdN83KVdjnaYvV5+l3yX7pS
	TjnPrcxtqxiv+eJNobAdJGR5W5wErpiu3CF3rurg8G7NRLgjhlsOpoyyrXTHXMW8tRQ5
	WLuyX9SFJGEuGimW6Y6QVJMHGFOEmiXIksEr5xDsCbgrK1dA6lrQ3/BXaOI+A8N7SYpm
	eWTVPf5fI/kTkudIXR2pEU4joVEG/KuyAIr3WJqGO02WCO4VeEGf+qWADUCJvIEOZ1QQ
	qakA==
X-Gm-Message-State: ALoCoQkBD4rTAPFWiUNSOmC8KMtUERcAYmcCkJYSEpdy4G/+d1Kyon7SpKZNzsW2K9aSWkVrfHg1
X-Received: by 10.180.92.136 with SMTP id cm8mr18372859wib.41.1426087023509;
	Wed, 11 Mar 2015 08:17:03 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	bd1sm25211245wib.13.2015.03.11.08.17.01
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 08:17:02 -0700 (PDT)
Message-ID: <55005C86.6040605@m2r.biz>
Date: Wed, 11 Mar 2015 16:17:26 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Content-Type: multipart/mixed; boundary="------------060302050908010005030809"
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060302050908010005030809
Content-Type: multipart/alternative;
 boundary="------------050403040404050004010308"


--------------050403040404050004010308
Content-Type: text/plain; charset=iso-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

As I reported time ago there was strange thing when update network 
components: give "ready to use" instead of "device updated" message at 
end of driver component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
(24.09.2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
(24.09.2014)

Is probably the first build I installed in this domU and that I already 
uninstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
(05.03.2015)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
(05.03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
(03.03.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's 
kern.log and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.



--------------050403040404050004010308
Content-Type: text/html; charset=iso-8859-15
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    As I reported time ago there was strange thing when update network
    components: give "ready to use" instead of "device updated" message
    at end of driver component install.<br>
    Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
    xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0)
    (24.09.2014)<br>
    xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0)
    (24.09.2014)<br>
    <br>
    Is probably the first build I installed in this domU and that I
    already uninstall from control center time ago.<br>
    <br>
    other components instead seems loaded correctly the latest build
    installed:<br>
    xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41)
    (05.03.2015)<br>
    xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0
    (41) (05.03.2015)<br>
    xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0
    (18) (03.03.2015)<br>
    xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13
    (2/3/2015)<br>
    <br>
    ----------<br>
    <br>
    I saw also these errors in qemu log:<br>
    ...<br>
    <blockquote type="cite">xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000200 - 000003ff]<br>
      <b>xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
        (c000009a)</b><br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000400 - 000005ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000600 - 000007ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000800 - 000009ff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000a00 - 00000bff]<br>
      xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
      (c000009a)<br>
      xen_platform_log xen platform: GNTTAB: MAP
      XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
      xen_platform_log xen platform: XENBUS|GnttabExpand: added
      references [00000c00 - 00000dff]</blockquote>
    ...<br>
    Can someone tell me something about?<br>
    Can they be related to some failed memory balloning error in dom0's
    kern.log and syslog?<br>
    <br>
    Full qemu log in attachment is needed.<br>
    <br>
    If you need more informations and/or tests tell me and I'll post
    them.<br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <br>
  </body>
</html>

--------------050403040404050004010308--

--------------060302050908010005030809
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7.log"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.983000 ms, bitrate 1290485192 bps (1230.702583 Mbps)
red_dispatcher_set_cursor_peer: 
inputs_connect: inputs channel client create
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XEN|AcpiFindRsdp: 0x00000000000F0D90
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|AcpiGetXsdt: 0x00000000FC00A010
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: PROCESSOR ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: PROCESSOR ID: 01
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN: HYPERCALL PAGE 0 @ 00000000.036a0000
xen_platform_log xen platform: XEN: 4.6-unstable
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800255D660 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800252FAC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F4040 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F45D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F55D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F65D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F75D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F95D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FA5D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FB5D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FD040 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FE040 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FFAC0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: ACTIVE DEVICE PRESENT
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENFILT|DriverSetFilterState: PENDING
xen_platform_log xen platform: XENFILT|PdoDestroy: FFFFFA80016F95D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30) (device disappeared)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: DISABLED
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (41) (05.03.2015)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80024E4B50 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024E5638: Shared LevelSensitive CPU 0 VECTOR 51
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016EEF58: DeviceExclusive Latched CPU 0 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016EED08: DeviceExclusive Latched CPU 1 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: XENBUS|FdoCreateIoSpace: 00000000.f8000000 - 00000000.f8ffffff
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[0] @ 00000000.2e6fd000
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[1] @ 00000000.2e17e000
xen_platform_log xen platform: XENBUS|EvtchnAbiAcquire: FIFO
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 1
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: STORE: EVTCHN 1
xen_platform_log xen platform: EVTCHN_FIFO: EVENTARRAY[0] @ 00000000.2dbff000
xen_platform_log xen platform: XENBUS|EvtchnFifoExpand: added ports [00000000 - 000003ff]
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024E9850 (VBD 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FFD40 (VIF 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002504D40 (IFACE 00000006)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002537AC0 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800253BAC0 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002547AC0 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.0.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.18 (3/3/2015)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)
xen_platform_log xen platform: XENDISK|FdoCreate:FFFFFA8002563040
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800254C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 3)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/vbd/2/768)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000020 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/1000
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT INDIRECT 
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : INDIRECT 100
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA80025426A0 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENDISK|PdoCreate:FFFFFA800253C7D0
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA8002690060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA8002690060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002BBD910 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F1E8C FFFFFA8002BCC560
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F0DD4 FFFFFA8002BCC570
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880015F1968 FFFFFA8002BCC780
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA8002BCC810 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 00000000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 00000000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 00000000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 00000000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 00000000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000c00 - 00000dff]
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002C65D40 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Guest agent lite main loop starting
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to XenTime
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: hosttimeIsUTC: Open Registry Key
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Time is now  2015.3.11 15:40:45.345
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to 2015.3.11 15:40:45.566
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to add feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Establish watch control/shutdown
xen_platform_log xen platform: XENIFACE|StartWatch: Start Watch FFFFFA8002BC2600
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to advertise features
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:MethodExec Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SessionStart Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVValue Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVPath Failed 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Failed to advertise shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to kick xapi 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent woke up for 3
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Fire 000000000021DA60
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fire feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Check if we need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: No need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fired feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
red_channel_client_disconnect: rcc=0x7fb13cf1f070 (channel=0x7fb13cce8ef0 type=3 id=0)
red_channel_client_disconnect_dummy: rcc=0x7fb13cf2cc20 (channel=0x7fb13cdaa860 type=5 id=0)
snd_channel_put: SndChannel=0x7fb13cf232b0 freed
red_channel_client_disconnect_dummy: rcc=0x7fb13d005270 (channel=0x7fb13cda67b0 type=6 id=0)
snd_channel_put: SndChannel=0x7fb13cff4a30 freed
red_channel_client_disconnect: rcc=0x7fb13d2f3280 (channel=0x7fb13cd9da80 type=2 id=0)
red_channel_client_disconnect: rcc=0x7fb13d0d8fa0 (channel=0x7fb13cdfcaa0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7fb13d195230 (channel=0x7fb13ce09b00 type=9 id=1)
red_channel_client_disconnect: rcc=0x7fb13d19a570 (channel=0x7fb13ce0c630 type=9 id=2)
red_channel_client_disconnect: rcc=0x7fb13cd2e5f0 (channel=0x7fb13cd9e210 type=4 id=0)
red_channel_client_disconnect: rcc=0x7fb13d0e5360 (channel=0x7fb13ce0d2d0 type=9 id=3)
red_channel_client_disconnect: rcc=0x7fb13d0d2b20 (channel=0x7fb13ccdd460 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7fb13d0d2b20
red_client_destroy: destroy client 0x7fb13cdfb170 with #channels=6
red_dispatcher_disconnect_cursor_peer: 
red_dispatcher_disconnect_display_peer: 
main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.877000 ms, bitrate 1615141955 bps (1540.319400 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 

--------------060302050908010005030809
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060302050908010005030809--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:22:45 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:22:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViT7-0003om-Eq; Wed, 11 Mar 2015 15:22:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YViT5-0003oJ-Rp
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:22:44 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
	D2/FB-31919-3CD50055; Wed, 11 Mar 2015 15:22:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1426087361!11985195!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 583 invoked from network); 11 Mar 2015 15:22:41 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:22:41 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208,217";a="32801933"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw
Date: Wed, 11 Mar 2015 15:22:40 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
In-Reply-To: <55005C86.6040605@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============9167795109094299227=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============9167795109094299227==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.


--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C0F.3C017E20"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
>Have you tried uninstalling all versions of XENVIF and XENNET and then
 re-installing the latest? Windows should always prefer the newest driver b=
y date but maybe something has gone wrong and for some reason is favouring =
a really old version you have lying around in
<span class=3D"SpellE">DriverStore</span>.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
>The
<span class=3D"SpellE">RangeSetPop</span> error is not anything to worry ab=
out. It is expected. It simply means the grant table has run out of space a=
nd needs to be expanded, which is why you see the error immediately followe=
d by a map and populate of the next
 grant table page.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> win-pv-devel@lists.xenpr=
oject.org<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">As I reported time ago there was strange thing when update =
network components: give &quot;ready to use&quot; instead of &quot;device
 updated&quot; message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_gran=
t_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_--


--===============9167795109094299227==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============9167795109094299227==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:22:45 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:22:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViT7-0003om-Eq; Wed, 11 Mar 2015 15:22:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YViT5-0003oJ-Rp
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:22:44 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
	D2/FB-31919-3CD50055; Wed, 11 Mar 2015 15:22:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1426087361!11985195!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 583 invoked from network); 11 Mar 2015 15:22:41 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:22:41 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208,217";a="32801933"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw
Date: Wed, 11 Mar 2015 15:22:40 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
In-Reply-To: <55005C86.6040605@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============9167795109094299227=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============9167795109094299227==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.


--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C0F.3C017E20"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
>Have you tried uninstalling all versions of XENVIF and XENNET and then
 re-installing the latest? Windows should always prefer the newest driver b=
y date but maybe something has gone wrong and for some reason is favouring =
a really old version you have lying around in
<span class=3D"SpellE">DriverStore</span>.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
>The
<span class=3D"SpellE">RangeSetPop</span> error is not anything to worry ab=
out. It is expected. It simply means the grant table has run out of space a=
nd needs to be expanded, which is why you see the error immediately followe=
d by a map and populate of the next
 grant table page.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F497D"=
><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> win-pv-devel@lists.xenpr=
oject.org<br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">As I reported time ago there was strange thing when update =
network components: give &quot;ready to use&quot; instead of &quot;device
 updated&quot; message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_gran=
t_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59AMSPEX01CL01cit_--


--===============9167795109094299227==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============9167795109094299227==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:38:43 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:38:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViiZ-0006WA-Go; Wed, 11 Mar 2015 15:38:43 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YViiY-0006Vw-Ao
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:38:42 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	0A/90-18734-18160055; Wed, 11 Mar 2015 15:38:41 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-3.tower-31.messagelabs.com!1426088320!11154092!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23646 invoked from network); 11 Mar 2015 15:38:40 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:38:40 -0000
Received: by wggx13 with SMTP id x13so10153702wgg.4
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 08:38:39 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=Vn0smzKWkJU2/0Z0I0A4AgLTqNbxX0+3v9d15Wviqow=;
	b=CdnzA3F/acNqodcZzKQnu/ZFOPZONB6RV7EdOeZaGCVmI0OZyum/jnMwwHQIGfxptc
	OKw5smllPevkjY58z8Mxh8trkqWZvETOqZHSNMh/5aKbHpQV2Ofis9IAFBcAJ+hD1Smm
	lbDSlWpO0coRRL0ScTXJt+7QzMnQgX83pQBwi40RGq4ZCxCoUjf1xo+TBYsX576ez5EW
	oE8qrTVu2bGaUcBHzMCsFiujG2aqoct2dMuW/3XkYPhmwUrwmJea56PbskB49ZZYOgeE
	OUJUH98ww0U64Pep+JNnauUP5zWjx9uPlS3EH508yQFpjEUiVIhAACY54yajt84uptpM
	Rfog==
X-Gm-Message-State: ALoCoQl3xv51zVCqc+XaazgHJgM3dMbZi/rdiklirFURJ//vZUUUOCViR3n4zeFV7D3M0IgJx5kY
X-Received: by 10.180.206.13 with SMTP id lk13mr36304751wic.95.1426088319637; 
	Wed, 11 Mar 2015 08:38:39 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id k6sm25304309wia.6.2015.03.11.08.38.37
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 08:38:38 -0700 (PDT)
Message-ID: <55006197.7060700@m2r.biz>
Date: Wed, 11 Mar 2015 16:39:03 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0333945947108750349=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============0333945947108750349==
Content-Type: multipart/alternative;
 boundary="------------080806040507090009030408"

This is a multi-part message in MIME format.
--------------080806040507090009030408
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
> Have you tried uninstalling all versions of XENVIF and XENNET and then 
> re-installing the latest? Windows should always prefer the newest 
> driver by date but maybe something has gone wrong and for some reason 
> is favouring a really old version you have lying around in DriverStore.
>

Yes, I already uninstalled all old drivers build of all component 3 
tests ago, rebooted windows and after installed the new build but seems 
olders xenvif and xennet still remained even if not visible in control 
center and always on new xenvif and xennet install give me "ready to 
use" instead of "device updated" message at end.
The only other way I know to delete the drivers is search the files in 
c:/windows/... but I tried time ago with other things gave me always 
blue screen on next boot, so I not tried with pv.

> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about?
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog?
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------080806040507090009030408
Content-Type: text/html; charset=windows-1252
Content-Length: 33329
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 11/03/2015 16:22, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C0F.3C017E20">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Have you tried uninstalling
              all versions of XENVIF and XENNET and then re-installing
              the latest=3F Windows should always prefer the newest driver
              by date but maybe something has gone wrong and for some
              reason is favouring a really old version you have lying
              around in
              <span class=3D"SpellE">DriverStore</span>.</span></font></p>
      </div>
    </blockquote>
    <br>
    Yes, I already uninstalled all old drivers build of all component 3
    tests ago, rebooted windows and after installed the new build but
    seems olders xenvif and xennet still remained even if not visible in
    control center and always on new xenvif and xennet install give me <font
      color=3D"black" face=3D"Times New Roman" size=3D"3"><span
        style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times New
        Roman&quot;">"ready to use" instead of "device updated" message
        at end.<br>
        The only other way I know to delete the drivers is search the
        files in c:/windows/... but I tried time ago with other things
        gave me always blue screen on next boot, so I not tried with pv.<br>
      </span></font><br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">The
              <span class=3D"SpellE">RangeSetPop</span> error is not
              anything to worry about. It is expected. It simply means
              the grant table has run out of space and needs to be
              expanded, which is why you see the error immediately
              followed by a map and populate of the next grant table
              page.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    11 March 2015 15:17<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Cc:</span></b>
                    Paul Durrant<br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    [win-pv-devel] xenvif xennet don't update or load
                    correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">As I reported time ago there was
                strange thing when update network components: give
                "ready to use" instead of "device updated" message at
                end of driver component install.<br>
                Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
                xen_platform_log xen platform: XENVIF|DriverEntry:
                XENVIF 8.0.0 (0) (24.09.2014)<br>
                xen_platform_log xen platform: XENNET|DriverEntry:
                XENNET 8.0.0 (0) (24.09.2014)<br>
                <br>
                Is probably the first build I installed in this domU and
                that I already uninstall from control center time ago.<br>
                <br>
                other components instead seems loaded correctly the
                latest build installed:<br>
                xen_platform_log xen platform: XEN|DllInitialize: XEN
                8.0.0 (41) (05.03.2015)<br>
                xen_platform_log xen platform: XENFILT|DriverEntry:
                XENFILT 8.0.0 (41) (05.03.2015)<br>
                xen_platform_log xen platform:
                XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                xen_platform_log xen platform: XENIFACE|DriverEntry:
                8.0.0.13 (2/3/2015)<br>
                <br>
                ----------<br>
                <br>
                I saw also these errors in qemu log:<br>
                ...<br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">xen_platform_log xen platform: GNTTAB:
                MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000200 - 000003ff]<br>
                <b><span style=3D"font-weight:bold">xen_platform_log xen
                    platform: XENBUS|RangeSetPop: fail1 (c000009a)</span></b><br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000400 - 000005ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000600 - 000007ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000800 - 000009ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000a00 - 00000bff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000c00 - 00000dff]<o:p></o:p></span></font></p>
          <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
              color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">...<br>
                Can someone tell me something about=3F<br>
                Can they be related to some failed memory balloning
                error in dom0's kern.log and syslog=3F<br>
                <br>
                Full qemu log in attachment is needed.<br>
                <br>
                If you need more informations and/or tests tell me and
                I'll post them.<br>
                Thanks for any reply and sorry for my bad english.<br
                  style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------080806040507090009030408--


--===============0333945947108750349==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0333945947108750349==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:38:43 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:38:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YViiZ-0006WA-Go; Wed, 11 Mar 2015 15:38:43 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YViiY-0006Vw-Ao
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:38:42 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	0A/90-18734-18160055; Wed, 11 Mar 2015 15:38:41 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-3.tower-31.messagelabs.com!1426088320!11154092!1
X-Originating-IP: [74.125.82.49]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23646 invoked from network); 11 Mar 2015 15:38:40 -0000
Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com)
	(74.125.82.49)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:38:40 -0000
Received: by wggx13 with SMTP id x13so10153702wgg.4
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 08:38:39 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=Vn0smzKWkJU2/0Z0I0A4AgLTqNbxX0+3v9d15Wviqow=;
	b=CdnzA3F/acNqodcZzKQnu/ZFOPZONB6RV7EdOeZaGCVmI0OZyum/jnMwwHQIGfxptc
	OKw5smllPevkjY58z8Mxh8trkqWZvETOqZHSNMh/5aKbHpQV2Ofis9IAFBcAJ+hD1Smm
	lbDSlWpO0coRRL0ScTXJt+7QzMnQgX83pQBwi40RGq4ZCxCoUjf1xo+TBYsX576ez5EW
	oE8qrTVu2bGaUcBHzMCsFiujG2aqoct2dMuW/3XkYPhmwUrwmJea56PbskB49ZZYOgeE
	OUJUH98ww0U64Pep+JNnauUP5zWjx9uPlS3EH508yQFpjEUiVIhAACY54yajt84uptpM
	Rfog==
X-Gm-Message-State: ALoCoQl3xv51zVCqc+XaazgHJgM3dMbZi/rdiklirFURJ//vZUUUOCViR3n4zeFV7D3M0IgJx5kY
X-Received: by 10.180.206.13 with SMTP id lk13mr36304751wic.95.1426088319637; 
	Wed, 11 Mar 2015 08:38:39 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id k6sm25304309wia.6.2015.03.11.08.38.37
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 08:38:38 -0700 (PDT)
Message-ID: <55006197.7060700@m2r.biz>
Date: Wed, 11 Mar 2015 16:39:03 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0333945947108750349=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============0333945947108750349==
Content-Type: multipart/alternative;
 boundary="------------080806040507090009030408"

This is a multi-part message in MIME format.
--------------080806040507090009030408
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
> Have you tried uninstalling all versions of XENVIF and XENNET and then 
> re-installing the latest? Windows should always prefer the newest 
> driver by date but maybe something has gone wrong and for some reason 
> is favouring a really old version you have lying around in DriverStore.
>

Yes, I already uninstalled all old drivers build of all component 3 
tests ago, rebooted windows and after installed the new build but seems 
olders xenvif and xennet still remained even if not visible in control 
center and always on new xenvif and xennet install give me "ready to 
use" instead of "device updated" message at end.
The only other way I know to delete the drivers is search the files in 
c:/windows/... but I tried time ago with other things gave me always 
blue screen on next boot, so I not tried with pv.

> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about?
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog?
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------080806040507090009030408
Content-Type: text/html; charset=windows-1252
Content-Length: 33329
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 11/03/2015 16:22, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C0F.3C017E20">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Have you tried uninstalling
              all versions of XENVIF and XENNET and then re-installing
              the latest=3F Windows should always prefer the newest driver
              by date but maybe something has gone wrong and for some
              reason is favouring a really old version you have lying
              around in
              <span class=3D"SpellE">DriverStore</span>.</span></font></p>
      </div>
    </blockquote>
    <br>
    Yes, I already uninstalled all old drivers build of all component 3
    tests ago, rebooted windows and after installed the new build but
    seems olders xenvif and xennet still remained even if not visible in
    control center and always on new xenvif and xennet install give me <font
      color=3D"black" face=3D"Times New Roman" size=3D"3"><span
        style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times New
        Roman&quot;">"ready to use" instead of "device updated" message
        at end.<br>
        The only other way I know to delete the drivers is search the
        files in c:/windows/... but I tried time ago with other things
        gave me always blue screen on next boot, so I not tried with pv.<br>
      </span></font><br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">The
              <span class=3D"SpellE">RangeSetPop</span> error is not
              anything to worry about. It is expected. It simply means
              the grant table has run out of space and needs to be
              expanded, which is why you see the error immediately
              followed by a map and populate of the next grant table
              page.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    11 March 2015 15:17<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Cc:</span></b>
                    Paul Durrant<br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    [win-pv-devel] xenvif xennet don't update or load
                    correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">As I reported time ago there was
                strange thing when update network components: give
                "ready to use" instead of "device updated" message at
                end of driver component install.<br>
                Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
                xen_platform_log xen platform: XENVIF|DriverEntry:
                XENVIF 8.0.0 (0) (24.09.2014)<br>
                xen_platform_log xen platform: XENNET|DriverEntry:
                XENNET 8.0.0 (0) (24.09.2014)<br>
                <br>
                Is probably the first build I installed in this domU and
                that I already uninstall from control center time ago.<br>
                <br>
                other components instead seems loaded correctly the
                latest build installed:<br>
                xen_platform_log xen platform: XEN|DllInitialize: XEN
                8.0.0 (41) (05.03.2015)<br>
                xen_platform_log xen platform: XENFILT|DriverEntry:
                XENFILT 8.0.0 (41) (05.03.2015)<br>
                xen_platform_log xen platform:
                XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                xen_platform_log xen platform: XENIFACE|DriverEntry:
                8.0.0.13 (2/3/2015)<br>
                <br>
                ----------<br>
                <br>
                I saw also these errors in qemu log:<br>
                ...<br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">xen_platform_log xen platform: GNTTAB:
                MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000200 - 000003ff]<br>
                <b><span style=3D"font-weight:bold">xen_platform_log xen
                    platform: XENBUS|RangeSetPop: fail1 (c000009a)</span></b><br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000400 - 000005ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000600 - 000007ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000800 - 000009ff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000a00 - 00000bff]<br>
                xen_platform_log xen platform: XENBUS|RangeSetPop: fail1
                (c000009a)<br>
                xen_platform_log xen platform: GNTTAB: MAP
                XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                xen_platform_log xen platform: XENBUS|GnttabExpand:
                added references [00000c00 - 00000dff]<o:p></o:p></span></font></p>
          <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
              color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">...<br>
                Can someone tell me something about=3F<br>
                Can they be related to some failed memory balloning
                error in dom0's kern.log and syslog=3F<br>
                <br>
                Full qemu log in attachment is needed.<br>
                <br>
                If you need more informations and/or tests tell me and
                I'll post them.<br>
                Thanks for any reply and sorry for my bad english.<br
                  style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------080806040507090009030408--


--===============0333945947108750349==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0333945947108750349==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:47:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVirX-0008Ai-6Q; Wed, 11 Mar 2015 15:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YVirW-0008AX-MY
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:47:59 +0000
Received: from [193.109.254.147] by server-12.bemta-14.messagelabs.com id
	08/16-02755-EA360055; Wed, 11 Mar 2015 15:47:58 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1426088876!12030483!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12939 invoked from network); 11 Mar 2015 15:47:56 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:47:56 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208,217";a="32802751"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4A==
Date: Wed, 11 Mar 2015 15:47:55 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
In-Reply-To: <55006197.7060700@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7346344826824037214=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============7346344826824037214==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.



--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C12.C32C4710"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.EmailStyle17
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverS=
tore\FileRepository.
 If you still have packages for old drivers in here then Windows can find t=
hem and re-install them even if you think you&#8217;ve uninstalled. The cor=
rect way to remove packages is using &#8216;<span class=3D"SpellE">pnputil<=
/span> &#8211;d&#8217; but it&#8217;s a bit clunky.<o:p></o:p></span></font=
></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Have you tried uninstalling all versions of XENVIF and
 XENNET and then re-installing the latest? Windows should always prefer the=
 newest driver by date but maybe something has gone wrong and for some reas=
on is favouring a really old version you have lying around in DriverStore.<=
/span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">The RangeSetPop error is not anything to worry about.
 It is expected. It simply means the grant table has run out of space and n=
eeds to be expanded, which is why you see the error immediately followed by=
 a map and populate of the next grant table page.</span></font><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">As I reported time ago there was strange thing
 when update network components: give &quot;ready to use&quot; instead of &=
quot;device updated&quot; message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">xen_platform_log xen platform: GNTTAB: MAP
 XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_--


--===============7346344826824037214==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7346344826824037214==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 15:47:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 15:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVirX-0008Ai-6Q; Wed, 11 Mar 2015 15:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YVirW-0008AX-MY
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 15:47:59 +0000
Received: from [193.109.254.147] by server-12.bemta-14.messagelabs.com id
	08/16-02755-EA360055; Wed, 11 Mar 2015 15:47:58 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1426088876!12030483!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12939 invoked from network); 11 Mar 2015 15:47:56 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 15:47:56 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208,217";a="32802751"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4A==
Date: Wed, 11 Mar 2015 15:47:55 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
In-Reply-To: <55006197.7060700@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7346344826824037214=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============7346344826824037214==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.



--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C12.C32C4710"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.EmailStyle17
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverS=
tore\FileRepository.
 If you still have packages for old drivers in here then Windows can find t=
hem and re-install them even if you think you&#8217;ve uninstalled. The cor=
rect way to remove packages is using &#8216;<span class=3D"SpellE">pnputil<=
/span> &#8211;d&#8217; but it&#8217;s a bit clunky.<o:p></o:p></span></font=
></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Have you tried uninstalling all versions of XENVIF and
 XENNET and then re-installing the latest? Windows should always prefer the=
 newest driver by date but maybe something has gone wrong and for some reas=
on is favouring a really old version you have lying around in DriverStore.<=
/span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">The RangeSetPop error is not anything to worry about.
 It is expected. It simply means the grant table has run out of space and n=
eeds to be expanded, which is why you see the error immediately followed by=
 a map and populate of the next grant table page.</span></font><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">As I reported time ago there was strange thing
 when update network components: give &quot;ready to use&quot; instead of &=
quot;device updated&quot; message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">xen_platform_log xen platform: GNTTAB: MAP
 XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17AMSPEX01CL01cit_--


--===============7346344826824037214==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7346344826824037214==--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:19:16 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:19:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkHr-0000vR-Qf; Wed, 11 Mar 2015 17:19:15 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YVkHq-0000uU-VC
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:19:15 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	DA/2C-30108-21970055; Wed, 11 Mar 2015 17:19:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1426094353!11076924!1
X-Originating-IP: [74.125.82.175]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30095 invoked from network); 11 Mar 2015 17:19:13 -0000
Received: from mail-we0-f175.google.com (HELO mail-we0-f175.google.com)
	(74.125.82.175)
	by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:19:13 -0000
Received: by wevk48 with SMTP id k48so10776372wev.5
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 10:19:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=rUsmMzzXFUqLI3wnA5K+nBYiJc505MeV43dd43iDoVI=;
	b=CGjRsQWdDFvi00Q+G3/81QogO9SRNu2s8YKCvp2wnPNAnUtDoR8H+Xa51HgpELJj+Z
	xU37CnBnLWZUiAOzOm1DJTNmk6f7BeqwlZFT+e/paw8MLm9hPvo2l501uhmUXDCv3yWy
	TmABad/x6n3J9vib+wkrJvjQhAzrNBHe8W4hh93hMYb135C7xXsz27/BQKrIRc3AlE3a
	DzOUeYXN9YUo0mZx4xy4qVWhHIO9JJzk3NegRRFetSzHIz0a2Hn15/gmye39BIlkvHv9
	u6F6y1MqZBTEZysGMbcqCWTWDg2Grlf/0RdK1Bf5KYt+/h5VV6hXKzWZQCswOsCawacb
	lBww==
X-Received: by 10.180.80.9 with SMTP id n9mr80569751wix.34.1426094353301;
	Wed, 11 Mar 2015 10:19:13 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ge8sm6267118wjc.32.2015.03.11.10.19.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 10:19:12 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed, 11 Mar 2015 17:19:06 +0000
Message-Id: <1426094346-8836-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Squash a prefast warning
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Prefast warns that following the Flink pointer of the EVTCHN context list
may be unsafe due to it being NULL. It should never be NULL so this patch
adds an ASSERTion and hence squashes the warning.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/evtchn.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 3bb8d18..499127a 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -995,6 +995,8 @@ EvtchnSuspendCallbackEarly(
          ListEntry = ListEntry->Flink) {
         PXENBUS_EVTCHN_CHANNEL  Channel;
 
+        ASSERT(ListEntry->Flink != NULL);
+
         Channel = CONTAINING_RECORD(ListEntry, XENBUS_EVTCHN_CHANNEL, ListEntry);
 
         ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:19:16 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:19:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkHr-0000vR-Qf; Wed, 11 Mar 2015 17:19:15 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YVkHq-0000uU-VC
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:19:15 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	DA/2C-30108-21970055; Wed, 11 Mar 2015 17:19:14 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1426094353!11076924!1
X-Originating-IP: [74.125.82.175]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30095 invoked from network); 11 Mar 2015 17:19:13 -0000
Received: from mail-we0-f175.google.com (HELO mail-we0-f175.google.com)
	(74.125.82.175)
	by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:19:13 -0000
Received: by wevk48 with SMTP id k48so10776372wev.5
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 10:19:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=rUsmMzzXFUqLI3wnA5K+nBYiJc505MeV43dd43iDoVI=;
	b=CGjRsQWdDFvi00Q+G3/81QogO9SRNu2s8YKCvp2wnPNAnUtDoR8H+Xa51HgpELJj+Z
	xU37CnBnLWZUiAOzOm1DJTNmk6f7BeqwlZFT+e/paw8MLm9hPvo2l501uhmUXDCv3yWy
	TmABad/x6n3J9vib+wkrJvjQhAzrNBHe8W4hh93hMYb135C7xXsz27/BQKrIRc3AlE3a
	DzOUeYXN9YUo0mZx4xy4qVWhHIO9JJzk3NegRRFetSzHIz0a2Hn15/gmye39BIlkvHv9
	u6F6y1MqZBTEZysGMbcqCWTWDg2Grlf/0RdK1Bf5KYt+/h5VV6hXKzWZQCswOsCawacb
	lBww==
X-Received: by 10.180.80.9 with SMTP id n9mr80569751wix.34.1426094353301;
	Wed, 11 Mar 2015 10:19:13 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ge8sm6267118wjc.32.2015.03.11.10.19.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 10:19:12 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed, 11 Mar 2015 17:19:06 +0000
Message-Id: <1426094346-8836-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Squash a prefast warning
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Prefast warns that following the Flink pointer of the EVTCHN context list
may be unsafe due to it being NULL. It should never be NULL so this patch
adds an ASSERTion and hence squashes the warning.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/evtchn.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 3bb8d18..499127a 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -995,6 +995,8 @@ EvtchnSuspendCallbackEarly(
          ListEntry = ListEntry->Flink) {
         PXENBUS_EVTCHN_CHANNEL  Channel;
 
+        ASSERT(ListEntry->Flink != NULL);
+
         Channel = CONTAINING_RECORD(ListEntry, XENBUS_EVTCHN_CHANNEL, ListEntry);
 
         ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:23:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkLY-0001Uo-4W; Wed, 11 Mar 2015 17:23:04 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YVkLX-0001U1-0c
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:23:03 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
	27/58-02635-6F970055; Wed, 11 Mar 2015 17:23:02 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1426094580!12059089!1
X-Originating-IP: [209.85.212.175]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7426 invoked from network); 11 Mar 2015 17:23:00 -0000
Received: from mail-wi0-f175.google.com (HELO mail-wi0-f175.google.com)
	(209.85.212.175)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:23:00 -0000
Received: by widex7 with SMTP id ex7so40225097wid.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 10:23:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=G6a63gsAYCjyqU/YvPNinQifP0sQKhHtHDZNTryoUaQ=;
	b=qkJpQ8ECPfoZugzDVV9wVSdHy2fqr3y/5dQGAtpEjp+DJQ9JRHCovsTpDGgYZOf2lT
	FBSnPDqTtUK5qzloiZDad1gMFqyfkBsHNwcusmTwnLnnuY6+D9WGmxcLrXQAHRh3YFrG
	xTpq72S72/nYNZfKdwVJ56DVnuSjn6+Ma5iNo+9OhNy/2FLUlhlzIckkq0EGgXzC8vXb
	jTCPZGAQFOjfWdBOmZ1ayW9E3E8luseunhxfT1byVIuNf5L+Jhap4afERA6q7FGQkm5G
	0+dk+JVLZZ8bcEgUPu5ZsT8v/JqTF6miDUPKjAVz4T+NzyEmftH3G2fj8IlFbbMw74QP
	5frQ==
X-Received: by 10.180.77.40 with SMTP id p8mr59667046wiw.1.1426094580008;
	Wed, 11 Mar 2015 10:23:00 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm6966610wib.18.2015.03.11.10.22.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 10:22:59 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed, 11 Mar 2015 17:22:57 +0000
Message-Id: <1426094577-9656-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Get rid of Granter abstraction
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Since the addition of GNTTAB Caches in XENBUS, the Granter abstraction in
XENVIF has been fairly pointless. This patch finally gets rid of it.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c        |  96 +++++---------
 src/xenvif/frontend.h        |   7 -
 src/xenvif/granter.c         | 310 -------------------------------------------
 src/xenvif/granter.h         |  93 -------------
 src/xenvif/receiver.c        | 181 ++++++++++++++++++-------
 src/xenvif/transmitter.c     | 255 ++++++++++++++++++++++++-----------
 vs2012/xenvif/xenvif.vcxproj |   1 -
 vs2013/xenvif/xenvif.vcxproj |   1 -
 8 files changed, 343 insertions(+), 601 deletions(-)
 delete mode 100644 src/xenvif/granter.c
 delete mode 100644 src/xenvif/granter.h

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 7e9989a..88e387f 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -43,7 +43,6 @@
 #include "thread.h"
 #include "frontend.h"
 #include "names.h"
-#include "granter.h"
 #include "mac.h"
 #include "tcpip.h"
 #include "receiver.h"
@@ -65,7 +64,6 @@ struct _XENVIF_FRONTEND {
     USHORT                      BackendDomain;
     ULONG                       QueueCount;
 
-    PXENVIF_GRANTER             Granter;
     PXENVIF_MAC                 Mac;
     PXENVIF_RECEIVER            Receiver;
     PXENVIF_TRANSMITTER         Transmitter;
@@ -290,7 +288,6 @@ FrontendGet ## _Function(                               \
     return __FrontendGet ## _Function ## (Frontend);    \
 }
 
-DEFINE_FRONTEND_GET_FUNCTION(Granter, PXENVIF_GRANTER)
 DEFINE_FRONTEND_GET_FUNCTION(Mac, PXENVIF_MAC)
 DEFINE_FRONTEND_GET_FUNCTION(Transmitter, PXENVIF_TRANSMITTER)
 DEFINE_FRONTEND_GET_FUNCTION(Receiver, PXENVIF_RECEIVER)
@@ -1407,22 +1404,18 @@ __FrontendConnect(
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    status = GranterConnect(__FrontendGetGranter(Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail3;
-
     status = MacConnect(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail3;
 
     __FrontendReadQueueCount(Frontend);
     status = ReceiverConnect(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail4;
 
     status = TransmitterConnect(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail5;
 
     Attempt = 0;
     do {
@@ -1472,7 +1465,7 @@ abort:
     } while (status == STATUS_RETRY);
 
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail6;
 
     status = XENBUS_STORE(Printf,
                           &Frontend->StoreInterface,
@@ -1482,25 +1475,22 @@ abort:
                           "%u",
                           XenbusStateConnected);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail7;
 
     State = XenbusStateInitWait;
     status = __FrontendWaitForStateChange(Frontend, Path, &State);
     if (!NT_SUCCESS(status))
-        goto fail9;
+        goto fail8;
 
     status = STATUS_UNSUCCESSFUL;
     if (State != XenbusStateConnected)
-        goto fail10;
+        goto fail9;
 
     ThreadWake(Frontend->MibThread);
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
-fail10:
-    Error("fail10\n");
-
 fail9:
     Error("fail9\n");
 
@@ -1510,22 +1500,20 @@ fail8:
 fail7:
     Error("fail7\n");
 
-    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
-
 fail6:
     Error("fail6\n");
 
-    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
+    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
 
 fail5:
     Error("fail5\n");
 
-    MacDisconnect(__FrontendGetMac(Frontend));
+    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
 
 fail4:
     Error("fail4\n");
 
-    GranterDisconnect(__FrontendGetGranter(Frontend));
+    MacDisconnect(__FrontendGetMac(Frontend));
 
 fail3:
     Error("fail3\n");
@@ -1557,7 +1545,6 @@ __FrontendDisconnect(
     TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
     ReceiverDisconnect(__FrontendGetReceiver(Frontend));
     MacDisconnect(__FrontendGetMac(Frontend));
-    GranterDisconnect(__FrontendGetGranter(Frontend));
 
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
@@ -1580,39 +1567,30 @@ __FrontendEnable(
 
     Trace("====>\n");
 
-    status = GranterEnable(__FrontendGetGranter(Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
     status = MacEnable(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail1;
 
     status = ReceiverEnable(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail2;
 
     status = TransmitterEnable(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail3;
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
-fail4:
-    Error("fail4\n");
-
-    ReceiverDisable(__FrontendGetReceiver(Frontend));
-
 fail3:
     Error("fail3\n");
 
-    MacDisable(__FrontendGetMac(Frontend));
+    ReceiverDisable(__FrontendGetReceiver(Frontend));
 
 fail2:
     Error("fail2\n");
 
-    GranterDisable(__FrontendGetGranter(Frontend));
+    MacDisable(__FrontendGetMac(Frontend));
 
 fail1:
     Error("fail1 (%08x)\n", status);
@@ -1630,7 +1608,6 @@ __FrontendDisable(
     TransmitterDisable(__FrontendGetTransmitter(Frontend));
     ReceiverDisable(__FrontendGetReceiver(Frontend));
     MacDisable(__FrontendGetMac(Frontend));
-    GranterDisable(__FrontendGetGranter(Frontend));
 
     Trace("<====\n");
 }
@@ -1981,64 +1958,57 @@ FrontendInitialize(
     FdoGetSuspendInterface(PdoGetFdo(Pdo), &(*Frontend)->SuspendInterface);
     FdoGetStoreInterface(PdoGetFdo(Pdo), &(*Frontend)->StoreInterface);
 
-    status = GranterInitialize(*Frontend, &(*Frontend)->Granter);
-    if (!NT_SUCCESS(status))
-        goto fail6;
-
     status = MacInitialize(*Frontend, &(*Frontend)->Mac);
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail6;
 
     status = ReceiverInitialize(*Frontend, &(*Frontend)->Receiver);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail7;
 
     status = TransmitterInitialize(*Frontend, &(*Frontend)->Transmitter);
     if (!NT_SUCCESS(status))
-        goto fail9;
+        goto fail8;
 
     status = ThreadCreate(FrontendEject, *Frontend, &(*Frontend)->EjectThread);
     if (!NT_SUCCESS(status))
-        goto fail10;
+        goto fail9;
 
     status = ThreadCreate(FrontendMib, *Frontend, &(*Frontend)->MibThread);
     if (!NT_SUCCESS(status))
-        goto fail11;
+        goto fail10;
 
     Trace("<====\n");
 
     return STATUS_SUCCESS;
 
-fail11:
-    Error("fail11\n");
+fail10:
+    Error("fail10\n");
 
     ThreadAlert((*Frontend)->EjectThread);
     ThreadJoin((*Frontend)->EjectThread);
     (*Frontend)->EjectThread = NULL;
 
-fail10:
-    Error("fail10\n");
+fail9:
+    Error("fail9\n");
 
     TransmitterTeardown(__FrontendGetTransmitter(*Frontend));
     (*Frontend)->Transmitter = NULL;
 
-fail9:
-    Error("fail9\n");
+fail8:
+    Error("fail8\n");
 
     ReceiverTeardown(__FrontendGetReceiver(*Frontend));
     (*Frontend)->Receiver = NULL;
 
-fail8:
-    Error("fail8\n");
+fail7:
+    Error("fail7\n");
 
     MacTeardown(__FrontendGetMac(*Frontend));
     (*Frontend)->Mac = NULL;
 
-fail7:
-    Error("fail7\n");
-
-    GranterTeardown(__FrontendGetGranter(*Frontend));
-    (*Frontend)->Granter = NULL;
+fail6:
+    Error("fail6\n");
 
     RtlZeroMemory(&(*Frontend)->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
@@ -2049,9 +2019,6 @@ fail7:
     RtlZeroMemory(&(*Frontend)->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
-fail6:
-    Error("fail6\n");
-
     (*Frontend)->State = FRONTEND_STATE_INVALID;
     RtlZeroMemory(&(*Frontend)->Lock, sizeof (KSPIN_LOCK));
 
@@ -2124,9 +2091,6 @@ FrontendTeardown(
     MacTeardown(__FrontendGetMac(Frontend));
     Frontend->Mac = NULL;
 
-    GranterTeardown(__FrontendGetGranter(Frontend));
-    Frontend->Granter = NULL;
-
     RtlZeroMemory(&Frontend->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 21a370a..adcf53c 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -129,13 +129,6 @@ FrontendFreePath(
     IN  PCHAR               Path
     );
 
-#include "granter.h"
-
-extern PXENVIF_GRANTER
-FrontendGetGranter(
-    IN  PXENVIF_FRONTEND    Frontend
-    );
-
 #include "mac.h"
 
 extern PXENVIF_MAC
diff --git a/src/xenvif/granter.c b/src/xenvif/granter.c
deleted file mode 100644
index 5efbf81..0000000
--- a/src/xenvif/granter.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#include <ntddk.h>
-#include <ntstrsafe.h>
-#include <stdlib.h>
-#include <util.h>
-
-#include "pdo.h"
-#include "frontend.h"
-#include "granter.h"
-#include "dbg_print.h"
-#include "assert.h"
-
-struct _XENVIF_GRANTER {
-    PXENVIF_FRONTEND        Frontend;
-    KSPIN_LOCK              Lock;
-    XENBUS_GNTTAB_INTERFACE GnttabInterface;
-    PXENBUS_GNTTAB_CACHE    Cache;
-};
-
-#define XENVIF_GRANTER_TAG  'NARG'
-
-#define MAXNAMELEN  128
-
-static FORCEINLINE PVOID
-__GranterAllocate(
-    IN  ULONG   Length
-    )
-{
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_GRANTER_TAG);
-}
-
-static FORCEINLINE VOID
-__GranterFree(
-    IN  PVOID   Buffer
-    )
-{
-    __FreePoolWithTag(Buffer, XENVIF_GRANTER_TAG);
-}
-
-NTSTATUS
-GranterInitialize(
-    IN  PXENVIF_FRONTEND    Frontend,
-    OUT PXENVIF_GRANTER     *Granter
-    )
-{
-    NTSTATUS                status;
-
-    *Granter = __GranterAllocate(sizeof (XENVIF_GRANTER));
-
-    status = STATUS_NO_MEMORY;
-    if (*Granter == NULL)
-        goto fail1;
-
-    KeInitializeSpinLock(&(*Granter)->Lock);
-
-    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
-                          &(*Granter)->GnttabInterface);
-
-    (*Granter)->Frontend = Frontend;
-
-    return STATUS_SUCCESS;
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-static VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
-GranterAcquireLock(
-    IN  PVOID       Argument
-    )
-{
-    PXENVIF_GRANTER Granter = Argument;
-
-    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
-
-    KeAcquireSpinLockAtDpcLevel(&Granter->Lock);
-}
-
-static VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
-GranterReleaseLock(
-    IN  PVOID       Argument
-    )
-{
-    PXENVIF_GRANTER Granter = Argument;
-
-    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
-
-#pragma prefast(disable:26110)
-    KeReleaseSpinLockFromDpcLevel(&Granter->Lock);
-}
-
-NTSTATUS
-GranterConnect(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    PXENVIF_FRONTEND    Frontend;
-    CHAR                Name[MAXNAMELEN];
-    ULONG               Index;
-    NTSTATUS            status;
-
-    Frontend = Granter->Frontend;
-
-    status = XENBUS_GNTTAB(Acquire, &Granter->GnttabInterface);
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
-    status = RtlStringCbPrintfA(Name,
-                                sizeof (Name),
-                                "%s",
-                                FrontendGetPath(Granter->Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail2;
-
-    for (Index = 0; Name[Index] != '\0'; Index++)
-        if (Name[Index] == '/')
-            Name[Index] = '_';
-
-    ASSERT3P(Granter->Cache, ==, NULL);
-
-    status = XENBUS_GNTTAB(CreateCache,
-                           &Granter->GnttabInterface,
-                           Name,
-                           0,
-                           GranterAcquireLock,
-                           GranterReleaseLock,
-                           Granter,
-                           &Granter->Cache);
-    if (!NT_SUCCESS(status))
-        goto fail3;
-
-    return STATUS_SUCCESS;
-
-fail3:
-    Error("fail3\n");
-
-fail2:
-    Error("fail2\n");
-
-    XENBUS_GNTTAB(Release, &Granter->GnttabInterface);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-NTSTATUS
-GranterEnable(
-    IN  PXENVIF_GRANTER     Granter
-    )
-{
-    UNREFERENCED_PARAMETER(Granter);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS
-GranterPermitAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  PFN_NUMBER              Pfn,
-    IN  BOOLEAN                 ReadOnly,
-    OUT PXENVIF_GRANTER_HANDLE  Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry;
-    NTSTATUS                    status;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    status = XENBUS_GNTTAB(PermitForeignAccess,
-                           &Granter->GnttabInterface,
-                           Granter->Cache,
-                           FALSE,
-                           FrontendGetBackendDomain(Frontend),
-                           Pfn,
-                           ReadOnly,
-                           &Entry);
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
-    *Handle = Entry;
-    return STATUS_SUCCESS;
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-VOID
-GranterRevokeAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry = Handle;
-    NTSTATUS                    status;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    status = XENBUS_GNTTAB(RevokeForeignAccess,
-                           &Granter->GnttabInterface,
-                           Granter->Cache,
-                           FALSE,
-                           Entry);
-    ASSERT(NT_SUCCESS(status));
-}
-
-ULONG
-GranterGetReference(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry;
-
-    Frontend = Granter->Frontend;
-
-    Entry = Handle;
-
-    return XENBUS_GNTTAB(GetReference,
-                         &Granter->GnttabInterface,
-                         Entry);
-}
-
-VOID
-GranterDisable(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    UNREFERENCED_PARAMETER(Granter);
-}
-
-VOID
-GranterDisconnect(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    PXENVIF_FRONTEND    Frontend;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    XENBUS_GNTTAB(DestroyCache,
-                  &Granter->GnttabInterface,
-                  Granter->Cache);
-    Granter->Cache = NULL;
-
-    XENBUS_GNTTAB(Release, &Granter->GnttabInterface);
-}
-
-VOID
-GranterTeardown(
-    IN  PXENVIF_GRANTER     Granter
-    )
-{
-    Granter->Frontend = NULL;
-
-    RtlZeroMemory(&Granter->GnttabInterface,
-                  sizeof (XENBUS_GNTTAB_INTERFACE));
-
-    RtlZeroMemory(&Granter->Lock, sizeof (KSPIN_LOCK));
-
-    ASSERT(IsZeroMemory(Granter, sizeof (XENVIF_GRANTER)));
-
-    __GranterFree(Granter);
-}
diff --git a/src/xenvif/granter.h b/src/xenvif/granter.h
deleted file mode 100644
index b9e51c3..0000000
--- a/src/xenvif/granter.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _XENVIF_GRANTER_H
-#define _XENVIF_GRANTER_H
-
-#include <ntddk.h>
-#include <gnttab_interface.h>
-
-typedef struct _XENVIF_GRANTER  XENVIF_GRANTER, *PXENVIF_GRANTER;
-
-typedef PVOID   XENVIF_GRANTER_HANDLE, *PXENVIF_GRANTER_HANDLE;
-
-NTSTATUS
-GranterInitialize(
-    IN  PXENVIF_FRONTEND    Frontend,
-    OUT PXENVIF_GRANTER     *Granter
-    );
-
-NTSTATUS
-GranterConnect(
-    IN  PXENVIF_GRANTER     Granter
-    );
-
-NTSTATUS
-GranterEnable(
-    IN  PXENVIF_GRANTER     Granter
-    );
-
-NTSTATUS
-GranterPermitAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  PFN_NUMBER              Pfn,
-    IN  BOOLEAN                 ReadOnly,
-    OUT PXENVIF_GRANTER_HANDLE  Handle
-    );
-
-VOID
-GranterRevokeAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    );
-
-ULONG
-GranterGetReference(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    );
-
-VOID
-GranterDisable(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-VOID
-GranterDisconnect(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-VOID
-GranterTeardown(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-#endif  // _XENVIF_GRANTER_H
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index da869d9..5318baf 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -37,6 +37,7 @@
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
+#include <gnttab_interface.h>
 #include <evtchn_interface.h>
 
 // This should be in public/io/netif.h
@@ -50,7 +51,6 @@
 #include "frontend.h"
 #include "checksum.h"
 #include "parse.h"
-#include "granter.h"
 #include "mac.h"
 #include "transmitter.h"
 #include "vif.h"
@@ -66,7 +66,7 @@ typedef struct _XENVIF_RECEIVER_FRAGMENT {
     LIST_ENTRY              ListEntry;
     ULONG                   Next;
     PVOID                   Context;
-    XENVIF_GRANTER_HANDLE   Handle;
+    PXENBUS_GNTTAB_ENTRY    Entry;
 } XENVIF_RECEIVER_FRAGMENT, *PXENVIF_RECEIVER_FRAGMENT;
 
 #define XENVIF_RECEIVER_RING_SIZE   (__CONST_RING_SIZE(netif_rx, PAGE_SIZE))
@@ -80,10 +80,11 @@ typedef struct _XENVIF_RECEIVER_RING {
     KSPIN_LOCK                  Lock;
     PXENBUS_CACHE               PacketCache;
     PXENBUS_CACHE               FragmentCache;
+    PXENBUS_GNTTAB_CACHE        GnttabCache;
     PMDL                        Mdl;
     netif_rx_front_ring_t       Front;
     netif_rx_sring_t            *Shared;
-    XENVIF_GRANTER_HANDLE       Handle;
+    PXENBUS_GNTTAB_ENTRY        Entry;
     PXENBUS_EVTCHN_CHANNEL      Channel;
     KDPC                        Dpc;
     ULONG                       Dpcs;
@@ -104,6 +105,7 @@ typedef struct _XENVIF_RECEIVER_RING {
 struct _XENVIF_RECEIVER {
     PXENVIF_FRONTEND        Frontend;
     XENBUS_CACHE_INTERFACE  CacheInterface;
+    XENBUS_GNTTAB_INTERFACE GnttabInterface;
     XENBUS_EVTCHN_INTERFACE EvtchnInterface;
     PXENVIF_RECEIVER_RING   Rings[MAXIMUM_PROCESSORS];
     BOOLEAN                 Split;
@@ -1449,6 +1451,7 @@ __ReceiverRingPreparePacket(
     PXENVIF_FRONTEND            Frontend;
     PXENVIF_RECEIVER_FRAGMENT   Fragment;
     PMDL                        Mdl;
+    PFN_NUMBER                  Pfn;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
@@ -1462,10 +1465,16 @@ __ReceiverRingPreparePacket(
 
     Mdl = &Packet->Mdl;
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 MmGetMdlPfnArray(Mdl)[0],
-                                 FALSE,
-                                 &Fragment->Handle);
+    Pfn = MmGetMdlPfnArray(Mdl)[0];
+
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Receiver->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail2;
 
@@ -1555,8 +1564,9 @@ ReceiverRingFill(
         Ring->RequestsPosted++;
 
         req->id = id;
-        req->gref = GranterGetReference(FrontendGetGranter(Frontend),
-                                        Fragment->Handle);
+        req->gref = XENBUS_GNTTAB(GetReference,
+                                  &Receiver->GnttabInterface,
+                                  Fragment->Entry);
 
         ASSERT3U(id, <=, XENVIF_RECEIVER_MAXIMUM_FRAGMENT_ID);
         ASSERT3P(Ring->Pending[id], ==, NULL);
@@ -1604,9 +1614,12 @@ __ReceiverRingEmpty(
         Mdl = Fragment->Context;
         Fragment->Context = NULL;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Receiver->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         __ReceiverRingPutFragment(Ring, Fragment);
 
@@ -1738,9 +1751,12 @@ ReceiverRingPoll(
             Mdl = Fragment->Context;
             Fragment->Context = NULL;
 
-            GranterRevokeAccess(FrontendGetGranter(Frontend),
-                                Fragment->Handle);
-            Fragment->Handle = NULL;
+            (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                                 &Receiver->GnttabInterface,
+                                 Ring->GnttabCache,
+                                 TRUE,
+                                 Fragment->Entry);
+            Fragment->Entry = NULL;
 
             __ReceiverRingPutFragment(Ring, Fragment);
 
@@ -2157,16 +2173,39 @@ __ReceiverRingConnect(
     PXENVIF_FRONTEND            Frontend;
     PFN_NUMBER                  Pfn;
     CHAR                        Name[MAXNAMELEN];
+    ULONG                       Index;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
     Frontend = Receiver->Frontend;
 
+    status = RtlStringCbPrintfA(Name,
+                                sizeof (Name),
+                                "%s_receiver",
+                                Ring->Path);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    for (Index = 0; Name[Index] != '\0'; Index++)
+        if (Name[Index] == '/')
+            Name[Index] = '_';
+
+    status = XENBUS_GNTTAB(CreateCache,
+                           &Receiver->GnttabInterface,
+                           Name,
+                           0,
+                           ReceiverRingAcquireLock,
+                           ReceiverRingReleaseLock,
+                           Ring,
+                           &Ring->GnttabCache);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
     Ring->Mdl = __AllocatePage();
 
     status = STATUS_NO_MEMORY;
     if (Ring->Mdl == NULL)
-        goto fail1;
+        goto fail3;
 
     Ring->Shared = MmGetSystemAddressForMdlSafe(Ring->Mdl, NormalPagePriority);
     ASSERT(Ring->Shared != NULL);
@@ -2177,19 +2216,23 @@ __ReceiverRingConnect(
 
     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
     
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 FALSE,
-                                 &Ring->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Receiver->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Ring->Entry);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail4;
 
     status = RtlStringCbPrintfA(Name,
                                 sizeof (Name),
                                 __MODULE__ "|RECEIVER[%u]",
                                 Ring->Index);
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail5;
 
     ASSERT(!Ring->Connected);
 
@@ -2203,7 +2246,7 @@ __ReceiverRingConnect(
 
     status = STATUS_UNSUCCESSFUL;
     if (Ring->Channel == NULL)
-        goto fail4;
+        goto fail6;
 
     if (FrontendGetQueueCount(Frontend) > 1) {
         (VOID) XENBUS_EVTCHN(Bind,
@@ -2229,12 +2272,12 @@ __ReceiverRingConnect(
                           Ring,
                           &Ring->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail7;
 
     return STATUS_SUCCESS;
 
-fail5:
-    Error("fail5\n");
+fail7:
+    Error("fail7\n");
 
     Ring->Connected = FALSE;
 
@@ -2245,18 +2288,21 @@ fail5:
 
     Ring->Events = 0;
 
-fail4:
-    Error("fail4\n");
+fail6:
+    Error("fail6\n");
 
-fail3:
-    Error("fail3\n");
+fail5:
+    Error("fail5\n");
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Receiver->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
-fail2:
-    Error("fail2\n");
+fail4:
+    Error("fail4\n");
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_rx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -2265,6 +2311,17 @@ fail2:
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Receiver->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
+
+fail2:
+    Error("fail2\n");
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
@@ -2297,9 +2354,9 @@ __ReceiverRingStoreWrite(
                           Path,
                           "rx-ring-ref",
                           "%u",
-                          GranterGetReference(FrontendGetGranter(Frontend),
-                                              Ring->Handle));
-
+                          XENBUS_GNTTAB(GetReference,
+                                        &Receiver->GnttabInterface,
+                                        Ring->Entry));
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -2417,9 +2474,12 @@ __ReceiverRingDisconnect(
                  Ring->DebugCallback);
     Ring->DebugCallback = NULL;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Receiver->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_rx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -2427,6 +2487,11 @@ __ReceiverRingDisconnect(
     Ring->Shared = NULL;
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Receiver->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
 }
 
 static FORCEINLINE VOID
@@ -2592,6 +2657,9 @@ ReceiverInitialize(
     FdoGetCacheInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                          &(*Receiver)->CacheInterface);
 
+    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
+                          &(*Receiver)->GnttabInterface);
+
     FdoGetEvtchnInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                           &(*Receiver)->EvtchnInterface);
 
@@ -2639,6 +2707,9 @@ fail2:
     RtlZeroMemory(&(*Receiver)->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
 
+    RtlZeroMemory(&(*Receiver)->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&(*Receiver)->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
@@ -2692,6 +2763,10 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    status = XENBUS_GNTTAB(Acquire, &Receiver->GnttabInterface);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
     status = XENBUS_STORE(Read,
                           &Receiver->StoreInterface,
                           NULL,
@@ -2720,7 +2795,7 @@ ReceiverConnect(
 
         status = __ReceiverRingConnect(Ring);
         if (!NT_SUCCESS(status))
-            goto fail4;
+            goto fail5;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -2730,16 +2805,16 @@ ReceiverConnect(
                           Receiver,
                           &Receiver->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     return STATUS_SUCCESS;
 
+fail6:
+    Error("fail6\n");
+
 fail5:
     Error("fail5\n");
 
-fail4:
-    Error("fail4\n");
-
     for (Index = 0; Index < Count; ++Index) {
         PXENVIF_RECEIVER_RING   Ring;
 
@@ -2750,6 +2825,11 @@ fail4:
         __ReceiverRingDisconnect(Ring);
     }
 
+    XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
+
+fail4:
+    Error("fail4\n");
+
     XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
 
 fail3:
@@ -3039,11 +3119,13 @@ ReceiverDisconnect(
         __ReceiverRingDisconnect(Ring);
     }
 
+    XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
+
+    XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
+
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
-
-    XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
 }
 
 VOID
@@ -3080,6 +3162,9 @@ ReceiverTeardown(
     RtlZeroMemory(&Receiver->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
 
+    RtlZeroMemory(&Receiver->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&Receiver->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 28b2613..7ccd675 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -49,7 +49,6 @@
 #include "checksum.h"
 #include "parse.h"
 #include "transmitter.h"
-#include "granter.h"
 #include "mac.h"
 #include "vif.h"
 #include "thread.h"
@@ -80,7 +79,7 @@ typedef struct _XENVIF_TRANSMITTER_FRAGMENT {
     USHORT                              Id;
     XENVIF_TRANSMITTER_FRAGMENT_TYPE    Type;
     PVOID                               Context;
-    XENVIF_GRANTER_HANDLE               Handle;
+    PXENBUS_GNTTAB_ENTRY                Entry;
     ULONG                               Offset;
     ULONG                               Length;
     BOOLEAN                             Extra;
@@ -106,11 +105,12 @@ typedef struct _XENVIF_TRANSMITTER_RING {
     PCHAR                           Path;
     PXENBUS_CACHE                   BufferCache;
     PXENBUS_CACHE                   FragmentCache;
+    PXENBUS_GNTTAB_CACHE            GnttabCache;
     PXENBUS_RANGE_SET               RangeSet;
     PMDL                            Mdl;
     netif_tx_front_ring_t           Front;
     netif_tx_sring_t                *Shared;
-    XENVIF_GRANTER_HANDLE           Handle;
+    PXENBUS_GNTTAB_ENTRY            Entry;
     PXENBUS_EVTCHN_CHANNEL          Channel;
     KDPC                            Dpc;
     ULONG                           Dpcs;
@@ -145,6 +145,7 @@ typedef struct _XENVIF_TRANSMITTER_RING {
 struct _XENVIF_TRANSMITTER {
     PXENVIF_FRONTEND            Frontend;
     XENBUS_CACHE_INTERFACE      CacheInterface;
+    XENBUS_GNTTAB_INTERFACE     GnttabInterface;
     XENBUS_RANGE_SET_INTERFACE  RangeSetInterface;
     XENBUS_EVTCHN_INTERFACE     EvtchnInterface;
     PXENVIF_TRANSMITTER_RING    Rings[MAXIMUM_PROCESSORS];
@@ -657,10 +658,14 @@ __TransmitterRingCopyPayload(
 
         Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-        status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                     Pfn,
-                                     TRUE,
-                                     &Fragment->Handle);
+        status = XENBUS_GNTTAB(PermitForeignAccess,
+                               &Transmitter->GnttabInterface,
+                               Ring->GnttabCache,
+                               TRUE,
+                               FrontendGetBackendDomain(Frontend),
+                               Pfn,
+                               TRUE,
+                               &Fragment->Entry);
         if (!NT_SUCCESS(status))
             goto fail3;
 
@@ -719,9 +724,12 @@ fail1:
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         ASSERT3U(Fragment->Type, ==, XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER);
         Buffer = Fragment->Context;
@@ -803,10 +811,14 @@ __TransmitterRingGrantPayload(
             PageOffset = MdlOffset & (PAGE_SIZE - 1);
             PageLength = __min(MdlLength, PAGE_SIZE - PageOffset);
 
-            status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                         Pfn,
-                                         TRUE,
-                                         &Fragment->Handle);
+            status = XENBUS_GNTTAB(PermitForeignAccess,
+                                   &Transmitter->GnttabInterface,
+                                   Ring->GnttabCache,
+                                   TRUE,
+                                   FrontendGetBackendDomain(Frontend),
+                                   Pfn,
+                                   TRUE,
+                                   &Fragment->Entry);
             if (!NT_SUCCESS(status))
                 goto fail2;
 
@@ -877,9 +889,12 @@ fail1:
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         ASSERT3P(Fragment->Context, ==, Packet);
         Fragment->Context = NULL;
@@ -959,10 +974,14 @@ __TransmitterRingPrepareHeader(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail4;
 
@@ -1126,9 +1145,12 @@ fail5:
     Fragment->Length = 0;
     Fragment->Offset = 0;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Fragment->Handle);
-    Fragment->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Fragment->Entry);
+    Fragment->Entry = NULL;
 
 fail4:
     Error("fail4\n");
@@ -1193,9 +1215,12 @@ __TransmitterRingUnprepareFragments(
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         switch (Fragment->Type) {
         case XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER: {
@@ -1501,10 +1526,14 @@ __TransmitterRingPrepareArp(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail3;
 
@@ -1674,10 +1703,14 @@ __TransmitterRingPrepareNeighbourAdvertisement(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail3;
 
@@ -1789,8 +1822,9 @@ __TransmitterRingPostFragments(
         Ring->RequestsPosted++;
 
         req->id = Fragment->Id;
-        req->gref = GranterGetReference(FrontendGetGranter(Frontend),
-                                        Fragment->Handle);
+        req->gref = XENBUS_GNTTAB(GetReference,
+                                  &Transmitter->GnttabInterface,
+                                  Fragment->Entry);
         req->offset = (USHORT)Fragment->Offset;
         req->size = (USHORT)Fragment->Length;
         req->flags = NETTXF_more_data;
@@ -2104,9 +2138,12 @@ TransmitterRingPoll(
             Fragment->Length = 0;
             Fragment->Offset = 0;
 
-            GranterRevokeAccess(FrontendGetGranter(Frontend),
-                                Fragment->Handle);
-            Fragment->Handle = NULL;
+            (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                                 &Transmitter->GnttabInterface,
+                                 Ring->GnttabCache,
+                                 TRUE,
+                                 Fragment->Entry);
+            Fragment->Entry = NULL;
 
             Fragment->Extra = FALSE;
             __TransmitterPutFragment(Ring, Fragment);
@@ -2900,7 +2937,7 @@ __TransmitterRingInitialize(
                           TransmitterFragmentDtor,
                           TransmitterRingAcquireLock,
                           TransmitterRingReleaseLock,
-                          (*Ring),
+                          *Ring,
                           &(*Ring)->FragmentCache);
     if (!NT_SUCCESS(status))
         goto fail9;
@@ -2991,6 +3028,7 @@ __TransmitterRingConnect(
     PXENVIF_FRONTEND                Frontend;
     PFN_NUMBER                      Pfn;
     CHAR                            Name[MAXNAMELEN];
+    ULONG                           Index;
     NTSTATUS                        status;
 
     ASSERT(!Ring->Connected);
@@ -2998,11 +3036,33 @@ __TransmitterRingConnect(
     Transmitter = Ring->Transmitter;
     Frontend = Transmitter->Frontend;
 
+    status = RtlStringCbPrintfA(Name,
+                                sizeof (Name),
+                                "%s_transmitter",
+                                Ring->Path);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    for (Index = 0; Name[Index] != '\0'; Index++)
+        if (Name[Index] == '/')
+            Name[Index] = '_';
+
+    status = XENBUS_GNTTAB(CreateCache,
+                           &Transmitter->GnttabInterface,
+                           Name,
+                           0,
+                           TransmitterRingAcquireLock,
+                           TransmitterRingReleaseLock,
+                           Ring,
+                           &Ring->GnttabCache);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
     Ring->Mdl = __AllocatePage();
 
     status = STATUS_NO_MEMORY;
     if (Ring->Mdl == NULL)
-        goto fail1;
+        goto fail3;
 
     Ring->Shared = MmGetSystemAddressForMdlSafe(Ring->Mdl, NormalPagePriority);
     ASSERT(Ring->Shared != NULL);
@@ -3013,19 +3073,23 @@ __TransmitterRingConnect(
 
     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 FALSE,
-                                 &Ring->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Ring->Entry);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail4;
 
     status = RtlStringCbPrintfA(Name,
                                 sizeof (Name),
                                 __MODULE__ "|TRANSMITTER[%u]",
                                 Ring->Index);
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail5;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
@@ -3040,7 +3104,7 @@ __TransmitterRingConnect(
 
         status = STATUS_UNSUCCESSFUL;
         if (Ring->Channel == NULL)
-            goto fail4;
+            goto fail6;
 
         if (FrontendGetQueueCount(Frontend) > 1) {
             (VOID) XENBUS_EVTCHN(Bind,
@@ -3065,14 +3129,14 @@ __TransmitterRingConnect(
                           Ring,
                           &Ring->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail7;
 
     Ring->Connected = TRUE;
 
     return STATUS_SUCCESS;
 
-fail5:
-    Error("fail5\n");
+fail7:
+    Error("fail7\n");
 
     XENBUS_EVTCHN(Close,
                   &Transmitter->EvtchnInterface,
@@ -3081,18 +3145,21 @@ fail5:
 
     Ring->Events = 0;
 
-fail4:
-    Error("fail4\n");
+fail6:
+    Error("fail6\n");
 
-fail3:
-    Error("fail3\n");
+fail5:
+    Error("fail5\n");
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
-fail2:
-    Error("fail2\n");
+fail4:
+    Error("fail4\n");
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_tx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -3101,6 +3168,17 @@ fail2:
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Transmitter->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
+
+fail2:
+    Error("fail2\n");
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
@@ -3133,9 +3211,9 @@ __TransmitterRingStoreWrite(
                           Path,
                           "tx-ring-ref",
                           "%u",
-                          GranterGetReference(FrontendGetGranter(Frontend),
-                                              Ring->Handle));
-
+                          XENBUS_GNTTAB(GetReference,
+                                        &Transmitter->GnttabInterface,
+                                        Ring->Entry));
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -3292,9 +3370,12 @@ __TransmitterRingDisconnect(
                  Ring->DebugCallback);
     Ring->DebugCallback = NULL;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_tx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -3303,6 +3384,10 @@ __TransmitterRingDisconnect(
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+    XENBUS_GNTTAB(DestroyCache,
+                  &Transmitter->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
 }
 
 static FORCEINLINE VOID
@@ -3527,6 +3612,9 @@ TransmitterInitialize(
     FdoGetCacheInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                          &(*Transmitter)->CacheInterface);
 
+    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
+                          &(*Transmitter)->GnttabInterface);
+
     FdoGetEvtchnInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                           &(*Transmitter)->EvtchnInterface);
 
@@ -3584,6 +3672,9 @@ fail2:
     RtlZeroMemory(&(*Transmitter)->Lock,
                   sizeof (KSPIN_LOCK));
 
+    RtlZeroMemory(&(*Transmitter)->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&(*Transmitter)->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
@@ -3634,6 +3725,10 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    status = XENBUS_GNTTAB(Acquire, &Transmitter->GnttabInterface);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
     status = XENBUS_CACHE(Create,
                           &Transmitter->CacheInterface,
                           "packet_cache",
@@ -3646,7 +3741,7 @@ TransmitterConnect(
                           Transmitter,
                           &Transmitter->PacketCache);
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail5;
 
     status = XENBUS_STORE(Read,
                           &Transmitter->StoreInterface,
@@ -3676,7 +3771,7 @@ TransmitterConnect(
 
         status = __TransmitterRingConnect(Ring);
         if (!NT_SUCCESS(status))
-            goto fail5;
+            goto fail6;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -3686,16 +3781,16 @@ TransmitterConnect(
                           Transmitter,
                           &Transmitter->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail7;
 
     return STATUS_SUCCESS;
 
+fail7:
+    Error("fail7\n");
+
 fail6:
     Error("fail6\n");
 
-fail5:
-    Error("fail5\n");
-
     for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
@@ -3711,6 +3806,11 @@ fail5:
                  Transmitter->PacketCache);
     Transmitter->PacketCache = NULL;
 
+fail5:
+    Error("fail5\n");
+
+    XENBUS_GNTTAB(Release, &Transmitter->GnttabInterface);
+
 fail4:
     Error("fail4\n");
 
@@ -3847,11 +3947,13 @@ TransmitterDisconnect(
                  Transmitter->PacketCache);
     Transmitter->PacketCache = NULL;
 
+    XENBUS_GNTTAB(Release, &Transmitter->GnttabInterface);
+
+    XENBUS_EVTCHN(Release, &Transmitter->EvtchnInterface);
+
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
-
-    XENBUS_EVTCHN(Release, &Transmitter->EvtchnInterface);
 }
 
 VOID
@@ -3889,6 +3991,9 @@ TransmitterTeardown(
     RtlZeroMemory(&Transmitter->Lock,
                   sizeof (KSPIN_LOCK));
 
+    RtlZeroMemory(&Transmitter->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&Transmitter->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index edd71ea..4120018 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -93,7 +93,6 @@
 		<ClCompile Include="../../src/xenvif/driver.c" />
 		<ClCompile Include="../../src/xenvif/fdo.c" />
 		<ClCompile Include="../../src/xenvif/frontend.c" />
-		<ClCompile Include="../../src/xenvif/granter.c" />
 		<ClCompile Include="../../src/xenvif/link.c" />
 		<ClCompile Include="../../src/xenvif/mac.c" />
 		<ClCompile Include="../../src/xenvif/parse.c" />
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index 3dd8d9a..0e774b7 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -124,7 +124,6 @@
     <ClCompile Include="../../src/xenvif/driver.c" />
     <ClCompile Include="../../src/xenvif/fdo.c" />
     <ClCompile Include="../../src/xenvif/frontend.c" />
-    <ClCompile Include="../../src/xenvif/granter.c" />
     <ClCompile Include="../../src/xenvif/link.c" />
     <ClCompile Include="../../src/xenvif/mac.c" />
     <ClCompile Include="../../src/xenvif/parse.c" />
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:23:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkLY-0001Uo-4W; Wed, 11 Mar 2015 17:23:04 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YVkLX-0001U1-0c
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:23:03 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
	27/58-02635-6F970055; Wed, 11 Mar 2015 17:23:02 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1426094580!12059089!1
X-Originating-IP: [209.85.212.175]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7426 invoked from network); 11 Mar 2015 17:23:00 -0000
Received: from mail-wi0-f175.google.com (HELO mail-wi0-f175.google.com)
	(209.85.212.175)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:23:00 -0000
Received: by widex7 with SMTP id ex7so40225097wid.3
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 11 Mar 2015 10:23:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=G6a63gsAYCjyqU/YvPNinQifP0sQKhHtHDZNTryoUaQ=;
	b=qkJpQ8ECPfoZugzDVV9wVSdHy2fqr3y/5dQGAtpEjp+DJQ9JRHCovsTpDGgYZOf2lT
	FBSnPDqTtUK5qzloiZDad1gMFqyfkBsHNwcusmTwnLnnuY6+D9WGmxcLrXQAHRh3YFrG
	xTpq72S72/nYNZfKdwVJ56DVnuSjn6+Ma5iNo+9OhNy/2FLUlhlzIckkq0EGgXzC8vXb
	jTCPZGAQFOjfWdBOmZ1ayW9E3E8luseunhxfT1byVIuNf5L+Jhap4afERA6q7FGQkm5G
	0+dk+JVLZZ8bcEgUPu5ZsT8v/JqTF6miDUPKjAVz4T+NzyEmftH3G2fj8IlFbbMw74QP
	5frQ==
X-Received: by 10.180.77.40 with SMTP id p8mr59667046wiw.1.1426094580008;
	Wed, 11 Mar 2015 10:23:00 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm6966610wib.18.2015.03.11.10.22.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Wed, 11 Mar 2015 10:22:59 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Wed, 11 Mar 2015 17:22:57 +0000
Message-Id: <1426094577-9656-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Get rid of Granter abstraction
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Since the addition of GNTTAB Caches in XENBUS, the Granter abstraction in
XENVIF has been fairly pointless. This patch finally gets rid of it.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c        |  96 +++++---------
 src/xenvif/frontend.h        |   7 -
 src/xenvif/granter.c         | 310 -------------------------------------------
 src/xenvif/granter.h         |  93 -------------
 src/xenvif/receiver.c        | 181 ++++++++++++++++++-------
 src/xenvif/transmitter.c     | 255 ++++++++++++++++++++++++-----------
 vs2012/xenvif/xenvif.vcxproj |   1 -
 vs2013/xenvif/xenvif.vcxproj |   1 -
 8 files changed, 343 insertions(+), 601 deletions(-)
 delete mode 100644 src/xenvif/granter.c
 delete mode 100644 src/xenvif/granter.h

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 7e9989a..88e387f 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -43,7 +43,6 @@
 #include "thread.h"
 #include "frontend.h"
 #include "names.h"
-#include "granter.h"
 #include "mac.h"
 #include "tcpip.h"
 #include "receiver.h"
@@ -65,7 +64,6 @@ struct _XENVIF_FRONTEND {
     USHORT                      BackendDomain;
     ULONG                       QueueCount;
 
-    PXENVIF_GRANTER             Granter;
     PXENVIF_MAC                 Mac;
     PXENVIF_RECEIVER            Receiver;
     PXENVIF_TRANSMITTER         Transmitter;
@@ -290,7 +288,6 @@ FrontendGet ## _Function(                               \
     return __FrontendGet ## _Function ## (Frontend);    \
 }
 
-DEFINE_FRONTEND_GET_FUNCTION(Granter, PXENVIF_GRANTER)
 DEFINE_FRONTEND_GET_FUNCTION(Mac, PXENVIF_MAC)
 DEFINE_FRONTEND_GET_FUNCTION(Transmitter, PXENVIF_TRANSMITTER)
 DEFINE_FRONTEND_GET_FUNCTION(Receiver, PXENVIF_RECEIVER)
@@ -1407,22 +1404,18 @@ __FrontendConnect(
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    status = GranterConnect(__FrontendGetGranter(Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail3;
-
     status = MacConnect(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail3;
 
     __FrontendReadQueueCount(Frontend);
     status = ReceiverConnect(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail4;
 
     status = TransmitterConnect(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail5;
 
     Attempt = 0;
     do {
@@ -1472,7 +1465,7 @@ abort:
     } while (status == STATUS_RETRY);
 
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail6;
 
     status = XENBUS_STORE(Printf,
                           &Frontend->StoreInterface,
@@ -1482,25 +1475,22 @@ abort:
                           "%u",
                           XenbusStateConnected);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail7;
 
     State = XenbusStateInitWait;
     status = __FrontendWaitForStateChange(Frontend, Path, &State);
     if (!NT_SUCCESS(status))
-        goto fail9;
+        goto fail8;
 
     status = STATUS_UNSUCCESSFUL;
     if (State != XenbusStateConnected)
-        goto fail10;
+        goto fail9;
 
     ThreadWake(Frontend->MibThread);
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
-fail10:
-    Error("fail10\n");
-
 fail9:
     Error("fail9\n");
 
@@ -1510,22 +1500,20 @@ fail8:
 fail7:
     Error("fail7\n");
 
-    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
-
 fail6:
     Error("fail6\n");
 
-    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
+    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
 
 fail5:
     Error("fail5\n");
 
-    MacDisconnect(__FrontendGetMac(Frontend));
+    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
 
 fail4:
     Error("fail4\n");
 
-    GranterDisconnect(__FrontendGetGranter(Frontend));
+    MacDisconnect(__FrontendGetMac(Frontend));
 
 fail3:
     Error("fail3\n");
@@ -1557,7 +1545,6 @@ __FrontendDisconnect(
     TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
     ReceiverDisconnect(__FrontendGetReceiver(Frontend));
     MacDisconnect(__FrontendGetMac(Frontend));
-    GranterDisconnect(__FrontendGetGranter(Frontend));
 
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
@@ -1580,39 +1567,30 @@ __FrontendEnable(
 
     Trace("====>\n");
 
-    status = GranterEnable(__FrontendGetGranter(Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
     status = MacEnable(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail1;
 
     status = ReceiverEnable(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail2;
 
     status = TransmitterEnable(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail3;
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
-fail4:
-    Error("fail4\n");
-
-    ReceiverDisable(__FrontendGetReceiver(Frontend));
-
 fail3:
     Error("fail3\n");
 
-    MacDisable(__FrontendGetMac(Frontend));
+    ReceiverDisable(__FrontendGetReceiver(Frontend));
 
 fail2:
     Error("fail2\n");
 
-    GranterDisable(__FrontendGetGranter(Frontend));
+    MacDisable(__FrontendGetMac(Frontend));
 
 fail1:
     Error("fail1 (%08x)\n", status);
@@ -1630,7 +1608,6 @@ __FrontendDisable(
     TransmitterDisable(__FrontendGetTransmitter(Frontend));
     ReceiverDisable(__FrontendGetReceiver(Frontend));
     MacDisable(__FrontendGetMac(Frontend));
-    GranterDisable(__FrontendGetGranter(Frontend));
 
     Trace("<====\n");
 }
@@ -1981,64 +1958,57 @@ FrontendInitialize(
     FdoGetSuspendInterface(PdoGetFdo(Pdo), &(*Frontend)->SuspendInterface);
     FdoGetStoreInterface(PdoGetFdo(Pdo), &(*Frontend)->StoreInterface);
 
-    status = GranterInitialize(*Frontend, &(*Frontend)->Granter);
-    if (!NT_SUCCESS(status))
-        goto fail6;
-
     status = MacInitialize(*Frontend, &(*Frontend)->Mac);
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail6;
 
     status = ReceiverInitialize(*Frontend, &(*Frontend)->Receiver);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail7;
 
     status = TransmitterInitialize(*Frontend, &(*Frontend)->Transmitter);
     if (!NT_SUCCESS(status))
-        goto fail9;
+        goto fail8;
 
     status = ThreadCreate(FrontendEject, *Frontend, &(*Frontend)->EjectThread);
     if (!NT_SUCCESS(status))
-        goto fail10;
+        goto fail9;
 
     status = ThreadCreate(FrontendMib, *Frontend, &(*Frontend)->MibThread);
     if (!NT_SUCCESS(status))
-        goto fail11;
+        goto fail10;
 
     Trace("<====\n");
 
     return STATUS_SUCCESS;
 
-fail11:
-    Error("fail11\n");
+fail10:
+    Error("fail10\n");
 
     ThreadAlert((*Frontend)->EjectThread);
     ThreadJoin((*Frontend)->EjectThread);
     (*Frontend)->EjectThread = NULL;
 
-fail10:
-    Error("fail10\n");
+fail9:
+    Error("fail9\n");
 
     TransmitterTeardown(__FrontendGetTransmitter(*Frontend));
     (*Frontend)->Transmitter = NULL;
 
-fail9:
-    Error("fail9\n");
+fail8:
+    Error("fail8\n");
 
     ReceiverTeardown(__FrontendGetReceiver(*Frontend));
     (*Frontend)->Receiver = NULL;
 
-fail8:
-    Error("fail8\n");
+fail7:
+    Error("fail7\n");
 
     MacTeardown(__FrontendGetMac(*Frontend));
     (*Frontend)->Mac = NULL;
 
-fail7:
-    Error("fail7\n");
-
-    GranterTeardown(__FrontendGetGranter(*Frontend));
-    (*Frontend)->Granter = NULL;
+fail6:
+    Error("fail6\n");
 
     RtlZeroMemory(&(*Frontend)->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
@@ -2049,9 +2019,6 @@ fail7:
     RtlZeroMemory(&(*Frontend)->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
-fail6:
-    Error("fail6\n");
-
     (*Frontend)->State = FRONTEND_STATE_INVALID;
     RtlZeroMemory(&(*Frontend)->Lock, sizeof (KSPIN_LOCK));
 
@@ -2124,9 +2091,6 @@ FrontendTeardown(
     MacTeardown(__FrontendGetMac(Frontend));
     Frontend->Mac = NULL;
 
-    GranterTeardown(__FrontendGetGranter(Frontend));
-    Frontend->Granter = NULL;
-
     RtlZeroMemory(&Frontend->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 21a370a..adcf53c 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -129,13 +129,6 @@ FrontendFreePath(
     IN  PCHAR               Path
     );
 
-#include "granter.h"
-
-extern PXENVIF_GRANTER
-FrontendGetGranter(
-    IN  PXENVIF_FRONTEND    Frontend
-    );
-
 #include "mac.h"
 
 extern PXENVIF_MAC
diff --git a/src/xenvif/granter.c b/src/xenvif/granter.c
deleted file mode 100644
index 5efbf81..0000000
--- a/src/xenvif/granter.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#include <ntddk.h>
-#include <ntstrsafe.h>
-#include <stdlib.h>
-#include <util.h>
-
-#include "pdo.h"
-#include "frontend.h"
-#include "granter.h"
-#include "dbg_print.h"
-#include "assert.h"
-
-struct _XENVIF_GRANTER {
-    PXENVIF_FRONTEND        Frontend;
-    KSPIN_LOCK              Lock;
-    XENBUS_GNTTAB_INTERFACE GnttabInterface;
-    PXENBUS_GNTTAB_CACHE    Cache;
-};
-
-#define XENVIF_GRANTER_TAG  'NARG'
-
-#define MAXNAMELEN  128
-
-static FORCEINLINE PVOID
-__GranterAllocate(
-    IN  ULONG   Length
-    )
-{
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_GRANTER_TAG);
-}
-
-static FORCEINLINE VOID
-__GranterFree(
-    IN  PVOID   Buffer
-    )
-{
-    __FreePoolWithTag(Buffer, XENVIF_GRANTER_TAG);
-}
-
-NTSTATUS
-GranterInitialize(
-    IN  PXENVIF_FRONTEND    Frontend,
-    OUT PXENVIF_GRANTER     *Granter
-    )
-{
-    NTSTATUS                status;
-
-    *Granter = __GranterAllocate(sizeof (XENVIF_GRANTER));
-
-    status = STATUS_NO_MEMORY;
-    if (*Granter == NULL)
-        goto fail1;
-
-    KeInitializeSpinLock(&(*Granter)->Lock);
-
-    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
-                          &(*Granter)->GnttabInterface);
-
-    (*Granter)->Frontend = Frontend;
-
-    return STATUS_SUCCESS;
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-static VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
-GranterAcquireLock(
-    IN  PVOID       Argument
-    )
-{
-    PXENVIF_GRANTER Granter = Argument;
-
-    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
-
-    KeAcquireSpinLockAtDpcLevel(&Granter->Lock);
-}
-
-static VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
-GranterReleaseLock(
-    IN  PVOID       Argument
-    )
-{
-    PXENVIF_GRANTER Granter = Argument;
-
-    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
-
-#pragma prefast(disable:26110)
-    KeReleaseSpinLockFromDpcLevel(&Granter->Lock);
-}
-
-NTSTATUS
-GranterConnect(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    PXENVIF_FRONTEND    Frontend;
-    CHAR                Name[MAXNAMELEN];
-    ULONG               Index;
-    NTSTATUS            status;
-
-    Frontend = Granter->Frontend;
-
-    status = XENBUS_GNTTAB(Acquire, &Granter->GnttabInterface);
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
-    status = RtlStringCbPrintfA(Name,
-                                sizeof (Name),
-                                "%s",
-                                FrontendGetPath(Granter->Frontend));
-    if (!NT_SUCCESS(status))
-        goto fail2;
-
-    for (Index = 0; Name[Index] != '\0'; Index++)
-        if (Name[Index] == '/')
-            Name[Index] = '_';
-
-    ASSERT3P(Granter->Cache, ==, NULL);
-
-    status = XENBUS_GNTTAB(CreateCache,
-                           &Granter->GnttabInterface,
-                           Name,
-                           0,
-                           GranterAcquireLock,
-                           GranterReleaseLock,
-                           Granter,
-                           &Granter->Cache);
-    if (!NT_SUCCESS(status))
-        goto fail3;
-
-    return STATUS_SUCCESS;
-
-fail3:
-    Error("fail3\n");
-
-fail2:
-    Error("fail2\n");
-
-    XENBUS_GNTTAB(Release, &Granter->GnttabInterface);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-NTSTATUS
-GranterEnable(
-    IN  PXENVIF_GRANTER     Granter
-    )
-{
-    UNREFERENCED_PARAMETER(Granter);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS
-GranterPermitAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  PFN_NUMBER              Pfn,
-    IN  BOOLEAN                 ReadOnly,
-    OUT PXENVIF_GRANTER_HANDLE  Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry;
-    NTSTATUS                    status;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    status = XENBUS_GNTTAB(PermitForeignAccess,
-                           &Granter->GnttabInterface,
-                           Granter->Cache,
-                           FALSE,
-                           FrontendGetBackendDomain(Frontend),
-                           Pfn,
-                           ReadOnly,
-                           &Entry);
-    if (!NT_SUCCESS(status))
-        goto fail1;
-
-    *Handle = Entry;
-    return STATUS_SUCCESS;
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return status;
-}
-
-VOID
-GranterRevokeAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry = Handle;
-    NTSTATUS                    status;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    status = XENBUS_GNTTAB(RevokeForeignAccess,
-                           &Granter->GnttabInterface,
-                           Granter->Cache,
-                           FALSE,
-                           Entry);
-    ASSERT(NT_SUCCESS(status));
-}
-
-ULONG
-GranterGetReference(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    )
-{
-    PXENVIF_FRONTEND            Frontend;
-    PXENBUS_GNTTAB_ENTRY        Entry;
-
-    Frontend = Granter->Frontend;
-
-    Entry = Handle;
-
-    return XENBUS_GNTTAB(GetReference,
-                         &Granter->GnttabInterface,
-                         Entry);
-}
-
-VOID
-GranterDisable(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    UNREFERENCED_PARAMETER(Granter);
-}
-
-VOID
-GranterDisconnect(
-    IN  PXENVIF_GRANTER Granter
-    )
-{
-    PXENVIF_FRONTEND    Frontend;
-
-    Frontend = Granter->Frontend;
-
-    ASSERT3P(Granter->Cache, !=, NULL);
-
-    XENBUS_GNTTAB(DestroyCache,
-                  &Granter->GnttabInterface,
-                  Granter->Cache);
-    Granter->Cache = NULL;
-
-    XENBUS_GNTTAB(Release, &Granter->GnttabInterface);
-}
-
-VOID
-GranterTeardown(
-    IN  PXENVIF_GRANTER     Granter
-    )
-{
-    Granter->Frontend = NULL;
-
-    RtlZeroMemory(&Granter->GnttabInterface,
-                  sizeof (XENBUS_GNTTAB_INTERFACE));
-
-    RtlZeroMemory(&Granter->Lock, sizeof (KSPIN_LOCK));
-
-    ASSERT(IsZeroMemory(Granter, sizeof (XENVIF_GRANTER)));
-
-    __GranterFree(Granter);
-}
diff --git a/src/xenvif/granter.h b/src/xenvif/granter.h
deleted file mode 100644
index b9e51c3..0000000
--- a/src/xenvif/granter.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _XENVIF_GRANTER_H
-#define _XENVIF_GRANTER_H
-
-#include <ntddk.h>
-#include <gnttab_interface.h>
-
-typedef struct _XENVIF_GRANTER  XENVIF_GRANTER, *PXENVIF_GRANTER;
-
-typedef PVOID   XENVIF_GRANTER_HANDLE, *PXENVIF_GRANTER_HANDLE;
-
-NTSTATUS
-GranterInitialize(
-    IN  PXENVIF_FRONTEND    Frontend,
-    OUT PXENVIF_GRANTER     *Granter
-    );
-
-NTSTATUS
-GranterConnect(
-    IN  PXENVIF_GRANTER     Granter
-    );
-
-NTSTATUS
-GranterEnable(
-    IN  PXENVIF_GRANTER     Granter
-    );
-
-NTSTATUS
-GranterPermitAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  PFN_NUMBER              Pfn,
-    IN  BOOLEAN                 ReadOnly,
-    OUT PXENVIF_GRANTER_HANDLE  Handle
-    );
-
-VOID
-GranterRevokeAccess(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    );
-
-ULONG
-GranterGetReference(
-    IN  PXENVIF_GRANTER         Granter,
-    IN  XENVIF_GRANTER_HANDLE   Handle
-    );
-
-VOID
-GranterDisable(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-VOID
-GranterDisconnect(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-VOID
-GranterTeardown(
-    IN  PXENVIF_GRANTER Granter
-    );
-
-#endif  // _XENVIF_GRANTER_H
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index da869d9..5318baf 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -37,6 +37,7 @@
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
+#include <gnttab_interface.h>
 #include <evtchn_interface.h>
 
 // This should be in public/io/netif.h
@@ -50,7 +51,6 @@
 #include "frontend.h"
 #include "checksum.h"
 #include "parse.h"
-#include "granter.h"
 #include "mac.h"
 #include "transmitter.h"
 #include "vif.h"
@@ -66,7 +66,7 @@ typedef struct _XENVIF_RECEIVER_FRAGMENT {
     LIST_ENTRY              ListEntry;
     ULONG                   Next;
     PVOID                   Context;
-    XENVIF_GRANTER_HANDLE   Handle;
+    PXENBUS_GNTTAB_ENTRY    Entry;
 } XENVIF_RECEIVER_FRAGMENT, *PXENVIF_RECEIVER_FRAGMENT;
 
 #define XENVIF_RECEIVER_RING_SIZE   (__CONST_RING_SIZE(netif_rx, PAGE_SIZE))
@@ -80,10 +80,11 @@ typedef struct _XENVIF_RECEIVER_RING {
     KSPIN_LOCK                  Lock;
     PXENBUS_CACHE               PacketCache;
     PXENBUS_CACHE               FragmentCache;
+    PXENBUS_GNTTAB_CACHE        GnttabCache;
     PMDL                        Mdl;
     netif_rx_front_ring_t       Front;
     netif_rx_sring_t            *Shared;
-    XENVIF_GRANTER_HANDLE       Handle;
+    PXENBUS_GNTTAB_ENTRY        Entry;
     PXENBUS_EVTCHN_CHANNEL      Channel;
     KDPC                        Dpc;
     ULONG                       Dpcs;
@@ -104,6 +105,7 @@ typedef struct _XENVIF_RECEIVER_RING {
 struct _XENVIF_RECEIVER {
     PXENVIF_FRONTEND        Frontend;
     XENBUS_CACHE_INTERFACE  CacheInterface;
+    XENBUS_GNTTAB_INTERFACE GnttabInterface;
     XENBUS_EVTCHN_INTERFACE EvtchnInterface;
     PXENVIF_RECEIVER_RING   Rings[MAXIMUM_PROCESSORS];
     BOOLEAN                 Split;
@@ -1449,6 +1451,7 @@ __ReceiverRingPreparePacket(
     PXENVIF_FRONTEND            Frontend;
     PXENVIF_RECEIVER_FRAGMENT   Fragment;
     PMDL                        Mdl;
+    PFN_NUMBER                  Pfn;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
@@ -1462,10 +1465,16 @@ __ReceiverRingPreparePacket(
 
     Mdl = &Packet->Mdl;
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 MmGetMdlPfnArray(Mdl)[0],
-                                 FALSE,
-                                 &Fragment->Handle);
+    Pfn = MmGetMdlPfnArray(Mdl)[0];
+
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Receiver->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail2;
 
@@ -1555,8 +1564,9 @@ ReceiverRingFill(
         Ring->RequestsPosted++;
 
         req->id = id;
-        req->gref = GranterGetReference(FrontendGetGranter(Frontend),
-                                        Fragment->Handle);
+        req->gref = XENBUS_GNTTAB(GetReference,
+                                  &Receiver->GnttabInterface,
+                                  Fragment->Entry);
 
         ASSERT3U(id, <=, XENVIF_RECEIVER_MAXIMUM_FRAGMENT_ID);
         ASSERT3P(Ring->Pending[id], ==, NULL);
@@ -1604,9 +1614,12 @@ __ReceiverRingEmpty(
         Mdl = Fragment->Context;
         Fragment->Context = NULL;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Receiver->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         __ReceiverRingPutFragment(Ring, Fragment);
 
@@ -1738,9 +1751,12 @@ ReceiverRingPoll(
             Mdl = Fragment->Context;
             Fragment->Context = NULL;
 
-            GranterRevokeAccess(FrontendGetGranter(Frontend),
-                                Fragment->Handle);
-            Fragment->Handle = NULL;
+            (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                                 &Receiver->GnttabInterface,
+                                 Ring->GnttabCache,
+                                 TRUE,
+                                 Fragment->Entry);
+            Fragment->Entry = NULL;
 
             __ReceiverRingPutFragment(Ring, Fragment);
 
@@ -2157,16 +2173,39 @@ __ReceiverRingConnect(
     PXENVIF_FRONTEND            Frontend;
     PFN_NUMBER                  Pfn;
     CHAR                        Name[MAXNAMELEN];
+    ULONG                       Index;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
     Frontend = Receiver->Frontend;
 
+    status = RtlStringCbPrintfA(Name,
+                                sizeof (Name),
+                                "%s_receiver",
+                                Ring->Path);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    for (Index = 0; Name[Index] != '\0'; Index++)
+        if (Name[Index] == '/')
+            Name[Index] = '_';
+
+    status = XENBUS_GNTTAB(CreateCache,
+                           &Receiver->GnttabInterface,
+                           Name,
+                           0,
+                           ReceiverRingAcquireLock,
+                           ReceiverRingReleaseLock,
+                           Ring,
+                           &Ring->GnttabCache);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
     Ring->Mdl = __AllocatePage();
 
     status = STATUS_NO_MEMORY;
     if (Ring->Mdl == NULL)
-        goto fail1;
+        goto fail3;
 
     Ring->Shared = MmGetSystemAddressForMdlSafe(Ring->Mdl, NormalPagePriority);
     ASSERT(Ring->Shared != NULL);
@@ -2177,19 +2216,23 @@ __ReceiverRingConnect(
 
     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
     
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 FALSE,
-                                 &Ring->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Receiver->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Ring->Entry);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail4;
 
     status = RtlStringCbPrintfA(Name,
                                 sizeof (Name),
                                 __MODULE__ "|RECEIVER[%u]",
                                 Ring->Index);
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail5;
 
     ASSERT(!Ring->Connected);
 
@@ -2203,7 +2246,7 @@ __ReceiverRingConnect(
 
     status = STATUS_UNSUCCESSFUL;
     if (Ring->Channel == NULL)
-        goto fail4;
+        goto fail6;
 
     if (FrontendGetQueueCount(Frontend) > 1) {
         (VOID) XENBUS_EVTCHN(Bind,
@@ -2229,12 +2272,12 @@ __ReceiverRingConnect(
                           Ring,
                           &Ring->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail7;
 
     return STATUS_SUCCESS;
 
-fail5:
-    Error("fail5\n");
+fail7:
+    Error("fail7\n");
 
     Ring->Connected = FALSE;
 
@@ -2245,18 +2288,21 @@ fail5:
 
     Ring->Events = 0;
 
-fail4:
-    Error("fail4\n");
+fail6:
+    Error("fail6\n");
 
-fail3:
-    Error("fail3\n");
+fail5:
+    Error("fail5\n");
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Receiver->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
-fail2:
-    Error("fail2\n");
+fail4:
+    Error("fail4\n");
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_rx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -2265,6 +2311,17 @@ fail2:
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Receiver->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
+
+fail2:
+    Error("fail2\n");
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
@@ -2297,9 +2354,9 @@ __ReceiverRingStoreWrite(
                           Path,
                           "rx-ring-ref",
                           "%u",
-                          GranterGetReference(FrontendGetGranter(Frontend),
-                                              Ring->Handle));
-
+                          XENBUS_GNTTAB(GetReference,
+                                        &Receiver->GnttabInterface,
+                                        Ring->Entry));
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -2417,9 +2474,12 @@ __ReceiverRingDisconnect(
                  Ring->DebugCallback);
     Ring->DebugCallback = NULL;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Receiver->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_rx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -2427,6 +2487,11 @@ __ReceiverRingDisconnect(
     Ring->Shared = NULL;
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Receiver->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
 }
 
 static FORCEINLINE VOID
@@ -2592,6 +2657,9 @@ ReceiverInitialize(
     FdoGetCacheInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                          &(*Receiver)->CacheInterface);
 
+    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
+                          &(*Receiver)->GnttabInterface);
+
     FdoGetEvtchnInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                           &(*Receiver)->EvtchnInterface);
 
@@ -2639,6 +2707,9 @@ fail2:
     RtlZeroMemory(&(*Receiver)->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
 
+    RtlZeroMemory(&(*Receiver)->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&(*Receiver)->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
@@ -2692,6 +2763,10 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    status = XENBUS_GNTTAB(Acquire, &Receiver->GnttabInterface);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
     status = XENBUS_STORE(Read,
                           &Receiver->StoreInterface,
                           NULL,
@@ -2720,7 +2795,7 @@ ReceiverConnect(
 
         status = __ReceiverRingConnect(Ring);
         if (!NT_SUCCESS(status))
-            goto fail4;
+            goto fail5;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -2730,16 +2805,16 @@ ReceiverConnect(
                           Receiver,
                           &Receiver->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     return STATUS_SUCCESS;
 
+fail6:
+    Error("fail6\n");
+
 fail5:
     Error("fail5\n");
 
-fail4:
-    Error("fail4\n");
-
     for (Index = 0; Index < Count; ++Index) {
         PXENVIF_RECEIVER_RING   Ring;
 
@@ -2750,6 +2825,11 @@ fail4:
         __ReceiverRingDisconnect(Ring);
     }
 
+    XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
+
+fail4:
+    Error("fail4\n");
+
     XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
 
 fail3:
@@ -3039,11 +3119,13 @@ ReceiverDisconnect(
         __ReceiverRingDisconnect(Ring);
     }
 
+    XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
+
+    XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
+
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
-
-    XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
 }
 
 VOID
@@ -3080,6 +3162,9 @@ ReceiverTeardown(
     RtlZeroMemory(&Receiver->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
 
+    RtlZeroMemory(&Receiver->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&Receiver->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 28b2613..7ccd675 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -49,7 +49,6 @@
 #include "checksum.h"
 #include "parse.h"
 #include "transmitter.h"
-#include "granter.h"
 #include "mac.h"
 #include "vif.h"
 #include "thread.h"
@@ -80,7 +79,7 @@ typedef struct _XENVIF_TRANSMITTER_FRAGMENT {
     USHORT                              Id;
     XENVIF_TRANSMITTER_FRAGMENT_TYPE    Type;
     PVOID                               Context;
-    XENVIF_GRANTER_HANDLE               Handle;
+    PXENBUS_GNTTAB_ENTRY                Entry;
     ULONG                               Offset;
     ULONG                               Length;
     BOOLEAN                             Extra;
@@ -106,11 +105,12 @@ typedef struct _XENVIF_TRANSMITTER_RING {
     PCHAR                           Path;
     PXENBUS_CACHE                   BufferCache;
     PXENBUS_CACHE                   FragmentCache;
+    PXENBUS_GNTTAB_CACHE            GnttabCache;
     PXENBUS_RANGE_SET               RangeSet;
     PMDL                            Mdl;
     netif_tx_front_ring_t           Front;
     netif_tx_sring_t                *Shared;
-    XENVIF_GRANTER_HANDLE           Handle;
+    PXENBUS_GNTTAB_ENTRY            Entry;
     PXENBUS_EVTCHN_CHANNEL          Channel;
     KDPC                            Dpc;
     ULONG                           Dpcs;
@@ -145,6 +145,7 @@ typedef struct _XENVIF_TRANSMITTER_RING {
 struct _XENVIF_TRANSMITTER {
     PXENVIF_FRONTEND            Frontend;
     XENBUS_CACHE_INTERFACE      CacheInterface;
+    XENBUS_GNTTAB_INTERFACE     GnttabInterface;
     XENBUS_RANGE_SET_INTERFACE  RangeSetInterface;
     XENBUS_EVTCHN_INTERFACE     EvtchnInterface;
     PXENVIF_TRANSMITTER_RING    Rings[MAXIMUM_PROCESSORS];
@@ -657,10 +658,14 @@ __TransmitterRingCopyPayload(
 
         Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-        status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                     Pfn,
-                                     TRUE,
-                                     &Fragment->Handle);
+        status = XENBUS_GNTTAB(PermitForeignAccess,
+                               &Transmitter->GnttabInterface,
+                               Ring->GnttabCache,
+                               TRUE,
+                               FrontendGetBackendDomain(Frontend),
+                               Pfn,
+                               TRUE,
+                               &Fragment->Entry);
         if (!NT_SUCCESS(status))
             goto fail3;
 
@@ -719,9 +724,12 @@ fail1:
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         ASSERT3U(Fragment->Type, ==, XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER);
         Buffer = Fragment->Context;
@@ -803,10 +811,14 @@ __TransmitterRingGrantPayload(
             PageOffset = MdlOffset & (PAGE_SIZE - 1);
             PageLength = __min(MdlLength, PAGE_SIZE - PageOffset);
 
-            status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                         Pfn,
-                                         TRUE,
-                                         &Fragment->Handle);
+            status = XENBUS_GNTTAB(PermitForeignAccess,
+                                   &Transmitter->GnttabInterface,
+                                   Ring->GnttabCache,
+                                   TRUE,
+                                   FrontendGetBackendDomain(Frontend),
+                                   Pfn,
+                                   TRUE,
+                                   &Fragment->Entry);
             if (!NT_SUCCESS(status))
                 goto fail2;
 
@@ -877,9 +889,12 @@ fail1:
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         ASSERT3P(Fragment->Context, ==, Packet);
         Fragment->Context = NULL;
@@ -959,10 +974,14 @@ __TransmitterRingPrepareHeader(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail4;
 
@@ -1126,9 +1145,12 @@ fail5:
     Fragment->Length = 0;
     Fragment->Offset = 0;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Fragment->Handle);
-    Fragment->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Fragment->Entry);
+    Fragment->Entry = NULL;
 
 fail4:
     Error("fail4\n");
@@ -1193,9 +1215,12 @@ __TransmitterRingUnprepareFragments(
         Fragment->Length = 0;
         Fragment->Offset = 0;
 
-        GranterRevokeAccess(FrontendGetGranter(Frontend),
-                            Fragment->Handle);
-        Fragment->Handle = NULL;
+        (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                             &Transmitter->GnttabInterface,
+                             Ring->GnttabCache,
+                             TRUE,
+                             Fragment->Entry);
+        Fragment->Entry = NULL;
 
         switch (Fragment->Type) {
         case XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER: {
@@ -1501,10 +1526,14 @@ __TransmitterRingPrepareArp(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail3;
 
@@ -1674,10 +1703,14 @@ __TransmitterRingPrepareNeighbourAdvertisement(
 
     Pfn = MmGetMdlPfnArray(Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 TRUE,
-                                 &Fragment->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           TRUE,
+                           &Fragment->Entry);
     if (!NT_SUCCESS(status))
         goto fail3;
 
@@ -1789,8 +1822,9 @@ __TransmitterRingPostFragments(
         Ring->RequestsPosted++;
 
         req->id = Fragment->Id;
-        req->gref = GranterGetReference(FrontendGetGranter(Frontend),
-                                        Fragment->Handle);
+        req->gref = XENBUS_GNTTAB(GetReference,
+                                  &Transmitter->GnttabInterface,
+                                  Fragment->Entry);
         req->offset = (USHORT)Fragment->Offset;
         req->size = (USHORT)Fragment->Length;
         req->flags = NETTXF_more_data;
@@ -2104,9 +2138,12 @@ TransmitterRingPoll(
             Fragment->Length = 0;
             Fragment->Offset = 0;
 
-            GranterRevokeAccess(FrontendGetGranter(Frontend),
-                                Fragment->Handle);
-            Fragment->Handle = NULL;
+            (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                                 &Transmitter->GnttabInterface,
+                                 Ring->GnttabCache,
+                                 TRUE,
+                                 Fragment->Entry);
+            Fragment->Entry = NULL;
 
             Fragment->Extra = FALSE;
             __TransmitterPutFragment(Ring, Fragment);
@@ -2900,7 +2937,7 @@ __TransmitterRingInitialize(
                           TransmitterFragmentDtor,
                           TransmitterRingAcquireLock,
                           TransmitterRingReleaseLock,
-                          (*Ring),
+                          *Ring,
                           &(*Ring)->FragmentCache);
     if (!NT_SUCCESS(status))
         goto fail9;
@@ -2991,6 +3028,7 @@ __TransmitterRingConnect(
     PXENVIF_FRONTEND                Frontend;
     PFN_NUMBER                      Pfn;
     CHAR                            Name[MAXNAMELEN];
+    ULONG                           Index;
     NTSTATUS                        status;
 
     ASSERT(!Ring->Connected);
@@ -2998,11 +3036,33 @@ __TransmitterRingConnect(
     Transmitter = Ring->Transmitter;
     Frontend = Transmitter->Frontend;
 
+    status = RtlStringCbPrintfA(Name,
+                                sizeof (Name),
+                                "%s_transmitter",
+                                Ring->Path);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    for (Index = 0; Name[Index] != '\0'; Index++)
+        if (Name[Index] == '/')
+            Name[Index] = '_';
+
+    status = XENBUS_GNTTAB(CreateCache,
+                           &Transmitter->GnttabInterface,
+                           Name,
+                           0,
+                           TransmitterRingAcquireLock,
+                           TransmitterRingReleaseLock,
+                           Ring,
+                           &Ring->GnttabCache);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
     Ring->Mdl = __AllocatePage();
 
     status = STATUS_NO_MEMORY;
     if (Ring->Mdl == NULL)
-        goto fail1;
+        goto fail3;
 
     Ring->Shared = MmGetSystemAddressForMdlSafe(Ring->Mdl, NormalPagePriority);
     ASSERT(Ring->Shared != NULL);
@@ -3013,19 +3073,23 @@ __TransmitterRingConnect(
 
     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
 
-    status = GranterPermitAccess(FrontendGetGranter(Frontend),
-                                 Pfn,
-                                 FALSE,
-                                 &Ring->Handle);
+    status = XENBUS_GNTTAB(PermitForeignAccess,
+                           &Transmitter->GnttabInterface,
+                           Ring->GnttabCache,
+                           TRUE,
+                           FrontendGetBackendDomain(Frontend),
+                           Pfn,
+                           FALSE,
+                           &Ring->Entry);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail4;
 
     status = RtlStringCbPrintfA(Name,
                                 sizeof (Name),
                                 __MODULE__ "|TRANSMITTER[%u]",
                                 Ring->Index);
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail5;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
@@ -3040,7 +3104,7 @@ __TransmitterRingConnect(
 
         status = STATUS_UNSUCCESSFUL;
         if (Ring->Channel == NULL)
-            goto fail4;
+            goto fail6;
 
         if (FrontendGetQueueCount(Frontend) > 1) {
             (VOID) XENBUS_EVTCHN(Bind,
@@ -3065,14 +3129,14 @@ __TransmitterRingConnect(
                           Ring,
                           &Ring->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail7;
 
     Ring->Connected = TRUE;
 
     return STATUS_SUCCESS;
 
-fail5:
-    Error("fail5\n");
+fail7:
+    Error("fail7\n");
 
     XENBUS_EVTCHN(Close,
                   &Transmitter->EvtchnInterface,
@@ -3081,18 +3145,21 @@ fail5:
 
     Ring->Events = 0;
 
-fail4:
-    Error("fail4\n");
+fail6:
+    Error("fail6\n");
 
-fail3:
-    Error("fail3\n");
+fail5:
+    Error("fail5\n");
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
-fail2:
-    Error("fail2\n");
+fail4:
+    Error("fail4\n");
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_tx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -3101,6 +3168,17 @@ fail2:
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_GNTTAB(DestroyCache,
+                  &Transmitter->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
+
+fail2:
+    Error("fail2\n");
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
@@ -3133,9 +3211,9 @@ __TransmitterRingStoreWrite(
                           Path,
                           "tx-ring-ref",
                           "%u",
-                          GranterGetReference(FrontendGetGranter(Frontend),
-                                              Ring->Handle));
-
+                          XENBUS_GNTTAB(GetReference,
+                                        &Transmitter->GnttabInterface,
+                                        Ring->Entry));
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -3292,9 +3370,12 @@ __TransmitterRingDisconnect(
                  Ring->DebugCallback);
     Ring->DebugCallback = NULL;
 
-    GranterRevokeAccess(FrontendGetGranter(Frontend),
-                        Ring->Handle);
-    Ring->Handle = NULL;
+    (VOID) XENBUS_GNTTAB(RevokeForeignAccess,
+                         &Transmitter->GnttabInterface,
+                         Ring->GnttabCache,
+                         TRUE,
+                         Ring->Entry);
+    Ring->Entry = NULL;
 
     RtlZeroMemory(&Ring->Front, sizeof (netif_tx_front_ring_t));
     RtlZeroMemory(Ring->Shared, PAGE_SIZE);
@@ -3303,6 +3384,10 @@ __TransmitterRingDisconnect(
     __FreePage(Ring->Mdl);
     Ring->Mdl = NULL;
 
+    XENBUS_GNTTAB(DestroyCache,
+                  &Transmitter->GnttabInterface,
+                  Ring->GnttabCache);
+    Ring->GnttabCache = NULL;
 }
 
 static FORCEINLINE VOID
@@ -3527,6 +3612,9 @@ TransmitterInitialize(
     FdoGetCacheInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                          &(*Transmitter)->CacheInterface);
 
+    FdoGetGnttabInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
+                          &(*Transmitter)->GnttabInterface);
+
     FdoGetEvtchnInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
                           &(*Transmitter)->EvtchnInterface);
 
@@ -3584,6 +3672,9 @@ fail2:
     RtlZeroMemory(&(*Transmitter)->Lock,
                   sizeof (KSPIN_LOCK));
 
+    RtlZeroMemory(&(*Transmitter)->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&(*Transmitter)->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
@@ -3634,6 +3725,10 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    status = XENBUS_GNTTAB(Acquire, &Transmitter->GnttabInterface);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
     status = XENBUS_CACHE(Create,
                           &Transmitter->CacheInterface,
                           "packet_cache",
@@ -3646,7 +3741,7 @@ TransmitterConnect(
                           Transmitter,
                           &Transmitter->PacketCache);
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail5;
 
     status = XENBUS_STORE(Read,
                           &Transmitter->StoreInterface,
@@ -3676,7 +3771,7 @@ TransmitterConnect(
 
         status = __TransmitterRingConnect(Ring);
         if (!NT_SUCCESS(status))
-            goto fail5;
+            goto fail6;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -3686,16 +3781,16 @@ TransmitterConnect(
                           Transmitter,
                           &Transmitter->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail7;
 
     return STATUS_SUCCESS;
 
+fail7:
+    Error("fail7\n");
+
 fail6:
     Error("fail6\n");
 
-fail5:
-    Error("fail5\n");
-
     for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
@@ -3711,6 +3806,11 @@ fail5:
                  Transmitter->PacketCache);
     Transmitter->PacketCache = NULL;
 
+fail5:
+    Error("fail5\n");
+
+    XENBUS_GNTTAB(Release, &Transmitter->GnttabInterface);
+
 fail4:
     Error("fail4\n");
 
@@ -3847,11 +3947,13 @@ TransmitterDisconnect(
                  Transmitter->PacketCache);
     Transmitter->PacketCache = NULL;
 
+    XENBUS_GNTTAB(Release, &Transmitter->GnttabInterface);
+
+    XENBUS_EVTCHN(Release, &Transmitter->EvtchnInterface);
+
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
-
-    XENBUS_EVTCHN(Release, &Transmitter->EvtchnInterface);
 }
 
 VOID
@@ -3889,6 +3991,9 @@ TransmitterTeardown(
     RtlZeroMemory(&Transmitter->Lock,
                   sizeof (KSPIN_LOCK));
 
+    RtlZeroMemory(&Transmitter->GnttabInterface,
+                  sizeof (XENBUS_GNTTAB_INTERFACE));
+
     RtlZeroMemory(&Transmitter->CacheInterface,
                   sizeof (XENBUS_CACHE_INTERFACE));
 
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index edd71ea..4120018 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -93,7 +93,6 @@
 		<ClCompile Include="../../src/xenvif/driver.c" />
 		<ClCompile Include="../../src/xenvif/fdo.c" />
 		<ClCompile Include="../../src/xenvif/frontend.c" />
-		<ClCompile Include="../../src/xenvif/granter.c" />
 		<ClCompile Include="../../src/xenvif/link.c" />
 		<ClCompile Include="../../src/xenvif/mac.c" />
 		<ClCompile Include="../../src/xenvif/parse.c" />
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index 3dd8d9a..0e774b7 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -124,7 +124,6 @@
     <ClCompile Include="../../src/xenvif/driver.c" />
     <ClCompile Include="../../src/xenvif/fdo.c" />
     <ClCompile Include="../../src/xenvif/frontend.c" />
-    <ClCompile Include="../../src/xenvif/granter.c" />
     <ClCompile Include="../../src/xenvif/link.c" />
     <ClCompile Include="../../src/xenvif/mac.c" />
     <ClCompile Include="../../src/xenvif/parse.c" />
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:46:45 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:46:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkiT-00067o-TM; Wed, 11 Mar 2015 17:46:45 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YVkiR-00067f-Ro
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:46:44 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
	3F/76-02488-38F70055; Wed, 11 Mar 2015 17:46:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-31.messagelabs.com!1426096002!11142936!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10941 invoked from network); 11 Mar 2015 17:46:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-2.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:46:42 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208";a="32805992"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZg
Date: Wed, 11 Mar 2015 17:46:39 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
In-Reply-To: <54FF50FF.3070304@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTAgTWFyY2ggMjAxNSAyMDoxNg0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IEhpLA0KPiANCg0KSGksDQoNCj4gSSdtIHVu
YWJsZSB0byBwcm9wZXJseSByZXBseSB0byB0aGUgdGhyZWFkIHNpbmNlIEkganVzdCBzdWJzY3Jp
YmVkIHRvDQo+IHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3Mgd29ydGggY2hpbWluZyBpbiAo
bGFzdCBtZXNzYWdlIGlzIGhlcmU6DQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNo
aXZlcy9odG1sL3dpbi1wdi1kZXZlbC8yMDE1LTAxL21zZzAwMDYwLg0KPiBodG1sKQ0KPiANCg0K
ICBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlwdGlvbiBtZXNzYWdl
IDotKQ0KDQo+IEZpcnN0LCBzb21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkg
dGhlIG1haW4gYW5kIHByZXR0eQ0KPiBtdWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVy
IG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5kb3dzIGZvcg0KPiBRdWJlcyBPUyAoaHR0cHM6Ly93aWtp
LnF1YmVzLW9zLm9yZy8pLiBTb21lIG9mIHlvdSBtYXkgaGF2ZSBoZWFyZCBvZg0KPiBRdWJlcyAt
LSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0IGNyZWF0aW5nIGEgc2VjdXJlIE9TIGJhc2Vk
IG9uDQo+IGxpZ2h0d2VpZ2h0IEFwcFZNcywgY3VycmVudGx5IHVzaW5nIExpbnV4L1hlbiBhcyBi
YXNlLiBJdCBzdXBwb3J0cw0KPiBXaW5kb3dzIEhWTXMgYW5kIG91ciBndWVzdCB0b29scyBwcm92
aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlcg0KPiBkb21VcyAoc2VydmljZXMgbGlrZSBk
YXRhIHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLCBzZWFtbGVzcyBHVUkNCj4gZXhwZXJpZW5j
ZSBldGMpLg0KPiANCg0KICBDb29sLg0KDQo+IFdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFs
aXppbmcgdGhlIG5leHQgbWFqb3IgcmVsZWFzZSAocjMpIG9mDQo+IFF1YmVzLCBpdCB3aWxsIHVz
ZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLiBBcyBmb3Igb3VyIFdpbmRvd3MNCj4g
dG9vbHMsIHRoZXkgYXJlIChjdXJyZW50bHkpIHVzaW5nIFBWIGRyaXZlcnMgYmFzZWQgb24gSmFt
ZXMgSGFycGVyJ3MgY29kDQo+IGUuDQo+IA0KPiBPdXIgaW50ZXItVk0gY29tbXVuaWNhdGlvbiBw
cm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0LCB2Y2hhbg0KPiBvcmlnaW5hdGVzIGZyb20gb3Vy
IHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mgc291cmNlIGEgZmV3IHllYXJzIGFnbykuDQo+IElu
IFF1YmVzIHIyIHdlIGhhdmUgYSBXaW5kb3dzIGxpYnZjaGFuIGltcGxlbWVudGF0aW9uLCBidXQg
YXMgc3RhdGVkDQo+IGFib3ZlLCBpdCB1c2VzIG9sZCBQViBkcml2ZXJzIGludGVyZmFjZXMuIFlv
dSBjYW4gZmluZCBpdCBoZXJlOg0KPiBodHRwczovL2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1j
b3JlLXZjaGFuLXhlbg0KPiANCj4gVGhhdCBpbXBsZW1lbnRhdGlvbiBoYXMgb25lIGJpZyBmbGF3
OiBjbGllbnQgc2lkZSB2Y2hhbiBmdW5jdGlvbnMgYXJlDQo+IG5vdCBpbXBsZW1lbnRlZC4gSXQg
ZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbg0KPiBjb21tdW5pY2F0
aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdheS4gSW4gUXViZXMgcjMgaG93ZXZlciwg
d2UNCj4gbmVlZCB0aGF0IHdvcmtpbmcgYmVjYXVzZSBvZiByZWRlc2lnbmVkIGludGVyLVZNIGNv
bW11bmljYXRpb24NCj4gcHJvdG9jb2wgdGhhdCBhbGxvd3MgZGlyZWN0IFZNLVZNIGNvbW11bmlj
YXRpb24gYWZ0ZXIgZG9tMCBhcmJpdHJhdGlvbi4NCj4gDQo+IFVuZm9ydHVuYXRlbHkgSGFycGVy
J3MgZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0aGUgbmVlZGVkDQo+IGtlcm5lbCBp
bnRlcmZhY2VzIGZvciB0aGF0IGFzIHdlbGwuDQoNCkkgYXNzdW1lIHlvdSBtZWFuIGdyYW50IG1h
cHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQgY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBzYWZl
cj8NCg0KPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQVg0KPiBkcml2ZXJzIHNvdXJjZXMg
YmVmb3JlLCBidXQgaXQgc2VlbXMgSSB3aWxsIG5lZWQgdG8gZG8gdGhhdCBub3cgOikgSQ0KPiBm
b3VuZCB0aGUgbmV3IFBWIGRyaXZlcnMgYW5kIHRoaXMgbWFpbGluZyBsaXN0LCBmb3VuZCB0aGUg
dGhyZWFkIGFib3V0DQo+IHZjaGFuIGltcGxlbWVudGF0aW9uLi4uIGFuZCB0aGF0J3MgcHJldHR5
IG11Y2ggaXQgZm9yIG5vdy4NCj4gDQo+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhw
ZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0IG5lZWQgdG8NCj4gdGlua2VyIHdpdGggdGhlbSBk
aXJlY3RseSBiZWZvcmUpLiBJIGRvLCBob3dldmVyLCBoYXZlIGV4dGVuc2l2ZQ0KPiBXaW5BUEkg
a25vd2xlZGdlIGFuZCBtb2RlcmF0ZSBhbW91bnQgb2YgV2luZG93cyBkcml2ZXIgZGV2ZWxvcG1l
bnQNCj4gZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QgdG9vbHMgaXMgYSBjdXN0b20gZGlz
cGxheSBkcml2ZXIgdGhhdA0KPiBhbGxvd3Mgbm8tY29weSB2aWRlbyBtZW1vcnkgc2hhcmluZyB3
aXRoIGRvbTApLiBJIG1hbmFnZWQgdG8gYnVpbGQgdGhlDQo+IG5ldyBkcml2ZXJzIGFuZCB3aWxs
IHRlc3QgdGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uDQo+IA0KPiBTbywgdG8gc3Vt
bWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgYSBXaW5kb3dzIHZjaGFu
DQo+IGltcGxlbWVudGF0aW9uIG9uIHRvcCBvZiB0aGUgbmV3IFBWIGRyaXZlcnMuIEknbGwgYmUg
cmVhZGluZyB0aHJvdWdoDQo+IHRoZSBkcml2ZXIgc291cmNlcyBmb3IgYSBiaXQgc3RpbGwgdG8g
ZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlDQo+IGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFu
YWdlZCB0byBnZXQgc29tZXRoaW5nIHdvcmtpbmcsIG9yIGp1c3QgaGFzDQo+IGlkZWFzLCBsZXQg
bWUga25vdy4NCj4gDQoNCklmIHlvdSB3YW50IHRvIGxvb2sgYXQgYWRkaW5nIHRoZSBuZWNlc3Nh
cnkgY29kZSB0byB0aGUgWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2UgdG8gZG8gZ3JhbnQgbWFwL2Nv
cHkgdGhlbiBJIGRvbid0IGltYWdpbmUgaXQgd2lsbCBiZSB0b28gaGFyZC4gQWRkaW5nIHN1cHBv
cnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdCBidXQgaXQgd291bGQgYWxzbyBiZSBwb3NzaWJs
ZSB0byBncmFudCBtYXAgcGFnZXMgaW50byB0aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAo
d2hpY2ggaXMgd2hlcmUgdGhlIHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudCB0YWJsZSBp
dHNlbGYgbGl2ZSkuDQoNCkxldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9u
cyBvciBuZWVkIHNvbWUgaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52
aXJvbm1lbnQuDQoNCiAgQ2hlZXJzLA0KDQogICAgUGF1bA0KDQo+IENoZWVycywNCj4gDQo+IC0g
LS0NCj4gUmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Bl
cg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFK
VS8xRC9BQW9KRUlXaTlyQjJHclc3VkhRSC8ydmd3S1RBNHhKb2V6WkIrdnhDKw0KPiBVTkQNCj4g
ZjdIa3ZEY1ZES2ZGSFJPa3dXSHFxN2ZsbnhGTGo2MThITHJYWnh0bXJyWmEzMFMxY0MrWFF4c09x
WGk0aW9wWg0KPiBvUEJSRHloald5Vm81bWJ1aHQwY0FYeS9uZlJ4RTAyNlowb3pDZm12cnBiWFpl
OTRHK3cxTy90YTdmV1cvDQo+IFQvQg0KPiBQUUREbDBvQWNyaVRkWk05S3VTZk5QNDkydnJMVk02
aU5qM3U3UW1wVjZZVkxQRGVVS3BnZ05GMGdqK08wDQo+IExuYQ0KPiBOZUZlbE85Y3VDQjFFVGt1
V2ZqMXI1UHZBcHRaTWRxVWw4RGxnbnB4SVU4ZXA0QW9XcUk1ZzJVcWVMNmhCQg0KPiA3SA0KPiAy
dkdvSTVINFpZMnVHWDltQzFtYXVrWi9yUVgzdE9vZE5zd1pEaG9wS2taeFkxNktSRGIrNlJGMGZR
NGwzDQo+IDZFPQ0KPiA9djlKdg0KPiAtLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCj4gDQo+
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1w
di1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
DQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
d2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3Rp
bmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Mar 11 17:46:45 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 11 Mar 2015 17:46:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YVkiT-00067o-TM; Wed, 11 Mar 2015 17:46:45 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YVkiR-00067f-Ro
	for win-pv-devel@lists.xenproject.org; Wed, 11 Mar 2015 17:46:44 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
	3F/76-02488-38F70055; Wed, 11 Mar 2015 17:46:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-31.messagelabs.com!1426096002!11142936!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10941 invoked from network); 11 Mar 2015 17:46:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-2.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	11 Mar 2015 17:46:42 -0000
X-IronPort-AV: E=Sophos;i="5.11,382,1422921600"; d="scan'208";a="32805992"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZg
Date: Wed, 11 Mar 2015 17:46:39 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
In-Reply-To: <54FF50FF.3070304@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTAgTWFyY2ggMjAxNSAyMDoxNg0KPiBUbzogd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IEhpLA0KPiANCg0KSGksDQoNCj4gSSdtIHVu
YWJsZSB0byBwcm9wZXJseSByZXBseSB0byB0aGUgdGhyZWFkIHNpbmNlIEkganVzdCBzdWJzY3Jp
YmVkIHRvDQo+IHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3Mgd29ydGggY2hpbWluZyBpbiAo
bGFzdCBtZXNzYWdlIGlzIGhlcmU6DQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNo
aXZlcy9odG1sL3dpbi1wdi1kZXZlbC8yMDE1LTAxL21zZzAwMDYwLg0KPiBodG1sKQ0KPiANCg0K
ICBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlwdGlvbiBtZXNzYWdl
IDotKQ0KDQo+IEZpcnN0LCBzb21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkg
dGhlIG1haW4gYW5kIHByZXR0eQ0KPiBtdWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVy
IG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5kb3dzIGZvcg0KPiBRdWJlcyBPUyAoaHR0cHM6Ly93aWtp
LnF1YmVzLW9zLm9yZy8pLiBTb21lIG9mIHlvdSBtYXkgaGF2ZSBoZWFyZCBvZg0KPiBRdWJlcyAt
LSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0IGNyZWF0aW5nIGEgc2VjdXJlIE9TIGJhc2Vk
IG9uDQo+IGxpZ2h0d2VpZ2h0IEFwcFZNcywgY3VycmVudGx5IHVzaW5nIExpbnV4L1hlbiBhcyBi
YXNlLiBJdCBzdXBwb3J0cw0KPiBXaW5kb3dzIEhWTXMgYW5kIG91ciBndWVzdCB0b29scyBwcm92
aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlcg0KPiBkb21VcyAoc2VydmljZXMgbGlrZSBk
YXRhIHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLCBzZWFtbGVzcyBHVUkNCj4gZXhwZXJpZW5j
ZSBldGMpLg0KPiANCg0KICBDb29sLg0KDQo+IFdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFs
aXppbmcgdGhlIG5leHQgbWFqb3IgcmVsZWFzZSAocjMpIG9mDQo+IFF1YmVzLCBpdCB3aWxsIHVz
ZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLiBBcyBmb3Igb3VyIFdpbmRvd3MNCj4g
dG9vbHMsIHRoZXkgYXJlIChjdXJyZW50bHkpIHVzaW5nIFBWIGRyaXZlcnMgYmFzZWQgb24gSmFt
ZXMgSGFycGVyJ3MgY29kDQo+IGUuDQo+IA0KPiBPdXIgaW50ZXItVk0gY29tbXVuaWNhdGlvbiBw
cm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0LCB2Y2hhbg0KPiBvcmlnaW5hdGVzIGZyb20gb3Vy
IHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mgc291cmNlIGEgZmV3IHllYXJzIGFnbykuDQo+IElu
IFF1YmVzIHIyIHdlIGhhdmUgYSBXaW5kb3dzIGxpYnZjaGFuIGltcGxlbWVudGF0aW9uLCBidXQg
YXMgc3RhdGVkDQo+IGFib3ZlLCBpdCB1c2VzIG9sZCBQViBkcml2ZXJzIGludGVyZmFjZXMuIFlv
dSBjYW4gZmluZCBpdCBoZXJlOg0KPiBodHRwczovL2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1j
b3JlLXZjaGFuLXhlbg0KPiANCj4gVGhhdCBpbXBsZW1lbnRhdGlvbiBoYXMgb25lIGJpZyBmbGF3
OiBjbGllbnQgc2lkZSB2Y2hhbiBmdW5jdGlvbnMgYXJlDQo+IG5vdCBpbXBsZW1lbnRlZC4gSXQg
ZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbg0KPiBjb21tdW5pY2F0
aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdheS4gSW4gUXViZXMgcjMgaG93ZXZlciwg
d2UNCj4gbmVlZCB0aGF0IHdvcmtpbmcgYmVjYXVzZSBvZiByZWRlc2lnbmVkIGludGVyLVZNIGNv
bW11bmljYXRpb24NCj4gcHJvdG9jb2wgdGhhdCBhbGxvd3MgZGlyZWN0IFZNLVZNIGNvbW11bmlj
YXRpb24gYWZ0ZXIgZG9tMCBhcmJpdHJhdGlvbi4NCj4gDQo+IFVuZm9ydHVuYXRlbHkgSGFycGVy
J3MgZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0aGUgbmVlZGVkDQo+IGtlcm5lbCBp
bnRlcmZhY2VzIGZvciB0aGF0IGFzIHdlbGwuDQoNCkkgYXNzdW1lIHlvdSBtZWFuIGdyYW50IG1h
cHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQgY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBzYWZl
cj8NCg0KPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQVg0KPiBkcml2ZXJzIHNvdXJjZXMg
YmVmb3JlLCBidXQgaXQgc2VlbXMgSSB3aWxsIG5lZWQgdG8gZG8gdGhhdCBub3cgOikgSQ0KPiBm
b3VuZCB0aGUgbmV3IFBWIGRyaXZlcnMgYW5kIHRoaXMgbWFpbGluZyBsaXN0LCBmb3VuZCB0aGUg
dGhyZWFkIGFib3V0DQo+IHZjaGFuIGltcGxlbWVudGF0aW9uLi4uIGFuZCB0aGF0J3MgcHJldHR5
IG11Y2ggaXQgZm9yIG5vdy4NCj4gDQo+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhw
ZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0IG5lZWQgdG8NCj4gdGlua2VyIHdpdGggdGhlbSBk
aXJlY3RseSBiZWZvcmUpLiBJIGRvLCBob3dldmVyLCBoYXZlIGV4dGVuc2l2ZQ0KPiBXaW5BUEkg
a25vd2xlZGdlIGFuZCBtb2RlcmF0ZSBhbW91bnQgb2YgV2luZG93cyBkcml2ZXIgZGV2ZWxvcG1l
bnQNCj4gZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QgdG9vbHMgaXMgYSBjdXN0b20gZGlz
cGxheSBkcml2ZXIgdGhhdA0KPiBhbGxvd3Mgbm8tY29weSB2aWRlbyBtZW1vcnkgc2hhcmluZyB3
aXRoIGRvbTApLiBJIG1hbmFnZWQgdG8gYnVpbGQgdGhlDQo+IG5ldyBkcml2ZXJzIGFuZCB3aWxs
IHRlc3QgdGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uDQo+IA0KPiBTbywgdG8gc3Vt
bWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgYSBXaW5kb3dzIHZjaGFu
DQo+IGltcGxlbWVudGF0aW9uIG9uIHRvcCBvZiB0aGUgbmV3IFBWIGRyaXZlcnMuIEknbGwgYmUg
cmVhZGluZyB0aHJvdWdoDQo+IHRoZSBkcml2ZXIgc291cmNlcyBmb3IgYSBiaXQgc3RpbGwgdG8g
ZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlDQo+IGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFu
YWdlZCB0byBnZXQgc29tZXRoaW5nIHdvcmtpbmcsIG9yIGp1c3QgaGFzDQo+IGlkZWFzLCBsZXQg
bWUga25vdy4NCj4gDQoNCklmIHlvdSB3YW50IHRvIGxvb2sgYXQgYWRkaW5nIHRoZSBuZWNlc3Nh
cnkgY29kZSB0byB0aGUgWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2UgdG8gZG8gZ3JhbnQgbWFwL2Nv
cHkgdGhlbiBJIGRvbid0IGltYWdpbmUgaXQgd2lsbCBiZSB0b28gaGFyZC4gQWRkaW5nIHN1cHBv
cnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdCBidXQgaXQgd291bGQgYWxzbyBiZSBwb3NzaWJs
ZSB0byBncmFudCBtYXAgcGFnZXMgaW50byB0aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAo
d2hpY2ggaXMgd2hlcmUgdGhlIHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudCB0YWJsZSBp
dHNlbGYgbGl2ZSkuDQoNCkxldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9u
cyBvciBuZWVkIHNvbWUgaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52
aXJvbm1lbnQuDQoNCiAgQ2hlZXJzLA0KDQogICAgUGF1bA0KDQo+IENoZWVycywNCj4gDQo+IC0g
LS0NCj4gUmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Bl
cg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFK
VS8xRC9BQW9KRUlXaTlyQjJHclc3VkhRSC8ydmd3S1RBNHhKb2V6WkIrdnhDKw0KPiBVTkQNCj4g
ZjdIa3ZEY1ZES2ZGSFJPa3dXSHFxN2ZsbnhGTGo2MThITHJYWnh0bXJyWmEzMFMxY0MrWFF4c09x
WGk0aW9wWg0KPiBvUEJSRHloald5Vm81bWJ1aHQwY0FYeS9uZlJ4RTAyNlowb3pDZm12cnBiWFpl
OTRHK3cxTy90YTdmV1cvDQo+IFQvQg0KPiBQUUREbDBvQWNyaVRkWk05S3VTZk5QNDkydnJMVk02
aU5qM3U3UW1wVjZZVkxQRGVVS3BnZ05GMGdqK08wDQo+IExuYQ0KPiBOZUZlbE85Y3VDQjFFVGt1
V2ZqMXI1UHZBcHRaTWRxVWw4RGxnbnB4SVU4ZXA0QW9XcUk1ZzJVcWVMNmhCQg0KPiA3SA0KPiAy
dkdvSTVINFpZMnVHWDltQzFtYXVrWi9yUVgzdE9vZE5zd1pEaG9wS2taeFkxNktSRGIrNlJGMGZR
NGwzDQo+IDZFPQ0KPiA9djlKdg0KPiAtLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCj4gDQo+
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1w
di1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
DQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
d2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3Rp
bmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 10:26:31 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 10:26:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW0Jx-0000BS-Rw; Thu, 12 Mar 2015 10:26:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YW0Jw-0000BN-CK
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 10:26:28 +0000
Received: from [85.158.137.68] by server-7.bemta-3.messagelabs.com id
	BB/C6-32389-3D961055; Thu, 12 Mar 2015 10:26:27 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1426155986!7621467!1
X-Originating-IP: [74.125.82.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9797 invoked from network); 12 Mar 2015 10:26:27 -0000
Received: from mail-we0-f171.google.com (HELO mail-we0-f171.google.com)
	(74.125.82.171)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 10:26:27 -0000
Received: by wevk48 with SMTP id k48so15257170wev.7
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=uSZA0oSAf0ABw2+MeyNNRNZ/kft3X9r1JzoatlX/FVc=;
	b=AJLheKOa1hELPYdUPKZu7PFa16MPV78Util7rkRK/WUQBDYcPBioIjB8AuWSe9XZZ7
	LRJpRm14B8HiYn3EorvueXEFpLz8SZD3/YA0bHMooIdqllMAw0TqSlCikWET+4+S7lPa
	+EYIQe4mfe8EEaAGNkE+h7wKCCFQom0sa9WSzS8HtthSzHxgq7LdxBSVuPeV7NdeggSG
	JJtvzM1mqI99kUpE1Y8T85ABRtOPMqBlvJSTXV4p3AmkLTZopqrrCzUVG89mgJmQMKqN
	MY2aj1AzfQfISjFVxfBQcVAZB4udSCEiR6Rwuo10xLqOStpx5HqJh+fYMM31ClbVezBg
	N/kg==
X-Received: by 10.180.14.66 with SMTP id n2mr126464406wic.50.1426155986662;
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id r15sm5346327wiw.12.2015.03.12.03.26.25
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 12 Mar 2015 10:26:24 +0000
Message-Id: <1426155984-724-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix CHANGE macro
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The CHANGE(x, y) macro in adapter.c is supposed to evaluate to 0 if x and
y are identical, otherwise it is supposed to assign y to x and evaluate
to 1. The definition is incorrect though, and in the latter case the
assignment is done but the macro still evaluates to 0. This patch fixes
the problem.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index 0509938..de55393 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -544,7 +544,7 @@ invalid_parameter:
                          (x) == NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED)
 #define TX_ENABLED(x)   ((x) == NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED ||            \
                          (x) == NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED)
-#define CHANGE(x, y)    (((x) == (y)) ? 0 : (((x) = (y)) != (y)))
+#define CHANGE(x, y)    (((x) == (y)) ? 0 : (((x) = (y)), 1))
 
 static NDIS_STATUS
 AdapterGetTcpOffloadParameters(
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 10:26:31 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 10:26:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW0Jx-0000BS-Rw; Thu, 12 Mar 2015 10:26:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YW0Jw-0000BN-CK
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 10:26:28 +0000
Received: from [85.158.137.68] by server-7.bemta-3.messagelabs.com id
	BB/C6-32389-3D961055; Thu, 12 Mar 2015 10:26:27 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1426155986!7621467!1
X-Originating-IP: [74.125.82.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9797 invoked from network); 12 Mar 2015 10:26:27 -0000
Received: from mail-we0-f171.google.com (HELO mail-we0-f171.google.com)
	(74.125.82.171)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 10:26:27 -0000
Received: by wevk48 with SMTP id k48so15257170wev.7
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=uSZA0oSAf0ABw2+MeyNNRNZ/kft3X9r1JzoatlX/FVc=;
	b=AJLheKOa1hELPYdUPKZu7PFa16MPV78Util7rkRK/WUQBDYcPBioIjB8AuWSe9XZZ7
	LRJpRm14B8HiYn3EorvueXEFpLz8SZD3/YA0bHMooIdqllMAw0TqSlCikWET+4+S7lPa
	+EYIQe4mfe8EEaAGNkE+h7wKCCFQom0sa9WSzS8HtthSzHxgq7LdxBSVuPeV7NdeggSG
	JJtvzM1mqI99kUpE1Y8T85ABRtOPMqBlvJSTXV4p3AmkLTZopqrrCzUVG89mgJmQMKqN
	MY2aj1AzfQfISjFVxfBQcVAZB4udSCEiR6Rwuo10xLqOStpx5HqJh+fYMM31ClbVezBg
	N/kg==
X-Received: by 10.180.14.66 with SMTP id n2mr126464406wic.50.1426155986662;
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id r15sm5346327wiw.12.2015.03.12.03.26.25
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 12 Mar 2015 03:26:26 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 12 Mar 2015 10:26:24 +0000
Message-Id: <1426155984-724-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix CHANGE macro
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The CHANGE(x, y) macro in adapter.c is supposed to evaluate to 0 if x and
y are identical, otherwise it is supposed to assign y to x and evaluate
to 1. The definition is incorrect though, and in the latter case the
assignment is done but the macro still evaluates to 0. This patch fixes
the problem.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index 0509938..de55393 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -544,7 +544,7 @@ invalid_parameter:
                          (x) == NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED)
 #define TX_ENABLED(x)   ((x) == NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED ||            \
                          (x) == NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED)
-#define CHANGE(x, y)    (((x) == (y)) ? 0 : (((x) = (y)) != (y)))
+#define CHANGE(x, y)    (((x) == (y)) ? 0 : (((x) = (y)), 1))
 
 static NDIS_STATUS
 AdapterGetTcpOffloadParameters(
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 16:16:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 16:16:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW5n4-0001Oi-7n; Thu, 12 Mar 2015 16:16:54 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW5n3-0001OC-0k
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 16:16:53 +0000
Received: from [85.158.139.211] by server-2.bemta-5.messagelabs.com id
	3A/14-23575-4FBB1055; Thu, 12 Mar 2015 16:16:52 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1426177010!5957821!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 788 invoked from network); 12 Mar 2015 16:16:51 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-206.messagelabs.com with DHE-RSA-AES256-SHA
	encrypted SMTP; 12 Mar 2015 16:16:51 -0000
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
	by mailout.nyi.internal (Postfix) with ESMTP id D0E2C2086D
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 12:16:48 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute1.internal (MEProxy); Thu, 12 Mar 2015 12:16:50 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=2uCkHSgYIKADmFs2JB6VEJ3
	eUM8=; b=HKUTcxuCgveCh16Uuw/YPD8mDu5TmqMnqrJz9p+RBKDsPNXit7XYo2K
	H5oDhjSCSMw2sG/At+DgHDj0TOL7HyP8AmhSlMfnZTVy2F5t62NQZPOWA40PlNsw
	lsMGc2yis+MwBRgszYDNUcpVerGEExRSbVX0TrhIdYYb5Uj8pPXU=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=2uCkHSgYIKADmFs2JB6VEJ
	3eUM8=; b=jfE7DvB09RhiKvw0jC4WA+kCAn+5TakK8LY+n6HhJ3PnpRysy9v1OI
	e4SHf0ypb7lKLBM81vcJnG2NDBWeNtJXP0uCch6AsEBr82VPNYgBGKlZcPm30ZnE
	/h7dMuUDTAcg/1c+T7/6ows/rNdLyspt4ikOUDgr3Rnr4naFaTgnQ=
X-Sasl-enc: UebXArbs/IrESZIW6dtkChDoCMgV0vkKw7FMa12QgX0Z 1426177009
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id A5B6A6800FC;
	Thu, 12 Mar 2015 12:16:49 -0400 (EDT)
Message-ID: <5501BBEF.20309@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 17:16:47 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
Content-Length: 6793
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206Cj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFtt
YWlsdG86d2luLXB2LWRldmVsLSAKPj4gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24g
QmVoYWxmIE9mIFJhZmFsIFdvamR5bGEgU2VudDogMTAKPj4gTWFyY2ggMjAxNSAyMDoxNiBUbzog
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6Cj4+IFJlOiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQVgo+PiBEcml2ZXJz
Cj4+IAo+IEhpLAo+IAo+IAo+PiBIaSwKPiAKPiBJJ20gdW5hYmxlIHRvIHByb3Blcmx5IHJlcGx5
IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0IHN1YnNjcmliZWQKPiB0byB0aGlzIGxpc3QgYnV0
IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxhc3QgbWVzc2FnZSBpcwo+IGhlcmU6
IAo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3dpbi1wdi1kZXZl
bC8yMDE1LTAxL21zZzAwMDYKMC4KPgo+IApodG1sKQo+IAo+IAo+PiBZZXMsIEkgdW5kZXJzdGFu
ZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlwdGlvbiBtZXNzYWdlIDotKQo+IAo+IEZpcnN0LCBz
b21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kIHByZXR0
eSAKPiBtdWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZv
ciBXaW5kb3dzIGZvciAKPiBRdWJlcyBPUyAoaHR0cHM6Ly93aWtpLnF1YmVzLW9zLm9yZy8pLiBT
b21lIG9mIHlvdSBtYXkgaGF2ZSBoZWFyZAo+IG9mIFF1YmVzIC0tIGluIHNob3J0LCBpdCdzIGFu
IGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFzZWQKPiBvbiBsaWdodHdlaWdodCBB
cHBWTXMsIGN1cnJlbnRseSB1c2luZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQKPiBzdXBwb3J0cyBX
aW5kb3dzIEhWTXMgYW5kIG91ciBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGgK
PiBkb20wL290aGVyIGRvbVVzIChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJhbnNmZXIsIHJlbW90ZSBl
eGVjdXRpb24sCj4gc2VhbWxlc3MgR1VJIGV4cGVyaWVuY2UgZXRjKS4KPiAKPiAKPj4gQ29vbC4K
PiAKPiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0IG1ham9yIHJl
bGVhc2UgKHIzKSBvZiAKPiBRdWJlcywgaXQgd2lsbCB1c2UgWGVuIDQuNCBpbnN0ZWFkIG9mIHIy
J3MgWGVuIDQuMS4gQXMgZm9yIG91cgo+IFdpbmRvd3MgdG9vbHMsIHRoZXkgYXJlIChjdXJyZW50
bHkpIHVzaW5nIFBWIGRyaXZlcnMgYmFzZWQgb24gSmFtZXMKPiBIYXJwZXIncyBjb2QgZS4KPiAK
PiBPdXIgaW50ZXItVk0gY29tbXVuaWNhdGlvbiBwcm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0
LCB2Y2hhbiAKPiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mg
c291cmNlIGEgZmV3IHllYXJzCj4gYWdvKS4gSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdpbmRvd3Mg
bGlidmNoYW4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcwo+IHN0YXRlZCBhYm92ZSwgaXQgdXNlcyBv
bGQgUFYgZHJpdmVycyBpbnRlcmZhY2VzLiBZb3UgY2FuIGZpbmQgaXQKPiBoZXJlOiBodHRwczov
L2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1jb3JlLXZjaGFuLXhlbgo+IAo+IFRoYXQgaW1wbGVt
ZW50YXRpb24gaGFzIG9uZSBiaWcgZmxhdzogY2xpZW50IHNpZGUgdmNoYW4gZnVuY3Rpb25zCj4g
YXJlIG5vdCBpbXBsZW1lbnRlZC4gSXQgZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJl
IGFsbAo+IHZjaGFuIGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5
LiBJbiBRdWJlcyByMwo+IGhvd2V2ZXIsIHdlIG5lZWQgdGhhdCB3b3JraW5nIGJlY2F1c2Ugb2Yg
cmVkZXNpZ25lZCBpbnRlci1WTQo+IGNvbW11bmljYXRpb24gcHJvdG9jb2wgdGhhdCBhbGxvd3Mg
ZGlyZWN0IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXIKPiBkb20wIGFyYml0cmF0aW9uLgo+IAo+
IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0
aGUgbmVlZGVkIAo+IGtlcm5lbCBpbnRlcmZhY2VzIGZvciB0aGF0IGFzIHdlbGwuCj4gCj4+IEkg
YXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQgY29weSwg
c2luY2UKPj4gdGhhdCB3b3VsZCBiZSBzYWZlcj8KPiAKPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sg
aW50byBQViBkcml2ZXJzIHNvdXJjZXMgYmVmb3JlLCBidXQgaXQgc2VlbXMKPiBJIHdpbGwgbmVl
ZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZvdW5kIHRoZSBuZXcgUFYgZHJpdmVycyBhbmQgdGhpcwo+
IG1haWxpbmcgbGlzdCwgZm91bmQgdGhlIHRocmVhZCBhYm91dCB2Y2hhbiBpbXBsZW1lbnRhdGlv
bi4uLiBhbmQKPiB0aGF0J3MgcHJldHR5IG11Y2ggaXQgZm9yIG5vdy4KPiAKPiBBcyBJIHNhaWQs
IEkgZG9uJ3QgaGF2ZSBtdWNoIGV4cGVyaWVuY2UgaW4gWGVuIEFQSXMgKGRpZG4ndCBuZWVkCj4g
dG8gdGlua2VyIHdpdGggdGhlbSBkaXJlY3RseSBiZWZvcmUpLiBJIGRvLCBob3dldmVyLCBoYXZl
Cj4gZXh0ZW5zaXZlIFdpbkFQSSBrbm93bGVkZ2UgYW5kIG1vZGVyYXRlIGFtb3VudCBvZiBXaW5k
b3dzIGRyaXZlcgo+IGRldmVsb3BtZW50IGV4cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRv
b2xzIGlzIGEgY3VzdG9tIGRpc3BsYXkKPiBkcml2ZXIgdGhhdCBhbGxvd3Mgbm8tY29weSB2aWRl
byBtZW1vcnkgc2hhcmluZyB3aXRoIGRvbTApLiBJCj4gbWFuYWdlZCB0byBidWlsZCB0aGUgbmV3
IGRyaXZlcnMgYW5kIHdpbGwgdGVzdCB0aGVtIG9uIG91ciBkZXYKPiBRdWJlcyBidWlsZCBzb29u
Lgo+IAo+IFNvLCB0byBzdW1tYXJpemUsIEknbSB2ZXJ5IGludGVyZXN0ZWQgaW4gZGV2ZWxvcGlu
ZyBhIFdpbmRvd3MKPiB2Y2hhbiBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhlIG5ldyBQViBk
cml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcKPiB0aHJvdWdoIHRoZSBkcml2ZXIgc291cmNlcyBmb3Ig
YSBiaXQgc3RpbGwgdG8gZmFtaWxpYXJpemUgbXlzZWxmCj4gd2l0aCB0aGUgZW52aXJvbm1lbnQu
IElmIGFueW9uZSBtYW5hZ2VkIHRvIGdldCBzb21ldGhpbmcgd29ya2luZywKPiBvciBqdXN0IGhh
cyBpZGVhcywgbGV0IG1lIGtub3cuCj4gCj4gCj4+IElmIHlvdSB3YW50IHRvIGxvb2sgYXQgYWRk
aW5nIHRoZSBuZWNlc3NhcnkgY29kZSB0byB0aGUKPj4gWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2Ug
dG8gZG8gZ3JhbnQgbWFwL2NvcHkgdGhlbiBJIGRvbid0IGltYWdpbmUKPj4gaXQgd2lsbCBiZSB0
b28gaGFyZC4gQWRkaW5nIHN1cHBvcnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdCBidXQKPj4g
aXQgd291bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAgcGFnZXMgaW50byB0aGUgcGxh
dGZvcm0KPj4gUENJIGRldmljZSdzIEJBUiAod2hpY2ggaXMgd2hlcmUgdGhlIHNoYXJlZCBpbmZv
IHBhZ2UgYW5kIHRoZQo+PiBncmFudCB0YWJsZSBpdHNlbGYgbGl2ZSkuCj4gCj4+IExldCBtZSBr
bm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9ucyBvciBuZWVkIHNvbWUgaGVscAo+PiBn
ZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52aXJvbm1lbnQuCj4gCkkndmUgdGVz
dGVkIHRoZSBkcml2ZXJzIG9uIGEgV2luNyBwcm8geDY0IEhWTSBvbiBRdWJlcyByMiAocjMgaXMg
c3RpbGwKYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJvdGggaW5zdGFsbCBm
aW5lLiBYZW52YmQKaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qgd2l0aCBj
b2RlIDdCIChpbmFjY2Vzc2libGUgYm9vdApkZXZpY2UpLiBJJ2xsIHRyeSB0byBwaW5wb2ludCB0
aGUgZXhhY3QgZmFpbHVyZSBzcG90IG9uY2UgSSBzZXR1cCB0aGUKcHZkcml2ZXJzIHNvdXJjZXMg
aW5zaWRlIG15IGRldmVsb3BtZW50IFZNLgoKRG8gdGhlIGRyaXZlcnMgaGF2ZSBzcGVjaWZpYyBy
ZXF1aXJlbWVudHMgZm9yIGJhY2tlbmQgKFhlbi9RZW11CnZlcnNpb24pPyBXZSdyZSBub3QgcmVh
bGx5IHVzaW5nIFFlbXUgaW4gZG9tMCwgb25seSBpbiBtaW5pbWFsCnN0dWJkb21zIGZvciBIVk1z
LCBzbyB0aGF0IG1heSBiZSBhIHByb2JsZW0uCgo+PiBDaGVlcnMsCj4gCj4+IFBhdWwKPiAKPiBD
aGVlcnMsCj4gCi0gLS0gClJhZmHFgiBXb2pkecWCYQpRdWJlcyBUb29scyBmb3IgV2luZG93cyBk
ZXZlbG9wZXIKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRRWNCQUVCQWdBR0JRSlZB
YnZ2QUFvSkVJV2k5ckIyR3JXN2h4a0grd2Jra3BZZmNCcWNVa3RXZzdqZE9aemYKZmdKTXVSUlB3
ZzZzb3RUK0VEdktSNEpzRG8yTWo0NmphdzhIQ3VldDVuY2ZNenI4ekNFSDBnU09Fb0hnOURaOApm
Sk90VXprWkJnbFlvYitiVm4yemJXMWpMZDhMck5ueWd5TUFSVXc1REdDcHVzcVhLUTFsRjcwc01z
QU50aTJSCjRBeW1IYmpiMkd3MlJja2duYytGUW11R2I4Lzl6QVRxTkNRTFpzNXlJWVEza0U0dmRW
dFR2akFTS3lqejZyNUIKRFZmQmtKOC9FWWdiSkJVb3NOQWxOZHFiMk1pa2VZQXE2K2E5NGU4a3Za
WGU5NXBEamVaeHA2V1NDR0Rhc0lOUQo5ZDFhRDk2K0pzUGlkQ2FpZmdjYlFRaU5OSTdoTFY0YSs0
S3UvYmxmblhHQUMzc01xditoYzhiNC82dDhtR3M9Cj1Uc0lnCi0tLS0tRU5EIFBHUCBTSUdOQVRV
UkUtLS0tLQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93
aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 16:16:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 16:16:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW5n4-0001Oi-7n; Thu, 12 Mar 2015 16:16:54 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW5n3-0001OC-0k
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 16:16:53 +0000
Received: from [85.158.139.211] by server-2.bemta-5.messagelabs.com id
	3A/14-23575-4FBB1055; Thu, 12 Mar 2015 16:16:52 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1426177010!5957821!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 788 invoked from network); 12 Mar 2015 16:16:51 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-206.messagelabs.com with DHE-RSA-AES256-SHA
	encrypted SMTP; 12 Mar 2015 16:16:51 -0000
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
	by mailout.nyi.internal (Postfix) with ESMTP id D0E2C2086D
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 12:16:48 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute1.internal (MEProxy); Thu, 12 Mar 2015 12:16:50 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=2uCkHSgYIKADmFs2JB6VEJ3
	eUM8=; b=HKUTcxuCgveCh16Uuw/YPD8mDu5TmqMnqrJz9p+RBKDsPNXit7XYo2K
	H5oDhjSCSMw2sG/At+DgHDj0TOL7HyP8AmhSlMfnZTVy2F5t62NQZPOWA40PlNsw
	lsMGc2yis+MwBRgszYDNUcpVerGEExRSbVX0TrhIdYYb5Uj8pPXU=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=2uCkHSgYIKADmFs2JB6VEJ
	3eUM8=; b=jfE7DvB09RhiKvw0jC4WA+kCAn+5TakK8LY+n6HhJ3PnpRysy9v1OI
	e4SHf0ypb7lKLBM81vcJnG2NDBWeNtJXP0uCch6AsEBr82VPNYgBGKlZcPm30ZnE
	/h7dMuUDTAcg/1c+T7/6ows/rNdLyspt4ikOUDgr3Rnr4naFaTgnQ=
X-Sasl-enc: UebXArbs/IrESZIW6dtkChDoCMgV0vkKw7FMa12QgX0Z 1426177009
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id A5B6A6800FC;
	Thu, 12 Mar 2015 12:16:49 -0400 (EDT)
Message-ID: <5501BBEF.20309@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 17:16:47 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
Content-Length: 6793
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206Cj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFtt
YWlsdG86d2luLXB2LWRldmVsLSAKPj4gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24g
QmVoYWxmIE9mIFJhZmFsIFdvamR5bGEgU2VudDogMTAKPj4gTWFyY2ggMjAxNSAyMDoxNiBUbzog
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6Cj4+IFJlOiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQVgo+PiBEcml2ZXJz
Cj4+IAo+IEhpLAo+IAo+IAo+PiBIaSwKPiAKPiBJJ20gdW5hYmxlIHRvIHByb3Blcmx5IHJlcGx5
IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0IHN1YnNjcmliZWQKPiB0byB0aGlzIGxpc3QgYnV0
IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxhc3QgbWVzc2FnZSBpcwo+IGhlcmU6
IAo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3dpbi1wdi1kZXZl
bC8yMDE1LTAxL21zZzAwMDYKMC4KPgo+IApodG1sKQo+IAo+IAo+PiBZZXMsIEkgdW5kZXJzdGFu
ZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlwdGlvbiBtZXNzYWdlIDotKQo+IAo+IEZpcnN0LCBz
b21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kIHByZXR0
eSAKPiBtdWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZv
ciBXaW5kb3dzIGZvciAKPiBRdWJlcyBPUyAoaHR0cHM6Ly93aWtpLnF1YmVzLW9zLm9yZy8pLiBT
b21lIG9mIHlvdSBtYXkgaGF2ZSBoZWFyZAo+IG9mIFF1YmVzIC0tIGluIHNob3J0LCBpdCdzIGFu
IGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFzZWQKPiBvbiBsaWdodHdlaWdodCBB
cHBWTXMsIGN1cnJlbnRseSB1c2luZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQKPiBzdXBwb3J0cyBX
aW5kb3dzIEhWTXMgYW5kIG91ciBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGgK
PiBkb20wL290aGVyIGRvbVVzIChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJhbnNmZXIsIHJlbW90ZSBl
eGVjdXRpb24sCj4gc2VhbWxlc3MgR1VJIGV4cGVyaWVuY2UgZXRjKS4KPiAKPiAKPj4gQ29vbC4K
PiAKPiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0IG1ham9yIHJl
bGVhc2UgKHIzKSBvZiAKPiBRdWJlcywgaXQgd2lsbCB1c2UgWGVuIDQuNCBpbnN0ZWFkIG9mIHIy
J3MgWGVuIDQuMS4gQXMgZm9yIG91cgo+IFdpbmRvd3MgdG9vbHMsIHRoZXkgYXJlIChjdXJyZW50
bHkpIHVzaW5nIFBWIGRyaXZlcnMgYmFzZWQgb24gSmFtZXMKPiBIYXJwZXIncyBjb2QgZS4KPiAK
PiBPdXIgaW50ZXItVk0gY29tbXVuaWNhdGlvbiBwcm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0
LCB2Y2hhbiAKPiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mg
c291cmNlIGEgZmV3IHllYXJzCj4gYWdvKS4gSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdpbmRvd3Mg
bGlidmNoYW4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcwo+IHN0YXRlZCBhYm92ZSwgaXQgdXNlcyBv
bGQgUFYgZHJpdmVycyBpbnRlcmZhY2VzLiBZb3UgY2FuIGZpbmQgaXQKPiBoZXJlOiBodHRwczov
L2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1jb3JlLXZjaGFuLXhlbgo+IAo+IFRoYXQgaW1wbGVt
ZW50YXRpb24gaGFzIG9uZSBiaWcgZmxhdzogY2xpZW50IHNpZGUgdmNoYW4gZnVuY3Rpb25zCj4g
YXJlIG5vdCBpbXBsZW1lbnRlZC4gSXQgZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJl
IGFsbAo+IHZjaGFuIGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5
LiBJbiBRdWJlcyByMwo+IGhvd2V2ZXIsIHdlIG5lZWQgdGhhdCB3b3JraW5nIGJlY2F1c2Ugb2Yg
cmVkZXNpZ25lZCBpbnRlci1WTQo+IGNvbW11bmljYXRpb24gcHJvdG9jb2wgdGhhdCBhbGxvd3Mg
ZGlyZWN0IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXIKPiBkb20wIGFyYml0cmF0aW9uLgo+IAo+
IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0
aGUgbmVlZGVkIAo+IGtlcm5lbCBpbnRlcmZhY2VzIGZvciB0aGF0IGFzIHdlbGwuCj4gCj4+IEkg
YXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQgY29weSwg
c2luY2UKPj4gdGhhdCB3b3VsZCBiZSBzYWZlcj8KPiAKPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sg
aW50byBQViBkcml2ZXJzIHNvdXJjZXMgYmVmb3JlLCBidXQgaXQgc2VlbXMKPiBJIHdpbGwgbmVl
ZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZvdW5kIHRoZSBuZXcgUFYgZHJpdmVycyBhbmQgdGhpcwo+
IG1haWxpbmcgbGlzdCwgZm91bmQgdGhlIHRocmVhZCBhYm91dCB2Y2hhbiBpbXBsZW1lbnRhdGlv
bi4uLiBhbmQKPiB0aGF0J3MgcHJldHR5IG11Y2ggaXQgZm9yIG5vdy4KPiAKPiBBcyBJIHNhaWQs
IEkgZG9uJ3QgaGF2ZSBtdWNoIGV4cGVyaWVuY2UgaW4gWGVuIEFQSXMgKGRpZG4ndCBuZWVkCj4g
dG8gdGlua2VyIHdpdGggdGhlbSBkaXJlY3RseSBiZWZvcmUpLiBJIGRvLCBob3dldmVyLCBoYXZl
Cj4gZXh0ZW5zaXZlIFdpbkFQSSBrbm93bGVkZ2UgYW5kIG1vZGVyYXRlIGFtb3VudCBvZiBXaW5k
b3dzIGRyaXZlcgo+IGRldmVsb3BtZW50IGV4cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRv
b2xzIGlzIGEgY3VzdG9tIGRpc3BsYXkKPiBkcml2ZXIgdGhhdCBhbGxvd3Mgbm8tY29weSB2aWRl
byBtZW1vcnkgc2hhcmluZyB3aXRoIGRvbTApLiBJCj4gbWFuYWdlZCB0byBidWlsZCB0aGUgbmV3
IGRyaXZlcnMgYW5kIHdpbGwgdGVzdCB0aGVtIG9uIG91ciBkZXYKPiBRdWJlcyBidWlsZCBzb29u
Lgo+IAo+IFNvLCB0byBzdW1tYXJpemUsIEknbSB2ZXJ5IGludGVyZXN0ZWQgaW4gZGV2ZWxvcGlu
ZyBhIFdpbmRvd3MKPiB2Y2hhbiBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhlIG5ldyBQViBk
cml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcKPiB0aHJvdWdoIHRoZSBkcml2ZXIgc291cmNlcyBmb3Ig
YSBiaXQgc3RpbGwgdG8gZmFtaWxpYXJpemUgbXlzZWxmCj4gd2l0aCB0aGUgZW52aXJvbm1lbnQu
IElmIGFueW9uZSBtYW5hZ2VkIHRvIGdldCBzb21ldGhpbmcgd29ya2luZywKPiBvciBqdXN0IGhh
cyBpZGVhcywgbGV0IG1lIGtub3cuCj4gCj4gCj4+IElmIHlvdSB3YW50IHRvIGxvb2sgYXQgYWRk
aW5nIHRoZSBuZWNlc3NhcnkgY29kZSB0byB0aGUKPj4gWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2Ug
dG8gZG8gZ3JhbnQgbWFwL2NvcHkgdGhlbiBJIGRvbid0IGltYWdpbmUKPj4gaXQgd2lsbCBiZSB0
b28gaGFyZC4gQWRkaW5nIHN1cHBvcnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdCBidXQKPj4g
aXQgd291bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAgcGFnZXMgaW50byB0aGUgcGxh
dGZvcm0KPj4gUENJIGRldmljZSdzIEJBUiAod2hpY2ggaXMgd2hlcmUgdGhlIHNoYXJlZCBpbmZv
IHBhZ2UgYW5kIHRoZQo+PiBncmFudCB0YWJsZSBpdHNlbGYgbGl2ZSkuCj4gCj4+IExldCBtZSBr
bm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9ucyBvciBuZWVkIHNvbWUgaGVscAo+PiBn
ZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52aXJvbm1lbnQuCj4gCkkndmUgdGVz
dGVkIHRoZSBkcml2ZXJzIG9uIGEgV2luNyBwcm8geDY0IEhWTSBvbiBRdWJlcyByMiAocjMgaXMg
c3RpbGwKYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJvdGggaW5zdGFsbCBm
aW5lLiBYZW52YmQKaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qgd2l0aCBj
b2RlIDdCIChpbmFjY2Vzc2libGUgYm9vdApkZXZpY2UpLiBJJ2xsIHRyeSB0byBwaW5wb2ludCB0
aGUgZXhhY3QgZmFpbHVyZSBzcG90IG9uY2UgSSBzZXR1cCB0aGUKcHZkcml2ZXJzIHNvdXJjZXMg
aW5zaWRlIG15IGRldmVsb3BtZW50IFZNLgoKRG8gdGhlIGRyaXZlcnMgaGF2ZSBzcGVjaWZpYyBy
ZXF1aXJlbWVudHMgZm9yIGJhY2tlbmQgKFhlbi9RZW11CnZlcnNpb24pPyBXZSdyZSBub3QgcmVh
bGx5IHVzaW5nIFFlbXUgaW4gZG9tMCwgb25seSBpbiBtaW5pbWFsCnN0dWJkb21zIGZvciBIVk1z
LCBzbyB0aGF0IG1heSBiZSBhIHByb2JsZW0uCgo+PiBDaGVlcnMsCj4gCj4+IFBhdWwKPiAKPiBD
aGVlcnMsCj4gCi0gLS0gClJhZmHFgiBXb2pkecWCYQpRdWJlcyBUb29scyBmb3IgV2luZG93cyBk
ZXZlbG9wZXIKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRRWNCQUVCQWdBR0JRSlZB
YnZ2QUFvSkVJV2k5ckIyR3JXN2h4a0grd2Jra3BZZmNCcWNVa3RXZzdqZE9aemYKZmdKTXVSUlB3
ZzZzb3RUK0VEdktSNEpzRG8yTWo0NmphdzhIQ3VldDVuY2ZNenI4ekNFSDBnU09Fb0hnOURaOApm
Sk90VXprWkJnbFlvYitiVm4yemJXMWpMZDhMck5ueWd5TUFSVXc1REdDcHVzcVhLUTFsRjcwc01z
QU50aTJSCjRBeW1IYmpiMkd3MlJja2duYytGUW11R2I4Lzl6QVRxTkNRTFpzNXlJWVEza0U0dmRW
dFR2akFTS3lqejZyNUIKRFZmQmtKOC9FWWdiSkJVb3NOQWxOZHFiMk1pa2VZQXE2K2E5NGU4a3Za
WGU5NXBEamVaeHA2V1NDR0Rhc0lOUQo5ZDFhRDk2K0pzUGlkQ2FpZmdjYlFRaU5OSTdoTFY0YSs0
S3UvYmxmblhHQUMzc01xditoYzhiNC82dDhtR3M9Cj1Uc0lnCi0tLS0tRU5EIFBHUCBTSUdOQVRV
UkUtLS0tLQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93
aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 16:45:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 16:45:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6EP-0008Mp-BB; Thu, 12 Mar 2015 16:45:09 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YW6EO-0008Mf-TM
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 16:45:09 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	B2/D1-09646-492C1055; Thu, 12 Mar 2015 16:45:08 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1426178706!12339524!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6155 invoked from network); 12 Mar 2015 16:45:07 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 16:45:07 -0000
X-IronPort-AV: E=Sophos;i="5.11,389,1422921600"; d="scan'208";a="32831359"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUA==
Date: Thu, 12 Mar 2015 16:45:05 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
In-Reply-To: <5501BBEF.20309@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDEyIE1hcmNoIDIwMTUg
MTY6MTcNCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IE9uIDIwMTUtMDMtMTEgMTg6NDYsIFBhdWwg
RHVycmFudCB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbToNCj4g
Pj4gd2luLXB2LWRldmVsLWJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmcgW21haWx0bzp3aW4t
cHYtZGV2ZWwtDQo+ID4+IGJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmddIE9uIEJlaGFsZiBP
ZiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEwDQo+ID4+IE1hcmNoIDIwMTUgMjA6MTYgVG86IHdpbi1w
di1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0Og0KPiA+PiBSZTogW3dpbi1wdi1k
ZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdpbmRvd3MgUFYNCj4gPj4gRHJpdmVy
cw0KPiA+Pg0KPiA+IEhpLA0KPiA+DQo+ID4NCj4gPj4gSGksDQo+ID4NCj4gPiBJJ20gdW5hYmxl
IHRvIHByb3Blcmx5IHJlcGx5IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0IHN1YnNjcmliZWQN
Cj4gPiB0byB0aGlzIGxpc3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxh
c3QgbWVzc2FnZSBpcw0KPiA+IGhlcmU6DQo+ID4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2FyY2hpdmVzL2h0bWwvd2luLXB2LWRldmVsLzIwMTUtMDEvbXNnMDAwNg0KPiAwLg0KPiA+DQo+
ID4NCj4gaHRtbCkNCj4gPg0KPiA+DQo+ID4+IFllcywgSSB1bmRlcnN0YW5kOyBJIGp1c3Qgc2F3
IHlvdXIgc3Vic2NyaXB0aW9uIG1lc3NhZ2UgOi0pDQo+ID4NCj4gPiBGaXJzdCwgc29tZSBiYWNr
Z3JvdW5kIGFib3V0IG1lLiBJJ20gY3VycmVudGx5IHRoZSBtYWluIGFuZCBwcmV0dHkNCj4gPiBt
dWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5k
b3dzIGZvcg0KPiA+IFF1YmVzIE9TIChodHRwczovL3dpa2kucXViZXMtb3Mub3JnLykuIFNvbWUg
b2YgeW91IG1heSBoYXZlIGhlYXJkDQo+ID4gb2YgUXViZXMgLS0gaW4gc2hvcnQsIGl0J3MgYW4g
YXR0ZW1wdCBhdCBjcmVhdGluZyBhIHNlY3VyZSBPUyBiYXNlZA0KPiA+IG9uIGxpZ2h0d2VpZ2h0
IEFwcFZNcywgY3VycmVudGx5IHVzaW5nIExpbnV4L1hlbiBhcyBiYXNlLiBJdA0KPiA+IHN1cHBv
cnRzIFdpbmRvd3MgSFZNcyBhbmQgb3VyIGd1ZXN0IHRvb2xzIHByb3ZpZGUgaW50ZWdyYXRpb24g
d2l0aA0KPiA+IGRvbTAvb3RoZXIgZG9tVXMgKHNlcnZpY2VzIGxpa2UgZGF0YSB0cmFuc2Zlciwg
cmVtb3RlIGV4ZWN1dGlvbiwNCj4gPiBzZWFtbGVzcyBHVUkgZXhwZXJpZW5jZSBldGMpLg0KPiA+
DQo+ID4NCj4gPj4gQ29vbC4NCj4gPg0KPiA+IFdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFs
aXppbmcgdGhlIG5leHQgbWFqb3IgcmVsZWFzZSAocjMpIG9mDQo+ID4gUXViZXMsIGl0IHdpbGwg
dXNlIFhlbiA0LjQgaW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXINCj4gPiBXaW5k
b3dzIHRvb2xzLCB0aGV5IGFyZSAoY3VycmVudGx5KSB1c2luZyBQViBkcml2ZXJzIGJhc2VkIG9u
IEphbWVzDQo+ID4gSGFycGVyJ3MgY29kIGUuDQo+ID4NCj4gPiBPdXIgaW50ZXItVk0gY29tbXVu
aWNhdGlvbiBwcm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0LCB2Y2hhbg0KPiA+IG9yaWdpbmF0
ZXMgZnJvbSBvdXIgcGF0Y2ggYWNjZXB0ZWQgaW50byBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMN
Cj4gPiBhZ28pLiBJbiBRdWJlcyByMiB3ZSBoYXZlIGEgV2luZG93cyBsaWJ2Y2hhbiBpbXBsZW1l
bnRhdGlvbiwgYnV0IGFzDQo+ID4gc3RhdGVkIGFib3ZlLCBpdCB1c2VzIG9sZCBQViBkcml2ZXJz
IGludGVyZmFjZXMuIFlvdSBjYW4gZmluZCBpdA0KPiA+IGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuDQo+ID4NCj4gPiBUaGF0IGltcGxlbWVudGF0
aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuIGZ1bmN0aW9ucw0KPiA+IGFy
ZSBub3QgaW1wbGVtZW50ZWQuIEl0IGRpZG4ndCBtYXR0ZXIgZm9yIFF1YmVzIHIyLCB3aGVyZSBh
bGwNCj4gPiB2Y2hhbiBjb21tdW5pY2F0aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdh
eS4gSW4gUXViZXMgcjMNCj4gPiBob3dldmVyLCB3ZSBuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNl
IG9mIHJlZGVzaWduZWQgaW50ZXItVk0NCj4gPiBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRoYXQg
YWxsb3dzIGRpcmVjdCBWTS1WTSBjb21tdW5pY2F0aW9uIGFmdGVyDQo+ID4gZG9tMCBhcmJpdHJh
dGlvbi4NCj4gPg0KPiA+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24ndCBzZWVt
IHRvIGltcGxlbWVudCB0aGUgbmVlZGVkDQo+ID4ga2VybmVsIGludGVyZmFjZXMgZm9yIHRoYXQg
YXMgd2VsbC4NCj4gPg0KPiA+PiBJIGFzc3VtZSB5b3UgbWVhbiBncmFudCBtYXBwaW5nPyBPciBt
YXliZSBqdXN0IGdyYW50IGNvcHksIHNpbmNlDQo+ID4+IHRoYXQgd291bGQgYmUgc2FmZXI/DQo+
ID4NCj4gPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQViBkcml2ZXJzIHNvdXJjZXMgYmVm
b3JlLCBidXQgaXQgc2VlbXMNCj4gPiBJIHdpbGwgbmVlZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZv
dW5kIHRoZSBuZXcgUFYgZHJpdmVycyBhbmQgdGhpcw0KPiA+IG1haWxpbmcgbGlzdCwgZm91bmQg
dGhlIHRocmVhZCBhYm91dCB2Y2hhbiBpbXBsZW1lbnRhdGlvbi4uLiBhbmQNCj4gPiB0aGF0J3Mg
cHJldHR5IG11Y2ggaXQgZm9yIG5vdy4NCj4gPg0KPiA+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZl
IG11Y2ggZXhwZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0IG5lZWQNCj4gPiB0byB0aW5rZXIg
d2l0aCB0aGVtIGRpcmVjdGx5IGJlZm9yZSkuIEkgZG8sIGhvd2V2ZXIsIGhhdmUNCj4gPiBleHRl
bnNpdmUgV2luQVBJIGtub3dsZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3MgZHJp
dmVyDQo+ID4gZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QgdG9vbHMg
aXMgYSBjdXN0b20gZGlzcGxheQ0KPiA+IGRyaXZlciB0aGF0IGFsbG93cyBuby1jb3B5IHZpZGVv
IG1lbW9yeSBzaGFyaW5nIHdpdGggZG9tMCkuIEkNCj4gPiBtYW5hZ2VkIHRvIGJ1aWxkIHRoZSBu
ZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24gb3VyIGRldg0KPiA+IFF1YmVzIGJ1aWxk
IHNvb24uDQo+ID4NCj4gPiBTbywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGlu
IGRldmVsb3BpbmcgYSBXaW5kb3dzDQo+ID4gdmNoYW4gaW1wbGVtZW50YXRpb24gb24gdG9wIG9m
IHRoZSBuZXcgUFYgZHJpdmVycy4gSSdsbCBiZSByZWFkaW5nDQo+ID4gdGhyb3VnaCB0aGUgZHJp
dmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplIG15c2VsZg0KPiA+IHdp
dGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0byBnZXQgc29tZXRoaW5nIHdv
cmtpbmcsDQo+ID4gb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZSBrbm93Lg0KPiA+DQo+ID4NCj4g
Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRo
ZQ0KPiA+PiBYRU5CVVNfR05UVEFCIGludGVyZmFjZSB0byBkbyBncmFudCBtYXAvY29weSB0aGVu
IEkgZG9uJ3QgaW1hZ2luZQ0KPiA+PiBpdCB3aWxsIGJlIHRvbyBoYXJkLiBBZGRpbmcgc3VwcG9y
dCBmb3IgY29weSB3b3VsZCBiZSBlYXNpZXN0IGJ1dA0KPiA+PiBpdCB3b3VsZCBhbHNvIGJlIHBv
c3NpYmxlIHRvIGdyYW50IG1hcCBwYWdlcyBpbnRvIHRoZSBwbGF0Zm9ybQ0KPiA+PiBQQ0kgZGV2
aWNlJ3MgQkFSICh3aGljaCBpcyB3aGVyZSB0aGUgc2hhcmVkIGluZm8gcGFnZSBhbmQgdGhlDQo+
ID4+IGdyYW50IHRhYmxlIGl0c2VsZiBsaXZlKS4NCj4gPg0KPiA+PiBMZXQgbWUga25vdyBpZiBo
YXZlIGFueSBzcGVjaWZpYyBxdWVzdGlvbnMgb3IgbmVlZCBzb21lIGhlbHANCj4gPj4gZ2V0dGlu
ZyB0aGUgZHJpdmVycyBnb2luZyBpbiB5b3VyIGVudmlyb25tZW50Lg0KPiA+DQo+IEkndmUgdGVz
dGVkIHRoZSBkcml2ZXJzIG9uIGEgV2luNyBwcm8geDY0IEhWTSBvbiBRdWJlcyByMiAocjMgaXMg
c3RpbGwNCj4gYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJvdGggaW5zdGFs
bCBmaW5lLiBYZW52YmQNCj4gaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qg
d2l0aCBjb2RlIDdCIChpbmFjY2Vzc2libGUgYm9vdA0KPiBkZXZpY2UpLiBJJ2xsIHRyeSB0byBw
aW5wb2ludCB0aGUgZXhhY3QgZmFpbHVyZSBzcG90IG9uY2UgSSBzZXR1cCB0aGUNCj4gcHZkcml2
ZXJzIHNvdXJjZXMgaW5zaWRlIG15IGRldmVsb3BtZW50IFZNLg0KPiANCg0KMHg3QiBjYW4gb2Nj
dXIgaW4gbWFueSBjaXJjdW1zdGFuY2VzLiBUaGUgZHJpdmVycyBkbyBsb2cgcXVpdGUgYSBiaXQg
b2YgaW5mbywgcGFydGljdWxhcmx5IGluIGNoZWNrZWQgYnVpbGRzLCBzbyB0aGVyZSdsbCBwcm9i
YWJseSBiZSBzb21ldGhpbmcgdGhlcmUgdG8gaW5kaWNhdGUgdGhlIGV4YWN0IG5hdHVyZSBvZiB0
aGUgZmFpbHVyZS4gVGhlIG1haW4gaW5mb3JtYXRpb25hbCBsb2dnaW5nICh3aGljaCBpcyB0aGUg
c2FtZSBmb3IgZnJlZSBvciBjaGVja2VkIGJ1aWxkcykgaXMgd3JpdHRlbiB0byB0aGUgcWVtdSBs
b2dnaW5nIHBvcnQgKDB4MTIpIGFuZCBkZWJ1ZyBsb2dnaW5nIChjaGVja2VkIGJ1aWxkIG9ubHkp
IGdvZXMgdG8gdGhlIFhlbiBwb3J0ICgweEU5KS4gSWYgeW91IHdhdGNoIHdoZXJldmVyIHlvdSBo
YXZlIHRob3NlIHJlZGlyZWN0ZWQgdGhlbiB5b3UgbWF5IGJlIGFibGUgdG8gc3BvdCB0aGUgcHJv
YmxlbS4gSWYgeW91IGNhbid0IHRoZW4gcG9zdCB0aGVtIHRvIHRoZSBsaXN0IGFuZCBJJ2xsIHRh
a2UgYSBsb29rLg0KDQo+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRz
IGZvciBiYWNrZW5kIChYZW4vUWVtdQ0KPiB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2lu
ZyBRZW11IGluIGRvbTAsIG9ubHkgaW4gbWluaW1hbA0KPiBzdHViZG9tcyBmb3IgSFZNcywgc28g
dGhhdCBtYXkgYmUgYSBwcm9ibGVtLg0KPiANCg0KVGhhdCdzIG5vdCB1c3VhbGx5IGEgcHJvYmxl
bS4gRG8geW91IGhhdmUgUFYgYmFja2VuZHMgZm9yIGRpc2sgYW5kIG5ldCBzZXQgdXAgdGhvdWdo
PyBUaGUgZmFjdCB0aGF0IHlvdSBnb3QgYSAweDdCIGFmdGVyIGluc3RhbGxpbmcgeGVudmJkIG1h
eSBzaW1wbHkgbWVhbiB0aGF0IHlvdXIgdG9vbHN0YWNrIGhhcyBqdXN0IG5vdCBzZXQgdXAgYSBQ
ViBiYWNrZW5kLg0KDQogIFBhdWwNCg0KPiA+PiBDaGVlcnMsDQo+ID4NCj4gPj4gUGF1bA0KPiA+
DQo+ID4gQ2hlZXJzLA0KPiA+DQo+IC0gLS0NCj4gUmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRv
b2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0t
LQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFKVkFidnZBQW9KRUlXaTlyQjJHclc3aHhrSCt3YmtrcFlm
Y0JxY1VrdFdnN2pkTw0KPiBaemYNCj4gZmdKTXVSUlB3ZzZzb3RUK0VEdktSNEpzRG8yTWo0Nmph
dzhIQ3VldDVuY2ZNenI4ekNFSDBnU09Fb0hnOUQNCj4gWjgNCj4gZkpPdFV6a1pCZ2xZb2IrYlZu
MnpiVzFqTGQ4THJObnlneU1BUlV3NURHQ3B1c3FYS1ExbEY3MHNNc0FOdGkNCj4gMlINCj4gNEF5
bUhiamIyR3cyUmNrZ25jK0ZRbXVHYjgvOXpBVHFOQ1FMWnM1eUlZUTNrRTR2ZFZ0VHZqQVNLeWp6
NnINCj4gNUINCj4gRFZmQmtKOC9FWWdiSkJVb3NOQWxOZHFiMk1pa2VZQXE2K2E5NGU4a3ZaWGU5
NXBEamVaeHA2V1NDR0Rhc0kNCj4gTlENCj4gOWQxYUQ5NitKc1BpZENhaWZnY2JRUWlOTkk3aExW
NGErNEt1L2JsZm5YR0FDM3NNcXYraGM4YjQvNnQ4bUdzPQ0KPiA9VHNJZw0KPiAtLS0tLUVORCBQ
R1AgU0lHTkFUVVJFLS0tLS0NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4v
bGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 16:45:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 16:45:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6EP-0008Mp-BB; Thu, 12 Mar 2015 16:45:09 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YW6EO-0008Mf-TM
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 16:45:09 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	B2/D1-09646-492C1055; Thu, 12 Mar 2015 16:45:08 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1426178706!12339524!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6155 invoked from network); 12 Mar 2015 16:45:07 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 16:45:07 -0000
X-IronPort-AV: E=Sophos;i="5.11,389,1422921600"; d="scan'208";a="32831359"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUA==
Date: Thu, 12 Mar 2015 16:45:05 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
In-Reply-To: <5501BBEF.20309@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDEyIE1hcmNoIDIwMTUg
MTY6MTcNCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IE9uIDIwMTUtMDMtMTEgMTg6NDYsIFBhdWwg
RHVycmFudCB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbToNCj4g
Pj4gd2luLXB2LWRldmVsLWJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmcgW21haWx0bzp3aW4t
cHYtZGV2ZWwtDQo+ID4+IGJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmddIE9uIEJlaGFsZiBP
ZiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEwDQo+ID4+IE1hcmNoIDIwMTUgMjA6MTYgVG86IHdpbi1w
di1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0Og0KPiA+PiBSZTogW3dpbi1wdi1k
ZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdpbmRvd3MgUFYNCj4gPj4gRHJpdmVy
cw0KPiA+Pg0KPiA+IEhpLA0KPiA+DQo+ID4NCj4gPj4gSGksDQo+ID4NCj4gPiBJJ20gdW5hYmxl
IHRvIHByb3Blcmx5IHJlcGx5IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0IHN1YnNjcmliZWQN
Cj4gPiB0byB0aGlzIGxpc3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4gKGxh
c3QgbWVzc2FnZSBpcw0KPiA+IGhlcmU6DQo+ID4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2FyY2hpdmVzL2h0bWwvd2luLXB2LWRldmVsLzIwMTUtMDEvbXNnMDAwNg0KPiAwLg0KPiA+DQo+
ID4NCj4gaHRtbCkNCj4gPg0KPiA+DQo+ID4+IFllcywgSSB1bmRlcnN0YW5kOyBJIGp1c3Qgc2F3
IHlvdXIgc3Vic2NyaXB0aW9uIG1lc3NhZ2UgOi0pDQo+ID4NCj4gPiBGaXJzdCwgc29tZSBiYWNr
Z3JvdW5kIGFib3V0IG1lLiBJJ20gY3VycmVudGx5IHRoZSBtYWluIGFuZCBwcmV0dHkNCj4gPiBt
dWNoIHRoZSBvbmx5IGRldmVsb3Blci9tYWludGFpbmVyIG9mIGd1ZXN0IHRvb2xzIGZvciBXaW5k
b3dzIGZvcg0KPiA+IFF1YmVzIE9TIChodHRwczovL3dpa2kucXViZXMtb3Mub3JnLykuIFNvbWUg
b2YgeW91IG1heSBoYXZlIGhlYXJkDQo+ID4gb2YgUXViZXMgLS0gaW4gc2hvcnQsIGl0J3MgYW4g
YXR0ZW1wdCBhdCBjcmVhdGluZyBhIHNlY3VyZSBPUyBiYXNlZA0KPiA+IG9uIGxpZ2h0d2VpZ2h0
IEFwcFZNcywgY3VycmVudGx5IHVzaW5nIExpbnV4L1hlbiBhcyBiYXNlLiBJdA0KPiA+IHN1cHBv
cnRzIFdpbmRvd3MgSFZNcyBhbmQgb3VyIGd1ZXN0IHRvb2xzIHByb3ZpZGUgaW50ZWdyYXRpb24g
d2l0aA0KPiA+IGRvbTAvb3RoZXIgZG9tVXMgKHNlcnZpY2VzIGxpa2UgZGF0YSB0cmFuc2Zlciwg
cmVtb3RlIGV4ZWN1dGlvbiwNCj4gPiBzZWFtbGVzcyBHVUkgZXhwZXJpZW5jZSBldGMpLg0KPiA+
DQo+ID4NCj4gPj4gQ29vbC4NCj4gPg0KPiA+IFdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFs
aXppbmcgdGhlIG5leHQgbWFqb3IgcmVsZWFzZSAocjMpIG9mDQo+ID4gUXViZXMsIGl0IHdpbGwg
dXNlIFhlbiA0LjQgaW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXINCj4gPiBXaW5k
b3dzIHRvb2xzLCB0aGV5IGFyZSAoY3VycmVudGx5KSB1c2luZyBQViBkcml2ZXJzIGJhc2VkIG9u
IEphbWVzDQo+ID4gSGFycGVyJ3MgY29kIGUuDQo+ID4NCj4gPiBPdXIgaW50ZXItVk0gY29tbXVu
aWNhdGlvbiBwcm90b2NvbCB1c2VzIHZjaGFuIChpbiBmYWN0LCB2Y2hhbg0KPiA+IG9yaWdpbmF0
ZXMgZnJvbSBvdXIgcGF0Y2ggYWNjZXB0ZWQgaW50byBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMN
Cj4gPiBhZ28pLiBJbiBRdWJlcyByMiB3ZSBoYXZlIGEgV2luZG93cyBsaWJ2Y2hhbiBpbXBsZW1l
bnRhdGlvbiwgYnV0IGFzDQo+ID4gc3RhdGVkIGFib3ZlLCBpdCB1c2VzIG9sZCBQViBkcml2ZXJz
IGludGVyZmFjZXMuIFlvdSBjYW4gZmluZCBpdA0KPiA+IGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuDQo+ID4NCj4gPiBUaGF0IGltcGxlbWVudGF0
aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuIGZ1bmN0aW9ucw0KPiA+IGFy
ZSBub3QgaW1wbGVtZW50ZWQuIEl0IGRpZG4ndCBtYXR0ZXIgZm9yIFF1YmVzIHIyLCB3aGVyZSBh
bGwNCj4gPiB2Y2hhbiBjb21tdW5pY2F0aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdh
eS4gSW4gUXViZXMgcjMNCj4gPiBob3dldmVyLCB3ZSBuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNl
IG9mIHJlZGVzaWduZWQgaW50ZXItVk0NCj4gPiBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRoYXQg
YWxsb3dzIGRpcmVjdCBWTS1WTSBjb21tdW5pY2F0aW9uIGFmdGVyDQo+ID4gZG9tMCBhcmJpdHJh
dGlvbi4NCj4gPg0KPiA+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24ndCBzZWVt
IHRvIGltcGxlbWVudCB0aGUgbmVlZGVkDQo+ID4ga2VybmVsIGludGVyZmFjZXMgZm9yIHRoYXQg
YXMgd2VsbC4NCj4gPg0KPiA+PiBJIGFzc3VtZSB5b3UgbWVhbiBncmFudCBtYXBwaW5nPyBPciBt
YXliZSBqdXN0IGdyYW50IGNvcHksIHNpbmNlDQo+ID4+IHRoYXQgd291bGQgYmUgc2FmZXI/DQo+
ID4NCj4gPiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQViBkcml2ZXJzIHNvdXJjZXMgYmVm
b3JlLCBidXQgaXQgc2VlbXMNCj4gPiBJIHdpbGwgbmVlZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZv
dW5kIHRoZSBuZXcgUFYgZHJpdmVycyBhbmQgdGhpcw0KPiA+IG1haWxpbmcgbGlzdCwgZm91bmQg
dGhlIHRocmVhZCBhYm91dCB2Y2hhbiBpbXBsZW1lbnRhdGlvbi4uLiBhbmQNCj4gPiB0aGF0J3Mg
cHJldHR5IG11Y2ggaXQgZm9yIG5vdy4NCj4gPg0KPiA+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZl
IG11Y2ggZXhwZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0IG5lZWQNCj4gPiB0byB0aW5rZXIg
d2l0aCB0aGVtIGRpcmVjdGx5IGJlZm9yZSkuIEkgZG8sIGhvd2V2ZXIsIGhhdmUNCj4gPiBleHRl
bnNpdmUgV2luQVBJIGtub3dsZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3MgZHJp
dmVyDQo+ID4gZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QgdG9vbHMg
aXMgYSBjdXN0b20gZGlzcGxheQ0KPiA+IGRyaXZlciB0aGF0IGFsbG93cyBuby1jb3B5IHZpZGVv
IG1lbW9yeSBzaGFyaW5nIHdpdGggZG9tMCkuIEkNCj4gPiBtYW5hZ2VkIHRvIGJ1aWxkIHRoZSBu
ZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24gb3VyIGRldg0KPiA+IFF1YmVzIGJ1aWxk
IHNvb24uDQo+ID4NCj4gPiBTbywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGlu
IGRldmVsb3BpbmcgYSBXaW5kb3dzDQo+ID4gdmNoYW4gaW1wbGVtZW50YXRpb24gb24gdG9wIG9m
IHRoZSBuZXcgUFYgZHJpdmVycy4gSSdsbCBiZSByZWFkaW5nDQo+ID4gdGhyb3VnaCB0aGUgZHJp
dmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplIG15c2VsZg0KPiA+IHdp
dGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0byBnZXQgc29tZXRoaW5nIHdv
cmtpbmcsDQo+ID4gb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZSBrbm93Lg0KPiA+DQo+ID4NCj4g
Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRo
ZQ0KPiA+PiBYRU5CVVNfR05UVEFCIGludGVyZmFjZSB0byBkbyBncmFudCBtYXAvY29weSB0aGVu
IEkgZG9uJ3QgaW1hZ2luZQ0KPiA+PiBpdCB3aWxsIGJlIHRvbyBoYXJkLiBBZGRpbmcgc3VwcG9y
dCBmb3IgY29weSB3b3VsZCBiZSBlYXNpZXN0IGJ1dA0KPiA+PiBpdCB3b3VsZCBhbHNvIGJlIHBv
c3NpYmxlIHRvIGdyYW50IG1hcCBwYWdlcyBpbnRvIHRoZSBwbGF0Zm9ybQ0KPiA+PiBQQ0kgZGV2
aWNlJ3MgQkFSICh3aGljaCBpcyB3aGVyZSB0aGUgc2hhcmVkIGluZm8gcGFnZSBhbmQgdGhlDQo+
ID4+IGdyYW50IHRhYmxlIGl0c2VsZiBsaXZlKS4NCj4gPg0KPiA+PiBMZXQgbWUga25vdyBpZiBo
YXZlIGFueSBzcGVjaWZpYyBxdWVzdGlvbnMgb3IgbmVlZCBzb21lIGhlbHANCj4gPj4gZ2V0dGlu
ZyB0aGUgZHJpdmVycyBnb2luZyBpbiB5b3VyIGVudmlyb25tZW50Lg0KPiA+DQo+IEkndmUgdGVz
dGVkIHRoZSBkcml2ZXJzIG9uIGEgV2luNyBwcm8geDY0IEhWTSBvbiBRdWJlcyByMiAocjMgaXMg
c3RpbGwNCj4gYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJvdGggaW5zdGFs
bCBmaW5lLiBYZW52YmQNCj4gaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qg
d2l0aCBjb2RlIDdCIChpbmFjY2Vzc2libGUgYm9vdA0KPiBkZXZpY2UpLiBJJ2xsIHRyeSB0byBw
aW5wb2ludCB0aGUgZXhhY3QgZmFpbHVyZSBzcG90IG9uY2UgSSBzZXR1cCB0aGUNCj4gcHZkcml2
ZXJzIHNvdXJjZXMgaW5zaWRlIG15IGRldmVsb3BtZW50IFZNLg0KPiANCg0KMHg3QiBjYW4gb2Nj
dXIgaW4gbWFueSBjaXJjdW1zdGFuY2VzLiBUaGUgZHJpdmVycyBkbyBsb2cgcXVpdGUgYSBiaXQg
b2YgaW5mbywgcGFydGljdWxhcmx5IGluIGNoZWNrZWQgYnVpbGRzLCBzbyB0aGVyZSdsbCBwcm9i
YWJseSBiZSBzb21ldGhpbmcgdGhlcmUgdG8gaW5kaWNhdGUgdGhlIGV4YWN0IG5hdHVyZSBvZiB0
aGUgZmFpbHVyZS4gVGhlIG1haW4gaW5mb3JtYXRpb25hbCBsb2dnaW5nICh3aGljaCBpcyB0aGUg
c2FtZSBmb3IgZnJlZSBvciBjaGVja2VkIGJ1aWxkcykgaXMgd3JpdHRlbiB0byB0aGUgcWVtdSBs
b2dnaW5nIHBvcnQgKDB4MTIpIGFuZCBkZWJ1ZyBsb2dnaW5nIChjaGVja2VkIGJ1aWxkIG9ubHkp
IGdvZXMgdG8gdGhlIFhlbiBwb3J0ICgweEU5KS4gSWYgeW91IHdhdGNoIHdoZXJldmVyIHlvdSBo
YXZlIHRob3NlIHJlZGlyZWN0ZWQgdGhlbiB5b3UgbWF5IGJlIGFibGUgdG8gc3BvdCB0aGUgcHJv
YmxlbS4gSWYgeW91IGNhbid0IHRoZW4gcG9zdCB0aGVtIHRvIHRoZSBsaXN0IGFuZCBJJ2xsIHRh
a2UgYSBsb29rLg0KDQo+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRz
IGZvciBiYWNrZW5kIChYZW4vUWVtdQ0KPiB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2lu
ZyBRZW11IGluIGRvbTAsIG9ubHkgaW4gbWluaW1hbA0KPiBzdHViZG9tcyBmb3IgSFZNcywgc28g
dGhhdCBtYXkgYmUgYSBwcm9ibGVtLg0KPiANCg0KVGhhdCdzIG5vdCB1c3VhbGx5IGEgcHJvYmxl
bS4gRG8geW91IGhhdmUgUFYgYmFja2VuZHMgZm9yIGRpc2sgYW5kIG5ldCBzZXQgdXAgdGhvdWdo
PyBUaGUgZmFjdCB0aGF0IHlvdSBnb3QgYSAweDdCIGFmdGVyIGluc3RhbGxpbmcgeGVudmJkIG1h
eSBzaW1wbHkgbWVhbiB0aGF0IHlvdXIgdG9vbHN0YWNrIGhhcyBqdXN0IG5vdCBzZXQgdXAgYSBQ
ViBiYWNrZW5kLg0KDQogIFBhdWwNCg0KPiA+PiBDaGVlcnMsDQo+ID4NCj4gPj4gUGF1bA0KPiA+
DQo+ID4gQ2hlZXJzLA0KPiA+DQo+IC0gLS0NCj4gUmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRv
b2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0t
LQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFKVkFidnZBQW9KRUlXaTlyQjJHclc3aHhrSCt3YmtrcFlm
Y0JxY1VrdFdnN2pkTw0KPiBaemYNCj4gZmdKTXVSUlB3ZzZzb3RUK0VEdktSNEpzRG8yTWo0Nmph
dzhIQ3VldDVuY2ZNenI4ekNFSDBnU09Fb0hnOUQNCj4gWjgNCj4gZkpPdFV6a1pCZ2xZb2IrYlZu
MnpiVzFqTGQ4THJObnlneU1BUlV3NURHQ3B1c3FYS1ExbEY3MHNNc0FOdGkNCj4gMlINCj4gNEF5
bUhiamIyR3cyUmNrZ25jK0ZRbXVHYjgvOXpBVHFOQ1FMWnM1eUlZUTNrRTR2ZFZ0VHZqQVNLeWp6
NnINCj4gNUINCj4gRFZmQmtKOC9FWWdiSkJVb3NOQWxOZHFiMk1pa2VZQXE2K2E5NGU4a3ZaWGU5
NXBEamVaeHA2V1NDR0Rhc0kNCj4gTlENCj4gOWQxYUQ5NitKc1BpZENhaWZnY2JRUWlOTkk3aExW
NGErNEt1L2JsZm5YR0FDM3NNcXYraGM4YjQvNnQ4bUdzPQ0KPiA9VHNJZw0KPiAtLS0tLUVORCBQ
R1AgU0lHTkFUVVJFLS0tLS0NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4v
bGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 17:06:24 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 17:06:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6Yy-000465-Ot; Thu, 12 Mar 2015 17:06:24 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW6Yx-00045T-Gd
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 17:06:23 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	78/AB-28920-E87C1055; Thu, 12 Mar 2015 17:06:22 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1426179981!11503227!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16680 invoked from network); 12 Mar 2015 17:06:22 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-7.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 12 Mar 2015 17:06:22 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 2BF2E20870
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 13:06:19 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute5.internal (MEProxy); Thu, 12 Mar 2015 13:06:20 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=AJukEv2WbzYSd2a9AEaTVln
	5ek8=; b=B8YE61MepTxz8Xl0YIN0QAFzzwsXDMc3++4SRXcaqTCQSCTOqL8j8+O
	2pCcEPPDqSeNYKpxM0/eKSIACkUtbqppgbbhZ+7NLAF2wCFN4gwJeVB3hqv60mmJ
	pt4gbKsbNM6/Fl8WP0vFz8GzdjAZtAq+qy3Pde8niIfr3kIlWbi0=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=AJukEv2WbzYSd2a9AEaTVl
	n5ek8=; b=uuPbhSJ/9ihxc9nNqRkqLsRfwC0DKJLjMC83Ro2KlIUUa54GzDLntF
	ZkhqTdgcnzMTiMEQXTW08/WR+pA5Xl54YN4J8iZsdO7Tx5f9qzp9e9plDjAQ61gI
	oBiYfVDIDPU1d48a+GABh9ehyOI8ZVhykgMomIaWvZb4wKjeSs/eQ=
X-Sasl-enc: ynKhm/g8KYvfuScnYYeEqa6CMF1FF5cHG+R3wCkEF8sP 1426179980
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id E40806801B1;
	Thu, 12 Mar 2015 13:06:19 -0400 (EDT)
Message-ID: <5501C789.6030202@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 18:06:17 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
Content-Length: 9001
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTEyIDE3OjQ1LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206IFJhZmHFgiBXb2pkecWCYQo+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdz
bGFiLmNvbV0gU2VudDogMTIgTWFyY2ggMjAxNSAxNjoxNyAKPj4gVG86IFBhdWwgRHVycmFudDsg
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOgo+PiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQViBEcml2ZXJzCj4+
IAo+IE9uIDIwMTUtMDMtMTEgMTg6NDYsIFBhdWwgRHVycmFudCB3cm90ZToKPj4+Pj4gLS0tLS1P
cmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbTogCj4+Pj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnCj4+Pj4+IFttYWlsdG86d2luLXB2LWRldmVsLSBib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnXSBPbgo+Pj4+PiBCZWhhbGYgT2YgUmFmYWwgV29qZHlsYSBTZW50
OiAxMCBNYXJjaCAyMDE1IDIwOjE2IFRvOgo+Pj4+PiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcgU3ViamVjdDogUmU6Cj4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcgbGlidmNo
YW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWIAo+Pj4+PiBEcml2ZXJzCj4+Pj4+IAo+Pj4+IEhpLAo+
Pj4+IAo+Pj4+IAo+Pj4+PiBIaSwKPj4+PiAKPj4+PiBJJ20gdW5hYmxlIHRvIHByb3Blcmx5IHJl
cGx5IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0Cj4+Pj4gc3Vic2NyaWJlZCB0byB0aGlzIGxp
c3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4KPj4+PiAobGFzdCBtZXNzYWdl
IGlzIGhlcmU6IAo+Pj4+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1s
L3dpbi1wdi1kZXZlbC8yMDE1LTAxL21zZzAKMDA2Cj4KPj4+PiAKMC4KPj4+PiAKPj4+PiAKPiBo
dG1sKQo+Pj4+IAo+Pj4+IAo+Pj4+PiBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3Vy
IHN1YnNjcmlwdGlvbiBtZXNzYWdlCj4+Pj4+IDotKQo+Pj4+IAo+Pj4+IEZpcnN0LCBzb21lIGJh
Y2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kCj4+Pj4gcHJldHR5
IG11Y2ggdGhlIG9ubHkgZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vlc3QgdG9vbHMgZm9yCj4+
Pj4gV2luZG93cyBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5xdWJlcy1vcy5vcmcvKS4gU29t
ZSBvZgo+Pj4+IHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJlcyAtLSBpbiBzaG9ydCwgaXQncyBh
biBhdHRlbXB0IGF0Cj4+Pj4gY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFzZWQgb24gbGlnaHR3ZWln
aHQgQXBwVk1zLCBjdXJyZW50bHkKPj4+PiB1c2luZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQgc3Vw
cG9ydHMgV2luZG93cyBIVk1zIGFuZCBvdXIKPj4+PiBndWVzdCB0b29scyBwcm92aWRlIGludGVn
cmF0aW9uIHdpdGggZG9tMC9vdGhlciBkb21Vcwo+Pj4+IChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJh
bnNmZXIsIHJlbW90ZSBleGVjdXRpb24sIHNlYW1sZXNzIEdVSQo+Pj4+IGV4cGVyaWVuY2UgZXRj
KS4KPj4+PiAKPj4+PiAKPj4+Pj4gQ29vbC4KPj4+PiAKPj4+PiBXZSdyZSBpbiB0aGUgcHJvY2Vz
cyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UKPj4+PiAocjMpIG9mIFF1YmVz
LCBpdCB3aWxsIHVzZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLgo+Pj4+IEFzIGZv
ciBvdXIgV2luZG93cyB0b29scywgdGhleSBhcmUgKGN1cnJlbnRseSkgdXNpbmcgUFYKPj4+PiBk
cml2ZXJzIGJhc2VkIG9uIEphbWVzIEhhcnBlcidzIGNvZCBlLgo+Pj4+IAo+Pj4+IE91ciBpbnRl
ci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHVzZXMgdmNoYW4gKGluIGZhY3QsCj4+Pj4gdmNo
YW4gb3JpZ2luYXRlcyBmcm9tIG91ciBwYXRjaCBhY2NlcHRlZCBpbnRvIFhlbidzIHNvdXJjZSBh
Cj4+Pj4gZmV3IHllYXJzIGFnbykuIEluIFF1YmVzIHIyIHdlIGhhdmUgYSBXaW5kb3dzIGxpYnZj
aGFuCj4+Pj4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcyBzdGF0ZWQgYWJvdmUsIGl0IHVzZXMgb2xk
IFBWIGRyaXZlcnMKPj4+PiBpbnRlcmZhY2VzLiBZb3UgY2FuIGZpbmQgaXQgaGVyZToKPj4+PiBo
dHRwczovL2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1jb3JlLXZjaGFuLXhlbgo+Pj4+IAo+Pj4+
IFRoYXQgaW1wbGVtZW50YXRpb24gaGFzIG9uZSBiaWcgZmxhdzogY2xpZW50IHNpZGUgdmNoYW4K
Pj4+PiBmdW5jdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZC4gSXQgZGlkbid0IG1hdHRlciBmb3Ig
UXViZXMgcjIsCj4+Pj4gd2hlcmUgYWxsIHZjaGFuIGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0
aHJvdWdoIGRvbTAgYW55d2F5Lgo+Pj4+IEluIFF1YmVzIHIzIGhvd2V2ZXIsIHdlIG5lZWQgdGhh
dCB3b3JraW5nIGJlY2F1c2Ugb2YKPj4+PiByZWRlc2lnbmVkIGludGVyLVZNIGNvbW11bmljYXRp
b24gcHJvdG9jb2wgdGhhdCBhbGxvd3MgZGlyZWN0Cj4+Pj4gVk0tVk0gY29tbXVuaWNhdGlvbiBh
ZnRlciBkb20wIGFyYml0cmF0aW9uLgo+Pj4+IAo+Pj4+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3Mg
ZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0aGUKPj4+PiBuZWVkZWQga2VybmVsIGlu
dGVyZmFjZXMgZm9yIHRoYXQgYXMgd2VsbC4KPj4+PiAKPj4+Pj4gSSBhc3N1bWUgeW91IG1lYW4g
Z3JhbnQgbWFwcGluZz8gT3IgbWF5YmUganVzdCBncmFudCBjb3B5LAo+Pj4+PiBzaW5jZSB0aGF0
IHdvdWxkIGJlIHNhZmVyPwo+Pj4+IAo+Pj4+IEkgZGlkbid0IG5lZWQgdG8gbG9vayBpbnRvIFBW
IGRyaXZlcnMgc291cmNlcyBiZWZvcmUsIGJ1dCBpdAo+Pj4+IHNlZW1zIEkgd2lsbCBuZWVkIHRv
IGRvIHRoYXQgbm93IDopIEkgZm91bmQgdGhlIG5ldyBQVgo+Pj4+IGRyaXZlcnMgYW5kIHRoaXMg
bWFpbGluZyBsaXN0LCBmb3VuZCB0aGUgdGhyZWFkIGFib3V0IHZjaGFuCj4+Pj4gaW1wbGVtZW50
YXRpb24uLi4gYW5kIHRoYXQncyBwcmV0dHkgbXVjaCBpdCBmb3Igbm93Lgo+Pj4+IAo+Pj4+IEFz
IEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhwZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0
Cj4+Pj4gbmVlZCB0byB0aW5rZXIgd2l0aCB0aGVtIGRpcmVjdGx5IGJlZm9yZSkuIEkgZG8sIGhv
d2V2ZXIsCj4+Pj4gaGF2ZSBleHRlbnNpdmUgV2luQVBJIGtub3dsZWRnZSBhbmQgbW9kZXJhdGUg
YW1vdW50IG9mCj4+Pj4gV2luZG93cyBkcml2ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFy
dCBvZiBvdXIgZ3Vlc3QKPj4+PiB0b29scyBpcyBhIGN1c3RvbSBkaXNwbGF5IGRyaXZlciB0aGF0
IGFsbG93cyBuby1jb3B5IHZpZGVvCj4+Pj4gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4gSSBt
YW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcgZHJpdmVycwo+Pj4+IGFuZCB3aWxsIHRlc3QgdGhlbSBv
biBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uCj4+Pj4gCj4+Pj4gU28sIHRvIHN1bW1hcml6ZSwg
SSdtIHZlcnkgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEKPj4+PiBXaW5kb3dzIHZjaGFuIGlt
cGxlbWVudGF0aW9uIG9uIHRvcCBvZiB0aGUgbmV3IFBWIGRyaXZlcnMuCj4+Pj4gSSdsbCBiZSBy
ZWFkaW5nIHRocm91Z2ggdGhlIGRyaXZlciBzb3VyY2VzIGZvciBhIGJpdCBzdGlsbCB0bwo+Pj4+
IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBlbnZpcm9ubWVudC4gSWYgYW55b25lIG1hbmFn
ZWQgdG8KPj4+PiBnZXQgc29tZXRoaW5nIHdvcmtpbmcsIG9yIGp1c3QgaGFzIGlkZWFzLCBsZXQg
bWUga25vdy4KPj4+PiAKPj4+PiAKPj4+Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRpbmcg
dGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRoZSAKPj4+Pj4gWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2Ug
dG8gZG8gZ3JhbnQgbWFwL2NvcHkgdGhlbiBJIGRvbid0Cj4+Pj4+IGltYWdpbmUgaXQgd2lsbCBi
ZSB0b28gaGFyZC4gQWRkaW5nIHN1cHBvcnQgZm9yIGNvcHkgd291bGQKPj4+Pj4gYmUgZWFzaWVz
dCBidXQgaXQgd291bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAgcGFnZXMKPj4+Pj4g
aW50byB0aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAod2hpY2ggaXMgd2hlcmUgdGhlCj4+
Pj4+IHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudCB0YWJsZSBpdHNlbGYgbGl2ZSkuCj4+
Pj4gCj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9ucyBvciBu
ZWVkIHNvbWUKPj4+Pj4gaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52
aXJvbm1lbnQuCj4+Pj4gCj4gSSd2ZSB0ZXN0ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4
NjQgSFZNIG9uIFF1YmVzIHIyIChyMyBpcwo+IHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVuYnVz
IGFuZCB4ZW5pZmFjZSBib3RoIGluc3RhbGwgZmluZS4KPiBYZW52YmQgaW5zdGFsbHMgT0sgYnV0
IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qgd2l0aCBjb2RlIDdCCj4gKGluYWNjZXNzaWJsZSBib290
IGRldmljZSkuIEknbGwgdHJ5IHRvIHBpbnBvaW50IHRoZSBleGFjdCBmYWlsdXJlCj4gc3BvdCBv
bmNlIEkgc2V0dXAgdGhlIHB2ZHJpdmVycyBzb3VyY2VzIGluc2lkZSBteSBkZXZlbG9wbWVudCBW
TS4KPiAKPiAKPj4gMHg3QiBjYW4gb2NjdXIgaW4gbWFueSBjaXJjdW1zdGFuY2VzLiBUaGUgZHJp
dmVycyBkbyBsb2cgcXVpdGUgYQo+PiBiaXQgb2YgaW5mbywgcGFydGljdWxhcmx5IGluIGNoZWNr
ZWQgYnVpbGRzLCBzbyB0aGVyZSdsbCBwcm9iYWJseQo+PiBiZSBzb21ldGhpbmcgdGhlcmUgdG8g
aW5kaWNhdGUgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGUgZmFpbHVyZS4KPj4gVGhlIG1haW4gaW5m
b3JtYXRpb25hbCBsb2dnaW5nICh3aGljaCBpcyB0aGUgc2FtZSBmb3IgZnJlZSBvcgo+PiBjaGVj
a2VkIGJ1aWxkcykgaXMgd3JpdHRlbiB0byB0aGUgcWVtdSBsb2dnaW5nIHBvcnQgKDB4MTIpIGFu
ZAo+PiBkZWJ1ZyBsb2dnaW5nIChjaGVja2VkIGJ1aWxkIG9ubHkpIGdvZXMgdG8gdGhlIFhlbiBw
b3J0ICgweEU5KS4KPj4gSWYgeW91IHdhdGNoIHdoZXJldmVyIHlvdSBoYXZlIHRob3NlIHJlZGly
ZWN0ZWQgdGhlbiB5b3UgbWF5IGJlCj4+IGFibGUgdG8gc3BvdCB0aGUgcHJvYmxlbS4gSWYgeW91
IGNhbid0IHRoZW4gcG9zdCB0aGVtIHRvIHRoZSBsaXN0Cj4+IGFuZCBJJ2xsIHRha2UgYSBsb29r
Lgo+IAo+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGZvciBiYWNr
ZW5kIChYZW4vUWVtdSAKPiB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2luZyBRZW11IGlu
IGRvbTAsIG9ubHkgaW4gbWluaW1hbCAKPiBzdHViZG9tcyBmb3IgSFZNcywgc28gdGhhdCBtYXkg
YmUgYSBwcm9ibGVtLgo+IAo+IAo+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVtLiBEbyB5
b3UgaGF2ZSBQViBiYWNrZW5kcyBmb3IgZGlzawo+PiBhbmQgbmV0IHNldCB1cCB0aG91Z2g/IFRo
ZSBmYWN0IHRoYXQgeW91IGdvdCBhIDB4N0IgYWZ0ZXIKPj4gaW5zdGFsbGluZyB4ZW52YmQgbWF5
IHNpbXBseSBtZWFuIHRoYXQgeW91ciB0b29sc3RhY2sgaGFzIGp1c3QKPj4gbm90IHNldCB1cCBh
IFBWIGJhY2tlbmQuCldlIGRvIGhhdmUgYmFja2VuZHMgc2V0IHVwICh4ZW4tYmxrYmFjayBmb3Ig
dmJkKS4gSSdsbCBjaGVjayBpbiBkb20wCndoZXRoZXIgaXQgY3Jhc2hlcyBhZnRlciB0aGUgZGV2
aWNlIGdldHMgYXR0YWNoZWQgb3IgYmVmb3JlLgoKQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNv
bnZlcnNhdGlvbiwgaGUncyBvbmUgb2Ygb3VyIGNvcmUgYXJjaGl0ZWN0cwphbmQga25vd3MgbW9y
ZSBhYm91dCBiYWNrZW5kIHN0dWZmIHRoYW4gSSBkbyA6KQoKPiAKPj4gUGF1bAoKLSAtLSAKUmFm
YcWCIFdvamR5xYJhClF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3BlcgotLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQoKaVFFY0JBRUJBZ0FHQlFKVkFjZUpBQW9KRUlXaTlyQjJHclc3
QnQwSC8xUXZnUUkrSmNNaHhITWk0RFUxdjRFOAptNmZxQjFOeEQ4Yngyc0FsTXEyTmRNaml1Q0FL
ck9McUlScHBEMFgvaGcyM3Y0bm9LKytOMnpXaTZnNEV5VzJXCllENURNcGVhRmMzNTNjdk5OTkxa
YmFkRXU4clpsY2hwSllrQ1dtcVlFNm9Ua3RPMHQ0VWNZclhLd2d3T3l2RWoKQldDU2ovbUJtSjdL
WGRUK05MdDB5eTZ2alVVdFU3QTlKZnQ2RFFBOVJvMEJFWnFjc3pjUHozQTVsdmtmSVZzWApiSk5W
VXJvNjZOSWh3ajF3c1lGR2J1S013WmxJZTFLN1l4RTA1K0NGa3dOSURIRklBcHlZalBRVkFZSEVG
NWI5CktDK3oyZzVxTnNiOC9JUEZtK2VoSVhlY1d4VjArVE1HWitpajdwZGZYV3hwb3dUcFdNcERh
ZGNIc3JQeWtDQT0KPS83MDYKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 17:06:24 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 17:06:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6Yy-000465-Ot; Thu, 12 Mar 2015 17:06:24 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW6Yx-00045T-Gd
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 17:06:23 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
	78/AB-28920-E87C1055; Thu, 12 Mar 2015 17:06:22 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1426179981!11503227!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16680 invoked from network); 12 Mar 2015 17:06:22 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-7.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 12 Mar 2015 17:06:22 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 2BF2E20870
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 13:06:19 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute5.internal (MEProxy); Thu, 12 Mar 2015 13:06:20 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=AJukEv2WbzYSd2a9AEaTVln
	5ek8=; b=B8YE61MepTxz8Xl0YIN0QAFzzwsXDMc3++4SRXcaqTCQSCTOqL8j8+O
	2pCcEPPDqSeNYKpxM0/eKSIACkUtbqppgbbhZ+7NLAF2wCFN4gwJeVB3hqv60mmJ
	pt4gbKsbNM6/Fl8WP0vFz8GzdjAZtAq+qy3Pde8niIfr3kIlWbi0=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=AJukEv2WbzYSd2a9AEaTVl
	n5ek8=; b=uuPbhSJ/9ihxc9nNqRkqLsRfwC0DKJLjMC83Ro2KlIUUa54GzDLntF
	ZkhqTdgcnzMTiMEQXTW08/WR+pA5Xl54YN4J8iZsdO7Tx5f9qzp9e9plDjAQ61gI
	oBiYfVDIDPU1d48a+GABh9ehyOI8ZVhykgMomIaWvZb4wKjeSs/eQ=
X-Sasl-enc: ynKhm/g8KYvfuScnYYeEqa6CMF1FF5cHG+R3wCkEF8sP 1426179980
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id E40806801B1;
	Thu, 12 Mar 2015 13:06:19 -0400 (EDT)
Message-ID: <5501C789.6030202@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 18:06:17 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
Content-Length: 9001
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTEyIDE3OjQ1LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206IFJhZmHFgiBXb2pkecWCYQo+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdz
bGFiLmNvbV0gU2VudDogMTIgTWFyY2ggMjAxNSAxNjoxNyAKPj4gVG86IFBhdWwgRHVycmFudDsg
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOgo+PiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQViBEcml2ZXJzCj4+
IAo+IE9uIDIwMTUtMDMtMTEgMTg6NDYsIFBhdWwgRHVycmFudCB3cm90ZToKPj4+Pj4gLS0tLS1P
cmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbTogCj4+Pj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnCj4+Pj4+IFttYWlsdG86d2luLXB2LWRldmVsLSBib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnXSBPbgo+Pj4+PiBCZWhhbGYgT2YgUmFmYWwgV29qZHlsYSBTZW50
OiAxMCBNYXJjaCAyMDE1IDIwOjE2IFRvOgo+Pj4+PiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcgU3ViamVjdDogUmU6Cj4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcgbGlidmNo
YW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWIAo+Pj4+PiBEcml2ZXJzCj4+Pj4+IAo+Pj4+IEhpLAo+
Pj4+IAo+Pj4+IAo+Pj4+PiBIaSwKPj4+PiAKPj4+PiBJJ20gdW5hYmxlIHRvIHByb3Blcmx5IHJl
cGx5IHRvIHRoZSB0aHJlYWQgc2luY2UgSSBqdXN0Cj4+Pj4gc3Vic2NyaWJlZCB0byB0aGlzIGxp
c3QgYnV0IEkgZmlndXJlZCBpdCdzIHdvcnRoIGNoaW1pbmcgaW4KPj4+PiAobGFzdCBtZXNzYWdl
IGlzIGhlcmU6IAo+Pj4+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1s
L3dpbi1wdi1kZXZlbC8yMDE1LTAxL21zZzAKMDA2Cj4KPj4+PiAKMC4KPj4+PiAKPj4+PiAKPiBo
dG1sKQo+Pj4+IAo+Pj4+IAo+Pj4+PiBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3Vy
IHN1YnNjcmlwdGlvbiBtZXNzYWdlCj4+Pj4+IDotKQo+Pj4+IAo+Pj4+IEZpcnN0LCBzb21lIGJh
Y2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5kCj4+Pj4gcHJldHR5
IG11Y2ggdGhlIG9ubHkgZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vlc3QgdG9vbHMgZm9yCj4+
Pj4gV2luZG93cyBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5xdWJlcy1vcy5vcmcvKS4gU29t
ZSBvZgo+Pj4+IHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJlcyAtLSBpbiBzaG9ydCwgaXQncyBh
biBhdHRlbXB0IGF0Cj4+Pj4gY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFzZWQgb24gbGlnaHR3ZWln
aHQgQXBwVk1zLCBjdXJyZW50bHkKPj4+PiB1c2luZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQgc3Vw
cG9ydHMgV2luZG93cyBIVk1zIGFuZCBvdXIKPj4+PiBndWVzdCB0b29scyBwcm92aWRlIGludGVn
cmF0aW9uIHdpdGggZG9tMC9vdGhlciBkb21Vcwo+Pj4+IChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJh
bnNmZXIsIHJlbW90ZSBleGVjdXRpb24sIHNlYW1sZXNzIEdVSQo+Pj4+IGV4cGVyaWVuY2UgZXRj
KS4KPj4+PiAKPj4+PiAKPj4+Pj4gQ29vbC4KPj4+PiAKPj4+PiBXZSdyZSBpbiB0aGUgcHJvY2Vz
cyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UKPj4+PiAocjMpIG9mIFF1YmVz
LCBpdCB3aWxsIHVzZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLgo+Pj4+IEFzIGZv
ciBvdXIgV2luZG93cyB0b29scywgdGhleSBhcmUgKGN1cnJlbnRseSkgdXNpbmcgUFYKPj4+PiBk
cml2ZXJzIGJhc2VkIG9uIEphbWVzIEhhcnBlcidzIGNvZCBlLgo+Pj4+IAo+Pj4+IE91ciBpbnRl
ci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHVzZXMgdmNoYW4gKGluIGZhY3QsCj4+Pj4gdmNo
YW4gb3JpZ2luYXRlcyBmcm9tIG91ciBwYXRjaCBhY2NlcHRlZCBpbnRvIFhlbidzIHNvdXJjZSBh
Cj4+Pj4gZmV3IHllYXJzIGFnbykuIEluIFF1YmVzIHIyIHdlIGhhdmUgYSBXaW5kb3dzIGxpYnZj
aGFuCj4+Pj4gaW1wbGVtZW50YXRpb24sIGJ1dCBhcyBzdGF0ZWQgYWJvdmUsIGl0IHVzZXMgb2xk
IFBWIGRyaXZlcnMKPj4+PiBpbnRlcmZhY2VzLiBZb3UgY2FuIGZpbmQgaXQgaGVyZToKPj4+PiBo
dHRwczovL2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1jb3JlLXZjaGFuLXhlbgo+Pj4+IAo+Pj4+
IFRoYXQgaW1wbGVtZW50YXRpb24gaGFzIG9uZSBiaWcgZmxhdzogY2xpZW50IHNpZGUgdmNoYW4K
Pj4+PiBmdW5jdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZC4gSXQgZGlkbid0IG1hdHRlciBmb3Ig
UXViZXMgcjIsCj4+Pj4gd2hlcmUgYWxsIHZjaGFuIGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0
aHJvdWdoIGRvbTAgYW55d2F5Lgo+Pj4+IEluIFF1YmVzIHIzIGhvd2V2ZXIsIHdlIG5lZWQgdGhh
dCB3b3JraW5nIGJlY2F1c2Ugb2YKPj4+PiByZWRlc2lnbmVkIGludGVyLVZNIGNvbW11bmljYXRp
b24gcHJvdG9jb2wgdGhhdCBhbGxvd3MgZGlyZWN0Cj4+Pj4gVk0tVk0gY29tbXVuaWNhdGlvbiBh
ZnRlciBkb20wIGFyYml0cmF0aW9uLgo+Pj4+IAo+Pj4+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3Mg
ZHJpdmVycyBkb24ndCBzZWVtIHRvIGltcGxlbWVudCB0aGUKPj4+PiBuZWVkZWQga2VybmVsIGlu
dGVyZmFjZXMgZm9yIHRoYXQgYXMgd2VsbC4KPj4+PiAKPj4+Pj4gSSBhc3N1bWUgeW91IG1lYW4g
Z3JhbnQgbWFwcGluZz8gT3IgbWF5YmUganVzdCBncmFudCBjb3B5LAo+Pj4+PiBzaW5jZSB0aGF0
IHdvdWxkIGJlIHNhZmVyPwo+Pj4+IAo+Pj4+IEkgZGlkbid0IG5lZWQgdG8gbG9vayBpbnRvIFBW
IGRyaXZlcnMgc291cmNlcyBiZWZvcmUsIGJ1dCBpdAo+Pj4+IHNlZW1zIEkgd2lsbCBuZWVkIHRv
IGRvIHRoYXQgbm93IDopIEkgZm91bmQgdGhlIG5ldyBQVgo+Pj4+IGRyaXZlcnMgYW5kIHRoaXMg
bWFpbGluZyBsaXN0LCBmb3VuZCB0aGUgdGhyZWFkIGFib3V0IHZjaGFuCj4+Pj4gaW1wbGVtZW50
YXRpb24uLi4gYW5kIHRoYXQncyBwcmV0dHkgbXVjaCBpdCBmb3Igbm93Lgo+Pj4+IAo+Pj4+IEFz
IEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhwZXJpZW5jZSBpbiBYZW4gQVBJcyAoZGlkbid0
Cj4+Pj4gbmVlZCB0byB0aW5rZXIgd2l0aCB0aGVtIGRpcmVjdGx5IGJlZm9yZSkuIEkgZG8sIGhv
d2V2ZXIsCj4+Pj4gaGF2ZSBleHRlbnNpdmUgV2luQVBJIGtub3dsZWRnZSBhbmQgbW9kZXJhdGUg
YW1vdW50IG9mCj4+Pj4gV2luZG93cyBkcml2ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFy
dCBvZiBvdXIgZ3Vlc3QKPj4+PiB0b29scyBpcyBhIGN1c3RvbSBkaXNwbGF5IGRyaXZlciB0aGF0
IGFsbG93cyBuby1jb3B5IHZpZGVvCj4+Pj4gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4gSSBt
YW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcgZHJpdmVycwo+Pj4+IGFuZCB3aWxsIHRlc3QgdGhlbSBv
biBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uCj4+Pj4gCj4+Pj4gU28sIHRvIHN1bW1hcml6ZSwg
SSdtIHZlcnkgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEKPj4+PiBXaW5kb3dzIHZjaGFuIGlt
cGxlbWVudGF0aW9uIG9uIHRvcCBvZiB0aGUgbmV3IFBWIGRyaXZlcnMuCj4+Pj4gSSdsbCBiZSBy
ZWFkaW5nIHRocm91Z2ggdGhlIGRyaXZlciBzb3VyY2VzIGZvciBhIGJpdCBzdGlsbCB0bwo+Pj4+
IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBlbnZpcm9ubWVudC4gSWYgYW55b25lIG1hbmFn
ZWQgdG8KPj4+PiBnZXQgc29tZXRoaW5nIHdvcmtpbmcsIG9yIGp1c3QgaGFzIGlkZWFzLCBsZXQg
bWUga25vdy4KPj4+PiAKPj4+PiAKPj4+Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRpbmcg
dGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRoZSAKPj4+Pj4gWEVOQlVTX0dOVFRBQiBpbnRlcmZhY2Ug
dG8gZG8gZ3JhbnQgbWFwL2NvcHkgdGhlbiBJIGRvbid0Cj4+Pj4+IGltYWdpbmUgaXQgd2lsbCBi
ZSB0b28gaGFyZC4gQWRkaW5nIHN1cHBvcnQgZm9yIGNvcHkgd291bGQKPj4+Pj4gYmUgZWFzaWVz
dCBidXQgaXQgd291bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAgcGFnZXMKPj4+Pj4g
aW50byB0aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAod2hpY2ggaXMgd2hlcmUgdGhlCj4+
Pj4+IHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudCB0YWJsZSBpdHNlbGYgbGl2ZSkuCj4+
Pj4gCj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9ucyBvciBu
ZWVkIHNvbWUKPj4+Pj4gaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5nIGluIHlvdXIgZW52
aXJvbm1lbnQuCj4+Pj4gCj4gSSd2ZSB0ZXN0ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4
NjQgSFZNIG9uIFF1YmVzIHIyIChyMyBpcwo+IHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVuYnVz
IGFuZCB4ZW5pZmFjZSBib3RoIGluc3RhbGwgZmluZS4KPiBYZW52YmQgaW5zdGFsbHMgT0sgYnV0
IHRoZSBPUyBCU09EcyBvbiByZWJvb3Qgd2l0aCBjb2RlIDdCCj4gKGluYWNjZXNzaWJsZSBib290
IGRldmljZSkuIEknbGwgdHJ5IHRvIHBpbnBvaW50IHRoZSBleGFjdCBmYWlsdXJlCj4gc3BvdCBv
bmNlIEkgc2V0dXAgdGhlIHB2ZHJpdmVycyBzb3VyY2VzIGluc2lkZSBteSBkZXZlbG9wbWVudCBW
TS4KPiAKPiAKPj4gMHg3QiBjYW4gb2NjdXIgaW4gbWFueSBjaXJjdW1zdGFuY2VzLiBUaGUgZHJp
dmVycyBkbyBsb2cgcXVpdGUgYQo+PiBiaXQgb2YgaW5mbywgcGFydGljdWxhcmx5IGluIGNoZWNr
ZWQgYnVpbGRzLCBzbyB0aGVyZSdsbCBwcm9iYWJseQo+PiBiZSBzb21ldGhpbmcgdGhlcmUgdG8g
aW5kaWNhdGUgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGUgZmFpbHVyZS4KPj4gVGhlIG1haW4gaW5m
b3JtYXRpb25hbCBsb2dnaW5nICh3aGljaCBpcyB0aGUgc2FtZSBmb3IgZnJlZSBvcgo+PiBjaGVj
a2VkIGJ1aWxkcykgaXMgd3JpdHRlbiB0byB0aGUgcWVtdSBsb2dnaW5nIHBvcnQgKDB4MTIpIGFu
ZAo+PiBkZWJ1ZyBsb2dnaW5nIChjaGVja2VkIGJ1aWxkIG9ubHkpIGdvZXMgdG8gdGhlIFhlbiBw
b3J0ICgweEU5KS4KPj4gSWYgeW91IHdhdGNoIHdoZXJldmVyIHlvdSBoYXZlIHRob3NlIHJlZGly
ZWN0ZWQgdGhlbiB5b3UgbWF5IGJlCj4+IGFibGUgdG8gc3BvdCB0aGUgcHJvYmxlbS4gSWYgeW91
IGNhbid0IHRoZW4gcG9zdCB0aGVtIHRvIHRoZSBsaXN0Cj4+IGFuZCBJJ2xsIHRha2UgYSBsb29r
Lgo+IAo+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGZvciBiYWNr
ZW5kIChYZW4vUWVtdSAKPiB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2luZyBRZW11IGlu
IGRvbTAsIG9ubHkgaW4gbWluaW1hbCAKPiBzdHViZG9tcyBmb3IgSFZNcywgc28gdGhhdCBtYXkg
YmUgYSBwcm9ibGVtLgo+IAo+IAo+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVtLiBEbyB5
b3UgaGF2ZSBQViBiYWNrZW5kcyBmb3IgZGlzawo+PiBhbmQgbmV0IHNldCB1cCB0aG91Z2g/IFRo
ZSBmYWN0IHRoYXQgeW91IGdvdCBhIDB4N0IgYWZ0ZXIKPj4gaW5zdGFsbGluZyB4ZW52YmQgbWF5
IHNpbXBseSBtZWFuIHRoYXQgeW91ciB0b29sc3RhY2sgaGFzIGp1c3QKPj4gbm90IHNldCB1cCBh
IFBWIGJhY2tlbmQuCldlIGRvIGhhdmUgYmFja2VuZHMgc2V0IHVwICh4ZW4tYmxrYmFjayBmb3Ig
dmJkKS4gSSdsbCBjaGVjayBpbiBkb20wCndoZXRoZXIgaXQgY3Jhc2hlcyBhZnRlciB0aGUgZGV2
aWNlIGdldHMgYXR0YWNoZWQgb3IgYmVmb3JlLgoKQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNv
bnZlcnNhdGlvbiwgaGUncyBvbmUgb2Ygb3VyIGNvcmUgYXJjaGl0ZWN0cwphbmQga25vd3MgbW9y
ZSBhYm91dCBiYWNrZW5kIHN0dWZmIHRoYW4gSSBkbyA6KQoKPiAKPj4gUGF1bAoKLSAtLSAKUmFm
YcWCIFdvamR5xYJhClF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3BlcgotLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQoKaVFFY0JBRUJBZ0FHQlFKVkFjZUpBQW9KRUlXaTlyQjJHclc3
QnQwSC8xUXZnUUkrSmNNaHhITWk0RFUxdjRFOAptNmZxQjFOeEQ4Yngyc0FsTXEyTmRNaml1Q0FL
ck9McUlScHBEMFgvaGcyM3Y0bm9LKytOMnpXaTZnNEV5VzJXCllENURNcGVhRmMzNTNjdk5OTkxa
YmFkRXU4clpsY2hwSllrQ1dtcVlFNm9Ua3RPMHQ0VWNZclhLd2d3T3l2RWoKQldDU2ovbUJtSjdL
WGRUK05MdDB5eTZ2alVVdFU3QTlKZnQ2RFFBOVJvMEJFWnFjc3pjUHozQTVsdmtmSVZzWApiSk5W
VXJvNjZOSWh3ajF3c1lGR2J1S013WmxJZTFLN1l4RTA1K0NGa3dOSURIRklBcHlZalBRVkFZSEVG
NWI5CktDK3oyZzVxTnNiOC9JUEZtK2VoSVhlY1d4VjArVE1HWitpajdwZGZYV3hwb3dUcFdNcERh
ZGNIc3JQeWtDQT0KPS83MDYKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 17:09:15 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 17:09:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6bj-0004oE-CK; Thu, 12 Mar 2015 17:09:15 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YW6bi-0004nu-Ky
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 17:09:14 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
	02/0B-03399-938C1055; Thu, 12 Mar 2015 17:09:13 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1426180152!11375340!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21046 invoked from network); 12 Mar 2015 17:09:12 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 17:09:12 -0000
X-IronPort-AV: E=Sophos;i="5.11,390,1422921600"; d="scan'208";a="32832097"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoA=
Date: Thu, 12 Mar 2015 17:09:11 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
In-Reply-To: <5501C789.6030202@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTIgTWFyY2ggMjAxNSAxNzowNg0KPiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE1hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraQ0KPiBT
dWJqZWN0OiBSZTogW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdp
bmRvd3MgUFYgRHJpdmVycw0KPiANCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0t
LQ0KPiBIYXNoOiBTSEExDQo+IA0KPiBPbiAyMDE1LTAzLTEyIDE3OjQ1LCBQYXVsIER1cnJhbnQg
d3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIEZyb206IFJhZmHFgiBXb2pk
ecWCYQ0KPiA+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdzbGFiLmNvbV0gU2VudDogMTIg
TWFyY2ggMjAxNSAxNjoxNw0KPiA+PiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcgU3ViamVjdDogUmU6DQo+ID4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRp
bmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWIERyaXZlcnMNCj4gPj4NCj4gPiBPbiAy
MDE1LTAzLTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6DQo+ID4+Pj4+IC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tIEZyb206DQo+ID4+Pj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3Rz
LnhlbnByb2plY3Qub3JnDQo+ID4+Pj4+IFttYWlsdG86d2luLXB2LWRldmVsLSBib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnXSBPbg0KPiA+Pj4+PiBCZWhhbGYgT2YgUmFmYWwgV29qZHlsYSBT
ZW50OiAxMCBNYXJjaCAyMDE1IDIwOjE2IFRvOg0KPiA+Pj4+PiB3aW4tcHYtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcgU3ViamVjdDogUmU6DQo+ID4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRp
bmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWDQo+ID4+Pj4+IERyaXZlcnMNCj4gPj4+
Pj4NCj4gPj4+PiBIaSwNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4+IEhpLA0KPiA+Pj4+DQo+ID4+
Pj4gSSdtIHVuYWJsZSB0byBwcm9wZXJseSByZXBseSB0byB0aGUgdGhyZWFkIHNpbmNlIEkganVz
dA0KPiA+Pj4+IHN1YnNjcmliZWQgdG8gdGhpcyBsaXN0IGJ1dCBJIGZpZ3VyZWQgaXQncyB3b3J0
aCBjaGltaW5nIGluDQo+ID4+Pj4gKGxhc3QgbWVzc2FnZSBpcyBoZXJlOg0KPiA+Pj4+IGh0dHA6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3dpbi1wdi1kZXZlbC8yMDE1LTAx
L21zZzANCj4gMDA2DQo+ID4NCj4gPj4+Pg0KPiAwLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPiBodG1s
KQ0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gWWVzLCBJIHVuZGVyc3RhbmQ7IEkganVzdCBzYXcg
eW91ciBzdWJzY3JpcHRpb24gbWVzc2FnZQ0KPiA+Pj4+PiA6LSkNCj4gPj4+Pg0KPiA+Pj4+IEZp
cnN0LCBzb21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5k
DQo+ID4+Pj4gcHJldHR5IG11Y2ggdGhlIG9ubHkgZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vl
c3QgdG9vbHMgZm9yDQo+ID4+Pj4gV2luZG93cyBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5x
dWJlcy1vcy5vcmcvKS4gU29tZSBvZg0KPiA+Pj4+IHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJl
cyAtLSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0DQo+ID4+Pj4gY3JlYXRpbmcgYSBzZWN1
cmUgT1MgYmFzZWQgb24gbGlnaHR3ZWlnaHQgQXBwVk1zLCBjdXJyZW50bHkNCj4gPj4+PiB1c2lu
ZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQgc3VwcG9ydHMgV2luZG93cyBIVk1zIGFuZCBvdXINCj4g
Pj4+PiBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlciBkb21V
cw0KPiA+Pj4+IChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJhbnNmZXIsIHJlbW90ZSBleGVjdXRpb24s
IHNlYW1sZXNzIEdVSQ0KPiA+Pj4+IGV4cGVyaWVuY2UgZXRjKS4NCj4gPj4+Pg0KPiA+Pj4+DQo+
ID4+Pj4+IENvb2wuDQo+ID4+Pj4NCj4gPj4+PiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5h
bGl6aW5nIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UNCj4gPj4+PiAocjMpIG9mIFF1YmVzLCBpdCB3
aWxsIHVzZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLg0KPiA+Pj4+IEFzIGZvciBv
dXIgV2luZG93cyB0b29scywgdGhleSBhcmUgKGN1cnJlbnRseSkgdXNpbmcgUFYNCj4gPj4+PiBk
cml2ZXJzIGJhc2VkIG9uIEphbWVzIEhhcnBlcidzIGNvZCBlLg0KPiA+Pj4+DQo+ID4+Pj4gT3Vy
IGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hhbiAoaW4gZmFjdCwNCj4g
Pj4+PiB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mg
c291cmNlIGENCj4gPj4+PiBmZXcgeWVhcnMgYWdvKS4gSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdp
bmRvd3MgbGlidmNoYW4NCj4gPj4+PiBpbXBsZW1lbnRhdGlvbiwgYnV0IGFzIHN0YXRlZCBhYm92
ZSwgaXQgdXNlcyBvbGQgUFYgZHJpdmVycw0KPiA+Pj4+IGludGVyZmFjZXMuIFlvdSBjYW4gZmlu
ZCBpdCBoZXJlOg0KPiA+Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUt
dmNoYW4teGVuDQo+ID4+Pj4NCj4gPj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmln
IGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuDQo+ID4+Pj4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVt
ZW50ZWQuIEl0IGRpZG4ndCBtYXR0ZXIgZm9yIFF1YmVzIHIyLA0KPiA+Pj4+IHdoZXJlIGFsbCB2
Y2hhbiBjb21tdW5pY2F0aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdheS4NCj4gPj4+
PiBJbiBRdWJlcyByMyBob3dldmVyLCB3ZSBuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNlIG9mDQo+
ID4+Pj4gcmVkZXNpZ25lZCBpbnRlci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRoYXQgYWxs
b3dzIGRpcmVjdA0KPiA+Pj4+IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXIgZG9tMCBhcmJpdHJh
dGlvbi4NCj4gPj4+Pg0KPiA+Pj4+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24n
dCBzZWVtIHRvIGltcGxlbWVudCB0aGUNCj4gPj4+PiBuZWVkZWQga2VybmVsIGludGVyZmFjZXMg
Zm9yIHRoYXQgYXMgd2VsbC4NCj4gPj4+Pg0KPiA+Pj4+PiBJIGFzc3VtZSB5b3UgbWVhbiBncmFu
dCBtYXBwaW5nPyBPciBtYXliZSBqdXN0IGdyYW50IGNvcHksDQo+ID4+Pj4+IHNpbmNlIHRoYXQg
d291bGQgYmUgc2FmZXI/DQo+ID4+Pj4NCj4gPj4+PiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50
byBQViBkcml2ZXJzIHNvdXJjZXMgYmVmb3JlLCBidXQgaXQNCj4gPj4+PiBzZWVtcyBJIHdpbGwg
bmVlZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZvdW5kIHRoZSBuZXcgUFYNCj4gPj4+PiBkcml2ZXJz
IGFuZCB0aGlzIG1haWxpbmcgbGlzdCwgZm91bmQgdGhlIHRocmVhZCBhYm91dCB2Y2hhbg0KPiA+
Pj4+IGltcGxlbWVudGF0aW9uLi4uIGFuZCB0aGF0J3MgcHJldHR5IG11Y2ggaXQgZm9yIG5vdy4N
Cj4gPj4+Pg0KPiA+Pj4+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhwZXJpZW5jZSBp
biBYZW4gQVBJcyAoZGlkbid0DQo+ID4+Pj4gbmVlZCB0byB0aW5rZXIgd2l0aCB0aGVtIGRpcmVj
dGx5IGJlZm9yZSkuIEkgZG8sIGhvd2V2ZXIsDQo+ID4+Pj4gaGF2ZSBleHRlbnNpdmUgV2luQVBJ
IGtub3dsZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mDQo+ID4+Pj4gV2luZG93cyBkcml2ZXIg
ZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QNCj4gPj4+PiB0b29scyBp
cyBhIGN1c3RvbSBkaXNwbGF5IGRyaXZlciB0aGF0IGFsbG93cyBuby1jb3B5IHZpZGVvDQo+ID4+
Pj4gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4gSSBtYW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcg
ZHJpdmVycw0KPiA+Pj4+IGFuZCB3aWxsIHRlc3QgdGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxk
IHNvb24uDQo+ID4+Pj4NCj4gPj4+PiBTbywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVz
dGVkIGluIGRldmVsb3BpbmcgYQ0KPiA+Pj4+IFdpbmRvd3MgdmNoYW4gaW1wbGVtZW50YXRpb24g
b24gdG9wIG9mIHRoZSBuZXcgUFYgZHJpdmVycy4NCj4gPj4+PiBJJ2xsIGJlIHJlYWRpbmcgdGhy
b3VnaCB0aGUgZHJpdmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvDQo+ID4+Pj4gZmFtaWxp
YXJpemUgbXlzZWxmIHdpdGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0bw0K
PiA+Pj4+IGdldCBzb21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZSBr
bm93Lg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRp
bmcgdGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRoZQ0KPiA+Pj4+PiBYRU5CVVNfR05UVEFCIGludGVy
ZmFjZSB0byBkbyBncmFudCBtYXAvY29weSB0aGVuIEkgZG9uJ3QNCj4gPj4+Pj4gaW1hZ2luZSBp
dCB3aWxsIGJlIHRvbyBoYXJkLiBBZGRpbmcgc3VwcG9ydCBmb3IgY29weSB3b3VsZA0KPiA+Pj4+
PiBiZSBlYXNpZXN0IGJ1dCBpdCB3b3VsZCBhbHNvIGJlIHBvc3NpYmxlIHRvIGdyYW50IG1hcCBw
YWdlcw0KPiA+Pj4+PiBpbnRvIHRoZSBwbGF0Zm9ybSBQQ0kgZGV2aWNlJ3MgQkFSICh3aGljaCBp
cyB3aGVyZSB0aGUNCj4gPj4+Pj4gc2hhcmVkIGluZm8gcGFnZSBhbmQgdGhlIGdyYW50IHRhYmxl
IGl0c2VsZiBsaXZlKS4NCj4gPj4+Pg0KPiA+Pj4+PiBMZXQgbWUga25vdyBpZiBoYXZlIGFueSBz
cGVjaWZpYyBxdWVzdGlvbnMgb3IgbmVlZCBzb21lDQo+ID4+Pj4+IGhlbHAgZ2V0dGluZyB0aGUg
ZHJpdmVycyBnb2luZyBpbiB5b3VyIGVudmlyb25tZW50Lg0KPiA+Pj4+DQo+ID4gSSd2ZSB0ZXN0
ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4NjQgSFZNIG9uIFF1YmVzIHIyIChyMyBpcw0K
PiA+IHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVuYnVzIGFuZCB4ZW5pZmFjZSBib3RoIGluc3Rh
bGwgZmluZS4NCj4gPiBYZW52YmQgaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJv
b3Qgd2l0aCBjb2RlIDdCDQo+ID4gKGluYWNjZXNzaWJsZSBib290IGRldmljZSkuIEknbGwgdHJ5
IHRvIHBpbnBvaW50IHRoZSBleGFjdCBmYWlsdXJlDQo+ID4gc3BvdCBvbmNlIEkgc2V0dXAgdGhl
IHB2ZHJpdmVycyBzb3VyY2VzIGluc2lkZSBteSBkZXZlbG9wbWVudCBWTS4NCj4gPg0KPiA+DQo+
ID4+IDB4N0IgY2FuIG9jY3VyIGluIG1hbnkgY2lyY3Vtc3RhbmNlcy4gVGhlIGRyaXZlcnMgZG8g
bG9nIHF1aXRlIGENCj4gPj4gYml0IG9mIGluZm8sIHBhcnRpY3VsYXJseSBpbiBjaGVja2VkIGJ1
aWxkcywgc28gdGhlcmUnbGwgcHJvYmFibHkNCj4gPj4gYmUgc29tZXRoaW5nIHRoZXJlIHRvIGlu
ZGljYXRlIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIGZhaWx1cmUuDQo+ID4+IFRoZSBtYWluIGlu
Zm9ybWF0aW9uYWwgbG9nZ2luZyAod2hpY2ggaXMgdGhlIHNhbWUgZm9yIGZyZWUgb3INCj4gPj4g
Y2hlY2tlZCBidWlsZHMpIGlzIHdyaXR0ZW4gdG8gdGhlIHFlbXUgbG9nZ2luZyBwb3J0ICgweDEy
KSBhbmQNCj4gPj4gZGVidWcgbG9nZ2luZyAoY2hlY2tlZCBidWlsZCBvbmx5KSBnb2VzIHRvIHRo
ZSBYZW4gcG9ydCAoMHhFOSkuDQo+ID4+IElmIHlvdSB3YXRjaCB3aGVyZXZlciB5b3UgaGF2ZSB0
aG9zZSByZWRpcmVjdGVkIHRoZW4geW91IG1heSBiZQ0KPiA+PiBhYmxlIHRvIHNwb3QgdGhlIHBy
b2JsZW0uIElmIHlvdSBjYW4ndCB0aGVuIHBvc3QgdGhlbSB0byB0aGUgbGlzdA0KPiA+PiBhbmQg
SSdsbCB0YWtlIGEgbG9vay4NCj4gPg0KPiA+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMg
cmVxdWlyZW1lbnRzIGZvciBiYWNrZW5kIChYZW4vUWVtdQ0KPiA+IHZlcnNpb24pPyBXZSdyZSBu
b3QgcmVhbGx5IHVzaW5nIFFlbXUgaW4gZG9tMCwgb25seSBpbiBtaW5pbWFsDQo+ID4gc3R1YmRv
bXMgZm9yIEhWTXMsIHNvIHRoYXQgbWF5IGJlIGEgcHJvYmxlbS4NCj4gPg0KPiA+DQo+ID4+IFRo
YXQncyBub3QgdXN1YWxseSBhIHByb2JsZW0uIERvIHlvdSBoYXZlIFBWIGJhY2tlbmRzIGZvciBk
aXNrDQo+ID4+IGFuZCBuZXQgc2V0IHVwIHRob3VnaD8gVGhlIGZhY3QgdGhhdCB5b3UgZ290IGEg
MHg3QiBhZnRlcg0KPiA+PiBpbnN0YWxsaW5nIHhlbnZiZCBtYXkgc2ltcGx5IG1lYW4gdGhhdCB5
b3VyIHRvb2xzdGFjayBoYXMganVzdA0KPiA+PiBub3Qgc2V0IHVwIGEgUFYgYmFja2VuZC4NCj4g
V2UgZG8gaGF2ZSBiYWNrZW5kcyBzZXQgdXAgKHhlbi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNo
ZWNrIGluIGRvbTANCj4gd2hldGhlciBpdCBjcmFzaGVzIGFmdGVyIHRoZSBkZXZpY2UgZ2V0cyBh
dHRhY2hlZCBvciBiZWZvcmUuDQo+IA0KDQpPay4gSSBtdXN0IGFkbWl0IHRoYXQgSSB0ZW5kIHRv
IHVzZSBxZGlzayBhcyBhIGJhY2tlbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nLCBidXQgYmxrYmFj
ayBzaG91bGQgYmUgZmluZS4gSSdsbCBzYW5pdHkgY2hlY2sgaXQgbXlzZWxmIHdoZW4gSSBnZXQg
dGltZSB0aG91Z2guDQoNCj4gQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNvbnZlcnNhdGlvbiwg
aGUncyBvbmUgb2Ygb3VyIGNvcmUgYXJjaGl0ZWN0cw0KPiBhbmQga25vd3MgbW9yZSBhYm91dCBi
YWNrZW5kIHN0dWZmIHRoYW4gSSBkbyA6KQ0KPiANCg0KQ29vbC4NCg0KICBQYXVsDQoNCj4gPg0K
PiA+PiBQYXVsDQo+IA0KPiAtIC0tDQo+IFJhZmHFgiBXb2pkecWCYQ0KPiBRdWJlcyBUb29scyBm
b3IgV2luZG93cyBkZXZlbG9wZXINCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0NCj4g
DQo+IGlRRWNCQUVCQWdBR0JRSlZBY2VKQUFvSkVJV2k5ckIyR3JXN0J0MEgvMVF2Z1FJK0pjTWh4
SE1pNERVMXYNCj4gNEU4DQo+IG02ZnFCMU54RDhieDJzQWxNcTJOZE1qaXVDQUtyT0xxSVJwcEQw
WC9oZzIzdjRub0srK04yeldpNmc0RXkNCj4gVzJXDQo+IFlENURNcGVhRmMzNTNjdk5OTkxaYmFk
RXU4clpsY2hwSllrQ1dtcVlFNm9Ua3RPMHQ0VWNZclhLd2d3T3kNCj4gdkVqDQo+IEJXQ1NqL21C
bUo3S1hkVCtOTHQweXk2dmpVVXRVN0E5SmZ0NkRRQTlSbzBCRVpxY3N6Y1B6M0E1bHZrZklWc1gN
Cj4gYkpOVlVybzY2Tklod2oxd3NZRkdidUtNd1psSWUxSzdZeEUwNStDRmt3TklESEZJQXB5WWpQ
UVZBWUhFRg0KPiA1YjkNCj4gS0MrejJnNXFOc2I4L0lQRm0rZWhJWGVjV3hWMCtUTUdaK2lqN3Bk
ZlhXeHBvd1RwV01wRGFkY0hzclB5DQo+IGtDQT0NCj4gPS83MDYNCj4gLS0tLS1FTkQgUEdQIFNJ
R05BVFVSRS0tLS0tDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJp
bi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Nn
aS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 17:09:15 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 17:09:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW6bj-0004oE-CK; Thu, 12 Mar 2015 17:09:15 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YW6bi-0004nu-Ky
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 17:09:14 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
	02/0B-03399-938C1055; Thu, 12 Mar 2015 17:09:13 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1426180152!11375340!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21046 invoked from network); 12 Mar 2015 17:09:12 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	12 Mar 2015 17:09:12 -0000
X-IronPort-AV: E=Sophos;i="5.11,390,1422921600"; d="scan'208";a="32832097"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoA=
Date: Thu, 12 Mar 2015 17:09:11 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
In-Reply-To: <5501C789.6030202@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTIgTWFyY2ggMjAxNSAxNzowNg0KPiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE1hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraQ0KPiBT
dWJqZWN0OiBSZTogW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdp
bmRvd3MgUFYgRHJpdmVycw0KPiANCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0t
LQ0KPiBIYXNoOiBTSEExDQo+IA0KPiBPbiAyMDE1LTAzLTEyIDE3OjQ1LCBQYXVsIER1cnJhbnQg
d3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIEZyb206IFJhZmHFgiBXb2pk
ecWCYQ0KPiA+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdzbGFiLmNvbV0gU2VudDogMTIg
TWFyY2ggMjAxNSAxNjoxNw0KPiA+PiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcgU3ViamVjdDogUmU6DQo+ID4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRp
bmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWIERyaXZlcnMNCj4gPj4NCj4gPiBPbiAy
MDE1LTAzLTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6DQo+ID4+Pj4+IC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tIEZyb206DQo+ID4+Pj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3Rz
LnhlbnByb2plY3Qub3JnDQo+ID4+Pj4+IFttYWlsdG86d2luLXB2LWRldmVsLSBib3VuY2VzQGxp
c3RzLnhlbnByb2plY3Qub3JnXSBPbg0KPiA+Pj4+PiBCZWhhbGYgT2YgUmFmYWwgV29qZHlsYSBT
ZW50OiAxMCBNYXJjaCAyMDE1IDIwOjE2IFRvOg0KPiA+Pj4+PiB3aW4tcHYtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcgU3ViamVjdDogUmU6DQo+ID4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRp
bmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzIFBWDQo+ID4+Pj4+IERyaXZlcnMNCj4gPj4+
Pj4NCj4gPj4+PiBIaSwNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4+IEhpLA0KPiA+Pj4+DQo+ID4+
Pj4gSSdtIHVuYWJsZSB0byBwcm9wZXJseSByZXBseSB0byB0aGUgdGhyZWFkIHNpbmNlIEkganVz
dA0KPiA+Pj4+IHN1YnNjcmliZWQgdG8gdGhpcyBsaXN0IGJ1dCBJIGZpZ3VyZWQgaXQncyB3b3J0
aCBjaGltaW5nIGluDQo+ID4+Pj4gKGxhc3QgbWVzc2FnZSBpcyBoZXJlOg0KPiA+Pj4+IGh0dHA6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3dpbi1wdi1kZXZlbC8yMDE1LTAx
L21zZzANCj4gMDA2DQo+ID4NCj4gPj4+Pg0KPiAwLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPiBodG1s
KQ0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gWWVzLCBJIHVuZGVyc3RhbmQ7IEkganVzdCBzYXcg
eW91ciBzdWJzY3JpcHRpb24gbWVzc2FnZQ0KPiA+Pj4+PiA6LSkNCj4gPj4+Pg0KPiA+Pj4+IEZp
cnN0LCBzb21lIGJhY2tncm91bmQgYWJvdXQgbWUuIEknbSBjdXJyZW50bHkgdGhlIG1haW4gYW5k
DQo+ID4+Pj4gcHJldHR5IG11Y2ggdGhlIG9ubHkgZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vl
c3QgdG9vbHMgZm9yDQo+ID4+Pj4gV2luZG93cyBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5x
dWJlcy1vcy5vcmcvKS4gU29tZSBvZg0KPiA+Pj4+IHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJl
cyAtLSBpbiBzaG9ydCwgaXQncyBhbiBhdHRlbXB0IGF0DQo+ID4+Pj4gY3JlYXRpbmcgYSBzZWN1
cmUgT1MgYmFzZWQgb24gbGlnaHR3ZWlnaHQgQXBwVk1zLCBjdXJyZW50bHkNCj4gPj4+PiB1c2lu
ZyBMaW51eC9YZW4gYXMgYmFzZS4gSXQgc3VwcG9ydHMgV2luZG93cyBIVk1zIGFuZCBvdXINCj4g
Pj4+PiBndWVzdCB0b29scyBwcm92aWRlIGludGVncmF0aW9uIHdpdGggZG9tMC9vdGhlciBkb21V
cw0KPiA+Pj4+IChzZXJ2aWNlcyBsaWtlIGRhdGEgdHJhbnNmZXIsIHJlbW90ZSBleGVjdXRpb24s
IHNlYW1sZXNzIEdVSQ0KPiA+Pj4+IGV4cGVyaWVuY2UgZXRjKS4NCj4gPj4+Pg0KPiA+Pj4+DQo+
ID4+Pj4+IENvb2wuDQo+ID4+Pj4NCj4gPj4+PiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5h
bGl6aW5nIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UNCj4gPj4+PiAocjMpIG9mIFF1YmVzLCBpdCB3
aWxsIHVzZSBYZW4gNC40IGluc3RlYWQgb2YgcjIncyBYZW4gNC4xLg0KPiA+Pj4+IEFzIGZvciBv
dXIgV2luZG93cyB0b29scywgdGhleSBhcmUgKGN1cnJlbnRseSkgdXNpbmcgUFYNCj4gPj4+PiBk
cml2ZXJzIGJhc2VkIG9uIEphbWVzIEhhcnBlcidzIGNvZCBlLg0KPiA+Pj4+DQo+ID4+Pj4gT3Vy
IGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hhbiAoaW4gZmFjdCwNCj4g
Pj4+PiB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFjY2VwdGVkIGludG8gWGVuJ3Mg
c291cmNlIGENCj4gPj4+PiBmZXcgeWVhcnMgYWdvKS4gSW4gUXViZXMgcjIgd2UgaGF2ZSBhIFdp
bmRvd3MgbGlidmNoYW4NCj4gPj4+PiBpbXBsZW1lbnRhdGlvbiwgYnV0IGFzIHN0YXRlZCBhYm92
ZSwgaXQgdXNlcyBvbGQgUFYgZHJpdmVycw0KPiA+Pj4+IGludGVyZmFjZXMuIFlvdSBjYW4gZmlu
ZCBpdCBoZXJlOg0KPiA+Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUt
dmNoYW4teGVuDQo+ID4+Pj4NCj4gPj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmln
IGZsYXc6IGNsaWVudCBzaWRlIHZjaGFuDQo+ID4+Pj4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVt
ZW50ZWQuIEl0IGRpZG4ndCBtYXR0ZXIgZm9yIFF1YmVzIHIyLA0KPiA+Pj4+IHdoZXJlIGFsbCB2
Y2hhbiBjb21tdW5pY2F0aW9uIGlzIHBhc3NpbmcgdGhyb3VnaCBkb20wIGFueXdheS4NCj4gPj4+
PiBJbiBRdWJlcyByMyBob3dldmVyLCB3ZSBuZWVkIHRoYXQgd29ya2luZyBiZWNhdXNlIG9mDQo+
ID4+Pj4gcmVkZXNpZ25lZCBpbnRlci1WTSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRoYXQgYWxs
b3dzIGRpcmVjdA0KPiA+Pj4+IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXIgZG9tMCBhcmJpdHJh
dGlvbi4NCj4gPj4+Pg0KPiA+Pj4+IFVuZm9ydHVuYXRlbHkgSGFycGVyJ3MgZHJpdmVycyBkb24n
dCBzZWVtIHRvIGltcGxlbWVudCB0aGUNCj4gPj4+PiBuZWVkZWQga2VybmVsIGludGVyZmFjZXMg
Zm9yIHRoYXQgYXMgd2VsbC4NCj4gPj4+Pg0KPiA+Pj4+PiBJIGFzc3VtZSB5b3UgbWVhbiBncmFu
dCBtYXBwaW5nPyBPciBtYXliZSBqdXN0IGdyYW50IGNvcHksDQo+ID4+Pj4+IHNpbmNlIHRoYXQg
d291bGQgYmUgc2FmZXI/DQo+ID4+Pj4NCj4gPj4+PiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50
byBQViBkcml2ZXJzIHNvdXJjZXMgYmVmb3JlLCBidXQgaXQNCj4gPj4+PiBzZWVtcyBJIHdpbGwg
bmVlZCB0byBkbyB0aGF0IG5vdyA6KSBJIGZvdW5kIHRoZSBuZXcgUFYNCj4gPj4+PiBkcml2ZXJz
IGFuZCB0aGlzIG1haWxpbmcgbGlzdCwgZm91bmQgdGhlIHRocmVhZCBhYm91dCB2Y2hhbg0KPiA+
Pj4+IGltcGxlbWVudGF0aW9uLi4uIGFuZCB0aGF0J3MgcHJldHR5IG11Y2ggaXQgZm9yIG5vdy4N
Cj4gPj4+Pg0KPiA+Pj4+IEFzIEkgc2FpZCwgSSBkb24ndCBoYXZlIG11Y2ggZXhwZXJpZW5jZSBp
biBYZW4gQVBJcyAoZGlkbid0DQo+ID4+Pj4gbmVlZCB0byB0aW5rZXIgd2l0aCB0aGVtIGRpcmVj
dGx5IGJlZm9yZSkuIEkgZG8sIGhvd2V2ZXIsDQo+ID4+Pj4gaGF2ZSBleHRlbnNpdmUgV2luQVBJ
IGtub3dsZWRnZSBhbmQgbW9kZXJhdGUgYW1vdW50IG9mDQo+ID4+Pj4gV2luZG93cyBkcml2ZXIg
ZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vlc3QNCj4gPj4+PiB0b29scyBp
cyBhIGN1c3RvbSBkaXNwbGF5IGRyaXZlciB0aGF0IGFsbG93cyBuby1jb3B5IHZpZGVvDQo+ID4+
Pj4gbWVtb3J5IHNoYXJpbmcgd2l0aCBkb20wKS4gSSBtYW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcg
ZHJpdmVycw0KPiA+Pj4+IGFuZCB3aWxsIHRlc3QgdGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxk
IHNvb24uDQo+ID4+Pj4NCj4gPj4+PiBTbywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVz
dGVkIGluIGRldmVsb3BpbmcgYQ0KPiA+Pj4+IFdpbmRvd3MgdmNoYW4gaW1wbGVtZW50YXRpb24g
b24gdG9wIG9mIHRoZSBuZXcgUFYgZHJpdmVycy4NCj4gPj4+PiBJJ2xsIGJlIHJlYWRpbmcgdGhy
b3VnaCB0aGUgZHJpdmVyIHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvDQo+ID4+Pj4gZmFtaWxp
YXJpemUgbXlzZWxmIHdpdGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0bw0K
PiA+Pj4+IGdldCBzb21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZSBr
bm93Lg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gSWYgeW91IHdhbnQgdG8gbG9vayBhdCBhZGRp
bmcgdGhlIG5lY2Vzc2FyeSBjb2RlIHRvIHRoZQ0KPiA+Pj4+PiBYRU5CVVNfR05UVEFCIGludGVy
ZmFjZSB0byBkbyBncmFudCBtYXAvY29weSB0aGVuIEkgZG9uJ3QNCj4gPj4+Pj4gaW1hZ2luZSBp
dCB3aWxsIGJlIHRvbyBoYXJkLiBBZGRpbmcgc3VwcG9ydCBmb3IgY29weSB3b3VsZA0KPiA+Pj4+
PiBiZSBlYXNpZXN0IGJ1dCBpdCB3b3VsZCBhbHNvIGJlIHBvc3NpYmxlIHRvIGdyYW50IG1hcCBw
YWdlcw0KPiA+Pj4+PiBpbnRvIHRoZSBwbGF0Zm9ybSBQQ0kgZGV2aWNlJ3MgQkFSICh3aGljaCBp
cyB3aGVyZSB0aGUNCj4gPj4+Pj4gc2hhcmVkIGluZm8gcGFnZSBhbmQgdGhlIGdyYW50IHRhYmxl
IGl0c2VsZiBsaXZlKS4NCj4gPj4+Pg0KPiA+Pj4+PiBMZXQgbWUga25vdyBpZiBoYXZlIGFueSBz
cGVjaWZpYyBxdWVzdGlvbnMgb3IgbmVlZCBzb21lDQo+ID4+Pj4+IGhlbHAgZ2V0dGluZyB0aGUg
ZHJpdmVycyBnb2luZyBpbiB5b3VyIGVudmlyb25tZW50Lg0KPiA+Pj4+DQo+ID4gSSd2ZSB0ZXN0
ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4NjQgSFZNIG9uIFF1YmVzIHIyIChyMyBpcw0K
PiA+IHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVuYnVzIGFuZCB4ZW5pZmFjZSBib3RoIGluc3Rh
bGwgZmluZS4NCj4gPiBYZW52YmQgaW5zdGFsbHMgT0sgYnV0IHRoZSBPUyBCU09EcyBvbiByZWJv
b3Qgd2l0aCBjb2RlIDdCDQo+ID4gKGluYWNjZXNzaWJsZSBib290IGRldmljZSkuIEknbGwgdHJ5
IHRvIHBpbnBvaW50IHRoZSBleGFjdCBmYWlsdXJlDQo+ID4gc3BvdCBvbmNlIEkgc2V0dXAgdGhl
IHB2ZHJpdmVycyBzb3VyY2VzIGluc2lkZSBteSBkZXZlbG9wbWVudCBWTS4NCj4gPg0KPiA+DQo+
ID4+IDB4N0IgY2FuIG9jY3VyIGluIG1hbnkgY2lyY3Vtc3RhbmNlcy4gVGhlIGRyaXZlcnMgZG8g
bG9nIHF1aXRlIGENCj4gPj4gYml0IG9mIGluZm8sIHBhcnRpY3VsYXJseSBpbiBjaGVja2VkIGJ1
aWxkcywgc28gdGhlcmUnbGwgcHJvYmFibHkNCj4gPj4gYmUgc29tZXRoaW5nIHRoZXJlIHRvIGlu
ZGljYXRlIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIGZhaWx1cmUuDQo+ID4+IFRoZSBtYWluIGlu
Zm9ybWF0aW9uYWwgbG9nZ2luZyAod2hpY2ggaXMgdGhlIHNhbWUgZm9yIGZyZWUgb3INCj4gPj4g
Y2hlY2tlZCBidWlsZHMpIGlzIHdyaXR0ZW4gdG8gdGhlIHFlbXUgbG9nZ2luZyBwb3J0ICgweDEy
KSBhbmQNCj4gPj4gZGVidWcgbG9nZ2luZyAoY2hlY2tlZCBidWlsZCBvbmx5KSBnb2VzIHRvIHRo
ZSBYZW4gcG9ydCAoMHhFOSkuDQo+ID4+IElmIHlvdSB3YXRjaCB3aGVyZXZlciB5b3UgaGF2ZSB0
aG9zZSByZWRpcmVjdGVkIHRoZW4geW91IG1heSBiZQ0KPiA+PiBhYmxlIHRvIHNwb3QgdGhlIHBy
b2JsZW0uIElmIHlvdSBjYW4ndCB0aGVuIHBvc3QgdGhlbSB0byB0aGUgbGlzdA0KPiA+PiBhbmQg
SSdsbCB0YWtlIGEgbG9vay4NCj4gPg0KPiA+IERvIHRoZSBkcml2ZXJzIGhhdmUgc3BlY2lmaWMg
cmVxdWlyZW1lbnRzIGZvciBiYWNrZW5kIChYZW4vUWVtdQ0KPiA+IHZlcnNpb24pPyBXZSdyZSBu
b3QgcmVhbGx5IHVzaW5nIFFlbXUgaW4gZG9tMCwgb25seSBpbiBtaW5pbWFsDQo+ID4gc3R1YmRv
bXMgZm9yIEhWTXMsIHNvIHRoYXQgbWF5IGJlIGEgcHJvYmxlbS4NCj4gPg0KPiA+DQo+ID4+IFRo
YXQncyBub3QgdXN1YWxseSBhIHByb2JsZW0uIERvIHlvdSBoYXZlIFBWIGJhY2tlbmRzIGZvciBk
aXNrDQo+ID4+IGFuZCBuZXQgc2V0IHVwIHRob3VnaD8gVGhlIGZhY3QgdGhhdCB5b3UgZ290IGEg
MHg3QiBhZnRlcg0KPiA+PiBpbnN0YWxsaW5nIHhlbnZiZCBtYXkgc2ltcGx5IG1lYW4gdGhhdCB5
b3VyIHRvb2xzdGFjayBoYXMganVzdA0KPiA+PiBub3Qgc2V0IHVwIGEgUFYgYmFja2VuZC4NCj4g
V2UgZG8gaGF2ZSBiYWNrZW5kcyBzZXQgdXAgKHhlbi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNo
ZWNrIGluIGRvbTANCj4gd2hldGhlciBpdCBjcmFzaGVzIGFmdGVyIHRoZSBkZXZpY2UgZ2V0cyBh
dHRhY2hlZCBvciBiZWZvcmUuDQo+IA0KDQpPay4gSSBtdXN0IGFkbWl0IHRoYXQgSSB0ZW5kIHRv
IHVzZSBxZGlzayBhcyBhIGJhY2tlbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nLCBidXQgYmxrYmFj
ayBzaG91bGQgYmUgZmluZS4gSSdsbCBzYW5pdHkgY2hlY2sgaXQgbXlzZWxmIHdoZW4gSSBnZXQg
dGltZSB0aG91Z2guDQoNCj4gQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNvbnZlcnNhdGlvbiwg
aGUncyBvbmUgb2Ygb3VyIGNvcmUgYXJjaGl0ZWN0cw0KPiBhbmQga25vd3MgbW9yZSBhYm91dCBi
YWNrZW5kIHN0dWZmIHRoYW4gSSBkbyA6KQ0KPiANCg0KQ29vbC4NCg0KICBQYXVsDQoNCj4gPg0K
PiA+PiBQYXVsDQo+IA0KPiAtIC0tDQo+IFJhZmHFgiBXb2pkecWCYQ0KPiBRdWJlcyBUb29scyBm
b3IgV2luZG93cyBkZXZlbG9wZXINCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0NCj4g
DQo+IGlRRWNCQUVCQWdBR0JRSlZBY2VKQUFvSkVJV2k5ckIyR3JXN0J0MEgvMVF2Z1FJK0pjTWh4
SE1pNERVMXYNCj4gNEU4DQo+IG02ZnFCMU54RDhieDJzQWxNcTJOZE1qaXVDQUtyT0xxSVJwcEQw
WC9oZzIzdjRub0srK04yeldpNmc0RXkNCj4gVzJXDQo+IFlENURNcGVhRmMzNTNjdk5OTkxaYmFk
RXU4clpsY2hwSllrQ1dtcVlFNm9Ua3RPMHQ0VWNZclhLd2d3T3kNCj4gdkVqDQo+IEJXQ1NqL21C
bUo3S1hkVCtOTHQweXk2dmpVVXRVN0E5SmZ0NkRRQTlSbzBCRVpxY3N6Y1B6M0E1bHZrZklWc1gN
Cj4gYkpOVlVybzY2Tklod2oxd3NZRkdidUtNd1psSWUxSzdZeEUwNStDRmt3TklESEZJQXB5WWpQ
UVZBWUhFRg0KPiA1YjkNCj4gS0MrejJnNXFOc2I4L0lQRm0rZWhJWGVjV3hWMCtUTUdaK2lqN3Bk
ZlhXeHBvd1RwV01wRGFkY0hzclB5DQo+IGtDQT0NCj4gPS83MDYNCj4gLS0tLS1FTkQgUEdQIFNJ
R05BVFVSRS0tLS0tDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJp
bi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Nn
aS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 20:04:41 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 20:04:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW9LU-0001ls-8j; Thu, 12 Mar 2015 20:04:40 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW9LS-0001lO-PG
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 20:04:39 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	4B/E7-10944-651F1055; Thu, 12 Mar 2015 20:04:38 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1426190675!11488640!1
X-Originating-IP: [66.111.4.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjUgPT4gNDQ5ODE=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6673 invoked from network); 12 Mar 2015 20:04:36 -0000
Received: from out1-smtp.messagingengine.com (HELO
	out1-smtp.messagingengine.com) (66.111.4.25)
	by server-12.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 12 Mar 2015 20:04:36 -0000
Received: from compute2.internal (compute2.nyi.internal [10.202.2.42])
	by mailout.nyi.internal (Postfix) with ESMTP id 6B4B720B96
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 16:04:33 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute2.internal (MEProxy); Thu, 12 Mar 2015 16:04:35 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type;
	s=mesmtp; bh=7CQEk3AXgOubfHMyp739CzXwuzg=; b=I4CwhPcmCj+XKeFr3V
	QZR0C/4XVJ/EgDxCVgWG2Lr6kE0wQtbru1Yvpfhs/NYNQsSq71kYHlymVrU4CcCq
	iK3LJlwQdseFRlwyhkzu/CtK+9OPkNPOPcPtu7JLzE9ZJBrRyELrz3f5xYPP6fgd
	VGbDnxz3g9mInNPuF1jlGg7Us=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type;
	s=smtpout; bh=7CQEk3AXgOubfHMyp739CzXwuzg=; b=pm2tAs88D5RTfQMPM
	K25PTkRhibUq8JmjD2h8ZRVrWj41nwcCMzE0Mn6SZ08y4SyPU7Eyc7BADXbWtz9q
	oxf8TB3w/Yc6fidmmHFRq0rr8z4KOZMmFRlnSlAkuV6unPZmIMSuQHhn+eEDkVAN
	K7MUXVdiyDgQFlBgmOsd7jMMYE=
X-Sasl-enc: SZu0aFCHU5s+fQTTHUBb+mpPEhSx4/roZD+r7mFxQSDk 1426190674
Received: from [10.137.2.7] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id A5AE56801C7;
	Thu, 12 Mar 2015 16:04:33 -0400 (EDT)
Message-ID: <5501F14F.7090105@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 21:04:31 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
	rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------060701020102080500000309"
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060701020102080500000309
Content-Type: text/plain; charset=utf-8
Content-Length: 8183
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12.03.2015 18:09, Paul Durrant wrote:
>> -----Original Message----- From:
>> win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel- 
>> bounces@lists.xenproject.org] On Behalf Of Rafal Wojdyla Sent: 12
>> March 2015 17:06 To: Paul Durrant;
>> win-pv-devel@lists.xenproject.org Cc: Marek Marczykowski-G=C3=B3recki 
>> Subject: Re: [win-pv-devel] Porting libvchan to use the Windows
>> PV Drivers
>> 
> On 2015-03-12 17:45, Paul Durrant wrote:
>>>>> -----Original Message----- From: Rafa=C5=82 Wojdy=C5=82a 
>>>>> [mailto:omeg@invisiblethingslab.com] Sent: 12 March 2015
>>>>> 16:17 To: Paul Durrant; win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: [win-pv-devel] Porting libvchan to use the
>>>>> Windows PV Drivers
>>>>> 
>>>> On 2015-03-11 18:46, Paul Durrant wrote:
>>>>>>>> -----Original Message----- From: 
>>>>>>>> win-pv-devel-bounces@lists.xenproject.org 
>>>>>>>> [mailto:win-pv-devel- bounces@lists.xenproject.org]
>>>>>>>> On Behalf Of Rafal Wojdyla Sent: 10 March 2015 20:16
>>>>>>>> To: win-pv-devel@lists.xenproject.org Subject: Re: 
>>>>>>>> [win-pv-devel] Porting libvchan to use the Windows
>>>>>>>> PV Drivers
>>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> 
>>>>>>>> Hi,
>>>>>>> 
>>>>>>> I'm unable to properly reply to the thread since I
>>>>>>> just subscribed to this list but I figured it's worth
>>>>>>> chiming in (last message is here: 
>>>>>>> http://lists.xenproject.org/archives/html/win-pv-devel/2015-01/msg0
>
>>>>>>> 
006
>>>> 
>>>>>>> 
> 0.
>>>>>>> 
>>>>>>> 
>>>> html)
>>>>>>> 
>>>>>>> 
>>>>>>>> Yes, I understand; I just saw your subscription
>>>>>>>> message :-)
>>>>>>> 
>>>>>>> First, some background about me. I'm currently the main
>>>>>>> and pretty much the only developer/maintainer of guest
>>>>>>> tools for Windows for Qubes OS
>>>>>>> (https://wiki.qubes-os.org/). Some of you may have
>>>>>>> heard of Qubes -- in short, it's an attempt at creating
>>>>>>> a secure OS based on lightweight AppVMs, currently 
>>>>>>> using Linux/Xen as base. It supports Windows HVMs and
>>>>>>> our guest tools provide integration with dom0/other
>>>>>>> domUs (services like data transfer, remote execution,
>>>>>>> seamless GUI experience etc).
>>>>>>> 
>>>>>>> 
>>>>>>>> Cool.
>>>>>>> 
>>>>>>> We're in the process of finalizing the next major
>>>>>>> release (r3) of Qubes, it will use Xen 4.4 instead of
>>>>>>> r2's Xen 4.1. As for our Windows tools, they are
>>>>>>> (currently) using PV drivers based on James Harper's
>>>>>>> cod e.
>>>>>>> 
>>>>>>> Our inter-VM communication protocol uses vchan (in
>>>>>>> fact, vchan originates from our patch accepted into
>>>>>>> Xen's source a few years ago). In Qubes r2 we have a
>>>>>>> Windows libvchan implementation, but as stated above,
>>>>>>> it uses old PV drivers interfaces. You can find it
>>>>>>> here: https://github.com/QubesOS/qubes-core-vchan-xen
>>>>>>> 
>>>>>>> That implementation has one big flaw: client side
>>>>>>> vchan functions are not implemented. It didn't matter
>>>>>>> for Qubes r2, where all vchan communication is passing
>>>>>>> through dom0 anyway. In Qubes r3 however, we need that
>>>>>>> working because of redesigned inter-VM communication
>>>>>>> protocol that allows direct VM-VM communication after
>>>>>>> dom0 arbitration.
>>>>>>> 
>>>>>>> Unfortunately Harper's drivers don't seem to implement
>>>>>>> the needed kernel interfaces for that as well.
>>>>>>> 
>>>>>>>> I assume you mean grant mapping=3F Or maybe just grant
>>>>>>>> copy, since that would be safer=3F
>>>>>>> 
>>>>>>> I didn't need to look into PV drivers sources before,
>>>>>>> but it seems I will need to do that now :) I found the
>>>>>>> new PV drivers and this mailing list, found the thread
>>>>>>> about vchan implementation... and that's pretty much it
>>>>>>> for now.
>>>>>>> 
>>>>>>> As I said, I don't have much experience in Xen APIs
>>>>>>> (didn't need to tinker with them directly before). I
>>>>>>> do, however, have extensive WinAPI knowledge and
>>>>>>> moderate amount of Windows driver development
>>>>>>> experience (part of our guest tools is a custom display
>>>>>>> driver that allows no-copy video memory sharing with
>>>>>>> dom0). I managed to build the new drivers and will test
>>>>>>> them on our dev Qubes build soon.
>>>>>>> 
>>>>>>> So, to summarize, I'm very interested in developing a 
>>>>>>> Windows vchan implementation on top of the new PV
>>>>>>> drivers. I'll be reading through the driver sources for
>>>>>>> a bit still to familiarize myself with the environment.
>>>>>>> If anyone managed to get something working, or just has
>>>>>>> ideas, let me know.
>>>>>>> 
>>>>>>> 
>>>>>>>> If you want to look at adding the necessary code to
>>>>>>>> the XENBUS_GNTTAB interface to do grant map/copy then
>>>>>>>> I don't imagine it will be too hard. Adding support
>>>>>>>> for copy would be easiest but it would also be
>>>>>>>> possible to grant map pages into the platform PCI
>>>>>>>> device's BAR (which is where the shared info page and
>>>>>>>> the grant table itself live).
>>>>>>> 
>>>>>>>> Let me know if have any specific questions or need
>>>>>>>> some help getting the drivers going in your
>>>>>>>> environment.
>>>>>>> 
>>>> I've tested the drivers on a Win7 pro x64 HVM on Qubes r2 (r3
>>>> is still a bit unstable). Xenbus and xeniface both install
>>>> fine. Xenvbd installs OK but the OS BSODs on reboot with code
>>>> 7B (inaccessible boot device). I'll try to pinpoint the exact
>>>> failure spot once I setup the pvdrivers sources inside my
>>>> development VM.
>>>> 
>>>> 
>>>>> 0x7B can occur in many circumstances. The drivers do log
>>>>> quite a bit of info, particularly in checked builds, so
>>>>> there'll probably be something there to indicate the exact
>>>>> nature of the failure. The main informational logging
>>>>> (which is the same for free or checked builds) is written
>>>>> to the qemu logging port (0x12) and debug logging (checked
>>>>> build only) goes to the Xen port (0xE9). If you watch
>>>>> wherever you have those redirected then you may be able to
>>>>> spot the problem. If you can't then post them to the list 
>>>>> and I'll take a look.
>>>> 
>>>> Do the drivers have specific requirements for backend
>>>> (Xen/Qemu version)=3F We're not really using Qemu in dom0, only
>>>> in minimal stubdoms for HVMs, so that may be a problem.
>>>> 
>>>> 
>>>>> That's not usually a problem. Do you have PV backends for
>>>>> disk and net set up though=3F The fact that you got a 0x7B
>>>>> after installing xenvbd may simply mean that your toolstack
>>>>> has just not set up a PV backend.
> We do have backends set up (xen-blkback for vbd). I'll check in
> dom0 whether it crashes after the device gets attached or before.
> 
> 
>> Ok. I must admit that I tend to use qdisk as a backend in most of
>> my testing, but blkback should be fine. I'll sanity check it
>> myself when I get time though.
> 
Sometimes the VM BSODs with 0x7E. I managed to connect WinDbg to it
and grab some logs (in the attachment). At a glance it seems like a
lot of event channel failures...

XENVBD|PdoReset:ASSERTION FAILED: (((NTSTATUS)(Status)) >=3D 0)
Assertion
f:\qubes-builder\qubes-src\xen-pv\xenvbd\src\xenvbd\pdo.c(2297):
(((NTSTATUS)(Status)) >=3D 0)


> Also adding Marek to the conversation, he's one of our core
> architects and knows more about backend stuff than I do :)
> 
> 
>> Cool.
> 
>> Paul
> 
>>>> 
>>>>> Paul

- -- 
Rafa=C5=82 Wojdy=C5=82a
Qubes Tools for Windows developer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVAfFGAAoJEIWi9rB2GrW7+csH/2CpP5yT9RksqKmD68CRuGDj
nWgumSt/o9NpuFFjXeY446YPDO7/SW5RcmpuZ2rybN2WCMMFB+i3mq+XQFGhkOWK
xx+sVhc7m4n0f8rOndWZ9l3d4phfumZ2yXIc5LZfbdBdLXRiZSlMDczH+/JCG6p1
9tsiq08DQ+5mzxYTJ4X1GFQ0VsBrCrMoLXUIgERF5iVpZn/vtAnalskd5htWnTnW
gK6x69MqPNmLy5P9CXN7KiZFHJE6TVFY4Fj0OJL1QY23AftL2PFoaorHpuyeliGx
D0EeNmaVpeA4Q++S2neauiq5ZIrQ4GZg+3TPqDfVJTK+SnlzDjjLc7jbi1ttQ6Y=3D
=3DbdEh
-----END PGP SIGNATURE-----

--------------060701020102080500000309
Content-Type: text/plain; charset=UTF-8;
 name="vbd.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="vbd.txt"

DQpNaWNyb3NvZnQgKFIpIFdpbmRvd3MgRGVidWdnZXIgVmVyc2lvbiA2LjMuOTYwMC4xNzIz
NyBBTUQ2NA0KQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQoNCk9wZW5lZCBcXC5cY29tMQ0KV2FpdGluZyB0byByZWNvbm5lY3Qu
Li4NCkNvbm5lY3RlZCB0byBXaW5kb3dzIDcgNzYwMSB4NjQgdGFyZ2V0IGF0IChUaHUgTWFy
IDEyIDIwOjUxOjE1LjU5NCAyMDE1IChVVEMgKyAxOjAwKSksIHB0cjY0IFRSVUUNCktlcm5l
bCBEZWJ1Z2dlciBjb25uZWN0aW9uIGVzdGFibGlzaGVkLg0KDQoqKioqKioqKioqKioqIFN5
bWJvbCBQYXRoIHZhbGlkYXRpb24gc3VtbWFyeSAqKioqKioqKioqKioqKg0KUmVzcG9uc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgVGltZSAobXMpICAgICBMb2NhdGlvbg0KRGVmZXJy
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnYqYzpcc3ltYm9s
cypodHRwOi8vbXNkbC5taWNyb3NvZnQuY29tL2Rvd25sb2FkL3N5bWJvbHMNClN5bWJvbCBz
ZWFyY2ggcGF0aCBpczogc3J2KmM6XHN5bWJvbHMqaHR0cDovL21zZGwubWljcm9zb2Z0LmNv
bS9kb3dubG9hZC9zeW1ib2xzDQpFeGVjdXRhYmxlIHNlYXJjaCBwYXRoIGlzOiANCldpbmRv
d3MgNyBLZXJuZWwgVmVyc2lvbiA3NjAxIE1QICgxIHByb2NzKSBGcmVlIHg2NA0KQnVpbHQg
Ynk6IDc2MDEuMTg0MDkuYW1kNjRmcmUud2luN3NwMV9nZHIuMTQwMzAzLTIxNDQNCk1hY2hp
bmUgTmFtZToNCktlcm5lbCBiYXNlID0gMHhmZmZmZjgwMGAwMjY2MzAwMCBQc0xvYWRlZE1v
ZHVsZUxpc3QgPSAweGZmZmZmODAwYDAyOGE2ODkwDQpTeXN0ZW0gVXB0aW1lOiBub3QgYXZh
aWxhYmxlDQoNClhFTnxEbGxJbml0aWFsaXplOiA9PT09Pg0KWEVOfERsbEluaXRpYWxpemU6
IFhFTiA4LjAuMCAoMSkgKDEwLjAzLjIwMTUpDQpYRU58QWNwaUZpbmRSc2RwOiA9PT09Pg0K
WEVOfEFjcGlGaW5kUnNkcDogMHgwMDAwMDAwMDAwMEVBMDIwDQpYRU58QWNwaUZpbmRSc2Rw
OiA8PT09PQ0KWEVOfFN5c3RlbUdldFN0YXJ0T3B0aW9uczogIFRFU1RTSUdOSU5HICBOT0VY
RUNVVEU9T1BUSU4gIERFQlVHICBERUJVR1BPUlQ9Q09NMSAgQkFVRFJBVEU9MTE1MjAwDQpY
RU58U3lzdGVtR2V0VmVyc2lvbkluZm9ybWF0aW9uOiBLRVJORUw6IDYuMSAoQlVJTEQgNzYw
MSkgUExBVEZPUk0gV0lOMzJfTlQgKHg2NCkNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3Jt
YXRpb246IFNQOiAxLjAgKCkNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IFNV
SVRFUzoNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IC0gVEVSTUlOQUwNClhF
TnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IC0gU0lOR0xFVVNFUlRTDQpYRU58U3lz
dGVtR2V0VmVyc2lvbkluZm9ybWF0aW9uOiBUWVBFOiBXT1JLU1RBVElPTg0KWEVOfFN5c3Rl
bUdldE1lbW9yeUluZm9ybWF0aW9uOiBSQU5HRVswXSAwMDAwMDAwMC4wMDAwMTAwMCAtIDAw
MDAwMDAwLjAwMDlkZmZmDQpYRU58U3lzdGVtR2V0TWVtb3J5SW5mb3JtYXRpb246IFJBTkdF
WzFdIDAwMDAwMDAwLjAwMTAwMDAwIC0gMDAwMDAwMDAuM2Y3ZmZmZmYNClhFTnxBY3BpR2V0
WHNkdDogPT09PT4NClhFTnxBY3BpR2V0WHNkdDogMHgwMDAwMDAwMEZDMDBGMkYwDQpYRU58
QWNwaUdldFhzZHQ6IDw9PT09DQpYRU58QWNwaUdldFhzZHQ6ID09PT0+DQpYRU58QWNwaUdl
dFhzZHQ6IDw9PT09DQpYRU58U3lzdGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6ID09PT0+
ICgwOkFkZFN0YXJ0Tm90aWZ5KQ0KWEVOfFN5c3RlbVByb2Nlc3NvckNoYW5nZUNhbGxiYWNr
OiA8PT09PSAoMDpBZGRTdGFydE5vdGlmeSkNClhFTnxTeXN0ZW1Qcm9jZXNzb3JDaGFuZ2VD
YWxsYmFjazogPT09PT4gKDE6QWRkU3RhcnROb3RpZnkpDQpYRU58U3lzdGVtUHJvY2Vzc29y
Q2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgxOkFkZFN0YXJ0Tm90aWZ5KQ0KWEVOfFN5c3RlbVBy
b2Nlc3NvckNoYW5nZUNhbGxiYWNrOiA9PT09PiAoMDpBZGRDb21wbGV0ZU5vdGlmeSkNClhF
TnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPT09PT4gKDApDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IE1hbnVmYWN0dXJlcjogR2VudWluZUludGVsDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IEFQSUMgSUQ6IDAwDQpYRU58U3lzdGVtQ3B1SW5mb3JtYXRpb246IFBST0NFU1NP
UiBJRDogMDANClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPD09PT0gKDApDQpYRU58U3lz
dGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgwOkFkZENvbXBsZXRlTm90aWZ5
KQ0KWEVOfFN5c3RlbVByb2Nlc3NvckNoYW5nZUNhbGxiYWNrOiA9PT09PiAoMTpBZGRDb21w
bGV0ZU5vdGlmeSkNClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPT09PT4gKDEpDQpYRU58
U3lzdGVtQ3B1SW5mb3JtYXRpb246IE1hbnVmYWN0dXJlcjogR2VudWluZUludGVsDQpYRU58
U3lzdGVtQ3B1SW5mb3JtYXRpb246IEFQSUMgSUQ6IDAyDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IFBST0NFU1NPUiBJRDogMDENClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPD09
PT0gKDEpDQpYRU58U3lzdGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgxOkFk
ZENvbXBsZXRlTm90aWZ5KQ0KWEVOfERsbEluaXRpYWxpemU6IDw9PT09DQpYRU5GSUxUfERy
aXZlckVudHJ5OiA9PT09Pg0KWEVORklMVHxEcml2ZXJFbnRyeTogWEVORklMVCA4LjAuMCAo
MSkgKDEwLjAzLjIwMTUpDQpYRU5GSUxUfERyaXZlclNldEFjdGl2ZURldmljZUluc3RhbmNl
OiBQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMS8xOA0KWEVO
RklMVHxFbXVsYXRlZEluaXRpYWxpemU6ID09PT0+DQpYRU5GSUxUfEVtdWxhdGVkSW5pdGlh
bGl6ZTogPD09PT0NClhFTkZJTFR8VW5wbHVnSW5pdGlhbGl6ZTogPT09PT4NClhFTkZJTFR8
VW5wbHVnQ2hlY2tGb3JQVkRpc2tzOiBQUkVTRU5UDQpYRU5GSUxUfFVucGx1Z0NoZWNrRm9y
UFZOaWNzOiBOT1QgUFJFU0VOVA0KWEVORklMVHxVbnBsdWdJbml0aWFsaXplOiA8PT09PQ0K
WEVORklMVHxFbXVsYXRlZEFjcXVpcmU6IDw9PT0+DQpYRU5GSUxUfERyaXZlckVudHJ5OiA8
PT09PQ0KWEVORklMVHxGZG9DcmVhdGU6IEZGRkZGQTgwMDFBQjAwNDAgKEFDUElcUE5QMEEw
M1wwKQ0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPT09PT4NClhFTkZJTFR8RW11bGF0
ZWRBZGRPYmplY3Q6IDw9PT09DQpYRU5GSUxUfFBkb0NyZWF0ZTogRkZGRkZBODAwMTlFOTQy
MCAoUENJXFZFTl84MDg2JkRFVl8xMjM3JlNVQlNZU18xMTAwMUFGNCZSRVZfMDJcMDApDQpY
RU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA9PT09Pg0KWEVORklMVHxFbXVsYXRlZEFkZE9i
amVjdDogPD09PT0NClhFTkZJTFR8UGRvQ3JlYXRlOiBGRkZGRkE4MDAxRDIwNDIwIChQQ0lc
VkVOXzgwODYmREVWXzcwMDAmU1VCU1lTXzExMDAxQUY0JlJFVl8wMFwwOCkNClhFTkZJTFR8
RW11bGF0ZWRBZGRPYmplY3Q6ID09PT0+DQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA8
PT09PQ0KWEVORklMVHxQZG9DcmVhdGU6IEZGRkZGQTgwMDBDMTBBNzAgKFBDSVxWRU5fODA4
NiZERVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAwXDA5KQ0KWEVORklMVHxFbXVsYXRl
ZEFkZE9iamVjdDogPT09PT4NClhFTkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6IDw9PT09DQpY
RU5GSUxUfFBkb0NyZWF0ZTogRkZGRkZBODAwMEMxMUE3MCAoUENJXFZFTl84MDg2JkRFVl83
MDIwJlNVQlNZU18xMTAwMUFGNCZSRVZfMDFcMEEpDQpYRU5GSUxUfEVtdWxhdGVkQWRkT2Jq
ZWN0OiA9PT09Pg0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPD09PT0NClhFTkZJTFR8
UGRvQ3JlYXRlOiBGRkZGRkE4MDAwQzEyQTcwIChQQ0lcVkVOXzEyMzQmREVWXzExMTEmU1VC
U1lTXzAwMDE1ODUzJlJFVl8wMFwxMCkNClhFTkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6ID09
PT0+DQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA8PT09PQ0KWEVORklMVHxQZG9DcmVh
dGU6IEZGRkZGQTgwMDE5RTRBNzAgKFBDSVxWRU5fNTg1MyZERVZfMDAwMSZTVUJTWVNfMDAw
MTU4NTMmUkVWXzAxXDE4KQ0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPT09PT4NClhF
TkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6IDw9PT09DQpYRU5GSUxUfFBkb0NyZWF0ZTogRkZG
RkZBODAwMTlFN0E3MCAoUENJXFZFTl8xMEVDJkRFVl84MTM5JlNVQlNZU18wMDAxNTg1MyZS
RVZfMjBcMjApDQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA9PT09Pg0KWEVORklMVHxF
bXVsYXRlZEFkZE9iamVjdDogPD09PT0NClhFTkZJTFR8UGRvQ3JlYXRlOiBGRkZGRkE4MDAx
OUZFQTcwIChBQ1BJXFBOUDAxMDNcMCkNClhFTkZJTFR8RW11bGF0ZWRJc0RldmljZVByZXNl
bnQ6ID09PT0+IChQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8w
MSBBTlkpDQpYRU5GSUxUfEVtdWxhdGVkSXNEZXZpY2VQcmVzZW50OiBGT1VORA0KWEVORklM
VHxFbXVsYXRlZElzRGV2aWNlUHJlc2VudDogPD09PT0NClhFTkZJTFR8RHJpdmVyU2V0Rmls
dGVyU3RhdGU6IEFDVElWRSBERVZJQ0UgUFJFU0VOVA0KWEVORklMVHxVbnBsdWdBY3F1aXJl
OiA9PT09Pg0KWEVORklMVHxVbnBsdWdBY3F1aXJlOiA8PT09PQ0KWEVORklMVHxEcml2ZXJT
ZXRGaWx0ZXJTdGF0ZTogUEVORElORw0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9u
czogQUNQSVxQTlAwQTAzXDA6IEZJTFRFUkVEDQpYRU5GSUxUfERyaXZlclNldEZpbHRlclN0
YXRlOiBESVNBQkxFRA0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9uczogQUNQSVxQ
TlAwQTAzXDA6IDggUERPKHMpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNl
SUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzgwODYmREVWXzEyMzcmU1VCU1lT
XzExMDAxQUY0JlJFVl8wMg0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNl
SUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSAwMA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNR
dWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl84MDg2JkRFVl8x
MjM3JlNVQlNZU18xMTAwMUFGNCZSRVZfMDINClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVl
cnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMDANClhFTkZJTFR8UGRvUXVl
cnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIFBDSVxWRU5f
ODA4NiZERVZfNzAwMCZTVUJTWVNfMTEwMDFBRjQmUkVWXzAwDQpYRU5GSUxUfFBkb1F1ZXJ5
SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDA4DQpYRU5G
SUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDog
LSBQQ0lcVkVOXzgwODYmREVWXzcwMDAmU1VCU1lTXzExMDAxQUY0JlJFVl8wMA0KWEVORklM
VHxQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDog
LSAwOA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IC0gUENJXFZFTl84MDg2JkRFVl83MDEwJlNVQlNZU18wMDAxNTg1MyZSRVZf
MDANClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IC0gMDkNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0K
WEVORklMVHxQZG9RdWVyeUlkOiAtIFBDSVxWRU5fODA4NiZERVZfNzAyMCZTVUJTWVNfMTEw
MDFBRjQmUkVWXzAxDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0K
WEVORklMVHxQZG9RdWVyeUlkOiAtIDBBDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5
RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzEyMzQmREVWXzExMTEm
U1VCU1lTXzAwMDE1ODUzJlJFVl8wMA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeUlu
c3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSAxMA0KWEVORklMVHxQZG9RdWVyeUlk
OiBCdXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl81ODUz
JkRFVl8wMDAxJlNVQlNZU18wMDAxNTg1MyZSRVZfMDENClhFTkZJTFR8UGRvUXVlcnlJZDog
QnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMTgNClhFTkZJTFR8
UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIFBD
SVxWRU5fMTBFQyZERVZfODEzOSZTVUJTWVNfMDAwMTU4NTMmUkVWXzIwDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDIw
DQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVl
cnlJZDogLSBBQ1BJXFBOUDAxMDMNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0
YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMA0KWEVOQlVTfERyaXZlckVudHJ5OiA9
PT09Pg0KWEVOQlVTfERyaXZlckVudHJ5OiBYRU5CVVMgOC4wLjAgKDEpICgxMC4wMy4yMDE1
KQ0KWEVOQlVTfERyaXZlckVudHJ5OiA8PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTog
PT09PT4NClhFTkJVU3xEcml2ZXJHZXRBY3RpdmVEZXZpY2VJbnN0YW5jZTogRGV2aWNlSUQg
PSBQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVT
fERyaXZlckdldEFjdGl2ZURldmljZUluc3RhbmNlOiBJbnN0YW5jZUlEID0gMTgNClhFTkJV
U3xEcml2ZXJRdWVyeUlkOiA9PT09PiBEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiBC
dXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl81ODUzJkRF
Vl8wMDAxJlNVQlNZU18wMDAxNTg1MyZSRVZfMDENClhFTkJVU3xEcml2ZXJRdWVyeUlkOiA8
PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTogRGV2aWNlSUQgPSBQQ0lcVkVOXzU4NTMm
REVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVTfERyaXZlclF1ZXJ5SWQ6
ID09PT0+IEluc3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5j
ZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMTgNClhFTkJVU3xEcml2ZXJRdWVyeUlkOiA8
PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTogSW5zdGFuY2VJRCA9IDE4DQpYRU5CVVN8
RGVidWdJbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfERlYnVnSW5pdGlhbGl6ZTogPD09PT0N
ClhFTkJVU3xTdXNwZW5kSW5pdGlhbGl6ZTogPT09PT4NClhFTkJVU3xTdXNwZW5kSW5pdGlh
bGl6ZTogPD09PT0NClhFTkJVU3xTaGFyZWRJbmZvSW5pdGlhbGl6ZTogPT09PT4NClhFTkJV
U3xTaGFyZWRJbmZvSW5pdGlhbGl6ZTogPD09PT0NClhFTkJVU3xFdnRjaG5Jbml0aWFsaXpl
OiA9PT09Pg0KWEVOQlVTfEV2dGNoblR3b0xldmVsSW5pdGlhbGl6ZTogPT09PT4NClhFTkJV
U3xFdnRjaG5Ud29MZXZlbEluaXRpYWxpemU6IDw9PT09DQpYRU5CVVN8RXZ0Y2huRmlmb0lu
aXRpYWxpemU6ID09PT0+DQpYRU5CVVN8RXZ0Y2huRmlmb0luaXRpYWxpemU6IDw9PT09DQpY
RU5CVVN8RXZ0Y2huSW5pdGlhbGl6ZTogPD09PT0NClhFTkJVU3xTdG9yZUluaXRpYWxpemU6
ID09PT0+DQpYRU5CVVN8U3RvcmVJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfFJhbmdlU2V0
SW5pdGlhbGl6ZTogPT09PT4NClhFTkJVU3xSYW5nZVNldEluaXRpYWxpemU6IDw9PT09DQpY
RU5CVVN8Q2FjaGVJbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfENhY2hlSW5pdGlhbGl6ZTog
PD09PT0NClhFTkJVU3xDYWNoZU1vbml0b3I6ID09PT0+DQpYRU5CVVN8R250dGFiSW5pdGlh
bGl6ZTogPT09PT4NClhFTkJVU3xHbnR0YWJJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfEJh
bGxvb25Jbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfEJhbGxvb25Jbml0aWFsaXplOiA8PT09
PQ0KWEVORklMVHxQZG9RdWVyeUludGVyZmFjZTogUENJXFZFTl81ODUzJkRFVl8wMDAxJlNV
QlNZU18wMDAxNTg1MyZSRVZfMDFcMTg6IFVOUExVR19JTlRFUkZBQ0UgKFZFUlNJT04gMSkN
ClhFTkJVU3xGZG9DcmVhdGU6IEZGRkZGQTgwMDFBMDUyRjAgKFhTMDAwMSBYRU5CVVMpIFtB
Q1RJVkVdDQpYRU5CVVN8RHJpdmVyQWRkRGV2aWNlOiA8PT09PQ0KWEVOQlVTfEZkb0Rpc3Bh
dGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1
ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzU4NTMmREVWXzAw
MDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMTM6UVVFUllfSUQpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJ
RA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDE4DQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9
PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09
PT0+ICgxODpRVUVSWV9MRUdBQ1lfQlVTX0lORk9STUFUSU9OKQ0KWEVOQlVTfEZkb0Rpc3Bh
dGNoUG5wOiA8PT09PSAoMTg6UVVFUllfTEVHQUNZX0JVU19JTkZPUk1BVElPTikoYzAwMDAw
YmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwZDpGSUxURVJfUkVTT1VSQ0Vf
UkVRVUlSRU1FTlRTKQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDogWFMwMDAxIFhF
TkJVUzogMA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhF
TkJVUzogUG9ydA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogUHJlZmVy
cmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0
aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMTMxDQpYRU5CVVN8RmRvRHVtcElvUmVzb3Vy
Y2VMaXN0OiBYUzAwMDEgWEVOQlVTOiAxDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBQb3J0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VE
ZXNjcmlwdG9yOiBBbHRlcm5hdGl2ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3Jp
cHRvcjogU2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDEzMQ0KWEVO
QlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogMg0KWEVOQlVTfEZk
b0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogRGV2aWNlUHJpdmF0
ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogUmVxdWlyZWQNClhFTkJV
U3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFNoYXJlRGlzcG9zaXRpb249RGV2aWNl
RXhjbHVzaXZlIEZsYWdzPTAwMDANClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IDMNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFhT
MDAwMSBYRU5CVVM6IE1lbW9yeQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogUHJlZmVycmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFy
ZURpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDg0DQpYRU5CVVN8RmRvRHVt
cElvUmVzb3VyY2VEZXNjcmlwdG9yOiBMZW5ndGggPSAwMTAwMDAwMCBBbGlnbm1lbnQgPSAw
MDAwMDAwMQ0KIE1pbmltdW1BZGRyZXNzID0gMDAwMDAwMDAuZjAwMDAwMDAgTWF4aW11bUFk
ZHJlc3MgPSAwMDAwMDAwMC5mMGZmZmZmZg0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlz
dDogWFMwMDAxIFhFTkJVUzogNA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogWFMwMDAxIFhFTkJVUzogTWVtb3J5DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBBbHRlcm5hdGl2ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogU2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDA4NA0KWEVOQlVT
fEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogTGVuZ3RoID0gMDEwMDAwMDAgQWxpZ25t
ZW50ID0gMDEwMDAwMDANCiBNaW5pbXVtQWRkcmVzcyA9IDAwMDAwMDAwLjAwMDAwMDAwIE1h
eGltdW1BZGRyZXNzID0gMDAwMDAwMDAuZmZmZmZmZmYNClhFTkJVU3xGZG9EdW1wSW9SZXNv
dXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IDUNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURl
c2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IERldmljZVByaXZhdGUNClhFTkJVU3xGZG9EdW1w
SW9SZXNvdXJjZURlc2NyaXB0b3I6IFJlcXVpcmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3Vy
Y2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0w
MDAwDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiA2DQpY
RU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBJbnRl
cnJ1cHQNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFJlcXVpcmVkDQpY
RU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0aW9uPVNo
YXJlZCBGbGFncz0wMDA0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBN
aW5pbXVtVmVjdG9yPTAwMDAwMDAwIE1heGltdW1WZWN0b3I9ZmZmZmZmZmYgQWZmaW5pdHlQ
b2xpY3k9U3BlY2lmaWVkUHJvY2Vzc29ycyBQcmlvcml0eVBvbGljeT1VbmRlZmluZWQgVGFy
Z2V0dGVkUHJvY2Vzc29ycyA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wSW9S
ZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IDcNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJj
ZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IEludGVycnVwdA0KWEVOQlVTfEZkb0R1bXBJ
b1Jlc291cmNlRGVzY3JpcHRvcjogUmVxdWlyZWQNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJj
ZURlc2NyaXB0b3I6IFNoYXJlRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAw
MDcNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IE1pbmltdW1WZWN0b3I9
ZmZmZmZmZmUgTWF4aW11bVZlY3Rvcj1mZmZmZmZmZSBBZmZpbml0eVBvbGljeT1TcGVjaWZp
ZWRQcm9jZXNzb3JzIFByaW9yaXR5UG9saWN5PVVuZGVmaW5lZCBUYXJnZXR0ZWRQcm9jZXNz
b3JzID0gMDAwMDAwMDAwMDAwMDAwMQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDog
WFMwMDAxIFhFTkJVUzogOA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjog
WFMwMDAxIFhFTkJVUzogSW50ZXJydXB0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBSZXF1aXJlZA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjog
U2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDAwNw0KWEVOQlVTfEZk
b0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogTWluaW11bVZlY3Rvcj1mZmZmZmZmZSBNYXhp
bXVtVmVjdG9yPWZmZmZmZmZlIEFmZmluaXR5UG9saWN5PVNwZWNpZmllZFByb2Nlc3NvcnMg
UHJpb3JpdHlQb2xpY3k9VW5kZWZpbmVkIFRhcmdldHRlZFByb2Nlc3NvcnMgPSAwMDAwMDAw
MDAwMDAwMDAyDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwZDpGSUxURVJfUkVT
T1VSQ0VfUkVRVUlSRU1FTlRTKSgwMDAwMDAwMCkNClhFTkJVU3xGZG9EaXNwYXRjaFBucDog
PT09PT4gKDAwOlNUQVJUX0RFVklDRSkNClhFTkJVU3xGZG9EdW1wQ21GdWxsUmVzb3VyY2VE
ZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBSQVc6IEludGVyZmFjZVR5cGUgPSBQQ0lCdXMg
QnVzTnVtYmVyID0gMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IFJBVzogVmVyc2lvbiA9IDEgUmV2aXNpb24gPSAxIENvdW50ID0gNw0K
WEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJB
VzogMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAw
MSBYRU5CVVM6IFJBVzogUG9ydCBTaGFyZWREaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUg
RmxhZ3M9MDEzMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhTMDAw
MSBYRU5CVVM6IFJBVzogMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2Ny
aXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogRGV2aWNlUHJpdmF0ZSBTaGFyZWREaXNwb3Np
dGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDAwMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRp
YWxSZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJBVzogMg0KWEVOQlVTfEZkb0R1bXBD
bVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogTWVtb3J5
IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDg0DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBTdGFydCA9IDAwMDAwMDAwLmYwMDAwMDAwIExlbmd0aCA9IDAxMDAwMDAwDQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogUkFXOiAzDQpY
RU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJV
UzogUkFXOiBEZXZpY2VQcml2YXRlIFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2
ZSBGbGFncz0wMDAwDQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMw
MDAxIFhFTkJVUzogUkFXOiA0DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVz
Y3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFXOiBJbnRlcnJ1cHQgU2hhcmVkRGlzcG9zaXRp
b249U2hhcmVkIEZsYWdzPTAwMDQNClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VE
ZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBSQVc6IExldmVsID0gMDAwMDAwMWMgVmVjdG9y
ID0gMDAwMDAwMWMgQWZmaW5pdHkgPSAwMDAwMDAwMEZGRkZGRkZGDQpYRU5CVVN8RmRvRHVt
cENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogUkFXOiA1DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBJbnRlcnJ1cHQgU2hhcmVkRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAw
MDcNClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEg
WEVOQlVTOiBSQVc6IE1lc3NhZ2VDb3VudCA9IDAwMDAwMDAxIFZlY3RvciA9IGZmZmZmZmZl
IEFmZmluaXR5ID0gMDAwMDAwMDAwMDAwMDAwMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxS
ZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJBVzogNg0KWEVOQlVTfEZkb0R1bXBDbVBh
cnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogSW50ZXJydXB0
IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDA3DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBNZXNzYWdlQ291bnQgPSAwMDAwMDAwMSBWZWN0b3IgPSBmZmZmZmZmZCBBZmZpbml0eSA9
IDAwMDAwMDAwMDAwMDAwMDINClhFTkJVU3xGZG9EdW1wQ21GdWxsUmVzb3VyY2VEZXNjcmlw
dG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBJbnRlcmZhY2VUeXBlID0gUENJQnVz
IEJ1c051bWJlciA9IDANClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VMaXN0OiBY
UzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBWZXJzaW9uID0gMSBSZXZpc2lvbiA9IDEgQ291
bnQgPSA3DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhF
TkJVUzogVFJBTlNMQVRFRDogMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURl
c2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IFBvcnQgU2hhcmVkRGlzcG9z
aXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAxMzENClhFTkJVU3xGZG9EdW1wQ21QYXJ0
aWFsUmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiAxDQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJB
TlNMQVRFRDogRGV2aWNlUHJpdmF0ZSBTaGFyZWREaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNp
dmUgRmxhZ3M9MDAwMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IDINClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVz
b3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBNZW1vcnkgU2hh
cmVkRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAwODQNClhFTkJVU3xGZG9E
dW1wQ21QYXJ0aWFsUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xB
VEVEOiBTdGFydCA9IDAwMDAwMDAwLmYwMDAwMDAwIExlbmd0aCA9IDAxMDAwMDAwDQpYRU5C
VVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogVFJBTlNM
QVRFRDogMw0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhT
MDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IERldmljZVByaXZhdGUgU2hhcmVkRGlzcG9zaXRp
b249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAwMDANClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFs
UmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA0DQpYRU5CVVN8RmRv
RHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNM
QVRFRDogSW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPVNoYXJlZCBGbGFncz0wMDA0DQpY
RU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJV
UzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYSBWZWN0b3IgPSAwMDAwMDBhMiBBZmZp
bml0eSA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3Vy
Y2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA1DQpYRU5CVVN8RmRvRHVtcENt
UGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNMQVRFRDog
SW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDA3
DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhF
TkJVUzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYiBWZWN0b3IgPSAwMDAwMDBiMCBB
ZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVz
b3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA2DQpYRU5CVVN8RmRvRHVt
cENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNMQVRF
RDogSW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0w
MDA3DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAx
IFhFTkJVUzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYiBWZWN0b3IgPSAwMDAwMDBi
MCBBZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDINClhFTkJVU3xGZG9Db25uZWN0SW50ZXJy
dXB0OiA9PT09Pg0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6IEZGRkZGQTgwMDFBMDc0
Qjg6IFNoYXJlZCBMZXZlbFNlbnNpdGl2ZSBDUFUgMCBWRUNUT1IgYTINClhFTkJVU3xGZG9D
b25uZWN0SW50ZXJydXB0OiA8PT09PQ0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6ID09
PT0+DQpYRU5CVVN8RmRvQ29ubmVjdEludGVycnVwdDogRkZGRkZBODAwMUEwQTk4ODogRGV2
aWNlRXhjbHVzaXZlIExhdGNoZWQgQ1BVIDAgVkVDVE9SIGIwDQpYRU5CVVN8RmRvQ29ubmVj
dEludGVycnVwdDogPD09PT0NClhFTkJVU3xGZG9Db25uZWN0SW50ZXJydXB0OiA9PT09Pg0K
WEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6IEZGRkZGQTgwMDBDNzhGNTg6IERldmljZUV4
Y2x1c2l2ZSBMYXRjaGVkIENQVSAxIFZFQ1RPUiBiMA0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRl
cnJ1cHQ6IDw9PT09DQpYRU5CVVN8RmRvU2NhbjogPT09PT4NClhFTkJVU3xGZG9EM1RvRDA6
ID09PT0+DQpYRU5CVVN8RGVidWdBY3F1aXJlOiA9PT09Pg0KWEVOQlVTfERlYnVnQWNxdWly
ZTogPD09PT0NClhFTkJVU3xTdXNwZW5kQWNxdWlyZTogPT09PT4NClhFTkJVU3xTdXNwZW5k
QWNxdWlyZTogPD09PT0NClhFTkJVU3xSYW5nZVNldEFjcXVpcmU6ID09PT0+DQpYRU5CVVN8
UmFuZ2VTZXRBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAo
aW9fc3BhY2UpDQpYRU5CVVN8UmFuZ2VTZXRDcmVhdGU6IDw9PT09DQpYRU5CVVN8RmRvQ3Jl
YXRlSW9TcGFjZTogMDAwMDAwMDAuZjAwMDAwMDAgLSAwMDAwMDAwMC5mMGZmZmZmZg0KWEVO
QlVTfEZkb1NjYW46IHdhaXRpbmcuLi4NClhFTkJVU3xFdnRjaG5BY3F1aXJlOiA9PT09Pg0K
WEVOQlVTfFNoYXJlZEluZm9BY3F1aXJlOiA9PT09Pg0KWEVOQlVTfFNoYXJlZEluZm9BY3F1
aXJlOiA8PT09PQ0KWEVOQlVTfEV2dGNobkZpZm9BY3F1aXJlOiA9PT09Pg0KWEVOfEV2ZW50
Q2hhbm5lbEluaXRDb250cm9sOiBmYWlsMSAoYzAwMDAwMDIpDQpYRU5CVVN8RXZ0Y2huRmlm
b0FjcXVpcmU6IGZhaWwxIChjMDAwMDAwMikNClhFTkJVU3xFdnRjaG5Ud29MZXZlbEFjcXVp
cmU6ID09PT0+DQpYRU5CVVN8RmRvU3VzcGVuZDogPT09PT4NClhFTkJVU3xFdnRjaG5Ud29M
ZXZlbEFjcXVpcmU6IDw9PT09DQpYRU5CVVN8RXZ0Y2huQWJpQWNxdWlyZTogVFdPIExFVkVM
DQpYRU5CVVN8RXZ0Y2huSW50ZXJydXB0RW5hYmxlOiA9PT09Pg0KWEVOQlVTfEV2dGNobklu
dGVycnVwdEVuYWJsZTogPD09PT0NClhFTkJVU3xFdnRjaG5BY3F1aXJlOiA8PT09PQ0KWEVO
QlVTfFN0b3JlQWNxdWlyZTogPT09PT4NClhFTkJVU3xFdnRjaG5PcGVuOiAzDQpYRU5CVVN8
RmRvU3VzcGVuZDogd2FpdGluZy4uLg0KWEVOQlVTfEZkb0JhbGxvb246ID09PT0+DQpYRU5C
VVN8U3RvcmVBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfEJhbGxvb25BY3F1aXJlOiA9PT09Pg0K
WEVOQlVTfFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAoYmFsbG9vbikNClhFTkJVU3xSYW5nZVNl
dENyZWF0ZTogPD09PT0NClhFTkJVU3xCYWxsb29uQWNxdWlyZTogPD09PT0NClhFTkJVU3xf
X0Zkb0QzVG9EMDogPT09PT4NClhFTkJVU3xFdnRjaG5PcGVuOiAyDQpYRU5CVVN8RmRvQmFs
bG9vbjogd2FpdGluZy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNo
RXZlbnQ6IDVjYzcgKGRldmljZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVT
fEZkb1NjYW46IGF3YWtlDQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4uLg0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjOCAo
Y29udHJvbC9zaHV0ZG93bikNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZk
b1N1c3BlbmQ6IGF3YWtlDQpYRU5CVVN8RmRvU3VzcGVuZDogd2FpdGluZy4uLg0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogNWNjOSAobWVtb3J5L3RhcmdldCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvQmFsbG9vbjogYXdha2UNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvQmFsbG9vbjogd2FpdGlu
Zy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8X19GZG9EM1RvRDA6IDw9
PT09DQpYRU5CVVN8RmRvRDNUb0QwOiA8PT09PQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8
PT09PSAoMDA6U1RBUlRfREVWSUNFKSgwMDAwMDAwMCkNClhFTkJVU3xGZG9EaXNwYXRjaFBu
cDogPT09PT4gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykNClhFTkJVU3xGZG9EaXNwYXRjaFBu
cDogPD09PT0gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDApDQpYRU5CVVN8RmRv
U2NhbjogYXdha2UNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNDpRVUVSWV9QTlBfREVWSUNFX1NUQVRF
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xGZG9E
aXNwYXRjaFBucDogPD09PT0gKDE0OlFVRVJZX1BOUF9ERVZJQ0VfU1RBVEUpKDAwMDAwMDAw
KQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVWSUNFX1JFTEFU
SU9OUykNClhFTkJVU3xGZG9RdWVyeURldmljZVJlbGF0aW9uczogMCBQRE8ocykNClhFTkJV
U3xGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKDAw
MDAwMDAwKQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPT09PT4NClhFTkJVU3xQZG9BZGRSZXZp
c2lvbjogMDAwMDAwMDEgLT4gWFMwMDAxIFhFTkJVUyBWQkQ6IFNVU1BFTkQgdjEgU0hBUkVE
X0lORk8gdjEgRVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNI
RSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2
aXNpb246IDAwMDAwMDAyIC0+IFhTMDAwMSBYRU5CVVMgVkJEOiBTVVNQRU5EIHYxIFNIQVJF
RF9JTkZPIHYxIEVWVENITiB2MiBERUJVRyB2MSBTVE9SRSB2MSBSQU5HRV9TRVQgdjEgQ0FD
SEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2MQ0KWEVOQlVTfFBkb0FkZFJl
dmlzaW9uOiAwMDAwMDAwMyAtPiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVORCB2MSBTSEFS
RURfSU5GTyB2MSBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0VfU0VUIHYxIENB
Q0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJVU3xQZG9BZGRS
ZXZpc2lvbjogMDAwMDAwMDQgLT4gWFMwMDAxIFhFTkJVUyBWQkQ6IFNVU1BFTkQgdjEgU0hB
UkVEX0lORk8gdjIgRVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBD
QUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRk
UmV2aXNpb246IDAwMDAwMDA1IC0+IFhTMDAwMSBYRU5CVVMgVkJEOiBTVVNQRU5EIHYxIFNI
QVJFRF9JTkZPIHYyIEVWVENITiB2MiBERUJVRyB2MSBTVE9SRSB2MSBSQU5HRV9TRVQgdjEg
Q0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2MQ0KWEVOQlVTfFBkb0Fk
ZFJldmlzaW9uOiAwMDAwMDAwNiAtPiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVORCB2MSBT
SEFSRURfSU5GTyB2MiBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0VfU0VUIHYx
IENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJVU3xCdXNJ
bml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfEJ1c0luaXRpYWxpemU6IDw9PT09DQpYRU5CVVN8
UGRvQ3JlYXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDEpDQpYRU5CVVN8UGRv
Q3JlYXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDIpDQpYRU5CVVN8UGRvQ3Jl
YXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDMpDQpYRU5CVVN8UGRvQ3JlYXRl
OiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDQpDQpYRU5CVVN8UGRvQ3JlYXRlOiBG
RkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDUpDQpYRU5CVVN8UGRvQ3JlYXRlOiBGRkZG
RkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDYpDQpYRU5CVVN8UGRvUmVzdW1lOiA8PT09Pg0K
WEVOQlVTfFBkb0FkZFJldmlzaW9uOiAwMDAwMDAwMSAtPiBYUzAwMDEgWEVOQlVTIFZJRjog
U1VTUEVORCB2MSBTSEFSRURfSU5GTyB2MSBFVlRDSE4gdjEgREVCVUcgdjEgU1RPUkUgdjEg
UkFOR0VfU0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjEN
ClhFTkJVU3xQZG9BZGRSZXZpc2lvbjogMDAwMDAwMDIgLT4gWFMwMDAxIFhFTkJVUyBWSUY6
IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JFIHYx
IFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYx
DQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAzIC0+IFhTMDAwMSBYRU5CVVMgVklG
OiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYxIEVWVENITiB2MyBERUJVRyB2MSBTVE9SRSB2
MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2
MQ0KWEVOQlVTfFBkb0FkZFJldmlzaW9uOiAwMDAwMDAwNCAtPiBYUzAwMDEgWEVOQlVTIFZJ
RjogU1VTUEVORCB2MSBTSEFSRURfSU5GTyB2MiBFVlRDSE4gdjEgREVCVUcgdjEgU1RPUkUg
djEgUkFOR0VfU0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcg
djENClhFTkJVU3xQZG9BZGRSZXZpc2lvbjogMDAwMDAwMDUgLT4gWFMwMDAxIFhFTkJVUyBW
SUY6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjIgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JF
IHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVH
IHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDA2IC0+IFhTMDAwMSBYRU5CVVMg
VklGOiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYyIEVWVENITiB2MyBERUJVRyB2MSBTVE9S
RSB2MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExV
RyB2MQ0KWEVOQlVTfEJ1c0luaXRpYWxpemU6ID09PT0+DQpYRU5CVVN8QnVzSW5pdGlhbGl6
ZTogPD09PT0NClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAw
MDAwMSkNClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAw
MikNClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwMykN
ClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNCkNClhF
TkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNSkNClhFTkJV
U3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNikNClhFTkJVU3xQ
ZG9SZXN1bWU6IDw9PT0+DQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAxIC0+IFhT
MDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hOIHYx
IERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1V
TEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAyIC0+
IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hO
IHYyIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEg
RU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAz
IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZU
Q0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIg
djEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAw
MDA0IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjIg
RVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRU
QUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAw
MDAwMDA1IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8g
djIgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBH
TlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246
IDAwMDAwMDA2IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lO
Rk8gdjIgRVZUQ0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2
MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8QnVzSW5pdGlhbGl6
ZTogPT09PT4NClhFTkJVU3xCdXNJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfFBkb0NyZWF0
ZTogRkZGRkZBODAwMUExRjUzMCAoSUZBQ0UgMDAwMDAwMDEpDQpYRU5CVVN8UGRvQ3JlYXRl
OiBGRkZGRkE4MDAxQTFGNTMwIChJRkFDRSAwMDAwMDAwMikNClhFTkJVU3xQZG9DcmVhdGU6
IEZGRkZGQTgwMDFBMUY1MzAgKElGQUNFIDAwMDAwMDAzKQ0KWEVOQlVTfFBkb0NyZWF0ZTog
RkZGRkZBODAwMUExRjUzMCAoSUZBQ0UgMDAwMDAwMDQpDQpYRU5CVVN8UGRvQ3JlYXRlOiBG
RkZGRkE4MDAxQTFGNTMwIChJRkFDRSAwMDAwMDAwNSkNClhFTkJVU3xQZG9DcmVhdGU6IEZG
RkZGQTgwMDFBMUY1MzAgKElGQUNFIDAwMDAwMDA2KQ0KWEVOQlVTfFBkb1Jlc3VtZTogPD09
PT4NClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGlu
Zy4uLg0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVWSUNFX1JF
TEFUSU9OUykNClhFTkJVU3xGZG9RdWVyeURldmljZVJlbGF0aW9uczogMyBQRE8ocykNClhF
TkJVU3xGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQp
DQpYRU5CVVN8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDYNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAwMCkNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPT09PT4gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkN
ClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IERldmljZVRleHREZXNjcmlwdGlvbg0KWEVO
QlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogVkJEOiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVO
RCB2MSBTSEFSRURfSU5GTyB2MiBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0Vf
U0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJV
U3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDBjOlFVRVJZX0RFVklDRV9URVhUKSgwMDAwMDAw
MCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBjOlFVRVJZX0RFVklDRV9URVhU
KQ0KWEVOQlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogRGV2aWNlVGV4dExvY2F0aW9uSW5mb3Jt
YXRpb24NClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IFZCRDogVkJEDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoMDAwMDAwMDApDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9R
dWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkJVU3xQZG9RdWVyeUlkOiAtIF8NClhF
TkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAwMCkNClhF
TkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZX0lEKQ0KWEVOQlVTfFBkb1F1
ZXJ5SWQ6IEJ1c1F1ZXJ5SGFyZHdhcmVJRHMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDAxDQpYRU5CVVN8UGRvUXVlcnlJZDog
LSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAwMDAwMg0KWEVOQlVTfFBkb1F1
ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDMNClhFTkJV
U3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDA0
DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8w
MDAwMDAwNQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZC
RCZSRVZfMDAwMDAwMDYNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlk
OiBCdXNRdWVyeUNvbXBhdGlibGVJRHMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xW
RU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDAxDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBY
RU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAwMDAwMg0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDMNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDA0DQpY
RU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAw
MDAwNQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZS
RVZfMDAwMDAwMDYNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9EaXNwYXRjaFBu
cDogPD09PT0gKDEzOlFVRVJZX0lEKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykNClhFTkJVU3xQZG9E
aXNwYXRjaFBucDogPD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykoMDAw
MDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNTpRVUVSWV9CVVNfSU5G
T1JNQVRJT04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNTpRVUVSWV9CVVNf
SU5GT1JNQVRJT04pKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MGE6UVVFUllfUkVTT1VSQ0VTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGE6
UVVFUllfUkVTT1VSQ0VTKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09
PT4gKDE5OlVOS05PV04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxOTpVTktO
T1dOKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZ
X0lEKQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkJVU3xQZG9R
dWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDA2DQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMpDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMpKDAwMDAw
MDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVFUllfREVWSUNFX1RF
WFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0RGVzY3JpcHRpb24N
ClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IFZJRjogWFMwMDAxIFhFTkJVUyBWSUY6IFNV
U1BFTkQgdjEgU0hBUkVEX0lORk8gdjIgRVZUQ0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJB
TkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoMDAw
MDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwYzpRVUVSWV9ERVZJQ0Vf
VEVYVCkNClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IERldmljZVRleHRMb2NhdGlvbklu
Zm9ybWF0aW9uDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBWSUY6IFZJRg0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGM6UVVFUllfREVWSUNFX1RFWFQpKDAwMDAwMDAw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8
UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBf
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQ
ZG9RdWVyeUlkOiBCdXNRdWVyeUhhcmR3YXJlSURzDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBY
RU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAwMQ0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZfMDAwMDAwMDINClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDAzDQpY
RU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAw
MDAwNA0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZS
RVZfMDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRF
Vl9WSUYmUkVWXzAwMDAwMDA2DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5DTEFTUw0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8UGRvUXVl
cnlJZDogQnVzUXVlcnlDb21wYXRpYmxlSURzDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5C
VVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAwMQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6
IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZfMDAwMDAwMDINClhFTkJVU3xQZG9R
dWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDAzDQpYRU5C
VVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAw
NA0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZf
MDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9W
SUYmUkVWXzAwMDAwMDA2DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5DTEFTUw0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8UGRvRGlzcGF0
Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0
Y2hQbnA6ID09PT0+ICgwYjpRVUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMpDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYjpRVUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTU6UVVFUllfQlVT
X0lORk9STUFUSU9OKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTU6UVVFUllf
QlVTX0lORk9STUFUSU9OKSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09
PT4gKDBhOlFVRVJZX1JFU09VUkNFUykNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0g
KDBhOlFVRVJZX1JFU09VUkNFUykoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgxOTpVTktOT1dOKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTk6
VU5LTk9XTikoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpR
VUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeURldmljZUlEDQpYRU5CVVN8
UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfSUZBQ0UmUkVWXzAwMDAwMDA2
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVFUllfREVW
SUNFX1RFWFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0RGVzY3Jp
cHRpb24NClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IElGQUNFOiBYUzAwMDEgWEVOQlVT
IElGQUNFOiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYyIEVWVENITiB2MyBERUJVRyB2MSBT
VE9SRSB2MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVO
UExVRyB2MQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGM6UVVFUllfREVWSUNF
X1RFWFQpKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVF
UllfREVWSUNFX1RFWFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0
TG9jYXRpb25JbmZvcm1hdGlvbg0KWEVOQlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogSUZBQ0U6
IElGQUNFDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0Vf
VEVYVCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVS
WV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIF8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZ
X0lEKSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZ
X0lEKQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SGFyZHdhcmVJRHMNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDEN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZf
MDAwMDAwMDINClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9J
RkFDRSZSRVZfMDAwMDAwMDMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMw
MDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDQNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlk
OiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDYNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgx
MzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgx
MzpRVUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeUNvbXBhdGlibGVJRHMN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZf
MDAwMDAwMDENClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9J
RkFDRSZSRVZfMDAwMDAwMDINClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMw
MDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDQNClhFTkJVU3xQZG9RdWVyeUlk
OiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDUNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDYN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEz
OlFVRVJZX0lEKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBi
OlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykNClhFTkJVU3xQZG9EaXNwYXRjaFBucDog
PD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykoMDAwMDAwMDApDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNTpRVUVSWV9CVVNfSU5GT1JNQVRJT04pDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNTpRVUVSWV9CVVNfSU5GT1JNQVRJT04p
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGE6UVVFUllfUkVT
T1VSQ0VTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGE6UVVFUllfUkVTT1VS
Q0VTKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDE5OlVOS05P
V04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxOTpVTktOT1dOKShjMDAwMDBi
YikNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9R
dWVyeUlkOiAtIFBDSVxWRU5fODA4NiZERVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAw
DQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9R
dWVyeUlkOiAtIDA5DQpYRU5GSUxUfFBkb0Rpc3BhdGNoUG93ZXI6IFBDSVxWRU5fODA4NiZE
RVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAwXDA5OiA9PT09PiAoMDI6U0VUX1BPV0VS
KQ0KWEVORklMVHxQZG9EaXNwYXRjaFBvd2VyOiBQQ0lcVkVOXzgwODYmREVWXzcwMTAmU1VC
U1lTXzAwMDE1ODUzJlJFVl8wMFwwOTogPD09PT0gKDAyOlNFVF9QT1dFUikgKDAwMDAwMTAz
KQ0KWEVORklMVHxQZG9TZXREZXZpY2VQb3dlcjogUENJXFZFTl84MDg2JkRFVl83MDEwJlNV
QlNZU18wMDAxNTg1MyZSRVZfMDBcMDk6ID09PT0+IChEMDpOb25lKQ0KWEVORklMVHxQZG9T
ZXREZXZpY2VQb3dlcjogUENJXFZFTl84MDg2JkRFVl83MDEwJlNVQlNZU18wMDAxNTg1MyZS
RVZfMDBcMDk6IDw9PT09IChEMDpOb25lKSgwMDAwMDAwMCkNClhFTkZJTFR8RmRvQ3JlYXRl
OiBGRkZGRkE4MDAxQTNEQTcwIChQQ0lJREVcSURFQ2hhbm5lbFwwKQ0KWEVORklMVHxGZG9D
cmVhdGU6IEZGRkZGQTgwMDFBNDRBNzAgKFBDSUlERVxJREVDaGFubmVsXDEpDQpYRU5GSUxU
fEZkb0Rpc3BhdGNoUG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6ID09PT0+ICgwMjpTRVRf
UE9XRVIpDQpYRU5GSUxUfEZkb0Rpc3BhdGNoUG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6
IDw9PT09ICgwMjpTRVRfUE9XRVIpICgwMDAwMDEwMykNClhFTkZJTFR8RmRvU2V0RGV2aWNl
UG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6ID09PT0+IChEMDpOb25lKQ0KWEVORklMVHxG
ZG9TZXREZXZpY2VQb3dlclVwOiBQQ0lJREVcSURFQ2hhbm5lbFwwOiBEMyAtPiBEMA0KWEVO
RklMVHxGZG9TZXREZXZpY2VQb3dlcjogUENJSURFXElERUNoYW5uZWxcMDogPD09PT0gKEQw
Ok5vbmUpKDAwMDAwMDAwKQ0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9uczogUENJ
SURFXElERUNoYW5uZWxcMDogMCBQRE8ocykNClhFTkZJTFR8RmRvRGlzcGF0Y2hQb3dlcjog
UENJSURFXElERUNoYW5uZWxcMTogPT09PT4gKDAyOlNFVF9QT1dFUikNClhFTkZJTFR8RmRv
RGlzcGF0Y2hQb3dlcjogUENJSURFXElERUNoYW5uZWxcMTogPD09PT0gKDAyOlNFVF9QT1dF
UikgKDAwMDAwMTAzKQ0KWEVORklMVHxGZG9TZXREZXZpY2VQb3dlcjogUENJSURFXElERUNo
YW5uZWxcMTogPT09PT4gKEQwOk5vbmUpDQpYRU5GSUxUfEZkb1NldERldmljZVBvd2VyVXA6
IFBDSUlERVxJREVDaGFubmVsXDE6IEQzIC0+IEQwDQpYRU5GSUxUfEZkb1NldERldmljZVBv
d2VyOiBQQ0lJREVcSURFQ2hhbm5lbFwxOiA8PT09PSAoRDA6Tm9uZSkoMDAwMDAwMDApDQpY
RU5GSUxUfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiBQQ0lJREVcSURFQ2hhbm5lbFwxOiAw
IFBETyhzKQ0KWEVOVkJEfERyaXZlckVudHJ5Oj09PT4gKElycWw9MCkNClhFTlZCRHxEcml2
ZXJFbnRyeTo4LjAuMC4wICgxMS8zLzIwMTUpDQpYRU5WQkR8X19Ecml2ZXJQYXJzZVBhcmFt
ZXRlcktleTpPcHRpb25zID0gIiBURVNUU0lHTklORyAgTk9FWEVDVVRFPU9QVElOICBERUJV
RyAgREVCVUdQT1JUPUNPTTEgIEJBVURSQVRFPTExNTIwMCINClhFTlZCRHxfX0RyaXZlclBh
cnNlUGFyYW1ldGVyS2V5OkRyaXZlclBhcmFtZXRlcnM6IA0KWEVOVkJEfERyaXZlckVudHJ5
Ojw9PT0gKDAwMDAwMDAwKSAoSXJxbD0wKQ0KWEVORElTS3xEcml2ZXJFbnRyeTo9PT09Pg0K
WEVORElTS3xEcml2ZXJFbnRyeTpYRU5ESVNLIDguMC4wICgwKSAoMTEuMDMuMjAxNSkNClhF
TkRJU0t8RHJpdmVyRW50cnk6PD09PT0NClhFTkRJU0t8RmRvQ3JlYXRlOkZGRkZGQTgwMDFB
NENCQTANClhFTlZCRHxEaXNwYXRjaFBucDpEZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTRE
MDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPT09PT4gKDE4OlFVRVJZX0xFR0FDWV9CVVNfSU5GT1JNQVRJT04p
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxODpRVUVSWV9MRUdBQ1lfQlVTX0lO
Rk9STUFUSU9OKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpEZXZpY2VPYmplY3Qg
MHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAwMDAwMCkgb3Ig
YSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBkOkZJTFRFUl9SRVNPVVJD
RV9SRVFVSVJFTUVOVFMpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwZDpGSUxU
RVJfUkVTT1VSQ0VfUkVRVUlSRU1FTlRTKSgwMDAwMDAwMCkNClhFTlZCRHxEaXNwYXRjaFBu
cDpEZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAw
MDAwMDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4
OlFVRVJZX0lOVEVSRkFDRSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFV
RVJZX0lOVEVSRkFDRSkoYzAwMDAwYmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgw
ODpRVUVSWV9JTlRFUkZBQ0UpKGMwMDAwMGJiKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpE
ZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAw
MDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4OlFV
RVJZX0lOVEVSRkFDRSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZ
X0lOVEVSRkFDRSkoYzAwMDAwYmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgw
ODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpR
VUVSWV9JTlRFUkZBQ0UpKGMwMDAwMGJiKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09PSAo
MDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpEZXZp
Y2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAw
MDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDAwOlNUQVJU
X0RFVklDRSkNClhFTkJVU3xQZG9QYXJzZVJlc291cmNlczogVkJEOiBbMF0gMDM6TWVtb3J5
DQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFJBVzogU2hhcmVkRGlzcG9zaXRpb249MDEg
RmxhZ3M9MDAyNCBTdGFydCA9IDAwMDAwMDAwLmZiZmZmMDAwIExlbmd0aCA9IDAwMDAxMDAw
DQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFRSQU5TTEFURUQ6IFNoYXJlZERpc3Bvc2l0
aW9uPTAxIEZsYWdzPTAwMjQgU3RhcnQgPSAwMDAwMDAwMC5mYmZmZjAwMCBMZW5ndGggPSAw
MDAwMTAwMA0KWEVOQlVTfFBkb1BhcnNlUmVzb3VyY2VzOiBWQkQ6IFsxXSAwMjpJbnRlcnJ1
cHQNClhFTkJVU3xQZG9QYXJzZVJlc291cmNlczogUkFXOiBTaGFyZWREaXNwb3NpdGlvbj0w
MSBGbGFncz0wMDAwIExldmVsID0gMDAwMDAwMGIgVmVjdG9yID0gMDAwMDAwMGIgQWZmaW5p
dHkgPSAwMDAwMDAwMEZGRkZGRkZGDQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFRSQU5T
TEFURUQ6IFNoYXJlZERpc3Bvc2l0aW9uPTAxIEZsYWdzPTAwMDAgTGV2ZWwgPSAwMDAwMDAw
NyBWZWN0b3IgPSAwMDAwMDA3MiBBZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDMNClhFTkJV
U3xQZG9QYXJzZVJlc291cmNlczogPD09PT0NClhFTkJVU3xfX1Bkb0QzVG9EMDogKFZCRCkg
PT09PT4NClhFTkJVU3xfX1Bkb0QzVG9EMDogKFZCRCkgPD09PT0NClhFTkJVU3xQZG9EaXNw
YXRjaFBucDogPD09PT0gKDAwOlNUQVJUX0RFVklDRSkoMDAwMDAwMDApDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVl
cnlJbnRlcmZhY2U6IFZCRDogQlVTX0lOVEVSRkFDRSAoVkVSU0lPTiAxKQ0KWEVOQlVTfFBk
b0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAwMDAwMCkNClhF
TlZCRHxId0ZpbmRBZGFwdGVyOigweEZGRkZGQTgwMDFBNTEwMTgsIDB4MDAwMDAwMDAwMDAw
MDAwMCwgMHgwMDAwMDAwMDAwMDAwMDAwLCAsIDB4RkZGRkZBODAwMUE0RDJEMCwgMHhGRkZG
Rjg4MDAwOUFFMDgwKSBAMCAtLS0+DQpYRU5WQkR8RmRvRmluZEFkYXB0ZXI6NjRiaXQgRE1B
DQpYRU5WQkR8RGlzcGF0Y2hQbnA6RGV2aWNlT2JqZWN0IDB4RkZGRkZBODAwMUE0RDA2MCBp
cyBub3QgRkRPICgweDAwMDAwMDAwMDAwMDAwMDApIG9yIGEgUERPDQpYRU5CVVN8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVlcnlJ
bnRlcmZhY2U6IFZCRDogQlVTX0lOVEVSRkFDRSAoVkVSU0lPTiAxKQ0KWEVOQlVTfFBkb0Rp
c3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAwMDAwMCkNClhFTkJV
U3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IFZlcnNpb24gPSAwDQpYRU5CVVN8RG1hRHVt
cERldmljZURlc2NyaXB0aW9uOiBNYXN0ZXIgPSBUUlVFDQpYRU5CVVN8RG1hRHVtcERldmlj
ZURlc2NyaXB0aW9uOiBTY2F0dGVyR2F0aGVyID0gVFJVRQ0KWEVOQlVTfERtYUR1bXBEZXZp
Y2VEZXNjcmlwdGlvbjogRGVtYW5kTW9kZSA9IEZBTFNFDQpYRU5CVVN8RG1hRHVtcERldmlj
ZURlc2NyaXB0aW9uOiBBdXRvSW5pdGlhbGl6ZSA9IEZBTFNFDQpYRU5CVVN8RG1hRHVtcERl
dmljZURlc2NyaXB0aW9uOiBEbWEzMkJpdEFkZHJlc3NlcyA9IFRSVUUNClhFTkJVU3xEbWFE
dW1wRGV2aWNlRGVzY3JpcHRpb246IElnbm9yZUNvdW50ID0gRkFMU0UNClhFTkJVU3xEbWFE
dW1wRGV2aWNlRGVzY3JpcHRpb246IERtYTY0Qml0QWRkcmVzc2VzID0gVFJVRQ0KWEVOQlVT
fERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogQnVzTnVtYmVyID0gMDAwMDAwMDANClhFTkJV
U3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERtYUNoYW5uZWwgPSBmZmZmZmZmZg0KWEVO
QlVTfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogSW50ZXJmYWNlVHlwZSA9IEludGVybmFs
DQpYRU5CVVN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWFXaWR0aCA9IDhCaXRzDQpY
RU5CVVN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWFTcGVlZCA9IENvbXBhdGlibGUN
ClhFTkJVU3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IE1heGltdW1MZW5ndGggPSAwMDBi
MDAwMA0KWEVOQlVTfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogRG1hUG9ydCA9IGZmZmZm
ZmZmDQpYRU5CVVN8UGRvR2V0RG1hQWRhcHRlcjogPD09PT4NClhFTkJVU3xEbWFHZXRBZGFw
dGVyOiBubyBpbnRlcmNlcHRpb24NClhFTlZCRHxfX0Zkb0luaXRpYWxpemU6PT09PT0+ICgw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0K
WEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IFNUT1JFX0lOVEVSRkFDRSAoVkVSU0lP
TiAxKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNF
KSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4OlFVRVJZX0lO
VEVSRkFDRSkNClhFTkJVU3xQZG9RdWVyeUludGVyZmFjZTogVkJEOiBFVlRDSE5fSU5URVJG
QUNFIChWRVJTSU9OIDMpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVS
WV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IEdO
VFRBQl9JTlRFUkZBQ0UgKFZFUlNJT04gMSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09
PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQ
bnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVlcnlJbnRlcmZh
Y2U6IFZCRDogU1VTUEVORF9JTlRFUkZBQ0UgKFZFUlNJT04gMSkNClhFTkJVU3xQZG9EaXNw
YXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRv
UXVlcnlJbnRlcmZhY2U6IFZCRDogREVCVUdfSU5URVJGQUNFIChWRVJTSU9OIDEpDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0K
WEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IEVNVUxBVEVEX0lOVEVSRkFDRSAoVkVS
U0lPTiAxKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJG
QUNFKQ0KWEVORklMVHxQZG9RdWVyeUludGVyZmFjZTogUENJXFZFTl81ODUzJkRFVl8wMDAx
JlNVQlNZU18wMDAxNTg1MyZSRVZfMDFcMTg6IEVNVUxBVEVEX0lOVEVSRkFDRSAoVkVSU0lP
TiAxKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNF
KSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lO
VEVSRkFDRSkoMDAwMDAwMDApDQpYRU5WQkR8X19GZG9Jbml0aWFsaXplOjw9PT09PSAoMCkN
ClhFTlZCRHxfX0Zkb1NldERldmljZVBvd2VyU3RhdGU6UE9XRVIgRDMgdG8gRDANClhFTlZC
RHxfX0Zkb0QzVG9EMDo9PT09PT4gKDApDQpYRU5WQkR8X19GZG9EM1RvRDA6RDMtPkQwDQpY
RU5CVVN8R250dGFiQWNxdWlyZTogPT09PT4NClhFTkJVU3xSYW5nZVNldENyZWF0ZTogPT09
PT4gKGdudHRhYikNClhFTkJVU3xSYW5nZVNldENyZWF0ZTogPD09PT0NClhFTkJVU3xDYWNo
ZUFjcXVpcmU6ID09PT0+DQpYRU5CVVN8Q2FjaGVBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfEdu
dHRhYkFjcXVpcmU6IDw9PT09DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU5WQkR8X19GZG9EM1RvRDA6PD09PT09ICgwKQ0KWEVOVkJEfEZk
b1NjYW5UYXJnZXRzOj09PT0+DQpYRU5WQkR8SHdGaW5kQWRhcHRlcjooMHhGRkZGRkE4MDAx
QTUxMDE4LCAweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDAwMDAwMDAwMDAwMDAwMCwgLCAweEZG
RkZGQTgwMDFBNEQyRDAsIDB4RkZGRkY4ODAwMDlBRTA4MCkgQDAgPC0tLSAxDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5GSUxUfEVtdWxhdGVkSXNEaXNrUHJl
c2VudDogPT09PT4gKDAwOjAwOjAwKQ0KWEVORklMVHxFbXVsYXRlZElzRGlza1ByZXNlbnQ6
IDw9PT09DQpYRU5WQkR8X19GZG9Jc1Bkb1VucGx1Z2dlZDpUYXJnZXRbMF0gOiAodmJkLzUx
NzEyKSBFbXVsYXRlZCBOT1RfUFJFU0VOVA0KWEVOVkJEfFBkb0NyZWF0ZTpUYXJnZXRbMF0g
QCAoMikgPT09PT0+DQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFswXSA6IENyZWF0aW5nIChQ
VikNClhFTlZCRHxGcm9udGVuZENyZWF0ZTpUYXJnZXRbMF0gQCAoMikgPT09PT0+DQpYRU5W
QkR8RnJvbnRlbmRDcmVhdGU6VGFyZ2V0WzBdIEAgKDIpIDw9PT09PSAoU1RBVFVTX1NVQ0NF
U1MpDQpYRU5WQkR8UGRvU2V0RGV2aWNlUG93ZXJTdGF0ZTpUYXJnZXRbMF0gOiBQT1dFUiBE
MyB0byBEMA0KWEVOVkJEfFBkb0QzVG9EMDpUYXJnZXRbMF0gQCAoMikgPT09PT0+DQpYRU5W
QkR8UGRvRDNUb0QwOlRhcmdldFswXSA6IEQzLT5EMCAoUFYpDQpYRU5WQkR8X19Gcm9udGVu
ZFNldFN0YXRlOlRhcmdldFswXSBAICgyKSA9PT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0
U3RhdGU6VGFyZ2V0WzBdIDogSU5JVElBTElaRUQgLS0tLT4gRU5BQkxFRA0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6Pj4gL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzEyDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NiICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3MTIvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOlRhcmdldFswXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IEluaXRXYWl0DQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChk
ZXZpY2UvdmJkLzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2Uv
dmJkLzUxNzEyL3N0YXRlKQ0KWEVOQlVTfEZkb1NjYW46IGF3YWtlDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzBdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2lu
Zw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogNWNjYyAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIz
LzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvRW51
bWVyYXRlOiA9PT09Pg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0U3RhdGU6VGFyZ2V0
WzBdIDogQkFDS0VORF9TVEFURSAgLT4gQ2xvc2luZw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81
MTcxMi9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8RmRvU2NhbjogYXdha2UNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1
Y2NhIChkZXZpY2UvdmJkLzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzBdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xv
c2VkDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNjZCAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzEyL3N0YXRl
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOkZhaWwyDQpYRU5CVVN8RmRvRW51
bWVyYXRlOiA9PT09Pg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0U3RhdGU6RmFpbDEg
KGMwMDAwMDM0KQ0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMF0gOiBpbiBz
dGF0ZSBJTklUSUFMSVpFRA0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMF0g
QCAoMikgPD09PT09IChGQUlMRUQpDQpYRU5WQkR8UGRvRDNUb0QwOkZhaWwyDQpYRU5WQkR8
UGRvRDNUb0QwOkZhaWwxIChjMDAwMDAwMSkNClhFTlZCRHxQZG9DcmVhdGU6RmFpbDMNClhF
TlZCRHxGcm9udGVuZERlc3Ryb3k6VGFyZ2V0WzBdIEAgKDIpID09PT09Pg0KWEVOVkJEfEZy
b250ZW5kRGVzdHJveTpUYXJnZXRbMF0gQCAoMikgPD09PT09DQpYRU5WQkR8UGRvQ3JlYXRl
OkZhaWwyDQpYRU5WQkR8UGRvQ3JlYXRlOkZhaWwxIChjMDAwMDAwMSkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTkZJTFR8RW11bGF0ZWRJc0Rpc2tQcmVzZW50OiA9PT09PiAoMDA6
MDE6MDApDQpYRU5GSUxUfEVtdWxhdGVkSXNEaXNrUHJlc2VudDogPD09PT0NClhFTlZCRHxf
X0Zkb0lzUGRvVW5wbHVnZ2VkOlRhcmdldFsxXSA6ICh2YmQvNTE3MjgpIEVtdWxhdGVkIE5P
VF9QUkVTRU5UDQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhF
TlZCRHxQZG9DcmVhdGU6VGFyZ2V0WzFdIDogQ3JlYXRpbmcgKFBWKQ0KWEVOVkJEfEZyb250
ZW5kQ3JlYXRlOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhFTlZCRHxGcm9udGVuZENyZWF0
ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09IChTVEFUVVNfU1VDQ0VTUykNClhFTlZCRHxQZG9T
ZXREZXZpY2VQb3dlclN0YXRlOlRhcmdldFsxXSA6IFBPV0VSIEQzIHRvIEQwDQpYRU5WQkR8
UGRvRDNUb0QwOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhFTlZCRHxQZG9EM1RvRDA6VGFy
Z2V0WzFdIDogRDMtPkQwIChQVikNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0
WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMV0g
OiBJTklUSUFMSVpFRCAtLS0tPiBFTkFCTEVEDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92
YmQvMjMvNTE3MjgNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50
OiA1Y2NlICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMw
MDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUg
IC0+IEluaXRXYWl0DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xGZG9TY2FuOiBhd2Fr
ZQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3
Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDog
RlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2luZw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZkb0VudW1l
cmF0ZTogPT09PT4NClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nh
bjogd2FpdGluZy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogNWNjZiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIz
LzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENsb3NpbmcNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNjNyAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvU2NhbjogYXdha2UNClhFTkJVU3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOVkJEfF9fX1NldFN0YXRlOlRhcmdldFsxXSA6IEZST05URU5EX1NU
QVRFIC0+IENsb3NlZA0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkMCAoL2xvY2FsL2RvbWFpbi8wL2Jh
Y2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
VkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENsb3NlZA0K
WEVOQlVTfEZkb0VudW1lcmF0ZTogPT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ0xPU0VEDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPD09PT0NClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0
aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2QxICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IDVjZDIgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9pbmZvKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZDMgKC9sb2Nh
bC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zZWN0b3Itc2l6ZSkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2Q0ICgvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2VjdG9ycykNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8RnJvbnRlbmRXcml0ZVVzYWdlOlRhcmdldFsxXSA6IE5PVF9EVU1QIE5PVF9I
SUJFUiBOT1RfUEFHRQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNl
L3ZiZC81MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJv
Y2Vzc1dhdGNoRXZlbnQ6IDVjZDEgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDogRlJPTlRFTkRfU1RBVEUgLT4gSW5pdGlh
bGlzaW5nDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNk
NSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzEyKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzEyKQ0KWEVOfEV2ZW50Q2hhbm5lbFNl
bmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBJbml0V2FpdA0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU5WQkR8UGRvUmVhZElucXVpcnlEYXRhOlRhcmdldFsxXSA6IEZhaWxl
ZCB0byBnZXQgUGFnZTgwIGRhdGENClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJE
fFBkb1JlYWRJbnF1aXJ5RGF0YTpUYXJnZXRbMV0gOiBGYWlsZWQgdG8gZ2V0IFBhZ2U4MyBk
YXRhDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxQZG9VcGRhdGVJbnF1aXJ5
RGF0YTpUYXJnZXRbMV0gOiBWREktVVVJRCA9IHswMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0w
MDAwMDAwMDAwMDB9DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOlRhcmdldFsxXSA6IEJhY2tl
bmRJZCAwICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRl
OlRhcmdldFsxXSA6IGluIHN0YXRlIFBSRVBBUkVEDQpYRU5CVVN8Q2FjaGVDcmVhdGU6ID09
PT0+IChkaXNrXzFfZ250dGFiKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xDYWNoZUNyZWF0ZTogPD09PT0NClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFJhbmdlU2V0UG9wOiBmYWlsMSAoYzAwMDAwOWEp
DQpYRU5CVVN8R250dGFiRXhwYW5kOiBhZGRlZCByZWZlcmVuY2VzIFswMDAwMDAyMCAtIDAw
MDAwMWZmXQ0KWEVOQlVTfEV2dGNobk9wZW46IDMNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L2V2ZW50LWNoYW5uZWwpDQpYRU5CVVN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9ldmVudC1j
aGFubmVsKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjYzcgKGRldmljZS92
YmQvNTE3MjgvcmluZy1yZWYpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNj
YSAoZGV2aWNlL3ZiZC81MTcyOC9yaW5nLXJlZikNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3Byb3RvY29sKQ0KWEVOQlVTfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3MjgvcHJvdG9jb2wpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81MTcyOC90
YXJnZXQtaWQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNl
L3ZiZC81MTcyOC90YXJnZXQtaWQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
NWNjNyAoZGV2aWNlL3ZiZC81MTcyOC9mZWF0dXJlLXN1cnByaXNlLXJlbW92ZSkNClhFTkJV
U3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzI4L2ZlYXR1
cmUtc3VycHJpc2UtcmVtb3ZlKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVj
YzcgKGRldmljZS92YmQvNTE3MjgvZmVhdHVyZS1vbmxpbmUtcmVzaXplKQ0KWEVOQlVTfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3MjgvZmVhdHVyZS1v
bmxpbmUtcmVzaXplKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjYzcgKGRl
dmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
NWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2Q0ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2Vj
dG9ycykNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2QyICgvbG9jYWwvZG9t
YWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgvaW5mbykNClhFTkJVU3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiA1Y2QzICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgv
c2VjdG9yLXNpemUpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkMSAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOVkJEfF9fX1Nl
dFN0YXRlOlRhcmdldFsxXSA6IEZST05URU5EX1NUQVRFIC0+IEluaXRpYWxpc2VkDQpYRU5C
VVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkNiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tl
bmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6
IEJBQ0tFTkRfU1RBVEUgIC0+IENvbm5lY3RlZA0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNo
RXZlbnQ6IDVjYzcgKGRldmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5CVVN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTlZCRHxf
X19TZXRTdGF0ZTpUYXJnZXRbMV0gOiBGUk9OVEVORF9TVEFURSAtPiBDb25uZWN0ZWQNClhF
TlZCRHxfX1JlYWREaXNrSW5mbzpUYXJnZXRbMV0gOiA4Mzg4NjA4IHNlY3RvcnMgb2YgNTEy
IGJ5dGVzICg1MTIpDQpYRU5WQkR8X19SZWFkRGlza0luZm86VGFyZ2V0WzFdIDogNDA5NiBN
QiAoMDAwMDAwMDApIA0KWEVOVkJEfEZyb250ZW5kUmVhZERpc2tJbmZvOlRhcmdldFsxXSA6
IEZlYXR1cmVzOiBCQVJSSUVSIEZMVVNIIERJU0NBUkQgDQpYRU5WQkR8RnJvbnRlbmRSZWFk
RGlza0luZm86VGFyZ2V0WzFdIDogRElTQ0FSRCAwLzEwMDANClhFTlZCRHxGcm9udGVuZFJl
YWRGZWF0dXJlczpUYXJnZXRbMV0gOiBGZWF0dXJlczogUEVSU0lTVEVOVCBJTkRJUkVDVCAN
ClhFTlZCRHxGcm9udGVuZFJlYWRGZWF0dXJlczpUYXJnZXRbMV0gOiBJTkRJUkVDVCAxMDAN
ClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ09OTkVD
VEVEDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRlOlRhcmdldFsxXSA6IGluIHN0YXRlIEVO
QUJMRUQNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIEAgKDIpIDw9PT09
PSAoU1VDQ0VFREVEKQ0KWEVOVkJEfFBkb0QzVG9EMDpUYXJnZXRbMV0gQCAoMikgPD09PT09
DQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFsxXSA6IENyZWF0ZWQgKFBWKQ0KWEVOVkJEfFBk
b0NyZWF0ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09DQpYRU5WQkR8RmRvU2NhblRhcmdldHM6
PD09PT0NClhFTkJVU3xGZG9TY2FuOiBhd2FrZQ0KWEVOVkJEfEZkb0xvZ1RhcmdldHM6U2Nh
blRocmVhZCA9PT0+DQpYRU5WQkR8RmRvTG9nVGFyZ2V0czpTY2FuVGhyZWFkIDogVGFyZ2V0
WzFdID0gMHhGRkZGRkE4MDAxQTUyOEMwIChwcmVzZW50KQ0KWEVOVkJEfEZkb0xvZ1Rhcmdl
dHM6U2NhblRocmVhZCA8PT09DQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PT09PT4NClhFTlZC
RHxId0luaXRpYWxpemU6KDB4RkZGRkZBODAwMUE1MTAxOCkgQDcgPC0tLT4gVFJVRQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKSgwMDAw
MDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDE0OlFVRVJZX1BOUF9ERVZJ
Q0VfU1RBVEUpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNDpRVUVSWV9QTlBf
REVWSUNFX1NUQVRFKShjMDAwMDBiYikNClhFTlZCRHxGZG9EaXNwYXRjaFBucDoxNDpRVUVS
WV9QTlBfREVWSUNFX1NUQVRFIC0+IGMwMDAwMGJiDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6
PD09PT0NClhFTlZCRHxGZG9TY2FuVGFyZ2V0czo9PT09Pg0KWEVOVkJEfEZkb1NjYW5UYXJn
ZXRzOjw9PT09DQpYRU5WQkR8UGRvSW5xdWlyeTpUYXJnZXRbMV0gOiBJTlFVSVJZIDAwDQpY
RU5CVVN8RmRvRW51bWVyYXRlOiA9PT09Pg0KWEVOVkJEfFBkb0lucXVpcnk6VGFyZ2V0WzFd
IDogSU5RVUlSWSAwMCBFVlBEDQpYRU5WQkR8UGRvSW5xdWlyeTpUYXJnZXRbMV0gOiBJTlFV
SVJZIDgzIEVWUEQNClhFTlZCRHxfX0hhbmRsZVBhZ2U4MzpUYXJnZXRbMV0gOiBJTlFVSVJZ
IFVzaW5nIEZha2UgUGFnZTgzIERhdGENClhFTlZCRHxQZG9JbnF1aXJ5OlRhcmdldFsxXSA6
IElOUVVJUlkgODAgRVZQRA0KWEVOVkJEfF9fSGFuZGxlUGFnZTgwOlRhcmdldFsxXSA6IElO
UVVJUlkgVXNpbmcgRmFrZSBQYWdlODAgRGF0YQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPD09
PT0NClhFTkJVU3xGZG9TY2FuOiB3YWl0aW5nLi4uDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQ0KWEVOQlVTfFBkb0Rpc3BhdGNo
UG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAwMDApDQpYRU5E
SVNLfFBkb0NyZWF0ZTpGRkZGRkE4MDAxQTVDQUIwDQpYRU5ESVNLfEZkb1F1ZXJ5RGV2aWNl
UmVsYXRpb25zOjEgUERPKHMpDQpYRU5WQkR8UGRvU2V0RGV2aWNlT2JqZWN0OlRhcmdldFsx
XSA6IFNldHRpbmcgRGV2aWNlT2JqZWN0ID0gMHhGRkZGRkE4MDAxQTVDMDYwDQpYRU5WQkR8
RmRvTWFwRGV2aWNlT2JqZWN0VG9QZG86MHhGRkZGRkE4MDAxQTVDMDYwIC0tPiBUYXJnZXQg
MSAoMDAwMTAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDk6UVVFUllfQ0FQ
QUJJTElUSUVTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDk6UVVFUllfQ0FQ
QUJJTElUSUVTKSgwMDAwMDAwMCkNClhFTlZCRHxQZG9EaXNwYXRjaFBucDpUYXJnZXRbMV0g
OiAxMzpRVUVSWV9JRCAtPiBjMDAwMDBiYg0KWEVOVkJEfFBkb0Rpc3BhdGNoUG5wOlRhcmdl
dFsxXSA6IDE1OlFVRVJZX0JVU19JTkZPUk1BVElPTiAtPiBjMDAwMDBiYg0KWEVOVkJEfFBk
b0Rpc3BhdGNoUG5wOlRhcmdldFsxXSA6IDE5OlVOS05PV04gLT4gYzAwMDAwYmINClhFTlZC
RHxGZG9TY2FuVGFyZ2V0czo9PT09Pg0KWEVOVkJEfEZkb1NjYW5UYXJnZXRzOjw9PT09DQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05T
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFU
SU9OUykoMDAwMDAwMDApDQpYRU5ESVNLfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOjEgUERP
KHMpDQpYRU5WQkR8UGRvRGlzcGF0Y2hQbnA6VGFyZ2V0WzFdIDogMTg6VU5LTk9XTiAtPiBj
MDAwMDBiYg0KWEVOVkJEfFBkb0Rpc3BhdGNoUG5wOlRhcmdldFsxXSA6IDBkOkZJTFRFUl9S
RVNPVVJDRV9SRVFVSVJFTUVOVFMgLT4gYzAwMDAwYmINClhFTlZCRHxQZG9TZXREZXZpY2VQ
bnBTdGF0ZTpUYXJnZXRbMV0gOiBQTlAgUHJlc2VudCB0byBTdGFydGVkDQpYRU5WQkR8UGRv
UmVzZXQ6VGFyZ2V0WzFdID09PT0+IChJcnFsPTIpDQpYRU5WQkR8X19QZG9QYXVzZURhdGFQ
YXRoOlRhcmdldFsxXSA6IFdhaXRpbmcgZm9yIDEgU3VibWl0dGVkIHJlcXVlc3RzDQpYRU5W
QkR8X19QZG9QYXVzZURhdGFQYXRoOlRhcmdldFsxXSA6IDAvMSBTdWJtaXR0ZWQgcmVxdWVz
dHMgbGVmdCAoMSBpdGVycmF0aW9ucykNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFy
Z2V0WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRb
MV0gOiBFTkFCTEVEIC0tLS0+IENMT1NJTkcNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ09OTkVDVEVEDQpYRU5WQkR8X19VcGRhdGVCYWNrZW5k
UGF0aDo8PCAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTlZCRHxf
X1VwZGF0ZUJhY2tlbmRQYXRoOj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81
MTcyOA0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZDcgKC9sb2NhbC9kb21h
aW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zdGF0ZSkNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiAwIFdhaXRlZCBmb3IgMTU2MDAgbXMNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBDb25uZWN0ZWQNClhFTkJVU3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0KWEVOQlVT
fFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3Mjgvc3RhdGUp
DQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xv
c2luZw0KWEVOQlVTfEZkb1NjYW46IGF3YWtlDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNkOCAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRl
KQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENs
b3NpbmcNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJk
LzUxNzI4L3N0YXRlKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRl
dmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDog
RlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2VkDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PT09PT4N
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2Q5ICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PD09
PT0NClhFTlZCRHxfX1dhaXRTdGF0ZTpUYXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBD
bG9zZWQNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogaW4gc3RhdGUg
Q0xPU0lORw0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMV0gQCAoMikgPD09
PT09IChTVUNDRUVERUQpDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRlOlRhcmdldFsxXSBA
ICgyKSA9PT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogQ0xP
U0lORyAtLS0tPiBDTE9TRUQNClhFTkJVU3xFdnRjaG5DbG9zZTogMw0KWEVOQlVTfENhY2hl
RGVzdHJveTogPT09PT4gKGRpc2tfMV9nbnR0YWIpDQpYRU5CVVN8Q2FjaGVEZXN0cm95OiA8
PT09PQ0KWEVOQlVTfEV2dGNoblJlYXA6IDMNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ0xPU0VEDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRl
OlRhcmdldFsxXSBAICgyKSA8PT09PT0gKFNVQ0NFRURFRCkNClhFTlZCRHxfX0Zyb250ZW5k
U2V0U3RhdGU6VGFyZ2V0WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRT
dGF0ZTpUYXJnZXRbMV0gOiBDTE9TRUQgLS0tLT4gRU5BQkxFRA0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMw
MDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNr
ZW5kUGF0aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVj
ZGEgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zdGF0ZSkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkYiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQv
dmJkLzIzLzUxNzI4L2luZm8pDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZGMg
KC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zZWN0b3Itc2l6ZSkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2RkICgvbG9jYWwv
ZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2VjdG9ycykNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5W
QkR8RnJvbnRlbmRXcml0ZVVzYWdlOlRhcmdldFsxXSA6IE5PVF9EVU1QIE5PVF9ISUJFUiBO
T1RfUEFHRQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9z
dGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fX1NldFN0YXRlOlRh
cmdldFsxXSA6IEZST05URU5EX1NUQVRFIC0+IEluaXRpYWxpc2luZw0KWEVOfEV2ZW50Q2hh
bm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkZSAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hh
bm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxfX1dhaXRT
dGF0ZTpGYWlsMg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOkZhaWwxIChjMDAw
MDAyMikNClhFTlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDEwDQpYRU5WQkR8RnJvbnRlbmRQ
cmVwYXJlOkZhaWw5DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw4DQpYRU5WQkR8RnJv
bnRlbmRQcmVwYXJlOkZhaWw3DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw2DQpYRU5W
QkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw1DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDQNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOVkJEfEZyb250ZW5kUHJlcGFyZTpGYWlsMw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWwyDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDEgKGMwMDAwMDIyKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0
aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2RmICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0
U3RhdGU6RmFpbDINClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOkZhaWwxIChjMDAwMDAyMikNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0
WzFdIDogaW4gc3RhdGUgU1RBVEVfSU5WQUxJRA0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0
ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09IChGQUlMRUQpDQpYRU5WQkR8UGRvUmVzZXQ6QVNT
RVJUSU9OIEZBSUxFRDogKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApDQpBc3NlcnRpb24g
ZjpccXViZXMtYnVpbGRlclxxdWJlcy1zcmNceGVuLXB2XHhlbnZiZFxzcmNceGVudmJkXHBk
by5jKDIyOTcpOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkNCnhlbnZiZCFQZG9SZXNl
dCsweDFkZToNCmZmZmZmODgwYDAxMTUyMWJlIGNkMmMgICAgICAgICAgICBpbnQgICAgIDJD
aA0K
--------------060701020102080500000309
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060701020102080500000309--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 12 20:04:41 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 12 Mar 2015 20:04:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YW9LU-0001ls-8j; Thu, 12 Mar 2015 20:04:40 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YW9LS-0001lO-PG
	for win-pv-devel@lists.xenproject.org; Thu, 12 Mar 2015 20:04:39 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	4B/E7-10944-651F1055; Thu, 12 Mar 2015 20:04:38 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1426190675!11488640!1
X-Originating-IP: [66.111.4.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjUgPT4gNDQ5ODE=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6673 invoked from network); 12 Mar 2015 20:04:36 -0000
Received: from out1-smtp.messagingengine.com (HELO
	out1-smtp.messagingengine.com) (66.111.4.25)
	by server-12.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 12 Mar 2015 20:04:36 -0000
Received: from compute2.internal (compute2.nyi.internal [10.202.2.42])
	by mailout.nyi.internal (Postfix) with ESMTP id 6B4B720B96
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 12 Mar 2015 16:04:33 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute2.internal (MEProxy); Thu, 12 Mar 2015 16:04:35 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type;
	s=mesmtp; bh=7CQEk3AXgOubfHMyp739CzXwuzg=; b=I4CwhPcmCj+XKeFr3V
	QZR0C/4XVJ/EgDxCVgWG2Lr6kE0wQtbru1Yvpfhs/NYNQsSq71kYHlymVrU4CcCq
	iK3LJlwQdseFRlwyhkzu/CtK+9OPkNPOPcPtu7JLzE9ZJBrRyELrz3f5xYPP6fgd
	VGbDnxz3g9mInNPuF1jlGg7Us=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type;
	s=smtpout; bh=7CQEk3AXgOubfHMyp739CzXwuzg=; b=pm2tAs88D5RTfQMPM
	K25PTkRhibUq8JmjD2h8ZRVrWj41nwcCMzE0Mn6SZ08y4SyPU7Eyc7BADXbWtz9q
	oxf8TB3w/Yc6fidmmHFRq0rr8z4KOZMmFRlnSlAkuV6unPZmIMSuQHhn+eEDkVAN
	K7MUXVdiyDgQFlBgmOsd7jMMYE=
X-Sasl-enc: SZu0aFCHU5s+fQTTHUBb+mpPEhSx4/roZD+r7mFxQSDk 1426190674
Received: from [10.137.2.7] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id A5AE56801C7;
	Thu, 12 Mar 2015 16:04:33 -0400 (EDT)
Message-ID: <5501F14F.7090105@invisiblethingslab.com>
Date: Thu, 12 Mar 2015 21:04:31 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
	rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------060701020102080500000309"
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060701020102080500000309
Content-Type: text/plain; charset=utf-8
Content-Length: 8183
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12.03.2015 18:09, Paul Durrant wrote:
>> -----Original Message----- From:
>> win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel- 
>> bounces@lists.xenproject.org] On Behalf Of Rafal Wojdyla Sent: 12
>> March 2015 17:06 To: Paul Durrant;
>> win-pv-devel@lists.xenproject.org Cc: Marek Marczykowski-G=C3=B3recki 
>> Subject: Re: [win-pv-devel] Porting libvchan to use the Windows
>> PV Drivers
>> 
> On 2015-03-12 17:45, Paul Durrant wrote:
>>>>> -----Original Message----- From: Rafa=C5=82 Wojdy=C5=82a 
>>>>> [mailto:omeg@invisiblethingslab.com] Sent: 12 March 2015
>>>>> 16:17 To: Paul Durrant; win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: [win-pv-devel] Porting libvchan to use the
>>>>> Windows PV Drivers
>>>>> 
>>>> On 2015-03-11 18:46, Paul Durrant wrote:
>>>>>>>> -----Original Message----- From: 
>>>>>>>> win-pv-devel-bounces@lists.xenproject.org 
>>>>>>>> [mailto:win-pv-devel- bounces@lists.xenproject.org]
>>>>>>>> On Behalf Of Rafal Wojdyla Sent: 10 March 2015 20:16
>>>>>>>> To: win-pv-devel@lists.xenproject.org Subject: Re: 
>>>>>>>> [win-pv-devel] Porting libvchan to use the Windows
>>>>>>>> PV Drivers
>>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> 
>>>>>>>> Hi,
>>>>>>> 
>>>>>>> I'm unable to properly reply to the thread since I
>>>>>>> just subscribed to this list but I figured it's worth
>>>>>>> chiming in (last message is here: 
>>>>>>> http://lists.xenproject.org/archives/html/win-pv-devel/2015-01/msg0
>
>>>>>>> 
006
>>>> 
>>>>>>> 
> 0.
>>>>>>> 
>>>>>>> 
>>>> html)
>>>>>>> 
>>>>>>> 
>>>>>>>> Yes, I understand; I just saw your subscription
>>>>>>>> message :-)
>>>>>>> 
>>>>>>> First, some background about me. I'm currently the main
>>>>>>> and pretty much the only developer/maintainer of guest
>>>>>>> tools for Windows for Qubes OS
>>>>>>> (https://wiki.qubes-os.org/). Some of you may have
>>>>>>> heard of Qubes -- in short, it's an attempt at creating
>>>>>>> a secure OS based on lightweight AppVMs, currently 
>>>>>>> using Linux/Xen as base. It supports Windows HVMs and
>>>>>>> our guest tools provide integration with dom0/other
>>>>>>> domUs (services like data transfer, remote execution,
>>>>>>> seamless GUI experience etc).
>>>>>>> 
>>>>>>> 
>>>>>>>> Cool.
>>>>>>> 
>>>>>>> We're in the process of finalizing the next major
>>>>>>> release (r3) of Qubes, it will use Xen 4.4 instead of
>>>>>>> r2's Xen 4.1. As for our Windows tools, they are
>>>>>>> (currently) using PV drivers based on James Harper's
>>>>>>> cod e.
>>>>>>> 
>>>>>>> Our inter-VM communication protocol uses vchan (in
>>>>>>> fact, vchan originates from our patch accepted into
>>>>>>> Xen's source a few years ago). In Qubes r2 we have a
>>>>>>> Windows libvchan implementation, but as stated above,
>>>>>>> it uses old PV drivers interfaces. You can find it
>>>>>>> here: https://github.com/QubesOS/qubes-core-vchan-xen
>>>>>>> 
>>>>>>> That implementation has one big flaw: client side
>>>>>>> vchan functions are not implemented. It didn't matter
>>>>>>> for Qubes r2, where all vchan communication is passing
>>>>>>> through dom0 anyway. In Qubes r3 however, we need that
>>>>>>> working because of redesigned inter-VM communication
>>>>>>> protocol that allows direct VM-VM communication after
>>>>>>> dom0 arbitration.
>>>>>>> 
>>>>>>> Unfortunately Harper's drivers don't seem to implement
>>>>>>> the needed kernel interfaces for that as well.
>>>>>>> 
>>>>>>>> I assume you mean grant mapping=3F Or maybe just grant
>>>>>>>> copy, since that would be safer=3F
>>>>>>> 
>>>>>>> I didn't need to look into PV drivers sources before,
>>>>>>> but it seems I will need to do that now :) I found the
>>>>>>> new PV drivers and this mailing list, found the thread
>>>>>>> about vchan implementation... and that's pretty much it
>>>>>>> for now.
>>>>>>> 
>>>>>>> As I said, I don't have much experience in Xen APIs
>>>>>>> (didn't need to tinker with them directly before). I
>>>>>>> do, however, have extensive WinAPI knowledge and
>>>>>>> moderate amount of Windows driver development
>>>>>>> experience (part of our guest tools is a custom display
>>>>>>> driver that allows no-copy video memory sharing with
>>>>>>> dom0). I managed to build the new drivers and will test
>>>>>>> them on our dev Qubes build soon.
>>>>>>> 
>>>>>>> So, to summarize, I'm very interested in developing a 
>>>>>>> Windows vchan implementation on top of the new PV
>>>>>>> drivers. I'll be reading through the driver sources for
>>>>>>> a bit still to familiarize myself with the environment.
>>>>>>> If anyone managed to get something working, or just has
>>>>>>> ideas, let me know.
>>>>>>> 
>>>>>>> 
>>>>>>>> If you want to look at adding the necessary code to
>>>>>>>> the XENBUS_GNTTAB interface to do grant map/copy then
>>>>>>>> I don't imagine it will be too hard. Adding support
>>>>>>>> for copy would be easiest but it would also be
>>>>>>>> possible to grant map pages into the platform PCI
>>>>>>>> device's BAR (which is where the shared info page and
>>>>>>>> the grant table itself live).
>>>>>>> 
>>>>>>>> Let me know if have any specific questions or need
>>>>>>>> some help getting the drivers going in your
>>>>>>>> environment.
>>>>>>> 
>>>> I've tested the drivers on a Win7 pro x64 HVM on Qubes r2 (r3
>>>> is still a bit unstable). Xenbus and xeniface both install
>>>> fine. Xenvbd installs OK but the OS BSODs on reboot with code
>>>> 7B (inaccessible boot device). I'll try to pinpoint the exact
>>>> failure spot once I setup the pvdrivers sources inside my
>>>> development VM.
>>>> 
>>>> 
>>>>> 0x7B can occur in many circumstances. The drivers do log
>>>>> quite a bit of info, particularly in checked builds, so
>>>>> there'll probably be something there to indicate the exact
>>>>> nature of the failure. The main informational logging
>>>>> (which is the same for free or checked builds) is written
>>>>> to the qemu logging port (0x12) and debug logging (checked
>>>>> build only) goes to the Xen port (0xE9). If you watch
>>>>> wherever you have those redirected then you may be able to
>>>>> spot the problem. If you can't then post them to the list 
>>>>> and I'll take a look.
>>>> 
>>>> Do the drivers have specific requirements for backend
>>>> (Xen/Qemu version)=3F We're not really using Qemu in dom0, only
>>>> in minimal stubdoms for HVMs, so that may be a problem.
>>>> 
>>>> 
>>>>> That's not usually a problem. Do you have PV backends for
>>>>> disk and net set up though=3F The fact that you got a 0x7B
>>>>> after installing xenvbd may simply mean that your toolstack
>>>>> has just not set up a PV backend.
> We do have backends set up (xen-blkback for vbd). I'll check in
> dom0 whether it crashes after the device gets attached or before.
> 
> 
>> Ok. I must admit that I tend to use qdisk as a backend in most of
>> my testing, but blkback should be fine. I'll sanity check it
>> myself when I get time though.
> 
Sometimes the VM BSODs with 0x7E. I managed to connect WinDbg to it
and grab some logs (in the attachment). At a glance it seems like a
lot of event channel failures...

XENVBD|PdoReset:ASSERTION FAILED: (((NTSTATUS)(Status)) >=3D 0)
Assertion
f:\qubes-builder\qubes-src\xen-pv\xenvbd\src\xenvbd\pdo.c(2297):
(((NTSTATUS)(Status)) >=3D 0)


> Also adding Marek to the conversation, he's one of our core
> architects and knows more about backend stuff than I do :)
> 
> 
>> Cool.
> 
>> Paul
> 
>>>> 
>>>>> Paul

- -- 
Rafa=C5=82 Wojdy=C5=82a
Qubes Tools for Windows developer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVAfFGAAoJEIWi9rB2GrW7+csH/2CpP5yT9RksqKmD68CRuGDj
nWgumSt/o9NpuFFjXeY446YPDO7/SW5RcmpuZ2rybN2WCMMFB+i3mq+XQFGhkOWK
xx+sVhc7m4n0f8rOndWZ9l3d4phfumZ2yXIc5LZfbdBdLXRiZSlMDczH+/JCG6p1
9tsiq08DQ+5mzxYTJ4X1GFQ0VsBrCrMoLXUIgERF5iVpZn/vtAnalskd5htWnTnW
gK6x69MqPNmLy5P9CXN7KiZFHJE6TVFY4Fj0OJL1QY23AftL2PFoaorHpuyeliGx
D0EeNmaVpeA4Q++S2neauiq5ZIrQ4GZg+3TPqDfVJTK+SnlzDjjLc7jbi1ttQ6Y=3D
=3DbdEh
-----END PGP SIGNATURE-----

--------------060701020102080500000309
Content-Type: text/plain; charset=UTF-8;
 name="vbd.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="vbd.txt"

DQpNaWNyb3NvZnQgKFIpIFdpbmRvd3MgRGVidWdnZXIgVmVyc2lvbiA2LjMuOTYwMC4xNzIz
NyBBTUQ2NA0KQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQoNCk9wZW5lZCBcXC5cY29tMQ0KV2FpdGluZyB0byByZWNvbm5lY3Qu
Li4NCkNvbm5lY3RlZCB0byBXaW5kb3dzIDcgNzYwMSB4NjQgdGFyZ2V0IGF0IChUaHUgTWFy
IDEyIDIwOjUxOjE1LjU5NCAyMDE1IChVVEMgKyAxOjAwKSksIHB0cjY0IFRSVUUNCktlcm5l
bCBEZWJ1Z2dlciBjb25uZWN0aW9uIGVzdGFibGlzaGVkLg0KDQoqKioqKioqKioqKioqIFN5
bWJvbCBQYXRoIHZhbGlkYXRpb24gc3VtbWFyeSAqKioqKioqKioqKioqKg0KUmVzcG9uc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgVGltZSAobXMpICAgICBMb2NhdGlvbg0KRGVmZXJy
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnYqYzpcc3ltYm9s
cypodHRwOi8vbXNkbC5taWNyb3NvZnQuY29tL2Rvd25sb2FkL3N5bWJvbHMNClN5bWJvbCBz
ZWFyY2ggcGF0aCBpczogc3J2KmM6XHN5bWJvbHMqaHR0cDovL21zZGwubWljcm9zb2Z0LmNv
bS9kb3dubG9hZC9zeW1ib2xzDQpFeGVjdXRhYmxlIHNlYXJjaCBwYXRoIGlzOiANCldpbmRv
d3MgNyBLZXJuZWwgVmVyc2lvbiA3NjAxIE1QICgxIHByb2NzKSBGcmVlIHg2NA0KQnVpbHQg
Ynk6IDc2MDEuMTg0MDkuYW1kNjRmcmUud2luN3NwMV9nZHIuMTQwMzAzLTIxNDQNCk1hY2hp
bmUgTmFtZToNCktlcm5lbCBiYXNlID0gMHhmZmZmZjgwMGAwMjY2MzAwMCBQc0xvYWRlZE1v
ZHVsZUxpc3QgPSAweGZmZmZmODAwYDAyOGE2ODkwDQpTeXN0ZW0gVXB0aW1lOiBub3QgYXZh
aWxhYmxlDQoNClhFTnxEbGxJbml0aWFsaXplOiA9PT09Pg0KWEVOfERsbEluaXRpYWxpemU6
IFhFTiA4LjAuMCAoMSkgKDEwLjAzLjIwMTUpDQpYRU58QWNwaUZpbmRSc2RwOiA9PT09Pg0K
WEVOfEFjcGlGaW5kUnNkcDogMHgwMDAwMDAwMDAwMEVBMDIwDQpYRU58QWNwaUZpbmRSc2Rw
OiA8PT09PQ0KWEVOfFN5c3RlbUdldFN0YXJ0T3B0aW9uczogIFRFU1RTSUdOSU5HICBOT0VY
RUNVVEU9T1BUSU4gIERFQlVHICBERUJVR1BPUlQ9Q09NMSAgQkFVRFJBVEU9MTE1MjAwDQpY
RU58U3lzdGVtR2V0VmVyc2lvbkluZm9ybWF0aW9uOiBLRVJORUw6IDYuMSAoQlVJTEQgNzYw
MSkgUExBVEZPUk0gV0lOMzJfTlQgKHg2NCkNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3Jt
YXRpb246IFNQOiAxLjAgKCkNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IFNV
SVRFUzoNClhFTnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IC0gVEVSTUlOQUwNClhF
TnxTeXN0ZW1HZXRWZXJzaW9uSW5mb3JtYXRpb246IC0gU0lOR0xFVVNFUlRTDQpYRU58U3lz
dGVtR2V0VmVyc2lvbkluZm9ybWF0aW9uOiBUWVBFOiBXT1JLU1RBVElPTg0KWEVOfFN5c3Rl
bUdldE1lbW9yeUluZm9ybWF0aW9uOiBSQU5HRVswXSAwMDAwMDAwMC4wMDAwMTAwMCAtIDAw
MDAwMDAwLjAwMDlkZmZmDQpYRU58U3lzdGVtR2V0TWVtb3J5SW5mb3JtYXRpb246IFJBTkdF
WzFdIDAwMDAwMDAwLjAwMTAwMDAwIC0gMDAwMDAwMDAuM2Y3ZmZmZmYNClhFTnxBY3BpR2V0
WHNkdDogPT09PT4NClhFTnxBY3BpR2V0WHNkdDogMHgwMDAwMDAwMEZDMDBGMkYwDQpYRU58
QWNwaUdldFhzZHQ6IDw9PT09DQpYRU58QWNwaUdldFhzZHQ6ID09PT0+DQpYRU58QWNwaUdl
dFhzZHQ6IDw9PT09DQpYRU58U3lzdGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6ID09PT0+
ICgwOkFkZFN0YXJ0Tm90aWZ5KQ0KWEVOfFN5c3RlbVByb2Nlc3NvckNoYW5nZUNhbGxiYWNr
OiA8PT09PSAoMDpBZGRTdGFydE5vdGlmeSkNClhFTnxTeXN0ZW1Qcm9jZXNzb3JDaGFuZ2VD
YWxsYmFjazogPT09PT4gKDE6QWRkU3RhcnROb3RpZnkpDQpYRU58U3lzdGVtUHJvY2Vzc29y
Q2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgxOkFkZFN0YXJ0Tm90aWZ5KQ0KWEVOfFN5c3RlbVBy
b2Nlc3NvckNoYW5nZUNhbGxiYWNrOiA9PT09PiAoMDpBZGRDb21wbGV0ZU5vdGlmeSkNClhF
TnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPT09PT4gKDApDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IE1hbnVmYWN0dXJlcjogR2VudWluZUludGVsDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IEFQSUMgSUQ6IDAwDQpYRU58U3lzdGVtQ3B1SW5mb3JtYXRpb246IFBST0NFU1NP
UiBJRDogMDANClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPD09PT0gKDApDQpYRU58U3lz
dGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgwOkFkZENvbXBsZXRlTm90aWZ5
KQ0KWEVOfFN5c3RlbVByb2Nlc3NvckNoYW5nZUNhbGxiYWNrOiA9PT09PiAoMTpBZGRDb21w
bGV0ZU5vdGlmeSkNClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPT09PT4gKDEpDQpYRU58
U3lzdGVtQ3B1SW5mb3JtYXRpb246IE1hbnVmYWN0dXJlcjogR2VudWluZUludGVsDQpYRU58
U3lzdGVtQ3B1SW5mb3JtYXRpb246IEFQSUMgSUQ6IDAyDQpYRU58U3lzdGVtQ3B1SW5mb3Jt
YXRpb246IFBST0NFU1NPUiBJRDogMDENClhFTnxTeXN0ZW1DcHVJbmZvcm1hdGlvbjogPD09
PT0gKDEpDQpYRU58U3lzdGVtUHJvY2Vzc29yQ2hhbmdlQ2FsbGJhY2s6IDw9PT09ICgxOkFk
ZENvbXBsZXRlTm90aWZ5KQ0KWEVOfERsbEluaXRpYWxpemU6IDw9PT09DQpYRU5GSUxUfERy
aXZlckVudHJ5OiA9PT09Pg0KWEVORklMVHxEcml2ZXJFbnRyeTogWEVORklMVCA4LjAuMCAo
MSkgKDEwLjAzLjIwMTUpDQpYRU5GSUxUfERyaXZlclNldEFjdGl2ZURldmljZUluc3RhbmNl
OiBQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMS8xOA0KWEVO
RklMVHxFbXVsYXRlZEluaXRpYWxpemU6ID09PT0+DQpYRU5GSUxUfEVtdWxhdGVkSW5pdGlh
bGl6ZTogPD09PT0NClhFTkZJTFR8VW5wbHVnSW5pdGlhbGl6ZTogPT09PT4NClhFTkZJTFR8
VW5wbHVnQ2hlY2tGb3JQVkRpc2tzOiBQUkVTRU5UDQpYRU5GSUxUfFVucGx1Z0NoZWNrRm9y
UFZOaWNzOiBOT1QgUFJFU0VOVA0KWEVORklMVHxVbnBsdWdJbml0aWFsaXplOiA8PT09PQ0K
WEVORklMVHxFbXVsYXRlZEFjcXVpcmU6IDw9PT0+DQpYRU5GSUxUfERyaXZlckVudHJ5OiA8
PT09PQ0KWEVORklMVHxGZG9DcmVhdGU6IEZGRkZGQTgwMDFBQjAwNDAgKEFDUElcUE5QMEEw
M1wwKQ0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPT09PT4NClhFTkZJTFR8RW11bGF0
ZWRBZGRPYmplY3Q6IDw9PT09DQpYRU5GSUxUfFBkb0NyZWF0ZTogRkZGRkZBODAwMTlFOTQy
MCAoUENJXFZFTl84MDg2JkRFVl8xMjM3JlNVQlNZU18xMTAwMUFGNCZSRVZfMDJcMDApDQpY
RU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA9PT09Pg0KWEVORklMVHxFbXVsYXRlZEFkZE9i
amVjdDogPD09PT0NClhFTkZJTFR8UGRvQ3JlYXRlOiBGRkZGRkE4MDAxRDIwNDIwIChQQ0lc
VkVOXzgwODYmREVWXzcwMDAmU1VCU1lTXzExMDAxQUY0JlJFVl8wMFwwOCkNClhFTkZJTFR8
RW11bGF0ZWRBZGRPYmplY3Q6ID09PT0+DQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA8
PT09PQ0KWEVORklMVHxQZG9DcmVhdGU6IEZGRkZGQTgwMDBDMTBBNzAgKFBDSVxWRU5fODA4
NiZERVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAwXDA5KQ0KWEVORklMVHxFbXVsYXRl
ZEFkZE9iamVjdDogPT09PT4NClhFTkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6IDw9PT09DQpY
RU5GSUxUfFBkb0NyZWF0ZTogRkZGRkZBODAwMEMxMUE3MCAoUENJXFZFTl84MDg2JkRFVl83
MDIwJlNVQlNZU18xMTAwMUFGNCZSRVZfMDFcMEEpDQpYRU5GSUxUfEVtdWxhdGVkQWRkT2Jq
ZWN0OiA9PT09Pg0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPD09PT0NClhFTkZJTFR8
UGRvQ3JlYXRlOiBGRkZGRkE4MDAwQzEyQTcwIChQQ0lcVkVOXzEyMzQmREVWXzExMTEmU1VC
U1lTXzAwMDE1ODUzJlJFVl8wMFwxMCkNClhFTkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6ID09
PT0+DQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA8PT09PQ0KWEVORklMVHxQZG9DcmVh
dGU6IEZGRkZGQTgwMDE5RTRBNzAgKFBDSVxWRU5fNTg1MyZERVZfMDAwMSZTVUJTWVNfMDAw
MTU4NTMmUkVWXzAxXDE4KQ0KWEVORklMVHxFbXVsYXRlZEFkZE9iamVjdDogPT09PT4NClhF
TkZJTFR8RW11bGF0ZWRBZGRPYmplY3Q6IDw9PT09DQpYRU5GSUxUfFBkb0NyZWF0ZTogRkZG
RkZBODAwMTlFN0E3MCAoUENJXFZFTl8xMEVDJkRFVl84MTM5JlNVQlNZU18wMDAxNTg1MyZS
RVZfMjBcMjApDQpYRU5GSUxUfEVtdWxhdGVkQWRkT2JqZWN0OiA9PT09Pg0KWEVORklMVHxF
bXVsYXRlZEFkZE9iamVjdDogPD09PT0NClhFTkZJTFR8UGRvQ3JlYXRlOiBGRkZGRkE4MDAx
OUZFQTcwIChBQ1BJXFBOUDAxMDNcMCkNClhFTkZJTFR8RW11bGF0ZWRJc0RldmljZVByZXNl
bnQ6ID09PT0+IChQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8w
MSBBTlkpDQpYRU5GSUxUfEVtdWxhdGVkSXNEZXZpY2VQcmVzZW50OiBGT1VORA0KWEVORklM
VHxFbXVsYXRlZElzRGV2aWNlUHJlc2VudDogPD09PT0NClhFTkZJTFR8RHJpdmVyU2V0Rmls
dGVyU3RhdGU6IEFDVElWRSBERVZJQ0UgUFJFU0VOVA0KWEVORklMVHxVbnBsdWdBY3F1aXJl
OiA9PT09Pg0KWEVORklMVHxVbnBsdWdBY3F1aXJlOiA8PT09PQ0KWEVORklMVHxEcml2ZXJT
ZXRGaWx0ZXJTdGF0ZTogUEVORElORw0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9u
czogQUNQSVxQTlAwQTAzXDA6IEZJTFRFUkVEDQpYRU5GSUxUfERyaXZlclNldEZpbHRlclN0
YXRlOiBESVNBQkxFRA0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9uczogQUNQSVxQ
TlAwQTAzXDA6IDggUERPKHMpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNl
SUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzgwODYmREVWXzEyMzcmU1VCU1lT
XzExMDAxQUY0JlJFVl8wMg0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNl
SUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSAwMA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNR
dWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl84MDg2JkRFVl8x
MjM3JlNVQlNZU18xMTAwMUFGNCZSRVZfMDINClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVl
cnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMDANClhFTkZJTFR8UGRvUXVl
cnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIFBDSVxWRU5f
ODA4NiZERVZfNzAwMCZTVUJTWVNfMTEwMDFBRjQmUkVWXzAwDQpYRU5GSUxUfFBkb1F1ZXJ5
SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDA4DQpYRU5G
SUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDog
LSBQQ0lcVkVOXzgwODYmREVWXzcwMDAmU1VCU1lTXzExMDAxQUY0JlJFVl8wMA0KWEVORklM
VHxQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDog
LSAwOA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IC0gUENJXFZFTl84MDg2JkRFVl83MDEwJlNVQlNZU18wMDAxNTg1MyZSRVZf
MDANClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IC0gMDkNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0K
WEVORklMVHxQZG9RdWVyeUlkOiAtIFBDSVxWRU5fODA4NiZERVZfNzAyMCZTVUJTWVNfMTEw
MDFBRjQmUkVWXzAxDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0K
WEVORklMVHxQZG9RdWVyeUlkOiAtIDBBDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5
RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzEyMzQmREVWXzExMTEm
U1VCU1lTXzAwMDE1ODUzJlJFVl8wMA0KWEVORklMVHxQZG9RdWVyeUlkOiBCdXNRdWVyeUlu
c3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSAxMA0KWEVORklMVHxQZG9RdWVyeUlk
OiBCdXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl81ODUz
JkRFVl8wMDAxJlNVQlNZU18wMDAxNTg1MyZSRVZfMDENClhFTkZJTFR8UGRvUXVlcnlJZDog
QnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMTgNClhFTkZJTFR8
UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIFBD
SVxWRU5fMTBFQyZERVZfODEzOSZTVUJTWVNfMDAwMTU4NTMmUkVWXzIwDQpYRU5GSUxUfFBk
b1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDIw
DQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVl
cnlJZDogLSBBQ1BJXFBOUDAxMDMNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0
YW5jZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMA0KWEVOQlVTfERyaXZlckVudHJ5OiA9
PT09Pg0KWEVOQlVTfERyaXZlckVudHJ5OiBYRU5CVVMgOC4wLjAgKDEpICgxMC4wMy4yMDE1
KQ0KWEVOQlVTfERyaXZlckVudHJ5OiA8PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTog
PT09PT4NClhFTkJVU3xEcml2ZXJHZXRBY3RpdmVEZXZpY2VJbnN0YW5jZTogRGV2aWNlSUQg
PSBQQ0lcVkVOXzU4NTMmREVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVT
fERyaXZlckdldEFjdGl2ZURldmljZUluc3RhbmNlOiBJbnN0YW5jZUlEID0gMTgNClhFTkJV
U3xEcml2ZXJRdWVyeUlkOiA9PT09PiBEZXZpY2VJRA0KWEVORklMVHxQZG9RdWVyeUlkOiBC
dXNRdWVyeURldmljZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gUENJXFZFTl81ODUzJkRF
Vl8wMDAxJlNVQlNZU18wMDAxNTg1MyZSRVZfMDENClhFTkJVU3xEcml2ZXJRdWVyeUlkOiA8
PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTogRGV2aWNlSUQgPSBQQ0lcVkVOXzU4NTMm
REVWXzAwMDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVTfERyaXZlclF1ZXJ5SWQ6
ID09PT0+IEluc3RhbmNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5j
ZUlEDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IC0gMTgNClhFTkJVU3xEcml2ZXJRdWVyeUlkOiA8
PT09PQ0KWEVOQlVTfERyaXZlckFkZERldmljZTogSW5zdGFuY2VJRCA9IDE4DQpYRU5CVVN8
RGVidWdJbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfERlYnVnSW5pdGlhbGl6ZTogPD09PT0N
ClhFTkJVU3xTdXNwZW5kSW5pdGlhbGl6ZTogPT09PT4NClhFTkJVU3xTdXNwZW5kSW5pdGlh
bGl6ZTogPD09PT0NClhFTkJVU3xTaGFyZWRJbmZvSW5pdGlhbGl6ZTogPT09PT4NClhFTkJV
U3xTaGFyZWRJbmZvSW5pdGlhbGl6ZTogPD09PT0NClhFTkJVU3xFdnRjaG5Jbml0aWFsaXpl
OiA9PT09Pg0KWEVOQlVTfEV2dGNoblR3b0xldmVsSW5pdGlhbGl6ZTogPT09PT4NClhFTkJV
U3xFdnRjaG5Ud29MZXZlbEluaXRpYWxpemU6IDw9PT09DQpYRU5CVVN8RXZ0Y2huRmlmb0lu
aXRpYWxpemU6ID09PT0+DQpYRU5CVVN8RXZ0Y2huRmlmb0luaXRpYWxpemU6IDw9PT09DQpY
RU5CVVN8RXZ0Y2huSW5pdGlhbGl6ZTogPD09PT0NClhFTkJVU3xTdG9yZUluaXRpYWxpemU6
ID09PT0+DQpYRU5CVVN8U3RvcmVJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfFJhbmdlU2V0
SW5pdGlhbGl6ZTogPT09PT4NClhFTkJVU3xSYW5nZVNldEluaXRpYWxpemU6IDw9PT09DQpY
RU5CVVN8Q2FjaGVJbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfENhY2hlSW5pdGlhbGl6ZTog
PD09PT0NClhFTkJVU3xDYWNoZU1vbml0b3I6ID09PT0+DQpYRU5CVVN8R250dGFiSW5pdGlh
bGl6ZTogPT09PT4NClhFTkJVU3xHbnR0YWJJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfEJh
bGxvb25Jbml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfEJhbGxvb25Jbml0aWFsaXplOiA8PT09
PQ0KWEVORklMVHxQZG9RdWVyeUludGVyZmFjZTogUENJXFZFTl81ODUzJkRFVl8wMDAxJlNV
QlNZU18wMDAxNTg1MyZSRVZfMDFcMTg6IFVOUExVR19JTlRFUkZBQ0UgKFZFUlNJT04gMSkN
ClhFTkJVU3xGZG9DcmVhdGU6IEZGRkZGQTgwMDFBMDUyRjAgKFhTMDAwMSBYRU5CVVMpIFtB
Q1RJVkVdDQpYRU5CVVN8RHJpdmVyQWRkRGV2aWNlOiA8PT09PQ0KWEVOQlVTfEZkb0Rpc3Bh
dGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1
ZXJ5RGV2aWNlSUQNClhFTkZJTFR8UGRvUXVlcnlJZDogLSBQQ0lcVkVOXzU4NTMmREVWXzAw
MDEmU1VCU1lTXzAwMDE1ODUzJlJFVl8wMQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMTM6UVVFUllfSUQpDQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJ
RA0KWEVORklMVHxQZG9RdWVyeUlkOiAtIDE4DQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9
PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09
PT0+ICgxODpRVUVSWV9MRUdBQ1lfQlVTX0lORk9STUFUSU9OKQ0KWEVOQlVTfEZkb0Rpc3Bh
dGNoUG5wOiA8PT09PSAoMTg6UVVFUllfTEVHQUNZX0JVU19JTkZPUk1BVElPTikoYzAwMDAw
YmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwZDpGSUxURVJfUkVTT1VSQ0Vf
UkVRVUlSRU1FTlRTKQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDogWFMwMDAxIFhF
TkJVUzogMA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhF
TkJVUzogUG9ydA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogUHJlZmVy
cmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0
aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMTMxDQpYRU5CVVN8RmRvRHVtcElvUmVzb3Vy
Y2VMaXN0OiBYUzAwMDEgWEVOQlVTOiAxDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBQb3J0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VE
ZXNjcmlwdG9yOiBBbHRlcm5hdGl2ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3Jp
cHRvcjogU2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDEzMQ0KWEVO
QlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogMg0KWEVOQlVTfEZk
b0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogRGV2aWNlUHJpdmF0
ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogUmVxdWlyZWQNClhFTkJV
U3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFNoYXJlRGlzcG9zaXRpb249RGV2aWNl
RXhjbHVzaXZlIEZsYWdzPTAwMDANClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IDMNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFhT
MDAwMSBYRU5CVVM6IE1lbW9yeQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogUHJlZmVycmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFy
ZURpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDg0DQpYRU5CVVN8RmRvRHVt
cElvUmVzb3VyY2VEZXNjcmlwdG9yOiBMZW5ndGggPSAwMTAwMDAwMCBBbGlnbm1lbnQgPSAw
MDAwMDAwMQ0KIE1pbmltdW1BZGRyZXNzID0gMDAwMDAwMDAuZjAwMDAwMDAgTWF4aW11bUFk
ZHJlc3MgPSAwMDAwMDAwMC5mMGZmZmZmZg0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlz
dDogWFMwMDAxIFhFTkJVUzogNA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogWFMwMDAxIFhFTkJVUzogTWVtb3J5DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBBbHRlcm5hdGl2ZQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRv
cjogU2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDA4NA0KWEVOQlVT
fEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogTGVuZ3RoID0gMDEwMDAwMDAgQWxpZ25t
ZW50ID0gMDEwMDAwMDANCiBNaW5pbXVtQWRkcmVzcyA9IDAwMDAwMDAwLjAwMDAwMDAwIE1h
eGltdW1BZGRyZXNzID0gMDAwMDAwMDAuZmZmZmZmZmYNClhFTkJVU3xGZG9EdW1wSW9SZXNv
dXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IDUNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURl
c2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IERldmljZVByaXZhdGUNClhFTkJVU3xGZG9EdW1w
SW9SZXNvdXJjZURlc2NyaXB0b3I6IFJlcXVpcmVkDQpYRU5CVVN8RmRvRHVtcElvUmVzb3Vy
Y2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0w
MDAwDQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiA2DQpY
RU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBJbnRl
cnJ1cHQNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IFJlcXVpcmVkDQpY
RU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBTaGFyZURpc3Bvc2l0aW9uPVNo
YXJlZCBGbGFncz0wMDA0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNjcmlwdG9yOiBN
aW5pbXVtVmVjdG9yPTAwMDAwMDAwIE1heGltdW1WZWN0b3I9ZmZmZmZmZmYgQWZmaW5pdHlQ
b2xpY3k9U3BlY2lmaWVkUHJvY2Vzc29ycyBQcmlvcml0eVBvbGljeT1VbmRlZmluZWQgVGFy
Z2V0dGVkUHJvY2Vzc29ycyA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wSW9S
ZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IDcNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJj
ZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IEludGVycnVwdA0KWEVOQlVTfEZkb0R1bXBJ
b1Jlc291cmNlRGVzY3JpcHRvcjogUmVxdWlyZWQNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJj
ZURlc2NyaXB0b3I6IFNoYXJlRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAw
MDcNClhFTkJVU3xGZG9EdW1wSW9SZXNvdXJjZURlc2NyaXB0b3I6IE1pbmltdW1WZWN0b3I9
ZmZmZmZmZmUgTWF4aW11bVZlY3Rvcj1mZmZmZmZmZSBBZmZpbml0eVBvbGljeT1TcGVjaWZp
ZWRQcm9jZXNzb3JzIFByaW9yaXR5UG9saWN5PVVuZGVmaW5lZCBUYXJnZXR0ZWRQcm9jZXNz
b3JzID0gMDAwMDAwMDAwMDAwMDAwMQ0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlTGlzdDog
WFMwMDAxIFhFTkJVUzogOA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjog
WFMwMDAxIFhFTkJVUzogSW50ZXJydXB0DQpYRU5CVVN8RmRvRHVtcElvUmVzb3VyY2VEZXNj
cmlwdG9yOiBSZXF1aXJlZA0KWEVOQlVTfEZkb0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjog
U2hhcmVEaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDAwNw0KWEVOQlVTfEZk
b0R1bXBJb1Jlc291cmNlRGVzY3JpcHRvcjogTWluaW11bVZlY3Rvcj1mZmZmZmZmZSBNYXhp
bXVtVmVjdG9yPWZmZmZmZmZlIEFmZmluaXR5UG9saWN5PVNwZWNpZmllZFByb2Nlc3NvcnMg
UHJpb3JpdHlQb2xpY3k9VW5kZWZpbmVkIFRhcmdldHRlZFByb2Nlc3NvcnMgPSAwMDAwMDAw
MDAwMDAwMDAyDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwZDpGSUxURVJfUkVT
T1VSQ0VfUkVRVUlSRU1FTlRTKSgwMDAwMDAwMCkNClhFTkJVU3xGZG9EaXNwYXRjaFBucDog
PT09PT4gKDAwOlNUQVJUX0RFVklDRSkNClhFTkJVU3xGZG9EdW1wQ21GdWxsUmVzb3VyY2VE
ZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBSQVc6IEludGVyZmFjZVR5cGUgPSBQQ0lCdXMg
QnVzTnVtYmVyID0gMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IFJBVzogVmVyc2lvbiA9IDEgUmV2aXNpb24gPSAxIENvdW50ID0gNw0K
WEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJB
VzogMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAw
MSBYRU5CVVM6IFJBVzogUG9ydCBTaGFyZWREaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNpdmUg
RmxhZ3M9MDEzMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhTMDAw
MSBYRU5CVVM6IFJBVzogMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2Ny
aXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogRGV2aWNlUHJpdmF0ZSBTaGFyZWREaXNwb3Np
dGlvbj1EZXZpY2VFeGNsdXNpdmUgRmxhZ3M9MDAwMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRp
YWxSZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJBVzogMg0KWEVOQlVTfEZkb0R1bXBD
bVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogTWVtb3J5
IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDg0DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBTdGFydCA9IDAwMDAwMDAwLmYwMDAwMDAwIExlbmd0aCA9IDAxMDAwMDAwDQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogUkFXOiAzDQpY
RU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJV
UzogUkFXOiBEZXZpY2VQcml2YXRlIFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2
ZSBGbGFncz0wMDAwDQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMw
MDAxIFhFTkJVUzogUkFXOiA0DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVz
Y3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFXOiBJbnRlcnJ1cHQgU2hhcmVkRGlzcG9zaXRp
b249U2hhcmVkIEZsYWdzPTAwMDQNClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VE
ZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBSQVc6IExldmVsID0gMDAwMDAwMWMgVmVjdG9y
ID0gMDAwMDAwMWMgQWZmaW5pdHkgPSAwMDAwMDAwMEZGRkZGRkZGDQpYRU5CVVN8RmRvRHVt
cENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogUkFXOiA1DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBJbnRlcnJ1cHQgU2hhcmVkRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAw
MDcNClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEg
WEVOQlVTOiBSQVc6IE1lc3NhZ2VDb3VudCA9IDAwMDAwMDAxIFZlY3RvciA9IGZmZmZmZmZl
IEFmZmluaXR5ID0gMDAwMDAwMDAwMDAwMDAwMQ0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxS
ZXNvdXJjZUxpc3Q6IFhTMDAwMSBYRU5CVVM6IFJBVzogNg0KWEVOQlVTfEZkb0R1bXBDbVBh
cnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFJBVzogSW50ZXJydXB0
IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDA3DQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogUkFX
OiBNZXNzYWdlQ291bnQgPSAwMDAwMDAwMSBWZWN0b3IgPSBmZmZmZmZmZCBBZmZpbml0eSA9
IDAwMDAwMDAwMDAwMDAwMDINClhFTkJVU3xGZG9EdW1wQ21GdWxsUmVzb3VyY2VEZXNjcmlw
dG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBJbnRlcmZhY2VUeXBlID0gUENJQnVz
IEJ1c051bWJlciA9IDANClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3VyY2VMaXN0OiBY
UzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBWZXJzaW9uID0gMSBSZXZpc2lvbiA9IDEgQ291
bnQgPSA3DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhF
TkJVUzogVFJBTlNMQVRFRDogMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURl
c2NyaXB0b3I6IFhTMDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IFBvcnQgU2hhcmVkRGlzcG9z
aXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAxMzENClhFTkJVU3xGZG9EdW1wQ21QYXJ0
aWFsUmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiAxDQpYRU5CVVN8
RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJB
TlNMQVRFRDogRGV2aWNlUHJpdmF0ZSBTaGFyZWREaXNwb3NpdGlvbj1EZXZpY2VFeGNsdXNp
dmUgRmxhZ3M9MDAwMA0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZUxpc3Q6IFhT
MDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IDINClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVz
b3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiBNZW1vcnkgU2hh
cmVkRGlzcG9zaXRpb249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAwODQNClhFTkJVU3xGZG9E
dW1wQ21QYXJ0aWFsUmVzb3VyY2VEZXNjcmlwdG9yOiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xB
VEVEOiBTdGFydCA9IDAwMDAwMDAwLmYwMDAwMDAwIExlbmd0aCA9IDAxMDAwMDAwDQpYRU5C
VVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlTGlzdDogWFMwMDAxIFhFTkJVUzogVFJBTlNM
QVRFRDogMw0KWEVOQlVTfEZkb0R1bXBDbVBhcnRpYWxSZXNvdXJjZURlc2NyaXB0b3I6IFhT
MDAwMSBYRU5CVVM6IFRSQU5TTEFURUQ6IERldmljZVByaXZhdGUgU2hhcmVkRGlzcG9zaXRp
b249RGV2aWNlRXhjbHVzaXZlIEZsYWdzPTAwMDANClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFs
UmVzb3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA0DQpYRU5CVVN8RmRv
RHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNM
QVRFRDogSW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPVNoYXJlZCBGbGFncz0wMDA0DQpY
RU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJV
UzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYSBWZWN0b3IgPSAwMDAwMDBhMiBBZmZp
bml0eSA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVzb3Vy
Y2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA1DQpYRU5CVVN8RmRvRHVtcENt
UGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNMQVRFRDog
SW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0wMDA3
DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhF
TkJVUzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYiBWZWN0b3IgPSAwMDAwMDBiMCBB
ZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDENClhFTkJVU3xGZG9EdW1wQ21QYXJ0aWFsUmVz
b3VyY2VMaXN0OiBYUzAwMDEgWEVOQlVTOiBUUkFOU0xBVEVEOiA2DQpYRU5CVVN8RmRvRHVt
cENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAxIFhFTkJVUzogVFJBTlNMQVRF
RDogSW50ZXJydXB0IFNoYXJlZERpc3Bvc2l0aW9uPURldmljZUV4Y2x1c2l2ZSBGbGFncz0w
MDA3DQpYRU5CVVN8RmRvRHVtcENtUGFydGlhbFJlc291cmNlRGVzY3JpcHRvcjogWFMwMDAx
IFhFTkJVUzogVFJBTlNMQVRFRDogTGV2ZWwgPSAwMDAwMDAwYiBWZWN0b3IgPSAwMDAwMDBi
MCBBZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDINClhFTkJVU3xGZG9Db25uZWN0SW50ZXJy
dXB0OiA9PT09Pg0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6IEZGRkZGQTgwMDFBMDc0
Qjg6IFNoYXJlZCBMZXZlbFNlbnNpdGl2ZSBDUFUgMCBWRUNUT1IgYTINClhFTkJVU3xGZG9D
b25uZWN0SW50ZXJydXB0OiA8PT09PQ0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6ID09
PT0+DQpYRU5CVVN8RmRvQ29ubmVjdEludGVycnVwdDogRkZGRkZBODAwMUEwQTk4ODogRGV2
aWNlRXhjbHVzaXZlIExhdGNoZWQgQ1BVIDAgVkVDVE9SIGIwDQpYRU5CVVN8RmRvQ29ubmVj
dEludGVycnVwdDogPD09PT0NClhFTkJVU3xGZG9Db25uZWN0SW50ZXJydXB0OiA9PT09Pg0K
WEVOQlVTfEZkb0Nvbm5lY3RJbnRlcnJ1cHQ6IEZGRkZGQTgwMDBDNzhGNTg6IERldmljZUV4
Y2x1c2l2ZSBMYXRjaGVkIENQVSAxIFZFQ1RPUiBiMA0KWEVOQlVTfEZkb0Nvbm5lY3RJbnRl
cnJ1cHQ6IDw9PT09DQpYRU5CVVN8RmRvU2NhbjogPT09PT4NClhFTkJVU3xGZG9EM1RvRDA6
ID09PT0+DQpYRU5CVVN8RGVidWdBY3F1aXJlOiA9PT09Pg0KWEVOQlVTfERlYnVnQWNxdWly
ZTogPD09PT0NClhFTkJVU3xTdXNwZW5kQWNxdWlyZTogPT09PT4NClhFTkJVU3xTdXNwZW5k
QWNxdWlyZTogPD09PT0NClhFTkJVU3xSYW5nZVNldEFjcXVpcmU6ID09PT0+DQpYRU5CVVN8
UmFuZ2VTZXRBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAo
aW9fc3BhY2UpDQpYRU5CVVN8UmFuZ2VTZXRDcmVhdGU6IDw9PT09DQpYRU5CVVN8RmRvQ3Jl
YXRlSW9TcGFjZTogMDAwMDAwMDAuZjAwMDAwMDAgLSAwMDAwMDAwMC5mMGZmZmZmZg0KWEVO
QlVTfEZkb1NjYW46IHdhaXRpbmcuLi4NClhFTkJVU3xFdnRjaG5BY3F1aXJlOiA9PT09Pg0K
WEVOQlVTfFNoYXJlZEluZm9BY3F1aXJlOiA9PT09Pg0KWEVOQlVTfFNoYXJlZEluZm9BY3F1
aXJlOiA8PT09PQ0KWEVOQlVTfEV2dGNobkZpZm9BY3F1aXJlOiA9PT09Pg0KWEVOfEV2ZW50
Q2hhbm5lbEluaXRDb250cm9sOiBmYWlsMSAoYzAwMDAwMDIpDQpYRU5CVVN8RXZ0Y2huRmlm
b0FjcXVpcmU6IGZhaWwxIChjMDAwMDAwMikNClhFTkJVU3xFdnRjaG5Ud29MZXZlbEFjcXVp
cmU6ID09PT0+DQpYRU5CVVN8RmRvU3VzcGVuZDogPT09PT4NClhFTkJVU3xFdnRjaG5Ud29M
ZXZlbEFjcXVpcmU6IDw9PT09DQpYRU5CVVN8RXZ0Y2huQWJpQWNxdWlyZTogVFdPIExFVkVM
DQpYRU5CVVN8RXZ0Y2huSW50ZXJydXB0RW5hYmxlOiA9PT09Pg0KWEVOQlVTfEV2dGNobklu
dGVycnVwdEVuYWJsZTogPD09PT0NClhFTkJVU3xFdnRjaG5BY3F1aXJlOiA8PT09PQ0KWEVO
QlVTfFN0b3JlQWNxdWlyZTogPT09PT4NClhFTkJVU3xFdnRjaG5PcGVuOiAzDQpYRU5CVVN8
RmRvU3VzcGVuZDogd2FpdGluZy4uLg0KWEVOQlVTfEZkb0JhbGxvb246ID09PT0+DQpYRU5C
VVN8U3RvcmVBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfEJhbGxvb25BY3F1aXJlOiA9PT09Pg0K
WEVOQlVTfFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAoYmFsbG9vbikNClhFTkJVU3xSYW5nZVNl
dENyZWF0ZTogPD09PT0NClhFTkJVU3xCYWxsb29uQWNxdWlyZTogPD09PT0NClhFTkJVU3xf
X0Zkb0QzVG9EMDogPT09PT4NClhFTkJVU3xFdnRjaG5PcGVuOiAyDQpYRU5CVVN8RmRvQmFs
bG9vbjogd2FpdGluZy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNo
RXZlbnQ6IDVjYzcgKGRldmljZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVT
fEZkb1NjYW46IGF3YWtlDQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4uLg0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjOCAo
Y29udHJvbC9zaHV0ZG93bikNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZk
b1N1c3BlbmQ6IGF3YWtlDQpYRU5CVVN8RmRvU3VzcGVuZDogd2FpdGluZy4uLg0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogNWNjOSAobWVtb3J5L3RhcmdldCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvQmFsbG9vbjogYXdha2UNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvQmFsbG9vbjogd2FpdGlu
Zy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8X19GZG9EM1RvRDA6IDw9
PT09DQpYRU5CVVN8RmRvRDNUb0QwOiA8PT09PQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8
PT09PSAoMDA6U1RBUlRfREVWSUNFKSgwMDAwMDAwMCkNClhFTkJVU3xGZG9EaXNwYXRjaFBu
cDogPT09PT4gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykNClhFTkJVU3xGZG9EaXNwYXRjaFBu
cDogPD09PT0gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDApDQpYRU5CVVN8RmRv
U2NhbjogYXdha2UNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNDpRVUVSWV9QTlBfREVWSUNFX1NUQVRF
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xGZG9E
aXNwYXRjaFBucDogPD09PT0gKDE0OlFVRVJZX1BOUF9ERVZJQ0VfU1RBVEUpKDAwMDAwMDAw
KQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVWSUNFX1JFTEFU
SU9OUykNClhFTkJVU3xGZG9RdWVyeURldmljZVJlbGF0aW9uczogMCBQRE8ocykNClhFTkJV
U3xGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKDAw
MDAwMDAwKQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPT09PT4NClhFTkJVU3xQZG9BZGRSZXZp
c2lvbjogMDAwMDAwMDEgLT4gWFMwMDAxIFhFTkJVUyBWQkQ6IFNVU1BFTkQgdjEgU0hBUkVE
X0lORk8gdjEgRVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNI
RSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2
aXNpb246IDAwMDAwMDAyIC0+IFhTMDAwMSBYRU5CVVMgVkJEOiBTVVNQRU5EIHYxIFNIQVJF
RF9JTkZPIHYxIEVWVENITiB2MiBERUJVRyB2MSBTVE9SRSB2MSBSQU5HRV9TRVQgdjEgQ0FD
SEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2MQ0KWEVOQlVTfFBkb0FkZFJl
dmlzaW9uOiAwMDAwMDAwMyAtPiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVORCB2MSBTSEFS
RURfSU5GTyB2MSBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0VfU0VUIHYxIENB
Q0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJVU3xQZG9BZGRS
ZXZpc2lvbjogMDAwMDAwMDQgLT4gWFMwMDAxIFhFTkJVUyBWQkQ6IFNVU1BFTkQgdjEgU0hB
UkVEX0lORk8gdjIgRVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBD
QUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRk
UmV2aXNpb246IDAwMDAwMDA1IC0+IFhTMDAwMSBYRU5CVVMgVkJEOiBTVVNQRU5EIHYxIFNI
QVJFRF9JTkZPIHYyIEVWVENITiB2MiBERUJVRyB2MSBTVE9SRSB2MSBSQU5HRV9TRVQgdjEg
Q0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2MQ0KWEVOQlVTfFBkb0Fk
ZFJldmlzaW9uOiAwMDAwMDAwNiAtPiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVORCB2MSBT
SEFSRURfSU5GTyB2MiBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0VfU0VUIHYx
IENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJVU3xCdXNJ
bml0aWFsaXplOiA9PT09Pg0KWEVOQlVTfEJ1c0luaXRpYWxpemU6IDw9PT09DQpYRU5CVVN8
UGRvQ3JlYXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDEpDQpYRU5CVVN8UGRv
Q3JlYXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDIpDQpYRU5CVVN8UGRvQ3Jl
YXRlOiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDMpDQpYRU5CVVN8UGRvQ3JlYXRl
OiBGRkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDQpDQpYRU5CVVN8UGRvQ3JlYXRlOiBG
RkZGRkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDUpDQpYRU5CVVN8UGRvQ3JlYXRlOiBGRkZG
RkE4MDAwQzZEOTIwIChWQkQgMDAwMDAwMDYpDQpYRU5CVVN8UGRvUmVzdW1lOiA8PT09Pg0K
WEVOQlVTfFBkb0FkZFJldmlzaW9uOiAwMDAwMDAwMSAtPiBYUzAwMDEgWEVOQlVTIFZJRjog
U1VTUEVORCB2MSBTSEFSRURfSU5GTyB2MSBFVlRDSE4gdjEgREVCVUcgdjEgU1RPUkUgdjEg
UkFOR0VfU0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjEN
ClhFTkJVU3xQZG9BZGRSZXZpc2lvbjogMDAwMDAwMDIgLT4gWFMwMDAxIFhFTkJVUyBWSUY6
IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JFIHYx
IFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYx
DQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAzIC0+IFhTMDAwMSBYRU5CVVMgVklG
OiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYxIEVWVENITiB2MyBERUJVRyB2MSBTVE9SRSB2
MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExVRyB2
MQ0KWEVOQlVTfFBkb0FkZFJldmlzaW9uOiAwMDAwMDAwNCAtPiBYUzAwMDEgWEVOQlVTIFZJ
RjogU1VTUEVORCB2MSBTSEFSRURfSU5GTyB2MiBFVlRDSE4gdjEgREVCVUcgdjEgU1RPUkUg
djEgUkFOR0VfU0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcg
djENClhFTkJVU3xQZG9BZGRSZXZpc2lvbjogMDAwMDAwMDUgLT4gWFMwMDAxIFhFTkJVUyBW
SUY6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjIgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JF
IHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVH
IHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDA2IC0+IFhTMDAwMSBYRU5CVVMg
VklGOiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYyIEVWVENITiB2MyBERUJVRyB2MSBTVE9S
RSB2MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVOUExV
RyB2MQ0KWEVOQlVTfEJ1c0luaXRpYWxpemU6ID09PT0+DQpYRU5CVVN8QnVzSW5pdGlhbGl6
ZTogPD09PT0NClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAw
MDAwMSkNClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAw
MikNClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwMykN
ClhFTkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNCkNClhF
TkJVU3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNSkNClhFTkJV
U3xQZG9DcmVhdGU6IEZGRkZGQTgwMDFBMEMzNjAgKFZJRiAwMDAwMDAwNikNClhFTkJVU3xQ
ZG9SZXN1bWU6IDw9PT0+DQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAxIC0+IFhT
MDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hOIHYx
IERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1V
TEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAyIC0+
IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZUQ0hO
IHYyIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEg
RU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAwMDAz
IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjEgRVZU
Q0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIg
djEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAwMDAw
MDA0IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8gdjIg
RVZUQ0hOIHYxIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRU
QUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246IDAw
MDAwMDA1IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lORk8g
djIgRVZUQ0hOIHYyIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2MSBH
TlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8UGRvQWRkUmV2aXNpb246
IDAwMDAwMDA2IC0+IFhTMDAwMSBYRU5CVVMgSUZBQ0U6IFNVU1BFTkQgdjEgU0hBUkVEX0lO
Rk8gdjIgRVZUQ0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJBTkdFX1NFVCB2MSBDQUNIRSB2
MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpYRU5CVVN8QnVzSW5pdGlhbGl6
ZTogPT09PT4NClhFTkJVU3xCdXNJbml0aWFsaXplOiA8PT09PQ0KWEVOQlVTfFBkb0NyZWF0
ZTogRkZGRkZBODAwMUExRjUzMCAoSUZBQ0UgMDAwMDAwMDEpDQpYRU5CVVN8UGRvQ3JlYXRl
OiBGRkZGRkE4MDAxQTFGNTMwIChJRkFDRSAwMDAwMDAwMikNClhFTkJVU3xQZG9DcmVhdGU6
IEZGRkZGQTgwMDFBMUY1MzAgKElGQUNFIDAwMDAwMDAzKQ0KWEVOQlVTfFBkb0NyZWF0ZTog
RkZGRkZBODAwMUExRjUzMCAoSUZBQ0UgMDAwMDAwMDQpDQpYRU5CVVN8UGRvQ3JlYXRlOiBG
RkZGRkE4MDAxQTFGNTMwIChJRkFDRSAwMDAwMDAwNSkNClhFTkJVU3xQZG9DcmVhdGU6IEZG
RkZGQTgwMDFBMUY1MzAgKElGQUNFIDAwMDAwMDA2KQ0KWEVOQlVTfFBkb1Jlc3VtZTogPD09
PT4NClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGlu
Zy4uLg0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVWSUNFX1JF
TEFUSU9OUykNClhFTkJVU3xGZG9RdWVyeURldmljZVJlbGF0aW9uczogMyBQRE8ocykNClhF
TkJVU3xGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQp
DQpYRU5CVVN8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDYNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAwMCkNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPT09PT4gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykNClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDA5OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkN
ClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IERldmljZVRleHREZXNjcmlwdGlvbg0KWEVO
QlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogVkJEOiBYUzAwMDEgWEVOQlVTIFZCRDogU1VTUEVO
RCB2MSBTSEFSRURfSU5GTyB2MiBFVlRDSE4gdjMgREVCVUcgdjEgU1RPUkUgdjEgUkFOR0Vf
U0VUIHYxIENBQ0hFIHYxIEdOVFRBQiB2MSBFTVVMQVRFRCB2MSBVTlBMVUcgdjENClhFTkJV
U3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDBjOlFVRVJZX0RFVklDRV9URVhUKSgwMDAwMDAw
MCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBjOlFVRVJZX0RFVklDRV9URVhU
KQ0KWEVOQlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogRGV2aWNlVGV4dExvY2F0aW9uSW5mb3Jt
YXRpb24NClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IFZCRDogVkJEDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoMDAwMDAwMDApDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9R
dWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkJVU3xQZG9RdWVyeUlkOiAtIF8NClhF
TkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAwMCkNClhF
TkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZX0lEKQ0KWEVOQlVTfFBkb1F1
ZXJ5SWQ6IEJ1c1F1ZXJ5SGFyZHdhcmVJRHMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDAxDQpYRU5CVVN8UGRvUXVlcnlJZDog
LSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAwMDAwMg0KWEVOQlVTfFBkb1F1
ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDMNClhFTkJV
U3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDA0
DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8w
MDAwMDAwNQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZC
RCZSRVZfMDAwMDAwMDYNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlk
OiBCdXNRdWVyeUNvbXBhdGlibGVJRHMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xW
RU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDAxDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBY
RU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAwMDAwMg0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZSRVZfMDAwMDAwMDMNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WQkQmUkVWXzAwMDAwMDA0DQpY
RU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVkJEJlJFVl8wMDAw
MDAwNQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZCRCZS
RVZfMDAwMDAwMDYNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9EaXNwYXRjaFBu
cDogPD09PT0gKDEzOlFVRVJZX0lEKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykNClhFTkJVU3xQZG9E
aXNwYXRjaFBucDogPD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykoMDAw
MDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNTpRVUVSWV9CVVNfSU5G
T1JNQVRJT04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNTpRVUVSWV9CVVNf
SU5GT1JNQVRJT04pKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MGE6UVVFUllfUkVTT1VSQ0VTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGE6
UVVFUllfUkVTT1VSQ0VTKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09
PT4gKDE5OlVOS05PV04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxOTpVTktO
T1dOKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZ
X0lEKQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2aWNlSUQNClhFTkJVU3xQZG9R
dWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDA2DQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMpDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMpKDAwMDAw
MDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVFUllfREVWSUNFX1RF
WFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0RGVzY3JpcHRpb24N
ClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IFZJRjogWFMwMDAxIFhFTkJVUyBWSUY6IFNV
U1BFTkQgdjEgU0hBUkVEX0lORk8gdjIgRVZUQ0hOIHYzIERFQlVHIHYxIFNUT1JFIHYxIFJB
TkdFX1NFVCB2MSBDQUNIRSB2MSBHTlRUQUIgdjEgRU1VTEFURUQgdjEgVU5QTFVHIHYxDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoMDAw
MDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwYzpRVUVSWV9ERVZJQ0Vf
VEVYVCkNClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IERldmljZVRleHRMb2NhdGlvbklu
Zm9ybWF0aW9uDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBWSUY6IFZJRg0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGM6UVVFUllfREVWSUNFX1RFWFQpKDAwMDAwMDAw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8
UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5jZUlEDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBf
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQ
ZG9RdWVyeUlkOiBCdXNRdWVyeUhhcmR3YXJlSURzDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBY
RU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAwMQ0KWEVOQlVTfFBkb1F1ZXJ5
SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZfMDAwMDAwMDINClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDAzDQpY
RU5CVVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAw
MDAwNA0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZS
RVZfMDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRF
Vl9WSUYmUkVWXzAwMDAwMDA2DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5DTEFTUw0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8UGRvUXVl
cnlJZDogQnVzUXVlcnlDb21wYXRpYmxlSURzDQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5C
VVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAwMQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6
IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZfMDAwMDAwMDINClhFTkJVU3xQZG9R
dWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9WSUYmUkVWXzAwMDAwMDAzDQpYRU5C
VVN8UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfVklGJlJFVl8wMDAwMDAw
NA0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IC0gWEVOQlVTXFZFTl9YUzAwMDEmREVWX1ZJRiZSRVZf
MDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9W
SUYmUkVWXzAwMDAwMDA2DQpYRU5CVVN8UGRvUXVlcnlJZDogLSBYRU5DTEFTUw0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQ0KWEVOQlVT
fFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTM6UVVFUllfSUQpDQpYRU5CVVN8UGRvRGlzcGF0
Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0
Y2hQbnA6ID09PT0+ICgwYjpRVUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMpDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYjpRVUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMTU6UVVFUllfQlVT
X0lORk9STUFUSU9OKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTU6UVVFUllf
QlVTX0lORk9STUFUSU9OKSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09
PT4gKDBhOlFVRVJZX1JFU09VUkNFUykNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0g
KDBhOlFVRVJZX1JFU09VUkNFUykoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgxOTpVTktOT1dOKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTk6
VU5LTk9XTikoYzAwMDAwYmIpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpR
VUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeURldmljZUlEDQpYRU5CVVN8
UGRvUXVlcnlJZDogLSBYRU5CVVNcVkVOX1hTMDAwMSZERVZfSUZBQ0UmUkVWXzAwMDAwMDA2
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDAp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMp
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMp
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVFUllfREVW
SUNFX1RFWFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0RGVzY3Jp
cHRpb24NClhFTkJVU3xQZG9RdWVyeURldmljZVRleHQ6IElGQUNFOiBYUzAwMDEgWEVOQlVT
IElGQUNFOiBTVVNQRU5EIHYxIFNIQVJFRF9JTkZPIHYyIEVWVENITiB2MyBERUJVRyB2MSBT
VE9SRSB2MSBSQU5HRV9TRVQgdjEgQ0FDSEUgdjEgR05UVEFCIHYxIEVNVUxBVEVEIHYxIFVO
UExVRyB2MQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGM6UVVFUllfREVWSUNF
X1RFWFQpKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGM6UVVF
UllfREVWSUNFX1RFWFQpDQpYRU5CVVN8UGRvUXVlcnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0
TG9jYXRpb25JbmZvcm1hdGlvbg0KWEVOQlVTfFBkb1F1ZXJ5RGV2aWNlVGV4dDogSUZBQ0U6
IElGQUNFDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0Vf
VEVYVCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxMzpRVUVS
WV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeUluc3RhbmNlSUQNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIF8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZ
X0lEKSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDEzOlFVRVJZ
X0lEKQ0KWEVOQlVTfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SGFyZHdhcmVJRHMNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDEN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZf
MDAwMDAwMDINClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9J
RkFDRSZSRVZfMDAwMDAwMDMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMw
MDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDQNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDUNClhFTkJVU3xQZG9RdWVyeUlk
OiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDYNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgx
MzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgx
MzpRVUVSWV9JRCkNClhFTkJVU3xQZG9RdWVyeUlkOiBCdXNRdWVyeUNvbXBhdGlibGVJRHMN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZf
MDAwMDAwMDENClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9J
RkFDRSZSRVZfMDAwMDAwMDINClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMw
MDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDMNClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkJV
U1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDQNClhFTkJVU3xQZG9RdWVyeUlk
OiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDUNClhFTkJVU3xQ
ZG9RdWVyeUlkOiAtIFhFTkJVU1xWRU5fWFMwMDAxJkRFVl9JRkFDRSZSRVZfMDAwMDAwMDYN
ClhFTkJVU3xQZG9RdWVyeUlkOiAtIFhFTkNMQVNTDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgxMzpRVUVSWV9JRCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDEz
OlFVRVJZX0lEKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBi
OlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykNClhFTkJVU3xQZG9EaXNwYXRjaFBucDog
PD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUykoMDAwMDAwMDApDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgxNTpRVUVSWV9CVVNfSU5GT1JNQVRJT04pDQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNTpRVUVSWV9CVVNfSU5GT1JNQVRJT04p
KDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMGE6UVVFUllfUkVT
T1VSQ0VTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGE6UVVFUllfUkVTT1VS
Q0VTKShjMDAwMDBiYikNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDE5OlVOS05P
V04pDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxOTpVTktOT1dOKShjMDAwMDBi
YikNClhFTkZJTFR8UGRvUXVlcnlJZDogQnVzUXVlcnlEZXZpY2VJRA0KWEVORklMVHxQZG9R
dWVyeUlkOiAtIFBDSVxWRU5fODA4NiZERVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAw
DQpYRU5GSUxUfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5SW5zdGFuY2VJRA0KWEVORklMVHxQZG9R
dWVyeUlkOiAtIDA5DQpYRU5GSUxUfFBkb0Rpc3BhdGNoUG93ZXI6IFBDSVxWRU5fODA4NiZE
RVZfNzAxMCZTVUJTWVNfMDAwMTU4NTMmUkVWXzAwXDA5OiA9PT09PiAoMDI6U0VUX1BPV0VS
KQ0KWEVORklMVHxQZG9EaXNwYXRjaFBvd2VyOiBQQ0lcVkVOXzgwODYmREVWXzcwMTAmU1VC
U1lTXzAwMDE1ODUzJlJFVl8wMFwwOTogPD09PT0gKDAyOlNFVF9QT1dFUikgKDAwMDAwMTAz
KQ0KWEVORklMVHxQZG9TZXREZXZpY2VQb3dlcjogUENJXFZFTl84MDg2JkRFVl83MDEwJlNV
QlNZU18wMDAxNTg1MyZSRVZfMDBcMDk6ID09PT0+IChEMDpOb25lKQ0KWEVORklMVHxQZG9T
ZXREZXZpY2VQb3dlcjogUENJXFZFTl84MDg2JkRFVl83MDEwJlNVQlNZU18wMDAxNTg1MyZS
RVZfMDBcMDk6IDw9PT09IChEMDpOb25lKSgwMDAwMDAwMCkNClhFTkZJTFR8RmRvQ3JlYXRl
OiBGRkZGRkE4MDAxQTNEQTcwIChQQ0lJREVcSURFQ2hhbm5lbFwwKQ0KWEVORklMVHxGZG9D
cmVhdGU6IEZGRkZGQTgwMDFBNDRBNzAgKFBDSUlERVxJREVDaGFubmVsXDEpDQpYRU5GSUxU
fEZkb0Rpc3BhdGNoUG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6ID09PT0+ICgwMjpTRVRf
UE9XRVIpDQpYRU5GSUxUfEZkb0Rpc3BhdGNoUG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6
IDw9PT09ICgwMjpTRVRfUE9XRVIpICgwMDAwMDEwMykNClhFTkZJTFR8RmRvU2V0RGV2aWNl
UG93ZXI6IFBDSUlERVxJREVDaGFubmVsXDA6ID09PT0+IChEMDpOb25lKQ0KWEVORklMVHxG
ZG9TZXREZXZpY2VQb3dlclVwOiBQQ0lJREVcSURFQ2hhbm5lbFwwOiBEMyAtPiBEMA0KWEVO
RklMVHxGZG9TZXREZXZpY2VQb3dlcjogUENJSURFXElERUNoYW5uZWxcMDogPD09PT0gKEQw
Ok5vbmUpKDAwMDAwMDAwKQ0KWEVORklMVHxGZG9RdWVyeURldmljZVJlbGF0aW9uczogUENJ
SURFXElERUNoYW5uZWxcMDogMCBQRE8ocykNClhFTkZJTFR8RmRvRGlzcGF0Y2hQb3dlcjog
UENJSURFXElERUNoYW5uZWxcMTogPT09PT4gKDAyOlNFVF9QT1dFUikNClhFTkZJTFR8RmRv
RGlzcGF0Y2hQb3dlcjogUENJSURFXElERUNoYW5uZWxcMTogPD09PT0gKDAyOlNFVF9QT1dF
UikgKDAwMDAwMTAzKQ0KWEVORklMVHxGZG9TZXREZXZpY2VQb3dlcjogUENJSURFXElERUNo
YW5uZWxcMTogPT09PT4gKEQwOk5vbmUpDQpYRU5GSUxUfEZkb1NldERldmljZVBvd2VyVXA6
IFBDSUlERVxJREVDaGFubmVsXDE6IEQzIC0+IEQwDQpYRU5GSUxUfEZkb1NldERldmljZVBv
d2VyOiBQQ0lJREVcSURFQ2hhbm5lbFwxOiA8PT09PSAoRDA6Tm9uZSkoMDAwMDAwMDApDQpY
RU5GSUxUfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiBQQ0lJREVcSURFQ2hhbm5lbFwxOiAw
IFBETyhzKQ0KWEVOVkJEfERyaXZlckVudHJ5Oj09PT4gKElycWw9MCkNClhFTlZCRHxEcml2
ZXJFbnRyeTo4LjAuMC4wICgxMS8zLzIwMTUpDQpYRU5WQkR8X19Ecml2ZXJQYXJzZVBhcmFt
ZXRlcktleTpPcHRpb25zID0gIiBURVNUU0lHTklORyAgTk9FWEVDVVRFPU9QVElOICBERUJV
RyAgREVCVUdQT1JUPUNPTTEgIEJBVURSQVRFPTExNTIwMCINClhFTlZCRHxfX0RyaXZlclBh
cnNlUGFyYW1ldGVyS2V5OkRyaXZlclBhcmFtZXRlcnM6IA0KWEVOVkJEfERyaXZlckVudHJ5
Ojw9PT0gKDAwMDAwMDAwKSAoSXJxbD0wKQ0KWEVORElTS3xEcml2ZXJFbnRyeTo9PT09Pg0K
WEVORElTS3xEcml2ZXJFbnRyeTpYRU5ESVNLIDguMC4wICgwKSAoMTEuMDMuMjAxNSkNClhF
TkRJU0t8RHJpdmVyRW50cnk6PD09PT0NClhFTkRJU0t8RmRvQ3JlYXRlOkZGRkZGQTgwMDFB
NENCQTANClhFTlZCRHxEaXNwYXRjaFBucDpEZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTRE
MDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQ
ZG9EaXNwYXRjaFBucDogPT09PT4gKDE4OlFVRVJZX0xFR0FDWV9CVVNfSU5GT1JNQVRJT04p
DQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxODpRVUVSWV9MRUdBQ1lfQlVTX0lO
Rk9STUFUSU9OKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpEZXZpY2VPYmplY3Qg
MHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAwMDAwMCkgb3Ig
YSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDBkOkZJTFRFUl9SRVNPVVJD
RV9SRVFVSVJFTUVOVFMpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwZDpGSUxU
RVJfUkVTT1VSQ0VfUkVRVUlSRU1FTlRTKSgwMDAwMDAwMCkNClhFTlZCRHxEaXNwYXRjaFBu
cDpEZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAw
MDAwMDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4
OlFVRVJZX0lOVEVSRkFDRSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFV
RVJZX0lOVEVSRkFDRSkoYzAwMDAwYmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgw
ODpRVUVSWV9JTlRFUkZBQ0UpKGMwMDAwMGJiKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpE
ZXZpY2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAw
MDAwMDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4OlFV
RVJZX0lOVEVSRkFDRSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZ
X0lOVEVSRkFDRSkoYzAwMDAwYmIpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgw
ODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpR
VUVSWV9JTlRFUkZBQ0UpKGMwMDAwMGJiKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09PSAo
MDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikNClhFTlZCRHxEaXNwYXRjaFBucDpEZXZp
Y2VPYmplY3QgMHhGRkZGRkE4MDAxQTREMDYwIGlzIG5vdCBGRE8gKDB4MDAwMDAwMDAwMDAw
MDAwMCkgb3IgYSBQRE8NClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDAwOlNUQVJU
X0RFVklDRSkNClhFTkJVU3xQZG9QYXJzZVJlc291cmNlczogVkJEOiBbMF0gMDM6TWVtb3J5
DQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFJBVzogU2hhcmVkRGlzcG9zaXRpb249MDEg
RmxhZ3M9MDAyNCBTdGFydCA9IDAwMDAwMDAwLmZiZmZmMDAwIExlbmd0aCA9IDAwMDAxMDAw
DQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFRSQU5TTEFURUQ6IFNoYXJlZERpc3Bvc2l0
aW9uPTAxIEZsYWdzPTAwMjQgU3RhcnQgPSAwMDAwMDAwMC5mYmZmZjAwMCBMZW5ndGggPSAw
MDAwMTAwMA0KWEVOQlVTfFBkb1BhcnNlUmVzb3VyY2VzOiBWQkQ6IFsxXSAwMjpJbnRlcnJ1
cHQNClhFTkJVU3xQZG9QYXJzZVJlc291cmNlczogUkFXOiBTaGFyZWREaXNwb3NpdGlvbj0w
MSBGbGFncz0wMDAwIExldmVsID0gMDAwMDAwMGIgVmVjdG9yID0gMDAwMDAwMGIgQWZmaW5p
dHkgPSAwMDAwMDAwMEZGRkZGRkZGDQpYRU5CVVN8UGRvUGFyc2VSZXNvdXJjZXM6IFRSQU5T
TEFURUQ6IFNoYXJlZERpc3Bvc2l0aW9uPTAxIEZsYWdzPTAwMDAgTGV2ZWwgPSAwMDAwMDAw
NyBWZWN0b3IgPSAwMDAwMDA3MiBBZmZpbml0eSA9IDAwMDAwMDAwMDAwMDAwMDMNClhFTkJV
U3xQZG9QYXJzZVJlc291cmNlczogPD09PT0NClhFTkJVU3xfX1Bkb0QzVG9EMDogKFZCRCkg
PT09PT4NClhFTkJVU3xfX1Bkb0QzVG9EMDogKFZCRCkgPD09PT0NClhFTkJVU3xQZG9EaXNw
YXRjaFBucDogPD09PT0gKDAwOlNUQVJUX0RFVklDRSkoMDAwMDAwMDApDQpYRU5CVVN8UGRv
RGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVl
cnlJbnRlcmZhY2U6IFZCRDogQlVTX0lOVEVSRkFDRSAoVkVSU0lPTiAxKQ0KWEVOQlVTfFBk
b0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAwMDAwMCkNClhF
TlZCRHxId0ZpbmRBZGFwdGVyOigweEZGRkZGQTgwMDFBNTEwMTgsIDB4MDAwMDAwMDAwMDAw
MDAwMCwgMHgwMDAwMDAwMDAwMDAwMDAwLCAsIDB4RkZGRkZBODAwMUE0RDJEMCwgMHhGRkZG
Rjg4MDAwOUFFMDgwKSBAMCAtLS0+DQpYRU5WQkR8RmRvRmluZEFkYXB0ZXI6NjRiaXQgRE1B
DQpYRU5WQkR8RGlzcGF0Y2hQbnA6RGV2aWNlT2JqZWN0IDB4RkZGRkZBODAwMUE0RDA2MCBp
cyBub3QgRkRPICgweDAwMDAwMDAwMDAwMDAwMDApIG9yIGEgUERPDQpYRU5CVVN8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVlcnlJ
bnRlcmZhY2U6IFZCRDogQlVTX0lOVEVSRkFDRSAoVkVSU0lPTiAxKQ0KWEVOQlVTfFBkb0Rp
c3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAwMDAwMCkNClhFTkJV
U3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IFZlcnNpb24gPSAwDQpYRU5CVVN8RG1hRHVt
cERldmljZURlc2NyaXB0aW9uOiBNYXN0ZXIgPSBUUlVFDQpYRU5CVVN8RG1hRHVtcERldmlj
ZURlc2NyaXB0aW9uOiBTY2F0dGVyR2F0aGVyID0gVFJVRQ0KWEVOQlVTfERtYUR1bXBEZXZp
Y2VEZXNjcmlwdGlvbjogRGVtYW5kTW9kZSA9IEZBTFNFDQpYRU5CVVN8RG1hRHVtcERldmlj
ZURlc2NyaXB0aW9uOiBBdXRvSW5pdGlhbGl6ZSA9IEZBTFNFDQpYRU5CVVN8RG1hRHVtcERl
dmljZURlc2NyaXB0aW9uOiBEbWEzMkJpdEFkZHJlc3NlcyA9IFRSVUUNClhFTkJVU3xEbWFE
dW1wRGV2aWNlRGVzY3JpcHRpb246IElnbm9yZUNvdW50ID0gRkFMU0UNClhFTkJVU3xEbWFE
dW1wRGV2aWNlRGVzY3JpcHRpb246IERtYTY0Qml0QWRkcmVzc2VzID0gVFJVRQ0KWEVOQlVT
fERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogQnVzTnVtYmVyID0gMDAwMDAwMDANClhFTkJV
U3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERtYUNoYW5uZWwgPSBmZmZmZmZmZg0KWEVO
QlVTfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogSW50ZXJmYWNlVHlwZSA9IEludGVybmFs
DQpYRU5CVVN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWFXaWR0aCA9IDhCaXRzDQpY
RU5CVVN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWFTcGVlZCA9IENvbXBhdGlibGUN
ClhFTkJVU3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IE1heGltdW1MZW5ndGggPSAwMDBi
MDAwMA0KWEVOQlVTfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogRG1hUG9ydCA9IGZmZmZm
ZmZmDQpYRU5CVVN8UGRvR2V0RG1hQWRhcHRlcjogPD09PT4NClhFTkJVU3xEbWFHZXRBZGFw
dGVyOiBubyBpbnRlcmNlcHRpb24NClhFTlZCRHxfX0Zkb0luaXRpYWxpemU6PT09PT0+ICgw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0K
WEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IFNUT1JFX0lOVEVSRkFDRSAoVkVSU0lP
TiAxKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNF
KSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4OlFVRVJZX0lO
VEVSRkFDRSkNClhFTkJVU3xQZG9RdWVyeUludGVyZmFjZTogVkJEOiBFVlRDSE5fSU5URVJG
QUNFIChWRVJTSU9OIDMpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVS
WV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MDg6UVVFUllfSU5URVJGQUNFKQ0KWEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IEdO
VFRBQl9JTlRFUkZBQ0UgKFZFUlNJT04gMSkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09
PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApDQpYRU5CVVN8UGRvRGlzcGF0Y2hQ
bnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRvUXVlcnlJbnRlcmZh
Y2U6IFZCRDogU1VTUEVORF9JTlRFUkZBQ0UgKFZFUlNJT04gMSkNClhFTkJVU3xQZG9EaXNw
YXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApDQpYRU5CVVN8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpDQpYRU5CVVN8UGRv
UXVlcnlJbnRlcmZhY2U6IFZCRDogREVCVUdfSU5URVJGQUNFIChWRVJTSU9OIDEpDQpYRU5C
VVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAw
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQ0K
WEVOQlVTfFBkb1F1ZXJ5SW50ZXJmYWNlOiBWQkQ6IEVNVUxBVEVEX0lOVEVSRkFDRSAoVkVS
U0lPTiAxKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJG
QUNFKQ0KWEVORklMVHxQZG9RdWVyeUludGVyZmFjZTogUENJXFZFTl81ODUzJkRFVl8wMDAx
JlNVQlNZU18wMDAxNTg1MyZSRVZfMDFcMTg6IEVNVUxBVEVEX0lOVEVSRkFDRSAoVkVSU0lP
TiAxKQ0KWEVOQlVTfEZkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNF
KSgwMDAwMDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lO
VEVSRkFDRSkoMDAwMDAwMDApDQpYRU5WQkR8X19GZG9Jbml0aWFsaXplOjw9PT09PSAoMCkN
ClhFTlZCRHxfX0Zkb1NldERldmljZVBvd2VyU3RhdGU6UE9XRVIgRDMgdG8gRDANClhFTlZC
RHxfX0Zkb0QzVG9EMDo9PT09PT4gKDApDQpYRU5WQkR8X19GZG9EM1RvRDA6RDMtPkQwDQpY
RU5CVVN8R250dGFiQWNxdWlyZTogPT09PT4NClhFTkJVU3xSYW5nZVNldENyZWF0ZTogPT09
PT4gKGdudHRhYikNClhFTkJVU3xSYW5nZVNldENyZWF0ZTogPD09PT0NClhFTkJVU3xDYWNo
ZUFjcXVpcmU6ID09PT0+DQpYRU5CVVN8Q2FjaGVBY3F1aXJlOiA8PT09PQ0KWEVOQlVTfEdu
dHRhYkFjcXVpcmU6IDw9PT09DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU5WQkR8X19GZG9EM1RvRDA6PD09PT09ICgwKQ0KWEVOVkJEfEZk
b1NjYW5UYXJnZXRzOj09PT0+DQpYRU5WQkR8SHdGaW5kQWRhcHRlcjooMHhGRkZGRkE4MDAx
QTUxMDE4LCAweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDAwMDAwMDAwMDAwMDAwMCwgLCAweEZG
RkZGQTgwMDFBNEQyRDAsIDB4RkZGRkY4ODAwMDlBRTA4MCkgQDAgPC0tLSAxDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5GSUxUfEVtdWxhdGVkSXNEaXNrUHJl
c2VudDogPT09PT4gKDAwOjAwOjAwKQ0KWEVORklMVHxFbXVsYXRlZElzRGlza1ByZXNlbnQ6
IDw9PT09DQpYRU5WQkR8X19GZG9Jc1Bkb1VucGx1Z2dlZDpUYXJnZXRbMF0gOiAodmJkLzUx
NzEyKSBFbXVsYXRlZCBOT1RfUFJFU0VOVA0KWEVOVkJEfFBkb0NyZWF0ZTpUYXJnZXRbMF0g
QCAoMikgPT09PT0+DQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFswXSA6IENyZWF0aW5nIChQ
VikNClhFTlZCRHxGcm9udGVuZENyZWF0ZTpUYXJnZXRbMF0gQCAoMikgPT09PT0+DQpYRU5W
QkR8RnJvbnRlbmRDcmVhdGU6VGFyZ2V0WzBdIEAgKDIpIDw9PT09PSAoU1RBVFVTX1NVQ0NF
U1MpDQpYRU5WQkR8UGRvU2V0RGV2aWNlUG93ZXJTdGF0ZTpUYXJnZXRbMF0gOiBQT1dFUiBE
MyB0byBEMA0KWEVOVkJEfFBkb0QzVG9EMDpUYXJnZXRbMF0gQCAoMikgPT09PT0+DQpYRU5W
QkR8UGRvRDNUb0QwOlRhcmdldFswXSA6IEQzLT5EMCAoUFYpDQpYRU5WQkR8X19Gcm9udGVu
ZFNldFN0YXRlOlRhcmdldFswXSBAICgyKSA9PT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0
U3RhdGU6VGFyZ2V0WzBdIDogSU5JVElBTElaRUQgLS0tLT4gRU5BQkxFRA0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6Pj4gL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzEyDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NiICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3MTIvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOlRhcmdldFswXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IEluaXRXYWl0DQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChk
ZXZpY2UvdmJkLzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2Uv
dmJkLzUxNzEyL3N0YXRlKQ0KWEVOQlVTfEZkb1NjYW46IGF3YWtlDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzBdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2lu
Zw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogNWNjYyAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIz
LzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvRW51
bWVyYXRlOiA9PT09Pg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0U3RhdGU6VGFyZ2V0
WzBdIDogQkFDS0VORF9TVEFURSAgLT4gQ2xvc2luZw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81
MTcxMi9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8RmRvU2NhbjogYXdha2UNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1
Y2NhIChkZXZpY2UvdmJkLzUxNzEyL3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzBdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xv
c2VkDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNjZCAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzEyL3N0YXRl
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOkZhaWwyDQpYRU5CVVN8RmRvRW51
bWVyYXRlOiA9PT09Pg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0U3RhdGU6RmFpbDEg
KGMwMDAwMDM0KQ0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMF0gOiBpbiBz
dGF0ZSBJTklUSUFMSVpFRA0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMF0g
QCAoMikgPD09PT09IChGQUlMRUQpDQpYRU5WQkR8UGRvRDNUb0QwOkZhaWwyDQpYRU5WQkR8
UGRvRDNUb0QwOkZhaWwxIChjMDAwMDAwMSkNClhFTlZCRHxQZG9DcmVhdGU6RmFpbDMNClhF
TlZCRHxGcm9udGVuZERlc3Ryb3k6VGFyZ2V0WzBdIEAgKDIpID09PT09Pg0KWEVOVkJEfEZy
b250ZW5kRGVzdHJveTpUYXJnZXRbMF0gQCAoMikgPD09PT09DQpYRU5WQkR8UGRvQ3JlYXRl
OkZhaWwyDQpYRU5WQkR8UGRvQ3JlYXRlOkZhaWwxIChjMDAwMDAwMSkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTkZJTFR8RW11bGF0ZWRJc0Rpc2tQcmVzZW50OiA9PT09PiAoMDA6
MDE6MDApDQpYRU5GSUxUfEVtdWxhdGVkSXNEaXNrUHJlc2VudDogPD09PT0NClhFTlZCRHxf
X0Zkb0lzUGRvVW5wbHVnZ2VkOlRhcmdldFsxXSA6ICh2YmQvNTE3MjgpIEVtdWxhdGVkIE5P
VF9QUkVTRU5UDQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhF
TlZCRHxQZG9DcmVhdGU6VGFyZ2V0WzFdIDogQ3JlYXRpbmcgKFBWKQ0KWEVOVkJEfEZyb250
ZW5kQ3JlYXRlOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhFTlZCRHxGcm9udGVuZENyZWF0
ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09IChTVEFUVVNfU1VDQ0VTUykNClhFTlZCRHxQZG9T
ZXREZXZpY2VQb3dlclN0YXRlOlRhcmdldFsxXSA6IFBPV0VSIEQzIHRvIEQwDQpYRU5WQkR8
UGRvRDNUb0QwOlRhcmdldFsxXSBAICgyKSA9PT09PT4NClhFTlZCRHxQZG9EM1RvRDA6VGFy
Z2V0WzFdIDogRDMtPkQwIChQVikNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0
WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMV0g
OiBJTklUSUFMSVpFRCAtLS0tPiBFTkFCTEVEDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92
YmQvMjMvNTE3MjgNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50
OiA1Y2NlICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMw
MDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUg
IC0+IEluaXRXYWl0DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xGZG9TY2FuOiBhd2Fr
ZQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3
Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDog
RlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2luZw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZkb0VudW1l
cmF0ZTogPT09PT4NClhFTkJVU3xGZG9FbnVtZXJhdGU6IDw9PT09DQpYRU5CVVN8RmRvU2Nh
bjogd2FpdGluZy4uLg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogNWNjZiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIz
LzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENsb3NpbmcNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNjNyAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvU2NhbjogYXdha2UNClhFTkJVU3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOVkJEfF9fX1NldFN0YXRlOlRhcmdldFsxXSA6IEZST05URU5EX1NU
QVRFIC0+IENsb3NlZA0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkMCAoL2xvY2FsL2RvbWFpbi8wL2Jh
Y2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
VkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENsb3NlZA0K
WEVOQlVTfEZkb0VudW1lcmF0ZTogPT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ0xPU0VEDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPD09PT0NClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8RmRvU2Nhbjogd2FpdGluZy4u
Lg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0
aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2QxICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IDVjZDIgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9pbmZvKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZDMgKC9sb2Nh
bC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zZWN0b3Itc2l6ZSkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2Q0ICgvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2VjdG9ycykNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRD
aGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8RnJvbnRlbmRXcml0ZVVzYWdlOlRhcmdldFsxXSA6IE5PVF9EVU1QIE5PVF9I
SUJFUiBOT1RfUEFHRQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFu
bmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwx
IChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNl
L3ZiZC81MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJv
Y2Vzc1dhdGNoRXZlbnQ6IDVjZDEgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDogRlJPTlRFTkRfU1RBVEUgLT4gSW5pdGlh
bGlzaW5nDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNk
NSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5k
OiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzEyKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzEyKQ0KWEVOfEV2ZW50Q2hhbm5lbFNl
bmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2
ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBJbml0V2FpdA0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU5WQkR8UGRvUmVhZElucXVpcnlEYXRhOlRhcmdldFsxXSA6IEZhaWxl
ZCB0byBnZXQgUGFnZTgwIGRhdGENClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAw
MDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJE
fFBkb1JlYWRJbnF1aXJ5RGF0YTpUYXJnZXRbMV0gOiBGYWlsZWQgdG8gZ2V0IFBhZ2U4MyBk
YXRhDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxQZG9VcGRhdGVJbnF1aXJ5
RGF0YTpUYXJnZXRbMV0gOiBWREktVVVJRCA9IHswMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0w
MDAwMDAwMDAwMDB9DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOlRhcmdldFsxXSA6IEJhY2tl
bmRJZCAwICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRl
OlRhcmdldFsxXSA6IGluIHN0YXRlIFBSRVBBUkVEDQpYRU5CVVN8Q2FjaGVDcmVhdGU6ID09
PT0+IChkaXNrXzFfZ250dGFiKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTkJVU3xDYWNoZUNyZWF0ZTogPD09PT0NClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFJhbmdlU2V0UG9wOiBmYWlsMSAoYzAwMDAwOWEp
DQpYRU5CVVN8R250dGFiRXhwYW5kOiBhZGRlZCByZWZlcmVuY2VzIFswMDAwMDAyMCAtIDAw
MDAwMWZmXQ0KWEVOQlVTfEV2dGNobk9wZW46IDMNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L2V2ZW50LWNoYW5uZWwpDQpYRU5CVVN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9ldmVudC1j
aGFubmVsKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjYzcgKGRldmljZS92
YmQvNTE3MjgvcmluZy1yZWYpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNj
YSAoZGV2aWNlL3ZiZC81MTcyOC9yaW5nLXJlZikNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3Byb3RvY29sKQ0KWEVOQlVTfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3MjgvcHJvdG9jb2wpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81MTcyOC90
YXJnZXQtaWQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNl
L3ZiZC81MTcyOC90YXJnZXQtaWQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
NWNjNyAoZGV2aWNlL3ZiZC81MTcyOC9mZWF0dXJlLXN1cnByaXNlLXJlbW92ZSkNClhFTkJV
U3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2NhIChkZXZpY2UvdmJkLzUxNzI4L2ZlYXR1
cmUtc3VycHJpc2UtcmVtb3ZlKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVj
YzcgKGRldmljZS92YmQvNTE3MjgvZmVhdHVyZS1vbmxpbmUtcmVzaXplKQ0KWEVOQlVTfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3MjgvZmVhdHVyZS1v
bmxpbmUtcmVzaXplKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjYzcgKGRl
dmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
NWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiA1Y2Q0ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2Vj
dG9ycykNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2QyICgvbG9jYWwvZG9t
YWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgvaW5mbykNClhFTkJVU3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiA1Y2QzICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgv
c2VjdG9yLXNpemUpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkMSAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOVkJEfF9fX1Nl
dFN0YXRlOlRhcmdldFsxXSA6IEZST05URU5EX1NUQVRFIC0+IEluaXRpYWxpc2VkDQpYRU5C
VVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkNiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tl
bmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6
IEJBQ0tFTkRfU1RBVEUgIC0+IENvbm5lY3RlZA0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNo
RXZlbnQ6IDVjYzcgKGRldmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5CVVN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9zdGF0ZSkNClhFTlZCRHxf
X19TZXRTdGF0ZTpUYXJnZXRbMV0gOiBGUk9OVEVORF9TVEFURSAtPiBDb25uZWN0ZWQNClhF
TlZCRHxfX1JlYWREaXNrSW5mbzpUYXJnZXRbMV0gOiA4Mzg4NjA4IHNlY3RvcnMgb2YgNTEy
IGJ5dGVzICg1MTIpDQpYRU5WQkR8X19SZWFkRGlza0luZm86VGFyZ2V0WzFdIDogNDA5NiBN
QiAoMDAwMDAwMDApIA0KWEVOVkJEfEZyb250ZW5kUmVhZERpc2tJbmZvOlRhcmdldFsxXSA6
IEZlYXR1cmVzOiBCQVJSSUVSIEZMVVNIIERJU0NBUkQgDQpYRU5WQkR8RnJvbnRlbmRSZWFk
RGlza0luZm86VGFyZ2V0WzFdIDogRElTQ0FSRCAwLzEwMDANClhFTlZCRHxGcm9udGVuZFJl
YWRGZWF0dXJlczpUYXJnZXRbMV0gOiBGZWF0dXJlczogUEVSU0lTVEVOVCBJTkRJUkVDVCAN
ClhFTlZCRHxGcm9udGVuZFJlYWRGZWF0dXJlczpUYXJnZXRbMV0gOiBJTkRJUkVDVCAxMDAN
ClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ09OTkVD
VEVEDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRlOlRhcmdldFsxXSA6IGluIHN0YXRlIEVO
QUJMRUQNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIEAgKDIpIDw9PT09
PSAoU1VDQ0VFREVEKQ0KWEVOVkJEfFBkb0QzVG9EMDpUYXJnZXRbMV0gQCAoMikgPD09PT09
DQpYRU5WQkR8UGRvQ3JlYXRlOlRhcmdldFsxXSA6IENyZWF0ZWQgKFBWKQ0KWEVOVkJEfFBk
b0NyZWF0ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09DQpYRU5WQkR8RmRvU2NhblRhcmdldHM6
PD09PT0NClhFTkJVU3xGZG9TY2FuOiBhd2FrZQ0KWEVOVkJEfEZkb0xvZ1RhcmdldHM6U2Nh
blRocmVhZCA9PT0+DQpYRU5WQkR8RmRvTG9nVGFyZ2V0czpTY2FuVGhyZWFkIDogVGFyZ2V0
WzFdID0gMHhGRkZGRkE4MDAxQTUyOEMwIChwcmVzZW50KQ0KWEVOVkJEfEZkb0xvZ1Rhcmdl
dHM6U2NhblRocmVhZCA8PT09DQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PT09PT4NClhFTlZC
RHxId0luaXRpYWxpemU6KDB4RkZGRkZBODAwMUE1MTAxOCkgQDcgPC0tLT4gVFJVRQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKQ0KWEVO
QlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKSgwMDAw
MDAwMCkNClhFTkJVU3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDE0OlFVRVJZX1BOUF9ERVZJ
Q0VfU1RBVEUpDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNDpRVUVSWV9QTlBf
REVWSUNFX1NUQVRFKShjMDAwMDBiYikNClhFTlZCRHxGZG9EaXNwYXRjaFBucDoxNDpRVUVS
WV9QTlBfREVWSUNFX1NUQVRFIC0+IGMwMDAwMGJiDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6
PD09PT0NClhFTlZCRHxGZG9TY2FuVGFyZ2V0czo9PT09Pg0KWEVOVkJEfEZkb1NjYW5UYXJn
ZXRzOjw9PT09DQpYRU5WQkR8UGRvSW5xdWlyeTpUYXJnZXRbMV0gOiBJTlFVSVJZIDAwDQpY
RU5CVVN8RmRvRW51bWVyYXRlOiA9PT09Pg0KWEVOVkJEfFBkb0lucXVpcnk6VGFyZ2V0WzFd
IDogSU5RVUlSWSAwMCBFVlBEDQpYRU5WQkR8UGRvSW5xdWlyeTpUYXJnZXRbMV0gOiBJTlFV
SVJZIDgzIEVWUEQNClhFTlZCRHxfX0hhbmRsZVBhZ2U4MzpUYXJnZXRbMV0gOiBJTlFVSVJZ
IFVzaW5nIEZha2UgUGFnZTgzIERhdGENClhFTlZCRHxQZG9JbnF1aXJ5OlRhcmdldFsxXSA6
IElOUVVJUlkgODAgRVZQRA0KWEVOVkJEfF9fSGFuZGxlUGFnZTgwOlRhcmdldFsxXSA6IElO
UVVJUlkgVXNpbmcgRmFrZSBQYWdlODAgRGF0YQ0KWEVOQlVTfEZkb0VudW1lcmF0ZTogPD09
PT0NClhFTkJVU3xGZG9TY2FuOiB3YWl0aW5nLi4uDQpYRU5CVVN8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQ0KWEVOQlVTfFBkb0Rpc3BhdGNo
UG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAwMDApDQpYRU5E
SVNLfFBkb0NyZWF0ZTpGRkZGRkE4MDAxQTVDQUIwDQpYRU5ESVNLfEZkb1F1ZXJ5RGV2aWNl
UmVsYXRpb25zOjEgUERPKHMpDQpYRU5WQkR8UGRvU2V0RGV2aWNlT2JqZWN0OlRhcmdldFsx
XSA6IFNldHRpbmcgRGV2aWNlT2JqZWN0ID0gMHhGRkZGRkE4MDAxQTVDMDYwDQpYRU5WQkR8
RmRvTWFwRGV2aWNlT2JqZWN0VG9QZG86MHhGRkZGRkE4MDAxQTVDMDYwIC0tPiBUYXJnZXQg
MSAoMDAwMTAwKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDk6UVVFUllfQ0FQ
QUJJTElUSUVTKQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDk6UVVFUllfQ0FQ
QUJJTElUSUVTKSgwMDAwMDAwMCkNClhFTlZCRHxQZG9EaXNwYXRjaFBucDpUYXJnZXRbMV0g
OiAxMzpRVUVSWV9JRCAtPiBjMDAwMDBiYg0KWEVOVkJEfFBkb0Rpc3BhdGNoUG5wOlRhcmdl
dFsxXSA6IDE1OlFVRVJZX0JVU19JTkZPUk1BVElPTiAtPiBjMDAwMDBiYg0KWEVOVkJEfFBk
b0Rpc3BhdGNoUG5wOlRhcmdldFsxXSA6IDE5OlVOS05PV04gLT4gYzAwMDAwYmINClhFTlZC
RHxGZG9TY2FuVGFyZ2V0czo9PT09Pg0KWEVOVkJEfEZkb1NjYW5UYXJnZXRzOjw9PT09DQpY
RU5CVVN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05T
KQ0KWEVOQlVTfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFU
SU9OUykoMDAwMDAwMDApDQpYRU5ESVNLfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOjEgUERP
KHMpDQpYRU5WQkR8UGRvRGlzcGF0Y2hQbnA6VGFyZ2V0WzFdIDogMTg6VU5LTk9XTiAtPiBj
MDAwMDBiYg0KWEVOVkJEfFBkb0Rpc3BhdGNoUG5wOlRhcmdldFsxXSA6IDBkOkZJTFRFUl9S
RVNPVVJDRV9SRVFVSVJFTUVOVFMgLT4gYzAwMDAwYmINClhFTlZCRHxQZG9TZXREZXZpY2VQ
bnBTdGF0ZTpUYXJnZXRbMV0gOiBQTlAgUHJlc2VudCB0byBTdGFydGVkDQpYRU5WQkR8UGRv
UmVzZXQ6VGFyZ2V0WzFdID09PT0+IChJcnFsPTIpDQpYRU5WQkR8X19QZG9QYXVzZURhdGFQ
YXRoOlRhcmdldFsxXSA6IFdhaXRpbmcgZm9yIDEgU3VibWl0dGVkIHJlcXVlc3RzDQpYRU5W
QkR8X19QZG9QYXVzZURhdGFQYXRoOlRhcmdldFsxXSA6IDAvMSBTdWJtaXR0ZWQgcmVxdWVz
dHMgbGVmdCAoMSBpdGVycmF0aW9ucykNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFy
Z2V0WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRb
MV0gOiBFTkFCTEVEIC0tLS0+IENMT1NJTkcNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ09OTkVDVEVEDQpYRU5WQkR8X19VcGRhdGVCYWNrZW5k
UGF0aDo8PCAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTlZCRHxf
X1VwZGF0ZUJhY2tlbmRQYXRoOj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81
MTcyOA0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZDcgKC9sb2NhbC9kb21h
aW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zdGF0ZSkNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiAwIFdhaXRlZCBmb3IgMTU2MDAgbXMNClhFTlZCRHxfX1dhaXRTdGF0ZTpU
YXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBDb25uZWN0ZWQNClhFTkJVU3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJkLzUxNzI4L3N0YXRlKQ0KWEVOQlVT
fFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRldmljZS92YmQvNTE3Mjgvc3RhdGUp
DQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDogRlJPTlRFTkRfU1RBVEUgLT4gQ2xv
c2luZw0KWEVOQlVTfEZkb1NjYW46IGF3YWtlDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogNWNkOCAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRl
KQ0KWEVOVkJEfF9fV2FpdFN0YXRlOlRhcmdldFsxXSA6IEJBQ0tFTkRfU1RBVEUgIC0+IENs
b3NpbmcNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2M3IChkZXZpY2UvdmJk
LzUxNzI4L3N0YXRlKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjY2EgKGRl
dmljZS92YmQvNTE3Mjgvc3RhdGUpDQpYRU5WQkR8X19fU2V0U3RhdGU6VGFyZ2V0WzFdIDog
RlJPTlRFTkRfU1RBVEUgLT4gQ2xvc2VkDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PT09PT4N
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2Q5ICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU5WQkR8RmRvU2NhblRhcmdldHM6PD09
PT0NClhFTlZCRHxfX1dhaXRTdGF0ZTpUYXJnZXRbMV0gOiBCQUNLRU5EX1NUQVRFICAtPiBD
bG9zZWQNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogaW4gc3RhdGUg
Q0xPU0lORw0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0ZTpUYXJnZXRbMV0gQCAoMikgPD09
PT09IChTVUNDRUVERUQpDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRlOlRhcmdldFsxXSBA
ICgyKSA9PT09PT4NClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0WzFdIDogQ0xP
U0lORyAtLS0tPiBDTE9TRUQNClhFTkJVU3xFdnRjaG5DbG9zZTogMw0KWEVOQlVTfENhY2hl
RGVzdHJveTogPT09PT4gKGRpc2tfMV9nbnR0YWIpDQpYRU5CVVN8Q2FjaGVEZXN0cm95OiA8
PT09PQ0KWEVOQlVTfEV2dGNoblJlYXA6IDMNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6
VGFyZ2V0WzFdIDogaW4gc3RhdGUgQ0xPU0VEDQpYRU5WQkR8X19Gcm9udGVuZFNldFN0YXRl
OlRhcmdldFsxXSBAICgyKSA8PT09PT0gKFNVQ0NFRURFRCkNClhFTlZCRHxfX0Zyb250ZW5k
U2V0U3RhdGU6VGFyZ2V0WzFdIEAgKDIpID09PT09Pg0KWEVOVkJEfF9fRnJvbnRlbmRTZXRT
dGF0ZTpUYXJnZXRbMV0gOiBDTE9TRUQgLS0tLT4gRU5BQkxFRA0KWEVOfEV2ZW50Q2hhbm5l
bFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAo
YzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVO
fEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxT
ZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMw
MDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNr
ZW5kUGF0aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVj
ZGEgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zdGF0ZSkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5CVVN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkYiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQv
dmJkLzIzLzUxNzI4L2luZm8pDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAw
MDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVu
dENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOQlVTfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDVjZGMg
KC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZiZC8yMy81MTcyOC9zZWN0b3Itc2l6ZSkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2RkICgvbG9jYWwv
ZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3Mjgvc2VjdG9ycykNClhFTnxFdmVudENoYW5u
ZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChj
MDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5W
QkR8RnJvbnRlbmRXcml0ZVVzYWdlOlRhcmdldFsxXSA6IE5PVF9EVU1QIE5PVF9ISUJFUiBO
T1RfUEFHRQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxF
dmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2Vu
ZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAw
MDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6
IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAw
MGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjNyAoZGV2aWNlL3ZiZC81
MTcyOC9zdGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNjYSAoZGV2aWNlL3ZiZC81MTcyOC9z
dGF0ZSkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZl
bnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fX1NldFN0YXRlOlRh
cmdldFsxXSA6IEZST05URU5EX1NUQVRFIC0+IEluaXRpYWxpc2luZw0KWEVOfEV2ZW50Q2hh
bm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU5CVVN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogNWNkZSAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4L3N0YXRlKQ0KWEVOfEV2ZW50Q2hh
bm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTlZCRHxfX1dhaXRT
dGF0ZTpGYWlsMg0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVs
U2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0YXRlOkZhaWwxIChjMDAw
MDAyMikNClhFTlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDEwDQpYRU5WQkR8RnJvbnRlbmRQ
cmVwYXJlOkZhaWw5DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw4DQpYRU5WQkR8RnJv
bnRlbmRQcmVwYXJlOkZhaWw3DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw2DQpYRU5W
QkR8RnJvbnRlbmRQcmVwYXJlOkZhaWw1DQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEg
KGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhF
TlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDQNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWls
MSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0K
WEVOVkJEfEZyb250ZW5kUHJlcGFyZTpGYWlsMw0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZh
aWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQp
DQpYRU5WQkR8RnJvbnRlbmRQcmVwYXJlOkZhaWwyDQpYRU58RXZlbnRDaGFubmVsU2VuZDog
ZmFpbDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAw
ZCkNClhFTlZCRHxGcm9udGVuZFByZXBhcmU6RmFpbDEgKGMwMDAwMDIyKQ0KWEVOfEV2ZW50
Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENoYW5uZWxTZW5kOiBm
YWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBk
KQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fVXBkYXRlQmFja2VuZFBhdGg6PDwgL2xvY2FsL2Rv
bWFpbi8wL2JhY2tlbmQvdmJkLzIzLzUxNzI4DQpYRU5WQkR8X19VcGRhdGVCYWNrZW5kUGF0
aDo+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92YmQvMjMvNTE3MjgNClhFTnxFdmVudENo
YW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTkJVU3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiA1Y2RmICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92YmQvMjMvNTE3Mjgvc3RhdGUpDQpYRU58RXZlbnRDaGFubmVsU2VuZDogZmFp
bDEgKGMwMDAwMDBkKQ0KWEVOfEV2ZW50Q2hhbm5lbFNlbmQ6IGZhaWwxIChjMDAwMDAwZCkN
ClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpYRU5WQkR8X19XYWl0
U3RhdGU6RmFpbDINClhFTnxFdmVudENoYW5uZWxTZW5kOiBmYWlsMSAoYzAwMDAwMGQpDQpY
RU58RXZlbnRDaGFubmVsU2VuZDogZmFpbDEgKGMwMDAwMDBkKQ0KWEVOVkJEfF9fV2FpdFN0
YXRlOkZhaWwxIChjMDAwMDAyMikNClhFTlZCRHxfX0Zyb250ZW5kU2V0U3RhdGU6VGFyZ2V0
WzFdIDogaW4gc3RhdGUgU1RBVEVfSU5WQUxJRA0KWEVOVkJEfF9fRnJvbnRlbmRTZXRTdGF0
ZTpUYXJnZXRbMV0gQCAoMikgPD09PT09IChGQUlMRUQpDQpYRU5WQkR8UGRvUmVzZXQ6QVNT
RVJUSU9OIEZBSUxFRDogKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApDQpBc3NlcnRpb24g
ZjpccXViZXMtYnVpbGRlclxxdWJlcy1zcmNceGVuLXB2XHhlbnZiZFxzcmNceGVudmJkXHBk
by5jKDIyOTcpOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkNCnhlbnZiZCFQZG9SZXNl
dCsweDFkZToNCmZmZmZmODgwYDAxMTUyMWJlIGNkMmMgICAgICAgICAgICBpbnQgICAgIDJD
aA0K
--------------060701020102080500000309
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060701020102080500000309--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 09:17:47 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 09:17:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWLiz-00021y-Qw; Fri, 13 Mar 2015 09:17:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YWLiy-00021t-Ly
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 09:17:44 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	39/0A-24920-73BA2055; Fri, 13 Mar 2015 09:17:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1426238262!12544910!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5885 invoked from network); 13 Mar 2015 09:17:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 09:17:42 -0000
X-IronPort-AV: E=Sophos;i="5.11,393,1422921600"; d="scan'208";a="32840826"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1w
Date: Fri, 13 Mar 2015 09:17:40 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
In-Reply-To: <5501F14F.7090105@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTIgTWFyY2ggMjAxNSAyMDowNQ0KPiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE1hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraQ0KPiBT
dWJqZWN0OiBSZTogW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdp
bmRvd3MgUFYgRHJpdmVycw0KPiANCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0t
LQ0KPiBIYXNoOiBTSEExDQo+IA0KPiBPbiAxMi4wMy4yMDE1IDE4OjA5LCBQYXVsIER1cnJhbnQg
d3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIEZyb206DQo+ID4+IHdpbi1w
di1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFttYWlsdG86d2luLXB2LWRldmVs
LQ0KPiA+PiBib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnXSBPbiBCZWhhbGYgT2YgUmFmYWwg
V29qZHlsYSBTZW50OiAxMg0KPiA+PiBNYXJjaCAyMDE1IDE3OjA2IFRvOiBQYXVsIER1cnJhbnQ7
DQo+ID4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBDYzogTWFyZWsgTWFyY3p5
a293c2tpLUfDs3JlY2tpDQo+ID4+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5n
IGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cw0KPiA+PiBQViBEcml2ZXJzDQo+ID4+DQo+ID4g
T24gMjAxNS0wMy0xMiAxNzo0NSwgUGF1bCBEdXJyYW50IHdyb3RlOg0KPiA+Pj4+PiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLSBGcm9tOiBSYWZhxYIgV29qZHnFgmENCj4gPj4+Pj4gW21haWx0
bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dIFNlbnQ6IDEyIE1hcmNoIDIwMTUNCj4gPj4+
Pj4gMTY6MTcgVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+ID4+Pj4+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFu
IHRvIHVzZSB0aGUNCj4gPj4+Pj4gV2luZG93cyBQViBEcml2ZXJzDQo+ID4+Pj4+DQo+ID4+Pj4g
T24gMjAxNS0wMy0xMSAxODo0NiwgUGF1bCBEdXJyYW50IHdyb3RlOg0KPiA+Pj4+Pj4+PiAtLS0t
LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLSBGcm9tOg0KPiA+Pj4+Pj4+PiB3aW4tcHYtZGV2ZWwtYm91
bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiA+Pj4+Pj4+PiBbbWFpbHRvOndpbi1wdi1kZXZl
bC0gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10NCj4gPj4+Pj4+Pj4gT24gQmVoYWxmIE9m
IFJhZmFsIFdvamR5bGEgU2VudDogMTAgTWFyY2ggMjAxNSAyMDoxNg0KPiA+Pj4+Pj4+PiBUbzog
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOg0KPiA+Pj4+Pj4+
PiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cw0KPiA+
Pj4+Pj4+PiBQViBEcml2ZXJzDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSGksDQo+ID4+Pj4+Pj4N
Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBIaSwNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEknbSB1bmFi
bGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZSBJDQo+ID4+Pj4+Pj4ganVz
dCBzdWJzY3JpYmVkIHRvIHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3Mgd29ydGgNCj4gPj4+
Pj4+PiBjaGltaW5nIGluIChsYXN0IG1lc3NhZ2UgaXMgaGVyZToNCj4gPj4+Pj4+PiBodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC93aW4tcHYtZGV2ZWwvMjAxNS0NCj4g
MDEvbXNnMA0KPiA+DQo+ID4+Pj4+Pj4NCj4gMDA2DQo+ID4+Pj4NCj4gPj4+Pj4+Pg0KPiA+IDAu
DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+IGh0bWwpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+
Pg0KPiA+Pj4+Pj4+PiBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlw
dGlvbg0KPiA+Pj4+Pj4+PiBtZXNzYWdlIDotKQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gRmlyc3Qs
IHNvbWUgYmFja2dyb3VuZCBhYm91dCBtZS4gSSdtIGN1cnJlbnRseSB0aGUgbWFpbg0KPiA+Pj4+
Pj4+IGFuZCBwcmV0dHkgbXVjaCB0aGUgb25seSBkZXZlbG9wZXIvbWFpbnRhaW5lciBvZiBndWVz
dA0KPiA+Pj4+Pj4+IHRvb2xzIGZvciBXaW5kb3dzIGZvciBRdWJlcyBPUw0KPiA+Pj4+Pj4+ICho
dHRwczovL3dpa2kucXViZXMtb3Mub3JnLykuIFNvbWUgb2YgeW91IG1heSBoYXZlDQo+ID4+Pj4+
Pj4gaGVhcmQgb2YgUXViZXMgLS0gaW4gc2hvcnQsIGl0J3MgYW4gYXR0ZW1wdCBhdCBjcmVhdGlu
Zw0KPiA+Pj4+Pj4+IGEgc2VjdXJlIE9TIGJhc2VkIG9uIGxpZ2h0d2VpZ2h0IEFwcFZNcywgY3Vy
cmVudGx5DQo+ID4+Pj4+Pj4gdXNpbmcgTGludXgvWGVuIGFzIGJhc2UuIEl0IHN1cHBvcnRzIFdp
bmRvd3MgSFZNcyBhbmQNCj4gPj4+Pj4+PiBvdXIgZ3Vlc3QgdG9vbHMgcHJvdmlkZSBpbnRlZ3Jh
dGlvbiB3aXRoIGRvbTAvb3RoZXINCj4gPj4+Pj4+PiBkb21VcyAoc2VydmljZXMgbGlrZSBkYXRh
IHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLA0KPiA+Pj4+Pj4+IHNlYW1sZXNzIEdVSSBleHBl
cmllbmNlIGV0YykuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBDb29sLg0KPiA+
Pj4+Pj4+DQo+ID4+Pj4+Pj4gV2UncmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmluYWxpemluZyB0aGUg
bmV4dCBtYWpvcg0KPiA+Pj4+Pj4+IHJlbGVhc2UgKHIzKSBvZiBRdWJlcywgaXQgd2lsbCB1c2Ug
WGVuIDQuNCBpbnN0ZWFkIG9mDQo+ID4+Pj4+Pj4gcjIncyBYZW4gNC4xLiBBcyBmb3Igb3VyIFdp
bmRvd3MgdG9vbHMsIHRoZXkgYXJlDQo+ID4+Pj4+Pj4gKGN1cnJlbnRseSkgdXNpbmcgUFYgZHJp
dmVycyBiYXNlZCBvbiBKYW1lcyBIYXJwZXIncw0KPiA+Pj4+Pj4+IGNvZCBlLg0KPiA+Pj4+Pj4+
DQo+ID4+Pj4+Pj4gT3VyIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hh
biAoaW4NCj4gPj4+Pj4+PiBmYWN0LCB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFj
Y2VwdGVkIGludG8NCj4gPj4+Pj4+PiBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4gSW4g
UXViZXMgcjIgd2UgaGF2ZSBhDQo+ID4+Pj4+Pj4gV2luZG93cyBsaWJ2Y2hhbiBpbXBsZW1lbnRh
dGlvbiwgYnV0IGFzIHN0YXRlZCBhYm92ZSwNCj4gPj4+Pj4+PiBpdCB1c2VzIG9sZCBQViBkcml2
ZXJzIGludGVyZmFjZXMuIFlvdSBjYW4gZmluZCBpdA0KPiA+Pj4+Pj4+IGhlcmU6IGh0dHBzOi8v
Z2l0aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuDQo+ID4+Pj4+Pj4NCj4gPj4+
Pj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlDQo+
ID4+Pj4+Pj4gdmNoYW4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuIEl0IGRpZG4ndCBt
YXR0ZXINCj4gPj4+Pj4+PiBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbiBjb21tdW5pY2F0
aW9uIGlzIHBhc3NpbmcNCj4gPj4+Pj4+PiB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbiBRdWJlcyBy
MyBob3dldmVyLCB3ZSBuZWVkIHRoYXQNCj4gPj4+Pj4+PiB3b3JraW5nIGJlY2F1c2Ugb2YgcmVk
ZXNpZ25lZCBpbnRlci1WTSBjb21tdW5pY2F0aW9uDQo+ID4+Pj4+Pj4gcHJvdG9jb2wgdGhhdCBh
bGxvd3MgZGlyZWN0IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXINCj4gPj4+Pj4+PiBkb20wIGFy
Yml0cmF0aW9uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVW5mb3J0dW5hdGVseSBIYXJwZXIncyBk
cml2ZXJzIGRvbid0IHNlZW0gdG8gaW1wbGVtZW50DQo+ID4+Pj4+Pj4gdGhlIG5lZWRlZCBrZXJu
ZWwgaW50ZXJmYWNlcyBmb3IgdGhhdCBhcyB3ZWxsLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEkg
YXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQNCj4gPj4+
Pj4+Pj4gY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBzYWZlcj8NCj4gPj4+Pj4+Pg0KPiA+Pj4+
Pj4+IEkgZGlkbid0IG5lZWQgdG8gbG9vayBpbnRvIFBWIGRyaXZlcnMgc291cmNlcyBiZWZvcmUs
DQo+ID4+Pj4+Pj4gYnV0IGl0IHNlZW1zIEkgd2lsbCBuZWVkIHRvIGRvIHRoYXQgbm93IDopIEkg
Zm91bmQgdGhlDQo+ID4+Pj4+Pj4gbmV3IFBWIGRyaXZlcnMgYW5kIHRoaXMgbWFpbGluZyBsaXN0
LCBmb3VuZCB0aGUgdGhyZWFkDQo+ID4+Pj4+Pj4gYWJvdXQgdmNoYW4gaW1wbGVtZW50YXRpb24u
Li4gYW5kIHRoYXQncyBwcmV0dHkgbXVjaCBpdA0KPiA+Pj4+Pj4+IGZvciBub3cuDQo+ID4+Pj4+
Pj4NCj4gPj4+Pj4+PiBBcyBJIHNhaWQsIEkgZG9uJ3QgaGF2ZSBtdWNoIGV4cGVyaWVuY2UgaW4g
WGVuIEFQSXMNCj4gPj4+Pj4+PiAoZGlkbid0IG5lZWQgdG8gdGlua2VyIHdpdGggdGhlbSBkaXJl
Y3RseSBiZWZvcmUpLiBJDQo+ID4+Pj4+Pj4gZG8sIGhvd2V2ZXIsIGhhdmUgZXh0ZW5zaXZlIFdp
bkFQSSBrbm93bGVkZ2UgYW5kDQo+ID4+Pj4+Pj4gbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3Mg
ZHJpdmVyIGRldmVsb3BtZW50DQo+ID4+Pj4+Pj4gZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vl
c3QgdG9vbHMgaXMgYSBjdXN0b20gZGlzcGxheQ0KPiA+Pj4+Pj4+IGRyaXZlciB0aGF0IGFsbG93
cyBuby1jb3B5IHZpZGVvIG1lbW9yeSBzaGFyaW5nIHdpdGgNCj4gPj4+Pj4+PiBkb20wKS4gSSBt
YW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0DQo+ID4+Pj4+Pj4g
dGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBT
bywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgYQ0KPiA+
Pj4+Pj4+IFdpbmRvd3MgdmNoYW4gaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIHRoZSBuZXcgUFYN
Cj4gPj4+Pj4+PiBkcml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcgdGhyb3VnaCB0aGUgZHJpdmVyIHNv
dXJjZXMgZm9yDQo+ID4+Pj4+Pj4gYSBiaXQgc3RpbGwgdG8gZmFtaWxpYXJpemUgbXlzZWxmIHdp
dGggdGhlIGVudmlyb25tZW50Lg0KPiA+Pj4+Pj4+IElmIGFueW9uZSBtYW5hZ2VkIHRvIGdldCBz
b21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMNCj4gPj4+Pj4+PiBpZGVhcywgbGV0IG1lIGtu
b3cuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJZiB5b3Ugd2FudCB0byBsb29r
IGF0IGFkZGluZyB0aGUgbmVjZXNzYXJ5IGNvZGUgdG8NCj4gPj4+Pj4+Pj4gdGhlIFhFTkJVU19H
TlRUQUIgaW50ZXJmYWNlIHRvIGRvIGdyYW50IG1hcC9jb3B5IHRoZW4NCj4gPj4+Pj4+Pj4gSSBk
b24ndCBpbWFnaW5lIGl0IHdpbGwgYmUgdG9vIGhhcmQuIEFkZGluZyBzdXBwb3J0DQo+ID4+Pj4+
Pj4+IGZvciBjb3B5IHdvdWxkIGJlIGVhc2llc3QgYnV0IGl0IHdvdWxkIGFsc28gYmUNCj4gPj4+
Pj4+Pj4gcG9zc2libGUgdG8gZ3JhbnQgbWFwIHBhZ2VzIGludG8gdGhlIHBsYXRmb3JtIFBDSQ0K
PiA+Pj4+Pj4+PiBkZXZpY2UncyBCQVIgKHdoaWNoIGlzIHdoZXJlIHRoZSBzaGFyZWQgaW5mbyBw
YWdlIGFuZA0KPiA+Pj4+Pj4+PiB0aGUgZ3JhbnQgdGFibGUgaXRzZWxmIGxpdmUpLg0KPiA+Pj4+
Pj4+DQo+ID4+Pj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9u
cyBvciBuZWVkDQo+ID4+Pj4+Pj4+IHNvbWUgaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5n
IGluIHlvdXINCj4gPj4+Pj4+Pj4gZW52aXJvbm1lbnQuDQo+ID4+Pj4+Pj4NCj4gPj4+PiBJJ3Zl
IHRlc3RlZCB0aGUgZHJpdmVycyBvbiBhIFdpbjcgcHJvIHg2NCBIVk0gb24gUXViZXMgcjIgKHIz
DQo+ID4+Pj4gaXMgc3RpbGwgYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJv
dGggaW5zdGFsbA0KPiA+Pj4+IGZpbmUuIFhlbnZiZCBpbnN0YWxscyBPSyBidXQgdGhlIE9TIEJT
T0RzIG9uIHJlYm9vdCB3aXRoIGNvZGUNCj4gPj4+PiA3QiAoaW5hY2Nlc3NpYmxlIGJvb3QgZGV2
aWNlKS4gSSdsbCB0cnkgdG8gcGlucG9pbnQgdGhlIGV4YWN0DQo+ID4+Pj4gZmFpbHVyZSBzcG90
IG9uY2UgSSBzZXR1cCB0aGUgcHZkcml2ZXJzIHNvdXJjZXMgaW5zaWRlIG15DQo+ID4+Pj4gZGV2
ZWxvcG1lbnQgVk0uDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiAweDdCIGNhbiBvY2N1ciBpbiBt
YW55IGNpcmN1bXN0YW5jZXMuIFRoZSBkcml2ZXJzIGRvIGxvZw0KPiA+Pj4+PiBxdWl0ZSBhIGJp
dCBvZiBpbmZvLCBwYXJ0aWN1bGFybHkgaW4gY2hlY2tlZCBidWlsZHMsIHNvDQo+ID4+Pj4+IHRo
ZXJlJ2xsIHByb2JhYmx5IGJlIHNvbWV0aGluZyB0aGVyZSB0byBpbmRpY2F0ZSB0aGUgZXhhY3QN
Cj4gPj4+Pj4gbmF0dXJlIG9mIHRoZSBmYWlsdXJlLiBUaGUgbWFpbiBpbmZvcm1hdGlvbmFsIGxv
Z2dpbmcNCj4gPj4+Pj4gKHdoaWNoIGlzIHRoZSBzYW1lIGZvciBmcmVlIG9yIGNoZWNrZWQgYnVp
bGRzKSBpcyB3cml0dGVuDQo+ID4+Pj4+IHRvIHRoZSBxZW11IGxvZ2dpbmcgcG9ydCAoMHgxMikg
YW5kIGRlYnVnIGxvZ2dpbmcgKGNoZWNrZWQNCj4gPj4+Pj4gYnVpbGQgb25seSkgZ29lcyB0byB0
aGUgWGVuIHBvcnQgKDB4RTkpLiBJZiB5b3Ugd2F0Y2gNCj4gPj4+Pj4gd2hlcmV2ZXIgeW91IGhh
dmUgdGhvc2UgcmVkaXJlY3RlZCB0aGVuIHlvdSBtYXkgYmUgYWJsZSB0bw0KPiA+Pj4+PiBzcG90
IHRoZSBwcm9ibGVtLiBJZiB5b3UgY2FuJ3QgdGhlbiBwb3N0IHRoZW0gdG8gdGhlIGxpc3QNCj4g
Pj4+Pj4gYW5kIEknbGwgdGFrZSBhIGxvb2suDQo+ID4+Pj4NCj4gPj4+PiBEbyB0aGUgZHJpdmVy
cyBoYXZlIHNwZWNpZmljIHJlcXVpcmVtZW50cyBmb3IgYmFja2VuZA0KPiA+Pj4+IChYZW4vUWVt
dSB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2luZyBRZW11IGluIGRvbTAsIG9ubHkNCj4g
Pj4+PiBpbiBtaW5pbWFsIHN0dWJkb21zIGZvciBIVk1zLCBzbyB0aGF0IG1heSBiZSBhIHByb2Js
ZW0uDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVt
LiBEbyB5b3UgaGF2ZSBQViBiYWNrZW5kcyBmb3INCj4gPj4+Pj4gZGlzayBhbmQgbmV0IHNldCB1
cCB0aG91Z2g/IFRoZSBmYWN0IHRoYXQgeW91IGdvdCBhIDB4N0INCj4gPj4+Pj4gYWZ0ZXIgaW5z
dGFsbGluZyB4ZW52YmQgbWF5IHNpbXBseSBtZWFuIHRoYXQgeW91ciB0b29sc3RhY2sNCj4gPj4+
Pj4gaGFzIGp1c3Qgbm90IHNldCB1cCBhIFBWIGJhY2tlbmQuDQo+ID4gV2UgZG8gaGF2ZSBiYWNr
ZW5kcyBzZXQgdXAgKHhlbi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNoZWNrIGluDQo+ID4gZG9t
MCB3aGV0aGVyIGl0IGNyYXNoZXMgYWZ0ZXIgdGhlIGRldmljZSBnZXRzIGF0dGFjaGVkIG9yIGJl
Zm9yZS4NCj4gPg0KPiA+DQo+ID4+IE9rLiBJIG11c3QgYWRtaXQgdGhhdCBJIHRlbmQgdG8gdXNl
IHFkaXNrIGFzIGEgYmFja2VuZCBpbiBtb3N0IG9mDQo+ID4+IG15IHRlc3RpbmcsIGJ1dCBibGti
YWNrIHNob3VsZCBiZSBmaW5lLiBJJ2xsIHNhbml0eSBjaGVjayBpdA0KPiA+PiBteXNlbGYgd2hl
biBJIGdldCB0aW1lIHRob3VnaC4NCj4gPg0KPiBTb21ldGltZXMgdGhlIFZNIEJTT0RzIHdpdGgg
MHg3RS4gSSBtYW5hZ2VkIHRvIGNvbm5lY3QgV2luRGJnIHRvIGl0DQo+IGFuZCBncmFiIHNvbWUg
bG9ncyAoaW4gdGhlIGF0dGFjaG1lbnQpLiBBdCBhIGdsYW5jZSBpdCBzZWVtcyBsaWtlIGENCj4g
bG90IG9mIGV2ZW50IGNoYW5uZWwgZmFpbHVyZXMuLi4NCj4gDQo+IFhFTlZCRHxQZG9SZXNldDpB
U1NFUlRJT04gRkFJTEVEOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkNCj4gQXNzZXJ0aW9u
DQo+IGY6XHF1YmVzLWJ1aWxkZXJccXViZXMtc3JjXHhlbi1wdlx4ZW52YmRcc3JjXHhlbnZiZFxw
ZG8uYygyMjk3KToNCj4gKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApDQo+IA0KDQpZZXMsIHRo
YXQgY2VydGFpbmx5IHNvdW5kcyBsaWtlIGl0IGNvdWxkIGJlIHRoZSBjYXVzZS4gV2hhdCB2ZXJz
aW9uIG9mIFhlbiBhcmUgeW91IHJ1bm5pbmcgb24/IFRoZSBsYXRlc3QgWEVOQlVTIHN1cHBvcnRz
IEZJRk8gZXZlbnQgY2hhbm5lbHMgYW5kIHBlci1jcHUgdXBjYWxscyAod2hpY2ggaXMgcGF0Y2gg
dGhhdCB3ZW50IGludG8gWGVuIHBvc3QtNC41KSBidXQgc2hvdWxkIGZhbGwgYmFjayB0byAyLWxl
dmVsIGFuZCBzdGFuZGFyZCBjYWxsYmFjayB2aWEgaWYgdGhvc2UgZmVhdHVyZXMgYXJlIG5vdCBp
biB0aGUgaHlwZXJ2aXNvci4gVGhlcmUgd2FzIGEgYnVnIGluIDItbGV2ZWwgZXZlbnQgaGFuZGxp
bmcgaW4gWEVOQlVTIHdoaWNoIEkgZml4ZWQgd2l0aDoNCg0KY29tbWl0IGYzMjFlMjA0YTA4MWY5
YzRkY2M3MzJlNzEyODNhNDAxNzUxYTI0MWINCkF1dGhvcjogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4NCkRhdGU6ICAgRnJpIEZlYiAyNyAxMzo0ODo0NiAyMDE1ICswMDAw
DQoNCiAgICBGaXggZXZlbnQgY2hhbm5lbCB1bm1hc2tpbmcgZm9yIHR3by1sZXZlbCBBQkkNCg0K
ICAgIFRoZSB0d28tbGV2ZWwgQUJJIHJlcXVpcmVzIHRoYXQgYW4gZXZlbnQgaXMgbWFza2VkIGZv
ciB0aGUgdW5tYXNrDQogICAgaHlwZXJjYWxsIHRvIHJhaXNlIHRoZSBldmVudCwgc28gdGhlIHRl
c3QtYW5kLWNsZWFyIG9wZXJhdGlvbiBpbiB0aGUNCiAgICBndWVzdCBiYXNpY2FsbHkgbWVhbnMg
dGhhdCBwZW5kaW5nIGV2ZW50cyBnZXQgc3R1Y2suIFRoZSBzaW1wbGUgZml4DQogICAgaXMgdG8g
cmUtbWFzayBwZW5kaW5nIGV2ZW50cyBiZWZvcmUgbWFraW5nIHRoZSBoeXBlcmNhbGwuIFRoaXMg
aXMNCiAgICB1bm5lY2Vzc2FyeSB3aGVuIHRoZSBGSUZPIEFCSSBpcyB1c2VkLCBidXQgaXQncyBz
YWZlLiBIZW5jZSB0aGlzIHBhdGNoDQogICAgdW5jb25kaXRpb25hbGx5IHJlLW1hc2tzIHBlbmRp
bmcgZXZlbnRzLCByZWdhcmRsZXNzIG9mIEFCSSwgYmVmb3JlDQogICAgbWFraW5nIHRoZSB1bm1h
c2sgaHlwZXJjYWxsLg0KDQogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4NCg0KSWYgeW91IGFyZSBvbiBhIFhlbiB0aGF0J3Mgb2xkIGVub3Vn
aCBub3QgdG8gaGF2ZSB0aGUgRklGTyBBQkkgeW91J2xsIGRlZmluaXRlbHkgbmVlZCB0aGF0IGZp
eC4NCg0KICBQYXVsDQoNCj4gDQo+ID4gQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNvbnZlcnNh
dGlvbiwgaGUncyBvbmUgb2Ygb3VyIGNvcmUNCj4gPiBhcmNoaXRlY3RzIGFuZCBrbm93cyBtb3Jl
IGFib3V0IGJhY2tlbmQgc3R1ZmYgdGhhbiBJIGRvIDopDQo+ID4NCj4gPg0KPiA+PiBDb29sLg0K
PiA+DQo+ID4+IFBhdWwNCj4gPg0KPiA+Pj4+DQo+ID4+Pj4+IFBhdWwNCj4gDQo+IC0gLS0NCj4g
UmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAt
LS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiBWZXJzaW9uOiBHbnVQRyB2MQ0KPiANCj4g
aVFFY0JBRUJBZ0FHQlFKVkFmRkdBQW9KRUlXaTlyQjJHclc3K2NzSC8yQ3BQNXlUOVJrc3FLbUQ2
OENSdQ0KPiBHRGoNCj4gbldndW1TdC9vOU5wdUZGalhlWTQ0NllQRE83L1NXNVJjbXB1WjJyeWJO
MldDTU1GQitpM21xK1hRRg0KPiBHaGtPV0sNCj4geHgrc1ZoYzdtNG4wZjhyT25kV1o5bDNkNHBo
ZnVtWjJ5WEljNUxaZmJkQmRMWFJpWlNsTURjekgrL0pDRzZwMQ0KPiA5dHNpcTA4RFErNW16eFlU
SjRYMUdGUTBWc0JyQ3JNb0xYVUlnRVJGNWlWcFpuL3Z0QW5hbHNrZDVodFduVG4NCj4gVw0KPiBn
SzZ4NjlNcVBObUx5NVA5Q1hON0tpWkZISkU2VFZGWTRGajBPSkwxUVkyM0FmdEwyUEZvYW9ySHB1
eWVsaUd4DQo+IEQwRWVObWFWcGVBNFErK1MybmVhdWlxNVpJclE0R1pnKzNUUHFEZlZKVEsrU25s
ekRqakxjN2piaTF0dFE2WT0NCj4gPWJkRWgNCj4gLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0t
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYt
ZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 09:17:47 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 09:17:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWLiz-00021y-Qw; Fri, 13 Mar 2015 09:17:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YWLiy-00021t-Ly
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 09:17:44 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	39/0A-24920-73BA2055; Fri, 13 Mar 2015 09:17:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1426238262!12544910!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5885 invoked from network); 13 Mar 2015 09:17:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 09:17:42 -0000
X-IronPort-AV: E=Sophos;i="5.11,393,1422921600"; d="scan'208";a="32840826"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1w
Date: Fri, 13 Mar 2015 09:17:40 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
In-Reply-To: <5501F14F.7090105@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwtYm91bmNl
c0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBbbWFpbHRvOndpbi1wdi1kZXZlbC0NCj4gYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmIE9mIFJhZmFsIFdvamR5bGENCj4gU2VudDog
MTIgTWFyY2ggMjAxNSAyMDowNQ0KPiBUbzogUGF1bCBEdXJyYW50OyB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE1hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraQ0KPiBT
dWJqZWN0OiBSZTogW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdp
bmRvd3MgUFYgRHJpdmVycw0KPiANCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0t
LQ0KPiBIYXNoOiBTSEExDQo+IA0KPiBPbiAxMi4wMy4yMDE1IDE4OjA5LCBQYXVsIER1cnJhbnQg
d3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIEZyb206DQo+ID4+IHdpbi1w
di1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFttYWlsdG86d2luLXB2LWRldmVs
LQ0KPiA+PiBib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnXSBPbiBCZWhhbGYgT2YgUmFmYWwg
V29qZHlsYSBTZW50OiAxMg0KPiA+PiBNYXJjaCAyMDE1IDE3OjA2IFRvOiBQYXVsIER1cnJhbnQ7
DQo+ID4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBDYzogTWFyZWsgTWFyY3p5
a293c2tpLUfDs3JlY2tpDQo+ID4+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5n
IGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cw0KPiA+PiBQViBEcml2ZXJzDQo+ID4+DQo+ID4g
T24gMjAxNS0wMy0xMiAxNzo0NSwgUGF1bCBEdXJyYW50IHdyb3RlOg0KPiA+Pj4+PiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLSBGcm9tOiBSYWZhxYIgV29qZHnFgmENCj4gPj4+Pj4gW21haWx0
bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dIFNlbnQ6IDEyIE1hcmNoIDIwMTUNCj4gPj4+
Pj4gMTY6MTcgVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+ID4+Pj4+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFu
IHRvIHVzZSB0aGUNCj4gPj4+Pj4gV2luZG93cyBQViBEcml2ZXJzDQo+ID4+Pj4+DQo+ID4+Pj4g
T24gMjAxNS0wMy0xMSAxODo0NiwgUGF1bCBEdXJyYW50IHdyb3RlOg0KPiA+Pj4+Pj4+PiAtLS0t
LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLSBGcm9tOg0KPiA+Pj4+Pj4+PiB3aW4tcHYtZGV2ZWwtYm91
bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiA+Pj4+Pj4+PiBbbWFpbHRvOndpbi1wdi1kZXZl
bC0gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10NCj4gPj4+Pj4+Pj4gT24gQmVoYWxmIE9m
IFJhZmFsIFdvamR5bGEgU2VudDogMTAgTWFyY2ggMjAxNSAyMDoxNg0KPiA+Pj4+Pj4+PiBUbzog
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOg0KPiA+Pj4+Pj4+
PiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cw0KPiA+
Pj4+Pj4+PiBQViBEcml2ZXJzDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSGksDQo+ID4+Pj4+Pj4N
Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBIaSwNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEknbSB1bmFi
bGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZSBJDQo+ID4+Pj4+Pj4ganVz
dCBzdWJzY3JpYmVkIHRvIHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3Mgd29ydGgNCj4gPj4+
Pj4+PiBjaGltaW5nIGluIChsYXN0IG1lc3NhZ2UgaXMgaGVyZToNCj4gPj4+Pj4+PiBodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC93aW4tcHYtZGV2ZWwvMjAxNS0NCj4g
MDEvbXNnMA0KPiA+DQo+ID4+Pj4+Pj4NCj4gMDA2DQo+ID4+Pj4NCj4gPj4+Pj4+Pg0KPiA+IDAu
DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+IGh0bWwpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+
Pg0KPiA+Pj4+Pj4+PiBZZXMsIEkgdW5kZXJzdGFuZDsgSSBqdXN0IHNhdyB5b3VyIHN1YnNjcmlw
dGlvbg0KPiA+Pj4+Pj4+PiBtZXNzYWdlIDotKQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gRmlyc3Qs
IHNvbWUgYmFja2dyb3VuZCBhYm91dCBtZS4gSSdtIGN1cnJlbnRseSB0aGUgbWFpbg0KPiA+Pj4+
Pj4+IGFuZCBwcmV0dHkgbXVjaCB0aGUgb25seSBkZXZlbG9wZXIvbWFpbnRhaW5lciBvZiBndWVz
dA0KPiA+Pj4+Pj4+IHRvb2xzIGZvciBXaW5kb3dzIGZvciBRdWJlcyBPUw0KPiA+Pj4+Pj4+ICho
dHRwczovL3dpa2kucXViZXMtb3Mub3JnLykuIFNvbWUgb2YgeW91IG1heSBoYXZlDQo+ID4+Pj4+
Pj4gaGVhcmQgb2YgUXViZXMgLS0gaW4gc2hvcnQsIGl0J3MgYW4gYXR0ZW1wdCBhdCBjcmVhdGlu
Zw0KPiA+Pj4+Pj4+IGEgc2VjdXJlIE9TIGJhc2VkIG9uIGxpZ2h0d2VpZ2h0IEFwcFZNcywgY3Vy
cmVudGx5DQo+ID4+Pj4+Pj4gdXNpbmcgTGludXgvWGVuIGFzIGJhc2UuIEl0IHN1cHBvcnRzIFdp
bmRvd3MgSFZNcyBhbmQNCj4gPj4+Pj4+PiBvdXIgZ3Vlc3QgdG9vbHMgcHJvdmlkZSBpbnRlZ3Jh
dGlvbiB3aXRoIGRvbTAvb3RoZXINCj4gPj4+Pj4+PiBkb21VcyAoc2VydmljZXMgbGlrZSBkYXRh
IHRyYW5zZmVyLCByZW1vdGUgZXhlY3V0aW9uLA0KPiA+Pj4+Pj4+IHNlYW1sZXNzIEdVSSBleHBl
cmllbmNlIGV0YykuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBDb29sLg0KPiA+
Pj4+Pj4+DQo+ID4+Pj4+Pj4gV2UncmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmluYWxpemluZyB0aGUg
bmV4dCBtYWpvcg0KPiA+Pj4+Pj4+IHJlbGVhc2UgKHIzKSBvZiBRdWJlcywgaXQgd2lsbCB1c2Ug
WGVuIDQuNCBpbnN0ZWFkIG9mDQo+ID4+Pj4+Pj4gcjIncyBYZW4gNC4xLiBBcyBmb3Igb3VyIFdp
bmRvd3MgdG9vbHMsIHRoZXkgYXJlDQo+ID4+Pj4+Pj4gKGN1cnJlbnRseSkgdXNpbmcgUFYgZHJp
dmVycyBiYXNlZCBvbiBKYW1lcyBIYXJwZXIncw0KPiA+Pj4+Pj4+IGNvZCBlLg0KPiA+Pj4+Pj4+
DQo+ID4+Pj4+Pj4gT3VyIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hh
biAoaW4NCj4gPj4+Pj4+PiBmYWN0LCB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoIGFj
Y2VwdGVkIGludG8NCj4gPj4+Pj4+PiBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4gSW4g
UXViZXMgcjIgd2UgaGF2ZSBhDQo+ID4+Pj4+Pj4gV2luZG93cyBsaWJ2Y2hhbiBpbXBsZW1lbnRh
dGlvbiwgYnV0IGFzIHN0YXRlZCBhYm92ZSwNCj4gPj4+Pj4+PiBpdCB1c2VzIG9sZCBQViBkcml2
ZXJzIGludGVyZmFjZXMuIFlvdSBjYW4gZmluZCBpdA0KPiA+Pj4+Pj4+IGhlcmU6IGh0dHBzOi8v
Z2l0aHViLmNvbS9RdWJlc09TL3F1YmVzLWNvcmUtdmNoYW4teGVuDQo+ID4+Pj4+Pj4NCj4gPj4+
Pj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudCBzaWRlDQo+
ID4+Pj4+Pj4gdmNoYW4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuIEl0IGRpZG4ndCBt
YXR0ZXINCj4gPj4+Pj4+PiBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbiBjb21tdW5pY2F0
aW9uIGlzIHBhc3NpbmcNCj4gPj4+Pj4+PiB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbiBRdWJlcyBy
MyBob3dldmVyLCB3ZSBuZWVkIHRoYXQNCj4gPj4+Pj4+PiB3b3JraW5nIGJlY2F1c2Ugb2YgcmVk
ZXNpZ25lZCBpbnRlci1WTSBjb21tdW5pY2F0aW9uDQo+ID4+Pj4+Pj4gcHJvdG9jb2wgdGhhdCBh
bGxvd3MgZGlyZWN0IFZNLVZNIGNvbW11bmljYXRpb24gYWZ0ZXINCj4gPj4+Pj4+PiBkb20wIGFy
Yml0cmF0aW9uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVW5mb3J0dW5hdGVseSBIYXJwZXIncyBk
cml2ZXJzIGRvbid0IHNlZW0gdG8gaW1wbGVtZW50DQo+ID4+Pj4+Pj4gdGhlIG5lZWRlZCBrZXJu
ZWwgaW50ZXJmYWNlcyBmb3IgdGhhdCBhcyB3ZWxsLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEkg
YXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9yIG1heWJlIGp1c3QgZ3JhbnQNCj4gPj4+
Pj4+Pj4gY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBzYWZlcj8NCj4gPj4+Pj4+Pg0KPiA+Pj4+
Pj4+IEkgZGlkbid0IG5lZWQgdG8gbG9vayBpbnRvIFBWIGRyaXZlcnMgc291cmNlcyBiZWZvcmUs
DQo+ID4+Pj4+Pj4gYnV0IGl0IHNlZW1zIEkgd2lsbCBuZWVkIHRvIGRvIHRoYXQgbm93IDopIEkg
Zm91bmQgdGhlDQo+ID4+Pj4+Pj4gbmV3IFBWIGRyaXZlcnMgYW5kIHRoaXMgbWFpbGluZyBsaXN0
LCBmb3VuZCB0aGUgdGhyZWFkDQo+ID4+Pj4+Pj4gYWJvdXQgdmNoYW4gaW1wbGVtZW50YXRpb24u
Li4gYW5kIHRoYXQncyBwcmV0dHkgbXVjaCBpdA0KPiA+Pj4+Pj4+IGZvciBub3cuDQo+ID4+Pj4+
Pj4NCj4gPj4+Pj4+PiBBcyBJIHNhaWQsIEkgZG9uJ3QgaGF2ZSBtdWNoIGV4cGVyaWVuY2UgaW4g
WGVuIEFQSXMNCj4gPj4+Pj4+PiAoZGlkbid0IG5lZWQgdG8gdGlua2VyIHdpdGggdGhlbSBkaXJl
Y3RseSBiZWZvcmUpLiBJDQo+ID4+Pj4+Pj4gZG8sIGhvd2V2ZXIsIGhhdmUgZXh0ZW5zaXZlIFdp
bkFQSSBrbm93bGVkZ2UgYW5kDQo+ID4+Pj4+Pj4gbW9kZXJhdGUgYW1vdW50IG9mIFdpbmRvd3Mg
ZHJpdmVyIGRldmVsb3BtZW50DQo+ID4+Pj4+Pj4gZXhwZXJpZW5jZSAocGFydCBvZiBvdXIgZ3Vl
c3QgdG9vbHMgaXMgYSBjdXN0b20gZGlzcGxheQ0KPiA+Pj4+Pj4+IGRyaXZlciB0aGF0IGFsbG93
cyBuby1jb3B5IHZpZGVvIG1lbW9yeSBzaGFyaW5nIHdpdGgNCj4gPj4+Pj4+PiBkb20wKS4gSSBt
YW5hZ2VkIHRvIGJ1aWxkIHRoZSBuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0DQo+ID4+Pj4+Pj4g
dGhlbSBvbiBvdXIgZGV2IFF1YmVzIGJ1aWxkIHNvb24uDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBT
bywgdG8gc3VtbWFyaXplLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgYQ0KPiA+
Pj4+Pj4+IFdpbmRvd3MgdmNoYW4gaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIHRoZSBuZXcgUFYN
Cj4gPj4+Pj4+PiBkcml2ZXJzLiBJJ2xsIGJlIHJlYWRpbmcgdGhyb3VnaCB0aGUgZHJpdmVyIHNv
dXJjZXMgZm9yDQo+ID4+Pj4+Pj4gYSBiaXQgc3RpbGwgdG8gZmFtaWxpYXJpemUgbXlzZWxmIHdp
dGggdGhlIGVudmlyb25tZW50Lg0KPiA+Pj4+Pj4+IElmIGFueW9uZSBtYW5hZ2VkIHRvIGdldCBz
b21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMNCj4gPj4+Pj4+PiBpZGVhcywgbGV0IG1lIGtu
b3cuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJZiB5b3Ugd2FudCB0byBsb29r
IGF0IGFkZGluZyB0aGUgbmVjZXNzYXJ5IGNvZGUgdG8NCj4gPj4+Pj4+Pj4gdGhlIFhFTkJVU19H
TlRUQUIgaW50ZXJmYWNlIHRvIGRvIGdyYW50IG1hcC9jb3B5IHRoZW4NCj4gPj4+Pj4+Pj4gSSBk
b24ndCBpbWFnaW5lIGl0IHdpbGwgYmUgdG9vIGhhcmQuIEFkZGluZyBzdXBwb3J0DQo+ID4+Pj4+
Pj4+IGZvciBjb3B5IHdvdWxkIGJlIGVhc2llc3QgYnV0IGl0IHdvdWxkIGFsc28gYmUNCj4gPj4+
Pj4+Pj4gcG9zc2libGUgdG8gZ3JhbnQgbWFwIHBhZ2VzIGludG8gdGhlIHBsYXRmb3JtIFBDSQ0K
PiA+Pj4+Pj4+PiBkZXZpY2UncyBCQVIgKHdoaWNoIGlzIHdoZXJlIHRoZSBzaGFyZWQgaW5mbyBw
YWdlIGFuZA0KPiA+Pj4+Pj4+PiB0aGUgZ3JhbnQgdGFibGUgaXRzZWxmIGxpdmUpLg0KPiA+Pj4+
Pj4+DQo+ID4+Pj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55IHNwZWNpZmljIHF1ZXN0aW9u
cyBvciBuZWVkDQo+ID4+Pj4+Pj4+IHNvbWUgaGVscCBnZXR0aW5nIHRoZSBkcml2ZXJzIGdvaW5n
IGluIHlvdXINCj4gPj4+Pj4+Pj4gZW52aXJvbm1lbnQuDQo+ID4+Pj4+Pj4NCj4gPj4+PiBJJ3Zl
IHRlc3RlZCB0aGUgZHJpdmVycyBvbiBhIFdpbjcgcHJvIHg2NCBIVk0gb24gUXViZXMgcjIgKHIz
DQo+ID4+Pj4gaXMgc3RpbGwgYSBiaXQgdW5zdGFibGUpLiBYZW5idXMgYW5kIHhlbmlmYWNlIGJv
dGggaW5zdGFsbA0KPiA+Pj4+IGZpbmUuIFhlbnZiZCBpbnN0YWxscyBPSyBidXQgdGhlIE9TIEJT
T0RzIG9uIHJlYm9vdCB3aXRoIGNvZGUNCj4gPj4+PiA3QiAoaW5hY2Nlc3NpYmxlIGJvb3QgZGV2
aWNlKS4gSSdsbCB0cnkgdG8gcGlucG9pbnQgdGhlIGV4YWN0DQo+ID4+Pj4gZmFpbHVyZSBzcG90
IG9uY2UgSSBzZXR1cCB0aGUgcHZkcml2ZXJzIHNvdXJjZXMgaW5zaWRlIG15DQo+ID4+Pj4gZGV2
ZWxvcG1lbnQgVk0uDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiAweDdCIGNhbiBvY2N1ciBpbiBt
YW55IGNpcmN1bXN0YW5jZXMuIFRoZSBkcml2ZXJzIGRvIGxvZw0KPiA+Pj4+PiBxdWl0ZSBhIGJp
dCBvZiBpbmZvLCBwYXJ0aWN1bGFybHkgaW4gY2hlY2tlZCBidWlsZHMsIHNvDQo+ID4+Pj4+IHRo
ZXJlJ2xsIHByb2JhYmx5IGJlIHNvbWV0aGluZyB0aGVyZSB0byBpbmRpY2F0ZSB0aGUgZXhhY3QN
Cj4gPj4+Pj4gbmF0dXJlIG9mIHRoZSBmYWlsdXJlLiBUaGUgbWFpbiBpbmZvcm1hdGlvbmFsIGxv
Z2dpbmcNCj4gPj4+Pj4gKHdoaWNoIGlzIHRoZSBzYW1lIGZvciBmcmVlIG9yIGNoZWNrZWQgYnVp
bGRzKSBpcyB3cml0dGVuDQo+ID4+Pj4+IHRvIHRoZSBxZW11IGxvZ2dpbmcgcG9ydCAoMHgxMikg
YW5kIGRlYnVnIGxvZ2dpbmcgKGNoZWNrZWQNCj4gPj4+Pj4gYnVpbGQgb25seSkgZ29lcyB0byB0
aGUgWGVuIHBvcnQgKDB4RTkpLiBJZiB5b3Ugd2F0Y2gNCj4gPj4+Pj4gd2hlcmV2ZXIgeW91IGhh
dmUgdGhvc2UgcmVkaXJlY3RlZCB0aGVuIHlvdSBtYXkgYmUgYWJsZSB0bw0KPiA+Pj4+PiBzcG90
IHRoZSBwcm9ibGVtLiBJZiB5b3UgY2FuJ3QgdGhlbiBwb3N0IHRoZW0gdG8gdGhlIGxpc3QNCj4g
Pj4+Pj4gYW5kIEknbGwgdGFrZSBhIGxvb2suDQo+ID4+Pj4NCj4gPj4+PiBEbyB0aGUgZHJpdmVy
cyBoYXZlIHNwZWNpZmljIHJlcXVpcmVtZW50cyBmb3IgYmFja2VuZA0KPiA+Pj4+IChYZW4vUWVt
dSB2ZXJzaW9uKT8gV2UncmUgbm90IHJlYWxseSB1c2luZyBRZW11IGluIGRvbTAsIG9ubHkNCj4g
Pj4+PiBpbiBtaW5pbWFsIHN0dWJkb21zIGZvciBIVk1zLCBzbyB0aGF0IG1heSBiZSBhIHByb2Js
ZW0uDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVt
LiBEbyB5b3UgaGF2ZSBQViBiYWNrZW5kcyBmb3INCj4gPj4+Pj4gZGlzayBhbmQgbmV0IHNldCB1
cCB0aG91Z2g/IFRoZSBmYWN0IHRoYXQgeW91IGdvdCBhIDB4N0INCj4gPj4+Pj4gYWZ0ZXIgaW5z
dGFsbGluZyB4ZW52YmQgbWF5IHNpbXBseSBtZWFuIHRoYXQgeW91ciB0b29sc3RhY2sNCj4gPj4+
Pj4gaGFzIGp1c3Qgbm90IHNldCB1cCBhIFBWIGJhY2tlbmQuDQo+ID4gV2UgZG8gaGF2ZSBiYWNr
ZW5kcyBzZXQgdXAgKHhlbi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNoZWNrIGluDQo+ID4gZG9t
MCB3aGV0aGVyIGl0IGNyYXNoZXMgYWZ0ZXIgdGhlIGRldmljZSBnZXRzIGF0dGFjaGVkIG9yIGJl
Zm9yZS4NCj4gPg0KPiA+DQo+ID4+IE9rLiBJIG11c3QgYWRtaXQgdGhhdCBJIHRlbmQgdG8gdXNl
IHFkaXNrIGFzIGEgYmFja2VuZCBpbiBtb3N0IG9mDQo+ID4+IG15IHRlc3RpbmcsIGJ1dCBibGti
YWNrIHNob3VsZCBiZSBmaW5lLiBJJ2xsIHNhbml0eSBjaGVjayBpdA0KPiA+PiBteXNlbGYgd2hl
biBJIGdldCB0aW1lIHRob3VnaC4NCj4gPg0KPiBTb21ldGltZXMgdGhlIFZNIEJTT0RzIHdpdGgg
MHg3RS4gSSBtYW5hZ2VkIHRvIGNvbm5lY3QgV2luRGJnIHRvIGl0DQo+IGFuZCBncmFiIHNvbWUg
bG9ncyAoaW4gdGhlIGF0dGFjaG1lbnQpLiBBdCBhIGdsYW5jZSBpdCBzZWVtcyBsaWtlIGENCj4g
bG90IG9mIGV2ZW50IGNoYW5uZWwgZmFpbHVyZXMuLi4NCj4gDQo+IFhFTlZCRHxQZG9SZXNldDpB
U1NFUlRJT04gRkFJTEVEOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkNCj4gQXNzZXJ0aW9u
DQo+IGY6XHF1YmVzLWJ1aWxkZXJccXViZXMtc3JjXHhlbi1wdlx4ZW52YmRcc3JjXHhlbnZiZFxw
ZG8uYygyMjk3KToNCj4gKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApDQo+IA0KDQpZZXMsIHRo
YXQgY2VydGFpbmx5IHNvdW5kcyBsaWtlIGl0IGNvdWxkIGJlIHRoZSBjYXVzZS4gV2hhdCB2ZXJz
aW9uIG9mIFhlbiBhcmUgeW91IHJ1bm5pbmcgb24/IFRoZSBsYXRlc3QgWEVOQlVTIHN1cHBvcnRz
IEZJRk8gZXZlbnQgY2hhbm5lbHMgYW5kIHBlci1jcHUgdXBjYWxscyAod2hpY2ggaXMgcGF0Y2gg
dGhhdCB3ZW50IGludG8gWGVuIHBvc3QtNC41KSBidXQgc2hvdWxkIGZhbGwgYmFjayB0byAyLWxl
dmVsIGFuZCBzdGFuZGFyZCBjYWxsYmFjayB2aWEgaWYgdGhvc2UgZmVhdHVyZXMgYXJlIG5vdCBp
biB0aGUgaHlwZXJ2aXNvci4gVGhlcmUgd2FzIGEgYnVnIGluIDItbGV2ZWwgZXZlbnQgaGFuZGxp
bmcgaW4gWEVOQlVTIHdoaWNoIEkgZml4ZWQgd2l0aDoNCg0KY29tbWl0IGYzMjFlMjA0YTA4MWY5
YzRkY2M3MzJlNzEyODNhNDAxNzUxYTI0MWINCkF1dGhvcjogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4NCkRhdGU6ICAgRnJpIEZlYiAyNyAxMzo0ODo0NiAyMDE1ICswMDAw
DQoNCiAgICBGaXggZXZlbnQgY2hhbm5lbCB1bm1hc2tpbmcgZm9yIHR3by1sZXZlbCBBQkkNCg0K
ICAgIFRoZSB0d28tbGV2ZWwgQUJJIHJlcXVpcmVzIHRoYXQgYW4gZXZlbnQgaXMgbWFza2VkIGZv
ciB0aGUgdW5tYXNrDQogICAgaHlwZXJjYWxsIHRvIHJhaXNlIHRoZSBldmVudCwgc28gdGhlIHRl
c3QtYW5kLWNsZWFyIG9wZXJhdGlvbiBpbiB0aGUNCiAgICBndWVzdCBiYXNpY2FsbHkgbWVhbnMg
dGhhdCBwZW5kaW5nIGV2ZW50cyBnZXQgc3R1Y2suIFRoZSBzaW1wbGUgZml4DQogICAgaXMgdG8g
cmUtbWFzayBwZW5kaW5nIGV2ZW50cyBiZWZvcmUgbWFraW5nIHRoZSBoeXBlcmNhbGwuIFRoaXMg
aXMNCiAgICB1bm5lY2Vzc2FyeSB3aGVuIHRoZSBGSUZPIEFCSSBpcyB1c2VkLCBidXQgaXQncyBz
YWZlLiBIZW5jZSB0aGlzIHBhdGNoDQogICAgdW5jb25kaXRpb25hbGx5IHJlLW1hc2tzIHBlbmRp
bmcgZXZlbnRzLCByZWdhcmRsZXNzIG9mIEFCSSwgYmVmb3JlDQogICAgbWFraW5nIHRoZSB1bm1h
c2sgaHlwZXJjYWxsLg0KDQogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4NCg0KSWYgeW91IGFyZSBvbiBhIFhlbiB0aGF0J3Mgb2xkIGVub3Vn
aCBub3QgdG8gaGF2ZSB0aGUgRklGTyBBQkkgeW91J2xsIGRlZmluaXRlbHkgbmVlZCB0aGF0IGZp
eC4NCg0KICBQYXVsDQoNCj4gDQo+ID4gQWxzbyBhZGRpbmcgTWFyZWsgdG8gdGhlIGNvbnZlcnNh
dGlvbiwgaGUncyBvbmUgb2Ygb3VyIGNvcmUNCj4gPiBhcmNoaXRlY3RzIGFuZCBrbm93cyBtb3Jl
IGFib3V0IGJhY2tlbmQgc3R1ZmYgdGhhbiBJIGRvIDopDQo+ID4NCj4gPg0KPiA+PiBDb29sLg0K
PiA+DQo+ID4+IFBhdWwNCj4gPg0KPiA+Pj4+DQo+ID4+Pj4+IFBhdWwNCj4gDQo+IC0gLS0NCj4g
UmFmYcWCIFdvamR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAt
LS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiBWZXJzaW9uOiBHbnVQRyB2MQ0KPiANCj4g
aVFFY0JBRUJBZ0FHQlFKVkFmRkdBQW9KRUlXaTlyQjJHclc3K2NzSC8yQ3BQNXlUOVJrc3FLbUQ2
OENSdQ0KPiBHRGoNCj4gbldndW1TdC9vOU5wdUZGalhlWTQ0NllQRE83L1NXNVJjbXB1WjJyeWJO
MldDTU1GQitpM21xK1hRRg0KPiBHaGtPV0sNCj4geHgrc1ZoYzdtNG4wZjhyT25kV1o5bDNkNHBo
ZnVtWjJ5WEljNUxaZmJkQmRMWFJpWlNsTURjekgrL0pDRzZwMQ0KPiA5dHNpcTA4RFErNW16eFlU
SjRYMUdGUTBWc0JyQ3JNb0xYVUlnRVJGNWlWcFpuL3Z0QW5hbHNrZDVodFduVG4NCj4gVw0KPiBn
SzZ4NjlNcVBObUx5NVA5Q1hON0tpWkZISkU2VFZGWTRGajBPSkwxUVkyM0FmdEwyUEZvYW9ySHB1
eWVsaUd4DQo+IEQwRWVObWFWcGVBNFErK1MybmVhdWlxNVpJclE0R1pnKzNUUHFEZlZKVEsrU25s
ekRqakxjN2piaTF0dFE2WT0NCj4gPWJkRWgNCj4gLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0t
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYt
ZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 12:43:29 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 12:43:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWOw5-00039x-Iw; Fri, 13 Mar 2015 12:43:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YWOw4-00039i-B4; Fri, 13 Mar 2015 12:43:28 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	0B/61-07208-F6BD2055; Fri, 13 Mar 2015 12:43:27 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426250606!11652809!1
X-Originating-IP: [74.125.82.41]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 562 invoked from network); 13 Mar 2015 12:43:26 -0000
Received: from mail-wg0-f41.google.com (HELO mail-wg0-f41.google.com)
	(74.125.82.41)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 12:43:26 -0000
Received: by wggx13 with SMTP id x13so22999008wgg.4;
	Fri, 13 Mar 2015 05:43:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=/jbYMlT0Wx5FR6Enjht5drUz/qoxJEgteoNH5YCdEyU=;
	b=sHMYbwkEH1WJSF9VOMevP8AYgSermN2TcvfGA1qmZC403TmdUN450Y8JB3NTMgqlBw
	ZcZGP93ayGgL7fk9jxXKSHSfn/0PWY2DZ9/pzDtwMkjdj8FowYRzsGEM8kaSfrs2gm6Z
	7SpDmqQN0l5QbatjnTMKJ4RzFPzi0nQw9sOPQWrE7AhucYN6IwCRRpF1BlZ1X5HEZk9o
	E5fcaHzRcEHYrAqHQjZKIxKxtaJujR0C2ASlSYO6Tag30kS+XqSkp9ZkzSEyrXBiCSyG
	CGM5Js8kSrBDWk7tyetft50FRWwk5Z6Ck7Duw45YUKTlX5w2eS0dle2vd6I2q+kKFRFS
	g9zg==
X-Received: by 10.194.220.7 with SMTP id ps7mr98915600wjc.84.1426250605772;
	Fri, 13 Mar 2015 05:43:25 -0700 (PDT)
Received: from [192.168.0.8] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id 17sm2640423wjt.45.2015.03.13.05.43.23
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 13 Mar 2015 05:43:23 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <9F1D4125-2B00-4E8D-B908-FF9A155F3FC2@gmail.com>
Date: Fri, 13 Mar 2015 12:43:19 +0000
To: xen-devel <xen-devel@lists.xenproject.org>, xen-api@lists.xenproject.org,
	Win-pv-devel@lists.xenproject.org, embedded-pv-devel@lists.xenproject.org,
	mirageos-devel@xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] February AB meeting minutes published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5458724924533874470=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============5458724924533874470==
Content-Type: multipart/alternative; boundary="Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD"


--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

See http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes =
<http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes>=

--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">See&nbsp;<a href="http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes" class="">http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes</a></body></html>
--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD--


--===============5458724924533874470==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5458724924533874470==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 12:43:29 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 12:43:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWOw5-00039x-Iw; Fri, 13 Mar 2015 12:43:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YWOw4-00039i-B4; Fri, 13 Mar 2015 12:43:28 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	0B/61-07208-F6BD2055; Fri, 13 Mar 2015 12:43:27 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426250606!11652809!1
X-Originating-IP: [74.125.82.41]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 562 invoked from network); 13 Mar 2015 12:43:26 -0000
Received: from mail-wg0-f41.google.com (HELO mail-wg0-f41.google.com)
	(74.125.82.41)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 12:43:26 -0000
Received: by wggx13 with SMTP id x13so22999008wgg.4;
	Fri, 13 Mar 2015 05:43:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=/jbYMlT0Wx5FR6Enjht5drUz/qoxJEgteoNH5YCdEyU=;
	b=sHMYbwkEH1WJSF9VOMevP8AYgSermN2TcvfGA1qmZC403TmdUN450Y8JB3NTMgqlBw
	ZcZGP93ayGgL7fk9jxXKSHSfn/0PWY2DZ9/pzDtwMkjdj8FowYRzsGEM8kaSfrs2gm6Z
	7SpDmqQN0l5QbatjnTMKJ4RzFPzi0nQw9sOPQWrE7AhucYN6IwCRRpF1BlZ1X5HEZk9o
	E5fcaHzRcEHYrAqHQjZKIxKxtaJujR0C2ASlSYO6Tag30kS+XqSkp9ZkzSEyrXBiCSyG
	CGM5Js8kSrBDWk7tyetft50FRWwk5Z6Ck7Duw45YUKTlX5w2eS0dle2vd6I2q+kKFRFS
	g9zg==
X-Received: by 10.194.220.7 with SMTP id ps7mr98915600wjc.84.1426250605772;
	Fri, 13 Mar 2015 05:43:25 -0700 (PDT)
Received: from [192.168.0.8] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id 17sm2640423wjt.45.2015.03.13.05.43.23
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 13 Mar 2015 05:43:23 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <9F1D4125-2B00-4E8D-B908-FF9A155F3FC2@gmail.com>
Date: Fri, 13 Mar 2015 12:43:19 +0000
To: xen-devel <xen-devel@lists.xenproject.org>, xen-api@lists.xenproject.org,
	Win-pv-devel@lists.xenproject.org, embedded-pv-devel@lists.xenproject.org,
	mirageos-devel@xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] February AB meeting minutes published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5458724924533874470=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============5458724924533874470==
Content-Type: multipart/alternative; boundary="Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD"


--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

See http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes =
<http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes>=

--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">See&nbsp;<a href="http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes" class="">http://wiki.xenproject.org/wiki/AB_Meeting/February_2015_Minutes</a></body></html>
--Apple-Mail=_21B8E93E-0CAA-4E83-94C5-F08A74F4ADBD--


--===============5458724924533874470==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5458724924533874470==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 13:27:50 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 13:27:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWPd0-00038R-08; Fri, 13 Mar 2015 13:27:50 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YWPcy-00038K-Qj
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 13:27:49 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
	20/28-22941-4D5E2055; Fri, 13 Mar 2015 13:27:48 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426253265!11603615!1
X-Originating-IP: [66.111.4.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjUgPT4gNDQ5ODE=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2135 invoked from network); 13 Mar 2015 13:27:47 -0000
Received: from out1-smtp.messagingengine.com (HELO
	out1-smtp.messagingengine.com) (66.111.4.25)
	by server-9.tower-206.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 13 Mar 2015 13:27:47 -0000
Received: from compute6.internal (compute6.nyi.internal [10.202.2.46])
	by mailout.nyi.internal (Postfix) with ESMTP id 71CCE20AAD
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 09:27:43 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute6.internal (MEProxy); Fri, 13 Mar 2015 09:27:45 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=7niulWTMNx6a82/80/7JxA8
	RFwM=; b=AZfR79av6Arm/w8jKiAJ10cdQay0TYC7OJdklGpI9VMOgSH+8VFJwx5
	dK3YIETrcfsdOzJ4i6ZQy+owNCLskAMCf80/Y6s42Lua8dHJnnB7bkoTN+KMaBdX
	+5uxuNknELFUJQQKYwQuwwo7Q7rDRFSjTZczQC3tShYF0tdhn+Bk=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=7niulWTMNx6a82/80/7JxA
	8RFwM=; b=DrdejHqd2NMHafDrjI0UwAwk5bloo3//qboSpAshWHmPJYPlx0l6Ga
	ciTyKO+cZ8Qm/5ZrTQ3AZMIbaKU2nYKmoaUJvGD87N+f2Rf0eK3Sb9nJBgzeBXKd
	GOkgKiP+AOpu5vvh7LO5kUFLzGoWhhparOzR1BP6q/dxlbbr0fPA0=
X-Sasl-enc: gy80FLT8GxNvqvJVRhVKkIID3dzpCrcc6g+kAZXS0Z0T 1426253264
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 11EF36801E1;
	Fri, 13 Mar 2015 09:27:43 -0400 (EDT)
Message-ID: <5502E5CF.4030804@invisiblethingslab.com>
Date: Fri, 13 Mar 2015 14:27:43 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
Content-Length: 14367
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTEzIDEwOjE3LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206Cj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFtt
YWlsdG86d2luLXB2LWRldmVsLSAKPj4gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24g
QmVoYWxmIE9mIFJhZmFsIFdvamR5bGEgU2VudDogMTIKPj4gTWFyY2ggMjAxNSAyMDowNSBUbzog
UGF1bCBEdXJyYW50Owo+PiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgQ2M6IE1h
cmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraSAKPj4gU3ViamVjdDogUmU6IFt3aW4tcHYtZGV2ZWxd
IFBvcnRpbmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzCj4+IFBWIERyaXZlcnMKPj4gCj4g
T24gMTIuMDMuMjAxNSAxODowOSwgUGF1bCBEdXJyYW50IHdyb3RlOgo+Pj4+PiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLSBGcm9tOiAKPj4+Pj4gd2luLXB2LWRldmVsLWJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmcKPj4+Pj4gW21haWx0bzp3aW4tcHYtZGV2ZWwtIGJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmddIE9uCj4+Pj4+IEJlaGFsZiBPZiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEy
IE1hcmNoIDIwMTUgMTc6MDYgVG86IFBhdWwKPj4+Pj4gRHVycmFudDsgd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnIENjOiBNYXJlawo+Pj4+PiBNYXJjenlrb3dza2ktR8OzcmVja2kg
U3ViamVjdDogUmU6IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcKPj4+Pj4gbGlidmNoYW4gdG8gdXNl
IHRoZSBXaW5kb3dzIFBWIERyaXZlcnMKPj4+Pj4gCj4+Pj4gT24gMjAxNS0wMy0xMiAxNzo0NSwg
UGF1bCBEdXJyYW50IHdyb3RlOgo+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLSBG
cm9tOiBSYWZhxYIgV29qZHnFgmEgCj4+Pj4+Pj4+IFttYWlsdG86b21lZ0BpbnZpc2libGV0aGlu
Z3NsYWIuY29tXSBTZW50OiAxMiBNYXJjaAo+Pj4+Pj4+PiAyMDE1IDE2OjE3IFRvOiBQYXVsIER1
cnJhbnQ7Cj4+Pj4+Pj4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0
OiBSZToKPj4+Pj4+Pj4gW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhl
IFdpbmRvd3MgUFYKPj4+Pj4+Pj4gRHJpdmVycwo+Pj4+Pj4+PiAKPj4+Pj4+PiBPbiAyMDE1LTAz
LTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwg
TWVzc2FnZS0tLS0tIEZyb206IAo+Pj4+Pj4+Pj4+PiB3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0
cy54ZW5wcm9qZWN0Lm9yZyAKPj4+Pj4+Pj4+Pj4gW21haWx0bzp3aW4tcHYtZGV2ZWwtCj4+Pj4+
Pj4+Pj4+IGJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmddIE9uIEJlaGFsZiBPZgo+Pj4+Pj4+
Pj4+PiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEwIE1hcmNoIDIwMTUgMjA6MTYgVG86Cj4+Pj4+Pj4+
Pj4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0OiBSZTogCj4+Pj4+
Pj4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcgbGlidmNoYW4gdG8gdXNlIHRoZQo+Pj4+Pj4+
Pj4+PiBXaW5kb3dzIFBWIERyaXZlcnMKPj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gSGksCj4+Pj4+
Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IEhpLAo+Pj4+Pj4+Pj4+IAo+Pj4+Pj4+Pj4+
IEknbSB1bmFibGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZQo+Pj4+Pj4+
Pj4+IEkganVzdCBzdWJzY3JpYmVkIHRvIHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3MKPj4+
Pj4+Pj4+PiB3b3J0aCBjaGltaW5nIGluIChsYXN0IG1lc3NhZ2UgaXMgaGVyZTogCj4+Pj4+Pj4+
Pj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwvd2luLXB2LWRldmVs
LzIwMTUtCj4KPj4+Pj4+Pj4+PiAKMDEvbXNnMAo+Pj4+IAo+Pj4+Pj4+Pj4+IAo+IDAwNgo+Pj4+
Pj4+IAo+Pj4+Pj4+Pj4+IAo+Pj4+IDAuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4g
aHRtbCkKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+Pj4gWWVzLCBJIHVuZGVyc3Rh
bmQ7IEkganVzdCBzYXcgeW91cgo+Pj4+Pj4+Pj4+PiBzdWJzY3JpcHRpb24gbWVzc2FnZSA6LSkK
Pj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiBGaXJzdCwgc29tZSBiYWNrZ3JvdW5kIGFib3V0IG1lLiBJ
J20gY3VycmVudGx5Cj4+Pj4+Pj4+Pj4gdGhlIG1haW4gYW5kIHByZXR0eSBtdWNoIHRoZSBvbmx5
Cj4+Pj4+Pj4+Pj4gZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vlc3QgdG9vbHMgZm9yIFdpbmRv
d3MKPj4+Pj4+Pj4+PiBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5xdWJlcy1vcy5vcmcvKS4g
U29tZQo+Pj4+Pj4+Pj4+IG9mIHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJlcyAtLSBpbiBzaG9y
dCwgaXQncwo+Pj4+Pj4+Pj4+IGFuIGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFz
ZWQgb24KPj4+Pj4+Pj4+PiBsaWdodHdlaWdodCBBcHBWTXMsIGN1cnJlbnRseSB1c2luZyBMaW51
eC9YZW4gYXMKPj4+Pj4+Pj4+PiBiYXNlLiBJdCBzdXBwb3J0cyBXaW5kb3dzIEhWTXMgYW5kIG91
ciBndWVzdAo+Pj4+Pj4+Pj4+IHRvb2xzIHByb3ZpZGUgaW50ZWdyYXRpb24gd2l0aCBkb20wL290
aGVyIGRvbVVzCj4+Pj4+Pj4+Pj4gKHNlcnZpY2VzIGxpa2UgZGF0YSB0cmFuc2ZlciwgcmVtb3Rl
IGV4ZWN1dGlvbiwgCj4+Pj4+Pj4+Pj4gc2VhbWxlc3MgR1VJIGV4cGVyaWVuY2UgZXRjKS4KPj4+
Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+Pj4gQ29vbC4KPj4+Pj4+Pj4+PiAKPj4+Pj4+
Pj4+PiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0Cj4+Pj4+Pj4+
Pj4gbWFqb3IgcmVsZWFzZSAocjMpIG9mIFF1YmVzLCBpdCB3aWxsIHVzZSBYZW4gNC40Cj4+Pj4+
Pj4+Pj4gaW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXIgV2luZG93cwo+Pj4+Pj4+
Pj4+IHRvb2xzLCB0aGV5IGFyZSAoY3VycmVudGx5KSB1c2luZyBQViBkcml2ZXJzCj4+Pj4+Pj4+
Pj4gYmFzZWQgb24gSmFtZXMgSGFycGVyJ3MgY29kIGUuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4g
T3VyIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hhbgo+Pj4+Pj4+Pj4+
IChpbiBmYWN0LCB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoCj4+Pj4+Pj4+Pj4gYWNj
ZXB0ZWQgaW50byBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4gSW4KPj4+Pj4+Pj4+PiBR
dWJlcyByMiB3ZSBoYXZlIGEgV2luZG93cyBsaWJ2Y2hhbgo+Pj4+Pj4+Pj4+IGltcGxlbWVudGF0
aW9uLCBidXQgYXMgc3RhdGVkIGFib3ZlLCBpdCB1c2VzIG9sZAo+Pj4+Pj4+Pj4+IFBWIGRyaXZl
cnMgaW50ZXJmYWNlcy4gWW91IGNhbiBmaW5kIGl0IGhlcmU6Cj4+Pj4+Pj4+Pj4gaHR0cHM6Ly9n
aXRodWIuY29tL1F1YmVzT1MvcXViZXMtY29yZS12Y2hhbi14ZW4KPj4+Pj4+Pj4+PiAKPj4+Pj4+
Pj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudAo+Pj4+Pj4+
Pj4+IHNpZGUgdmNoYW4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuIEl0Cj4+Pj4+Pj4+
Pj4gZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbgo+Pj4+Pj4+Pj4+
IGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbgo+Pj4+Pj4+
Pj4+IFF1YmVzIHIzIGhvd2V2ZXIsIHdlIG5lZWQgdGhhdCB3b3JraW5nIGJlY2F1c2Ugb2YKPj4+
Pj4+Pj4+PiByZWRlc2lnbmVkIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdGhhdAo+
Pj4+Pj4+Pj4+IGFsbG93cyBkaXJlY3QgVk0tVk0gY29tbXVuaWNhdGlvbiBhZnRlciBkb20wCj4+
Pj4+Pj4+Pj4gYXJiaXRyYXRpb24uCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gVW5mb3J0dW5hdGVs
eSBIYXJwZXIncyBkcml2ZXJzIGRvbid0IHNlZW0gdG8KPj4+Pj4+Pj4+PiBpbXBsZW1lbnQgdGhl
IG5lZWRlZCBrZXJuZWwgaW50ZXJmYWNlcyBmb3IgdGhhdAo+Pj4+Pj4+Pj4+IGFzIHdlbGwuCj4+
Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IEkgYXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9y
IG1heWJlIGp1c3QKPj4+Pj4+Pj4+Pj4gZ3JhbnQgY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBz
YWZlcj8KPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQ
ViBkcml2ZXJzIHNvdXJjZXMKPj4+Pj4+Pj4+PiBiZWZvcmUsIGJ1dCBpdCBzZWVtcyBJIHdpbGwg
bmVlZCB0byBkbyB0aGF0IG5vdwo+Pj4+Pj4+Pj4+IDopIEkgZm91bmQgdGhlIG5ldyBQViBkcml2
ZXJzIGFuZCB0aGlzIG1haWxpbmcKPj4+Pj4+Pj4+PiBsaXN0LCBmb3VuZCB0aGUgdGhyZWFkIGFi
b3V0IHZjaGFuCj4+Pj4+Pj4+Pj4gaW1wbGVtZW50YXRpb24uLi4gYW5kIHRoYXQncyBwcmV0dHkg
bXVjaCBpdCBmb3IKPj4+Pj4+Pj4+PiBub3cuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gQXMgSSBz
YWlkLCBJIGRvbid0IGhhdmUgbXVjaCBleHBlcmllbmNlIGluIFhlbgo+Pj4+Pj4+Pj4+IEFQSXMg
KGRpZG4ndCBuZWVkIHRvIHRpbmtlciB3aXRoIHRoZW0gZGlyZWN0bHkKPj4+Pj4+Pj4+PiBiZWZv
cmUpLiBJIGRvLCBob3dldmVyLCBoYXZlIGV4dGVuc2l2ZSBXaW5BUEkKPj4+Pj4+Pj4+PiBrbm93
bGVkZ2UgYW5kIG1vZGVyYXRlIGFtb3VudCBvZiBXaW5kb3dzIGRyaXZlcgo+Pj4+Pj4+Pj4+IGRl
dmVsb3BtZW50IGV4cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRvb2xzCj4+Pj4+Pj4+Pj4g
aXMgYSBjdXN0b20gZGlzcGxheSBkcml2ZXIgdGhhdCBhbGxvd3Mgbm8tY29weQo+Pj4+Pj4+Pj4+
IHZpZGVvIG1lbW9yeSBzaGFyaW5nIHdpdGggZG9tMCkuIEkgbWFuYWdlZCB0bwo+Pj4+Pj4+Pj4+
IGJ1aWxkIHRoZSBuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24gb3VyCj4+Pj4+Pj4+
Pj4gZGV2IFF1YmVzIGJ1aWxkIHNvb24uCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gU28sIHRvIHN1
bW1hcml6ZSwgSSdtIHZlcnkgaW50ZXJlc3RlZCBpbgo+Pj4+Pj4+Pj4+IGRldmVsb3BpbmcgYSBX
aW5kb3dzIHZjaGFuIGltcGxlbWVudGF0aW9uIG9uIHRvcAo+Pj4+Pj4+Pj4+IG9mIHRoZSBuZXcg
UFYgZHJpdmVycy4gSSdsbCBiZSByZWFkaW5nIHRocm91Z2gKPj4+Pj4+Pj4+PiB0aGUgZHJpdmVy
IHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplCj4+Pj4+Pj4+Pj4gbXlzZWxm
IHdpdGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0bwo+Pj4+Pj4+Pj4+IGdl
dCBzb21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZQo+Pj4+Pj4+Pj4+
IGtub3cuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IElmIHlvdSB3YW50IHRv
IGxvb2sgYXQgYWRkaW5nIHRoZSBuZWNlc3NhcnkKPj4+Pj4+Pj4+Pj4gY29kZSB0byB0aGUgWEVO
QlVTX0dOVFRBQiBpbnRlcmZhY2UgdG8gZG8gZ3JhbnQKPj4+Pj4+Pj4+Pj4gbWFwL2NvcHkgdGhl
biBJIGRvbid0IGltYWdpbmUgaXQgd2lsbCBiZSB0b28KPj4+Pj4+Pj4+Pj4gaGFyZC4gQWRkaW5n
IHN1cHBvcnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdAo+Pj4+Pj4+Pj4+PiBidXQgaXQgd291
bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAKPj4+Pj4+Pj4+Pj4gcGFnZXMgaW50byB0
aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAod2hpY2gKPj4+Pj4+Pj4+Pj4gaXMgd2hlcmUg
dGhlIHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudAo+Pj4+Pj4+Pj4+PiB0YWJsZSBpdHNl
bGYgbGl2ZSkuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55
IHNwZWNpZmljIHF1ZXN0aW9ucyBvcgo+Pj4+Pj4+Pj4+PiBuZWVkIHNvbWUgaGVscCBnZXR0aW5n
IHRoZSBkcml2ZXJzIGdvaW5nIGluCj4+Pj4+Pj4+Pj4+IHlvdXIgZW52aXJvbm1lbnQuCj4+Pj4+
Pj4+Pj4gCj4+Pj4+Pj4gSSd2ZSB0ZXN0ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4NjQg
SFZNIG9uIFF1YmVzCj4+Pj4+Pj4gcjIgKHIzIGlzIHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVu
YnVzIGFuZCB4ZW5pZmFjZQo+Pj4+Pj4+IGJvdGggaW5zdGFsbCBmaW5lLiBYZW52YmQgaW5zdGFs
bHMgT0sgYnV0IHRoZSBPUyBCU09Ecwo+Pj4+Pj4+IG9uIHJlYm9vdCB3aXRoIGNvZGUgN0IgKGlu
YWNjZXNzaWJsZSBib290IGRldmljZSkuIEknbGwKPj4+Pj4+PiB0cnkgdG8gcGlucG9pbnQgdGhl
IGV4YWN0IGZhaWx1cmUgc3BvdCBvbmNlIEkgc2V0dXAgdGhlCj4+Pj4+Pj4gcHZkcml2ZXJzIHNv
dXJjZXMgaW5zaWRlIG15IGRldmVsb3BtZW50IFZNLgo+Pj4+Pj4+IAo+Pj4+Pj4+IAo+Pj4+Pj4+
PiAweDdCIGNhbiBvY2N1ciBpbiBtYW55IGNpcmN1bXN0YW5jZXMuIFRoZSBkcml2ZXJzIGRvCj4+
Pj4+Pj4+IGxvZyBxdWl0ZSBhIGJpdCBvZiBpbmZvLCBwYXJ0aWN1bGFybHkgaW4gY2hlY2tlZAo+
Pj4+Pj4+PiBidWlsZHMsIHNvIHRoZXJlJ2xsIHByb2JhYmx5IGJlIHNvbWV0aGluZyB0aGVyZSB0
bwo+Pj4+Pj4+PiBpbmRpY2F0ZSB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSBmYWlsdXJlLiBUaGUg
bWFpbgo+Pj4+Pj4+PiBpbmZvcm1hdGlvbmFsIGxvZ2dpbmcgKHdoaWNoIGlzIHRoZSBzYW1lIGZv
ciBmcmVlIG9yCj4+Pj4+Pj4+IGNoZWNrZWQgYnVpbGRzKSBpcyB3cml0dGVuIHRvIHRoZSBxZW11
IGxvZ2dpbmcgcG9ydAo+Pj4+Pj4+PiAoMHgxMikgYW5kIGRlYnVnIGxvZ2dpbmcgKGNoZWNrZWQg
YnVpbGQgb25seSkgZ29lcyB0bwo+Pj4+Pj4+PiB0aGUgWGVuIHBvcnQgKDB4RTkpLiBJZiB5b3Ug
d2F0Y2ggd2hlcmV2ZXIgeW91IGhhdmUKPj4+Pj4+Pj4gdGhvc2UgcmVkaXJlY3RlZCB0aGVuIHlv
dSBtYXkgYmUgYWJsZSB0byBzcG90IHRoZQo+Pj4+Pj4+PiBwcm9ibGVtLiBJZiB5b3UgY2FuJ3Qg
dGhlbiBwb3N0IHRoZW0gdG8gdGhlIGxpc3QgYW5kCj4+Pj4+Pj4+IEknbGwgdGFrZSBhIGxvb2su
Cj4+Pj4+Pj4gCj4+Pj4+Pj4gRG8gdGhlIGRyaXZlcnMgaGF2ZSBzcGVjaWZpYyByZXF1aXJlbWVu
dHMgZm9yIGJhY2tlbmQgCj4+Pj4+Pj4gKFhlbi9RZW11IHZlcnNpb24pPyBXZSdyZSBub3QgcmVh
bGx5IHVzaW5nIFFlbXUgaW4KPj4+Pj4+PiBkb20wLCBvbmx5IGluIG1pbmltYWwgc3R1YmRvbXMg
Zm9yIEhWTXMsIHNvIHRoYXQgbWF5IGJlCj4+Pj4+Pj4gYSBwcm9ibGVtLgo+Pj4+Pj4+IAo+Pj4+
Pj4+IAo+Pj4+Pj4+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVtLiBEbyB5b3UgaGF2ZSBQ
ViBiYWNrZW5kcwo+Pj4+Pj4+PiBmb3IgZGlzayBhbmQgbmV0IHNldCB1cCB0aG91Z2g/IFRoZSBm
YWN0IHRoYXQgeW91IGdvdAo+Pj4+Pj4+PiBhIDB4N0IgYWZ0ZXIgaW5zdGFsbGluZyB4ZW52YmQg
bWF5IHNpbXBseSBtZWFuIHRoYXQKPj4+Pj4+Pj4geW91ciB0b29sc3RhY2sgaGFzIGp1c3Qgbm90
IHNldCB1cCBhIFBWIGJhY2tlbmQuCj4+Pj4gV2UgZG8gaGF2ZSBiYWNrZW5kcyBzZXQgdXAgKHhl
bi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNoZWNrCj4+Pj4gaW4gZG9tMCB3aGV0aGVyIGl0IGNy
YXNoZXMgYWZ0ZXIgdGhlIGRldmljZSBnZXRzIGF0dGFjaGVkIG9yCj4+Pj4gYmVmb3JlLgo+Pj4+
IAo+Pj4+IAo+Pj4+PiBPay4gSSBtdXN0IGFkbWl0IHRoYXQgSSB0ZW5kIHRvIHVzZSBxZGlzayBh
cyBhIGJhY2tlbmQgaW4KPj4+Pj4gbW9zdCBvZiBteSB0ZXN0aW5nLCBidXQgYmxrYmFjayBzaG91
bGQgYmUgZmluZS4gSSdsbCBzYW5pdHkKPj4+Pj4gY2hlY2sgaXQgbXlzZWxmIHdoZW4gSSBnZXQg
dGltZSB0aG91Z2guCj4+Pj4gCj4gU29tZXRpbWVzIHRoZSBWTSBCU09EcyB3aXRoIDB4N0UuIEkg
bWFuYWdlZCB0byBjb25uZWN0IFdpbkRiZyB0bwo+IGl0IGFuZCBncmFiIHNvbWUgbG9ncyAoaW4g
dGhlIGF0dGFjaG1lbnQpLiBBdCBhIGdsYW5jZSBpdCBzZWVtcwo+IGxpa2UgYSBsb3Qgb2YgZXZl
bnQgY2hhbm5lbCBmYWlsdXJlcy4uLgo+IAo+IFhFTlZCRHxQZG9SZXNldDpBU1NFUlRJT04gRkFJ
TEVEOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkgCj4gQXNzZXJ0aW9uIAo+IGY6XHF1YmVz
LWJ1aWxkZXJccXViZXMtc3JjXHhlbi1wdlx4ZW52YmRcc3JjXHhlbnZiZFxwZG8uYygyMjk3KTog
Cj4gKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApCj4gCj4gCj4+IFllcywgdGhhdCBjZXJ0YWlu
bHkgc291bmRzIGxpa2UgaXQgY291bGQgYmUgdGhlIGNhdXNlLiBXaGF0Cj4+IHZlcnNpb24gb2Yg
WGVuIGFyZSB5b3UgcnVubmluZyBvbj8gVGhlIGxhdGVzdCBYRU5CVVMgc3VwcG9ydHMKPj4gRklG
TyBldmVudCBjaGFubmVscyBhbmQgcGVyLWNwdSB1cGNhbGxzICh3aGljaCBpcyBwYXRjaCB0aGF0
IHdlbnQKPj4gaW50byBYZW4gcG9zdC00LjUpIGJ1dCBzaG91bGQgZmFsbCBiYWNrIHRvIDItbGV2
ZWwgYW5kIHN0YW5kYXJkCj4+IGNhbGxiYWNrIHZpYSBpZiB0aG9zZSBmZWF0dXJlcyBhcmUgbm90
IGluIHRoZSBoeXBlcnZpc29yLiBUaGVyZQo+PiB3YXMgYSBidWcgaW4gMi1sZXZlbCBldmVudCBo
YW5kbGluZyBpbiBYRU5CVVMgd2hpY2ggSSBmaXhlZAo+PiB3aXRoOgo+IAo+PiBjb21taXQgZjMy
MWUyMDRhMDgxZjljNGRjYzczMmU3MTI4M2E0MDE3NTFhMjQxYiBBdXRob3I6IFBhdWwKPj4gRHVy
cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+IERhdGU6ICAgRnJpIEZlYiAyNyAxMzo0ODo0
Ngo+PiAyMDE1ICswMDAwCj4gCj4+IEZpeCBldmVudCBjaGFubmVsIHVubWFza2luZyBmb3IgdHdv
LWxldmVsIEFCSQo+IAo+PiBUaGUgdHdvLWxldmVsIEFCSSByZXF1aXJlcyB0aGF0IGFuIGV2ZW50
IGlzIG1hc2tlZCBmb3IgdGhlCj4+IHVubWFzayBoeXBlcmNhbGwgdG8gcmFpc2UgdGhlIGV2ZW50
LCBzbyB0aGUgdGVzdC1hbmQtY2xlYXIKPj4gb3BlcmF0aW9uIGluIHRoZSBndWVzdCBiYXNpY2Fs
bHkgbWVhbnMgdGhhdCBwZW5kaW5nIGV2ZW50cyBnZXQKPj4gc3R1Y2suIFRoZSBzaW1wbGUgZml4
IGlzIHRvIHJlLW1hc2sgcGVuZGluZyBldmVudHMgYmVmb3JlIG1ha2luZwo+PiB0aGUgaHlwZXJj
YWxsLiBUaGlzIGlzIHVubmVjZXNzYXJ5IHdoZW4gdGhlIEZJRk8gQUJJIGlzIHVzZWQsIGJ1dAo+
PiBpdCdzIHNhZmUuIEhlbmNlIHRoaXMgcGF0Y2ggdW5jb25kaXRpb25hbGx5IHJlLW1hc2tzIHBl
bmRpbmcKPj4gZXZlbnRzLCByZWdhcmRsZXNzIG9mIEFCSSwgYmVmb3JlIG1ha2luZyB0aGUgdW5t
YXNrIGh5cGVyY2FsbC4KPiAKPj4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4KPiAKPj4gSWYgeW91IGFyZSBvbiBhIFhlbiB0aGF0J3Mgb2xkIGVu
b3VnaCBub3QgdG8gaGF2ZSB0aGUgRklGTyBBQkkKPj4geW91J2xsIGRlZmluaXRlbHkgbmVlZCB0
aGF0IGZpeC4gUGF1bApXZSdyZSB1c2luZyBYZW4gNC4xIGluIFF1YmVzIHIyLCA0LjQgaW4gdGhl
IHVwY29taW5nIHIzLiBJJ2xsIGNoZWNrIG9uCnIzIG9uY2UgaXQgcnVucyBwcm9wZXJseS4KCkFz
IGZvciB0aGUgeGVuYnVzIGZpeCwgSSBkbyBoYXZlIGl0IC0tIEkndmUgY2xvbmVkIHRoZSBzb3Vy
Y2VzIGFuZApidWlsdCBhbGwgdGhlIGRyaXZlcnMgbXlzZWxmIGEgZmV3IGRheXMgYWdvLgo+IAo+
Pj4+IEFsc28gYWRkaW5nIE1hcmVrIHRvIHRoZSBjb252ZXJzYXRpb24sIGhlJ3Mgb25lIG9mIG91
ciBjb3JlIAo+Pj4+IGFyY2hpdGVjdHMgYW5kIGtub3dzIG1vcmUgYWJvdXQgYmFja2VuZCBzdHVm
ZiB0aGFuIEkgZG8gOikKPj4+PiAKPj4+PiAKPj4+Pj4gQ29vbC4KPj4+PiAKPj4+Pj4gUGF1bAo+
Pj4+IAo+Pj4+Pj4+IAo+Pj4+Pj4+PiBQYXVsCj4gCgotIC0tIApSYWZhxYIgV29qZHnFgmEKUXVi
ZXMgVG9vbHMgZm9yIFdpbmRvd3MgZGV2ZWxvcGVyCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0t
LS0tCgppUUVjQkFFQkFnQUdCUUpWQXVYUEFBb0pFSVdpOXJCMkdyVzdMZHNJQUpMaWwvWmVMRmJl
enREeGpvTys4aGo1CmxveHFmeHhuUm82WmtsUzBtL3JsUmlVYjhhZXRzSmRodHdySkhjdXllSWtW
OFp5cFljSXJRNHZzZGlOQ0JzOGkKYXBYUXJObUNydkFoK2ZsSGN1WGJackhFNzJsODF1NGdwaUFv
SkhZUDFGL1dQL05VS3F1YlhvV0ErNno1amFlRQo4Q0pFcmtIZlBuZmxyN3Y0Vjk5Rm1qbktvWTE2
SFNmd3dNS3lrNGxPZWw1ZEtrbDRPaTJZSUdMVitabmpXaW84CmtPNHh4MXhHRjNSUU05SEhLRWM1
dUdhUTE4eVlmaWl5M3NURXY1VjJTWFVyVlJRM0FxWTVCaWpoUmI4aUluT2IKUWYvamdoNlQ2dE53
VEtkTmlBTWcyNTRldE41RnBJRTkwcjNGY0dnRkNtYTNMT2ZUdHRKK3U3VS9DYTkyVUswPQo9RjVK
awotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0KCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 13:27:50 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 13:27:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWPd0-00038R-08; Fri, 13 Mar 2015 13:27:50 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YWPcy-00038K-Qj
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 13:27:49 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
	20/28-22941-4D5E2055; Fri, 13 Mar 2015 13:27:48 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426253265!11603615!1
X-Originating-IP: [66.111.4.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjUgPT4gNDQ5ODE=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2135 invoked from network); 13 Mar 2015 13:27:47 -0000
Received: from out1-smtp.messagingengine.com (HELO
	out1-smtp.messagingengine.com) (66.111.4.25)
	by server-9.tower-206.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 13 Mar 2015 13:27:47 -0000
Received: from compute6.internal (compute6.nyi.internal [10.202.2.46])
	by mailout.nyi.internal (Postfix) with ESMTP id 71CCE20AAD
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 09:27:43 -0400 (EDT)
Received: from frontend2 ([10.202.2.161])
	by compute6.internal (MEProxy); Fri, 13 Mar 2015 09:27:45 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=mesmtp; bh=7niulWTMNx6a82/80/7JxA8
	RFwM=; b=AZfR79av6Arm/w8jKiAJ10cdQay0TYC7OJdklGpI9VMOgSH+8VFJwx5
	dK3YIETrcfsdOzJ4i6ZQy+owNCLskAMCf80/Y6s42Lua8dHJnnB7bkoTN+KMaBdX
	+5uxuNknELFUJQQKYwQuwwo7Q7rDRFSjTZczQC3tShYF0tdhn+Bk=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=x-sasl-enc:message-id:date:from
	:mime-version:to:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding; s=smtpout; bh=7niulWTMNx6a82/80/7JxA
	8RFwM=; b=DrdejHqd2NMHafDrjI0UwAwk5bloo3//qboSpAshWHmPJYPlx0l6Ga
	ciTyKO+cZ8Qm/5ZrTQ3AZMIbaKU2nYKmoaUJvGD87N+f2Rf0eK3Sb9nJBgzeBXKd
	GOkgKiP+AOpu5vvh7LO5kUFLzGoWhhparOzR1BP6q/dxlbbr0fPA0=
X-Sasl-enc: gy80FLT8GxNvqvJVRhVKkIID3dzpCrcc6g+kAZXS0Z0T 1426253264
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 11EF36801E1;
	Fri, 13 Mar 2015 09:27:43 -0400 (EDT)
Message-ID: <5502E5CF.4030804@invisiblethingslab.com>
Date: Fri, 13 Mar 2015 14:27:43 +0100
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
Content-Length: 14367
Cc: =?UTF-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTEzIDEwOjE3LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206Cj4+IHdpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnIFtt
YWlsdG86d2luLXB2LWRldmVsLSAKPj4gYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24g
QmVoYWxmIE9mIFJhZmFsIFdvamR5bGEgU2VudDogMTIKPj4gTWFyY2ggMjAxNSAyMDowNSBUbzog
UGF1bCBEdXJyYW50Owo+PiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgQ2M6IE1h
cmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraSAKPj4gU3ViamVjdDogUmU6IFt3aW4tcHYtZGV2ZWxd
IFBvcnRpbmcgbGlidmNoYW4gdG8gdXNlIHRoZSBXaW5kb3dzCj4+IFBWIERyaXZlcnMKPj4gCj4g
T24gMTIuMDMuMjAxNSAxODowOSwgUGF1bCBEdXJyYW50IHdyb3RlOgo+Pj4+PiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLSBGcm9tOiAKPj4+Pj4gd2luLXB2LWRldmVsLWJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmcKPj4+Pj4gW21haWx0bzp3aW4tcHYtZGV2ZWwtIGJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmddIE9uCj4+Pj4+IEJlaGFsZiBPZiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEy
IE1hcmNoIDIwMTUgMTc6MDYgVG86IFBhdWwKPj4+Pj4gRHVycmFudDsgd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnIENjOiBNYXJlawo+Pj4+PiBNYXJjenlrb3dza2ktR8OzcmVja2kg
U3ViamVjdDogUmU6IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcKPj4+Pj4gbGlidmNoYW4gdG8gdXNl
IHRoZSBXaW5kb3dzIFBWIERyaXZlcnMKPj4+Pj4gCj4+Pj4gT24gMjAxNS0wMy0xMiAxNzo0NSwg
UGF1bCBEdXJyYW50IHdyb3RlOgo+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLSBG
cm9tOiBSYWZhxYIgV29qZHnFgmEgCj4+Pj4+Pj4+IFttYWlsdG86b21lZ0BpbnZpc2libGV0aGlu
Z3NsYWIuY29tXSBTZW50OiAxMiBNYXJjaAo+Pj4+Pj4+PiAyMDE1IDE2OjE3IFRvOiBQYXVsIER1
cnJhbnQ7Cj4+Pj4+Pj4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0
OiBSZToKPj4+Pj4+Pj4gW3dpbi1wdi1kZXZlbF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhl
IFdpbmRvd3MgUFYKPj4+Pj4+Pj4gRHJpdmVycwo+Pj4+Pj4+PiAKPj4+Pj4+PiBPbiAyMDE1LTAz
LTExIDE4OjQ2LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwg
TWVzc2FnZS0tLS0tIEZyb206IAo+Pj4+Pj4+Pj4+PiB3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0
cy54ZW5wcm9qZWN0Lm9yZyAKPj4+Pj4+Pj4+Pj4gW21haWx0bzp3aW4tcHYtZGV2ZWwtCj4+Pj4+
Pj4+Pj4+IGJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmddIE9uIEJlaGFsZiBPZgo+Pj4+Pj4+
Pj4+PiBSYWZhbCBXb2pkeWxhIFNlbnQ6IDEwIE1hcmNoIDIwMTUgMjA6MTYgVG86Cj4+Pj4+Pj4+
Pj4+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0OiBSZTogCj4+Pj4+
Pj4+Pj4+IFt3aW4tcHYtZGV2ZWxdIFBvcnRpbmcgbGlidmNoYW4gdG8gdXNlIHRoZQo+Pj4+Pj4+
Pj4+PiBXaW5kb3dzIFBWIERyaXZlcnMKPj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gSGksCj4+Pj4+
Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IEhpLAo+Pj4+Pj4+Pj4+IAo+Pj4+Pj4+Pj4+
IEknbSB1bmFibGUgdG8gcHJvcGVybHkgcmVwbHkgdG8gdGhlIHRocmVhZCBzaW5jZQo+Pj4+Pj4+
Pj4+IEkganVzdCBzdWJzY3JpYmVkIHRvIHRoaXMgbGlzdCBidXQgSSBmaWd1cmVkIGl0J3MKPj4+
Pj4+Pj4+PiB3b3J0aCBjaGltaW5nIGluIChsYXN0IG1lc3NhZ2UgaXMgaGVyZTogCj4+Pj4+Pj4+
Pj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwvd2luLXB2LWRldmVs
LzIwMTUtCj4KPj4+Pj4+Pj4+PiAKMDEvbXNnMAo+Pj4+IAo+Pj4+Pj4+Pj4+IAo+IDAwNgo+Pj4+
Pj4+IAo+Pj4+Pj4+Pj4+IAo+Pj4+IDAuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4g
aHRtbCkKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+Pj4gWWVzLCBJIHVuZGVyc3Rh
bmQ7IEkganVzdCBzYXcgeW91cgo+Pj4+Pj4+Pj4+PiBzdWJzY3JpcHRpb24gbWVzc2FnZSA6LSkK
Pj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiBGaXJzdCwgc29tZSBiYWNrZ3JvdW5kIGFib3V0IG1lLiBJ
J20gY3VycmVudGx5Cj4+Pj4+Pj4+Pj4gdGhlIG1haW4gYW5kIHByZXR0eSBtdWNoIHRoZSBvbmx5
Cj4+Pj4+Pj4+Pj4gZGV2ZWxvcGVyL21haW50YWluZXIgb2YgZ3Vlc3QgdG9vbHMgZm9yIFdpbmRv
d3MKPj4+Pj4+Pj4+PiBmb3IgUXViZXMgT1MgKGh0dHBzOi8vd2lraS5xdWJlcy1vcy5vcmcvKS4g
U29tZQo+Pj4+Pj4+Pj4+IG9mIHlvdSBtYXkgaGF2ZSBoZWFyZCBvZiBRdWJlcyAtLSBpbiBzaG9y
dCwgaXQncwo+Pj4+Pj4+Pj4+IGFuIGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzZWN1cmUgT1MgYmFz
ZWQgb24KPj4+Pj4+Pj4+PiBsaWdodHdlaWdodCBBcHBWTXMsIGN1cnJlbnRseSB1c2luZyBMaW51
eC9YZW4gYXMKPj4+Pj4+Pj4+PiBiYXNlLiBJdCBzdXBwb3J0cyBXaW5kb3dzIEhWTXMgYW5kIG91
ciBndWVzdAo+Pj4+Pj4+Pj4+IHRvb2xzIHByb3ZpZGUgaW50ZWdyYXRpb24gd2l0aCBkb20wL290
aGVyIGRvbVVzCj4+Pj4+Pj4+Pj4gKHNlcnZpY2VzIGxpa2UgZGF0YSB0cmFuc2ZlciwgcmVtb3Rl
IGV4ZWN1dGlvbiwgCj4+Pj4+Pj4+Pj4gc2VhbWxlc3MgR1VJIGV4cGVyaWVuY2UgZXRjKS4KPj4+
Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+Pj4gQ29vbC4KPj4+Pj4+Pj4+PiAKPj4+Pj4+
Pj4+PiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHRoZSBuZXh0Cj4+Pj4+Pj4+
Pj4gbWFqb3IgcmVsZWFzZSAocjMpIG9mIFF1YmVzLCBpdCB3aWxsIHVzZSBYZW4gNC40Cj4+Pj4+
Pj4+Pj4gaW5zdGVhZCBvZiByMidzIFhlbiA0LjEuIEFzIGZvciBvdXIgV2luZG93cwo+Pj4+Pj4+
Pj4+IHRvb2xzLCB0aGV5IGFyZSAoY3VycmVudGx5KSB1c2luZyBQViBkcml2ZXJzCj4+Pj4+Pj4+
Pj4gYmFzZWQgb24gSmFtZXMgSGFycGVyJ3MgY29kIGUuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4g
T3VyIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlcyB2Y2hhbgo+Pj4+Pj4+Pj4+
IChpbiBmYWN0LCB2Y2hhbiBvcmlnaW5hdGVzIGZyb20gb3VyIHBhdGNoCj4+Pj4+Pj4+Pj4gYWNj
ZXB0ZWQgaW50byBYZW4ncyBzb3VyY2UgYSBmZXcgeWVhcnMgYWdvKS4gSW4KPj4+Pj4+Pj4+PiBR
dWJlcyByMiB3ZSBoYXZlIGEgV2luZG93cyBsaWJ2Y2hhbgo+Pj4+Pj4+Pj4+IGltcGxlbWVudGF0
aW9uLCBidXQgYXMgc3RhdGVkIGFib3ZlLCBpdCB1c2VzIG9sZAo+Pj4+Pj4+Pj4+IFBWIGRyaXZl
cnMgaW50ZXJmYWNlcy4gWW91IGNhbiBmaW5kIGl0IGhlcmU6Cj4+Pj4+Pj4+Pj4gaHR0cHM6Ly9n
aXRodWIuY29tL1F1YmVzT1MvcXViZXMtY29yZS12Y2hhbi14ZW4KPj4+Pj4+Pj4+PiAKPj4+Pj4+
Pj4+PiBUaGF0IGltcGxlbWVudGF0aW9uIGhhcyBvbmUgYmlnIGZsYXc6IGNsaWVudAo+Pj4+Pj4+
Pj4+IHNpZGUgdmNoYW4gZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuIEl0Cj4+Pj4+Pj4+
Pj4gZGlkbid0IG1hdHRlciBmb3IgUXViZXMgcjIsIHdoZXJlIGFsbCB2Y2hhbgo+Pj4+Pj4+Pj4+
IGNvbW11bmljYXRpb24gaXMgcGFzc2luZyB0aHJvdWdoIGRvbTAgYW55d2F5LiBJbgo+Pj4+Pj4+
Pj4+IFF1YmVzIHIzIGhvd2V2ZXIsIHdlIG5lZWQgdGhhdCB3b3JraW5nIGJlY2F1c2Ugb2YKPj4+
Pj4+Pj4+PiByZWRlc2lnbmVkIGludGVyLVZNIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdGhhdAo+
Pj4+Pj4+Pj4+IGFsbG93cyBkaXJlY3QgVk0tVk0gY29tbXVuaWNhdGlvbiBhZnRlciBkb20wCj4+
Pj4+Pj4+Pj4gYXJiaXRyYXRpb24uCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gVW5mb3J0dW5hdGVs
eSBIYXJwZXIncyBkcml2ZXJzIGRvbid0IHNlZW0gdG8KPj4+Pj4+Pj4+PiBpbXBsZW1lbnQgdGhl
IG5lZWRlZCBrZXJuZWwgaW50ZXJmYWNlcyBmb3IgdGhhdAo+Pj4+Pj4+Pj4+IGFzIHdlbGwuCj4+
Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IEkgYXNzdW1lIHlvdSBtZWFuIGdyYW50IG1hcHBpbmc/IE9y
IG1heWJlIGp1c3QKPj4+Pj4+Pj4+Pj4gZ3JhbnQgY29weSwgc2luY2UgdGhhdCB3b3VsZCBiZSBz
YWZlcj8KPj4+Pj4+Pj4+PiAKPj4+Pj4+Pj4+PiBJIGRpZG4ndCBuZWVkIHRvIGxvb2sgaW50byBQ
ViBkcml2ZXJzIHNvdXJjZXMKPj4+Pj4+Pj4+PiBiZWZvcmUsIGJ1dCBpdCBzZWVtcyBJIHdpbGwg
bmVlZCB0byBkbyB0aGF0IG5vdwo+Pj4+Pj4+Pj4+IDopIEkgZm91bmQgdGhlIG5ldyBQViBkcml2
ZXJzIGFuZCB0aGlzIG1haWxpbmcKPj4+Pj4+Pj4+PiBsaXN0LCBmb3VuZCB0aGUgdGhyZWFkIGFi
b3V0IHZjaGFuCj4+Pj4+Pj4+Pj4gaW1wbGVtZW50YXRpb24uLi4gYW5kIHRoYXQncyBwcmV0dHkg
bXVjaCBpdCBmb3IKPj4+Pj4+Pj4+PiBub3cuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gQXMgSSBz
YWlkLCBJIGRvbid0IGhhdmUgbXVjaCBleHBlcmllbmNlIGluIFhlbgo+Pj4+Pj4+Pj4+IEFQSXMg
KGRpZG4ndCBuZWVkIHRvIHRpbmtlciB3aXRoIHRoZW0gZGlyZWN0bHkKPj4+Pj4+Pj4+PiBiZWZv
cmUpLiBJIGRvLCBob3dldmVyLCBoYXZlIGV4dGVuc2l2ZSBXaW5BUEkKPj4+Pj4+Pj4+PiBrbm93
bGVkZ2UgYW5kIG1vZGVyYXRlIGFtb3VudCBvZiBXaW5kb3dzIGRyaXZlcgo+Pj4+Pj4+Pj4+IGRl
dmVsb3BtZW50IGV4cGVyaWVuY2UgKHBhcnQgb2Ygb3VyIGd1ZXN0IHRvb2xzCj4+Pj4+Pj4+Pj4g
aXMgYSBjdXN0b20gZGlzcGxheSBkcml2ZXIgdGhhdCBhbGxvd3Mgbm8tY29weQo+Pj4+Pj4+Pj4+
IHZpZGVvIG1lbW9yeSBzaGFyaW5nIHdpdGggZG9tMCkuIEkgbWFuYWdlZCB0bwo+Pj4+Pj4+Pj4+
IGJ1aWxkIHRoZSBuZXcgZHJpdmVycyBhbmQgd2lsbCB0ZXN0IHRoZW0gb24gb3VyCj4+Pj4+Pj4+
Pj4gZGV2IFF1YmVzIGJ1aWxkIHNvb24uCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gU28sIHRvIHN1
bW1hcml6ZSwgSSdtIHZlcnkgaW50ZXJlc3RlZCBpbgo+Pj4+Pj4+Pj4+IGRldmVsb3BpbmcgYSBX
aW5kb3dzIHZjaGFuIGltcGxlbWVudGF0aW9uIG9uIHRvcAo+Pj4+Pj4+Pj4+IG9mIHRoZSBuZXcg
UFYgZHJpdmVycy4gSSdsbCBiZSByZWFkaW5nIHRocm91Z2gKPj4+Pj4+Pj4+PiB0aGUgZHJpdmVy
IHNvdXJjZXMgZm9yIGEgYml0IHN0aWxsIHRvIGZhbWlsaWFyaXplCj4+Pj4+Pj4+Pj4gbXlzZWxm
IHdpdGggdGhlIGVudmlyb25tZW50LiBJZiBhbnlvbmUgbWFuYWdlZCB0bwo+Pj4+Pj4+Pj4+IGdl
dCBzb21ldGhpbmcgd29ya2luZywgb3IganVzdCBoYXMgaWRlYXMsIGxldCBtZQo+Pj4+Pj4+Pj4+
IGtub3cuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IElmIHlvdSB3YW50IHRv
IGxvb2sgYXQgYWRkaW5nIHRoZSBuZWNlc3NhcnkKPj4+Pj4+Pj4+Pj4gY29kZSB0byB0aGUgWEVO
QlVTX0dOVFRBQiBpbnRlcmZhY2UgdG8gZG8gZ3JhbnQKPj4+Pj4+Pj4+Pj4gbWFwL2NvcHkgdGhl
biBJIGRvbid0IGltYWdpbmUgaXQgd2lsbCBiZSB0b28KPj4+Pj4+Pj4+Pj4gaGFyZC4gQWRkaW5n
IHN1cHBvcnQgZm9yIGNvcHkgd291bGQgYmUgZWFzaWVzdAo+Pj4+Pj4+Pj4+PiBidXQgaXQgd291
bGQgYWxzbyBiZSBwb3NzaWJsZSB0byBncmFudCBtYXAKPj4+Pj4+Pj4+Pj4gcGFnZXMgaW50byB0
aGUgcGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiAod2hpY2gKPj4+Pj4+Pj4+Pj4gaXMgd2hlcmUg
dGhlIHNoYXJlZCBpbmZvIHBhZ2UgYW5kIHRoZSBncmFudAo+Pj4+Pj4+Pj4+PiB0YWJsZSBpdHNl
bGYgbGl2ZSkuCj4+Pj4+Pj4+Pj4gCj4+Pj4+Pj4+Pj4+IExldCBtZSBrbm93IGlmIGhhdmUgYW55
IHNwZWNpZmljIHF1ZXN0aW9ucyBvcgo+Pj4+Pj4+Pj4+PiBuZWVkIHNvbWUgaGVscCBnZXR0aW5n
IHRoZSBkcml2ZXJzIGdvaW5nIGluCj4+Pj4+Pj4+Pj4+IHlvdXIgZW52aXJvbm1lbnQuCj4+Pj4+
Pj4+Pj4gCj4+Pj4+Pj4gSSd2ZSB0ZXN0ZWQgdGhlIGRyaXZlcnMgb24gYSBXaW43IHBybyB4NjQg
SFZNIG9uIFF1YmVzCj4+Pj4+Pj4gcjIgKHIzIGlzIHN0aWxsIGEgYml0IHVuc3RhYmxlKS4gWGVu
YnVzIGFuZCB4ZW5pZmFjZQo+Pj4+Pj4+IGJvdGggaW5zdGFsbCBmaW5lLiBYZW52YmQgaW5zdGFs
bHMgT0sgYnV0IHRoZSBPUyBCU09Ecwo+Pj4+Pj4+IG9uIHJlYm9vdCB3aXRoIGNvZGUgN0IgKGlu
YWNjZXNzaWJsZSBib290IGRldmljZSkuIEknbGwKPj4+Pj4+PiB0cnkgdG8gcGlucG9pbnQgdGhl
IGV4YWN0IGZhaWx1cmUgc3BvdCBvbmNlIEkgc2V0dXAgdGhlCj4+Pj4+Pj4gcHZkcml2ZXJzIHNv
dXJjZXMgaW5zaWRlIG15IGRldmVsb3BtZW50IFZNLgo+Pj4+Pj4+IAo+Pj4+Pj4+IAo+Pj4+Pj4+
PiAweDdCIGNhbiBvY2N1ciBpbiBtYW55IGNpcmN1bXN0YW5jZXMuIFRoZSBkcml2ZXJzIGRvCj4+
Pj4+Pj4+IGxvZyBxdWl0ZSBhIGJpdCBvZiBpbmZvLCBwYXJ0aWN1bGFybHkgaW4gY2hlY2tlZAo+
Pj4+Pj4+PiBidWlsZHMsIHNvIHRoZXJlJ2xsIHByb2JhYmx5IGJlIHNvbWV0aGluZyB0aGVyZSB0
bwo+Pj4+Pj4+PiBpbmRpY2F0ZSB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSBmYWlsdXJlLiBUaGUg
bWFpbgo+Pj4+Pj4+PiBpbmZvcm1hdGlvbmFsIGxvZ2dpbmcgKHdoaWNoIGlzIHRoZSBzYW1lIGZv
ciBmcmVlIG9yCj4+Pj4+Pj4+IGNoZWNrZWQgYnVpbGRzKSBpcyB3cml0dGVuIHRvIHRoZSBxZW11
IGxvZ2dpbmcgcG9ydAo+Pj4+Pj4+PiAoMHgxMikgYW5kIGRlYnVnIGxvZ2dpbmcgKGNoZWNrZWQg
YnVpbGQgb25seSkgZ29lcyB0bwo+Pj4+Pj4+PiB0aGUgWGVuIHBvcnQgKDB4RTkpLiBJZiB5b3Ug
d2F0Y2ggd2hlcmV2ZXIgeW91IGhhdmUKPj4+Pj4+Pj4gdGhvc2UgcmVkaXJlY3RlZCB0aGVuIHlv
dSBtYXkgYmUgYWJsZSB0byBzcG90IHRoZQo+Pj4+Pj4+PiBwcm9ibGVtLiBJZiB5b3UgY2FuJ3Qg
dGhlbiBwb3N0IHRoZW0gdG8gdGhlIGxpc3QgYW5kCj4+Pj4+Pj4+IEknbGwgdGFrZSBhIGxvb2su
Cj4+Pj4+Pj4gCj4+Pj4+Pj4gRG8gdGhlIGRyaXZlcnMgaGF2ZSBzcGVjaWZpYyByZXF1aXJlbWVu
dHMgZm9yIGJhY2tlbmQgCj4+Pj4+Pj4gKFhlbi9RZW11IHZlcnNpb24pPyBXZSdyZSBub3QgcmVh
bGx5IHVzaW5nIFFlbXUgaW4KPj4+Pj4+PiBkb20wLCBvbmx5IGluIG1pbmltYWwgc3R1YmRvbXMg
Zm9yIEhWTXMsIHNvIHRoYXQgbWF5IGJlCj4+Pj4+Pj4gYSBwcm9ibGVtLgo+Pj4+Pj4+IAo+Pj4+
Pj4+IAo+Pj4+Pj4+PiBUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVtLiBEbyB5b3UgaGF2ZSBQ
ViBiYWNrZW5kcwo+Pj4+Pj4+PiBmb3IgZGlzayBhbmQgbmV0IHNldCB1cCB0aG91Z2g/IFRoZSBm
YWN0IHRoYXQgeW91IGdvdAo+Pj4+Pj4+PiBhIDB4N0IgYWZ0ZXIgaW5zdGFsbGluZyB4ZW52YmQg
bWF5IHNpbXBseSBtZWFuIHRoYXQKPj4+Pj4+Pj4geW91ciB0b29sc3RhY2sgaGFzIGp1c3Qgbm90
IHNldCB1cCBhIFBWIGJhY2tlbmQuCj4+Pj4gV2UgZG8gaGF2ZSBiYWNrZW5kcyBzZXQgdXAgKHhl
bi1ibGtiYWNrIGZvciB2YmQpLiBJJ2xsIGNoZWNrCj4+Pj4gaW4gZG9tMCB3aGV0aGVyIGl0IGNy
YXNoZXMgYWZ0ZXIgdGhlIGRldmljZSBnZXRzIGF0dGFjaGVkIG9yCj4+Pj4gYmVmb3JlLgo+Pj4+
IAo+Pj4+IAo+Pj4+PiBPay4gSSBtdXN0IGFkbWl0IHRoYXQgSSB0ZW5kIHRvIHVzZSBxZGlzayBh
cyBhIGJhY2tlbmQgaW4KPj4+Pj4gbW9zdCBvZiBteSB0ZXN0aW5nLCBidXQgYmxrYmFjayBzaG91
bGQgYmUgZmluZS4gSSdsbCBzYW5pdHkKPj4+Pj4gY2hlY2sgaXQgbXlzZWxmIHdoZW4gSSBnZXQg
dGltZSB0aG91Z2guCj4+Pj4gCj4gU29tZXRpbWVzIHRoZSBWTSBCU09EcyB3aXRoIDB4N0UuIEkg
bWFuYWdlZCB0byBjb25uZWN0IFdpbkRiZyB0bwo+IGl0IGFuZCBncmFiIHNvbWUgbG9ncyAoaW4g
dGhlIGF0dGFjaG1lbnQpLiBBdCBhIGdsYW5jZSBpdCBzZWVtcwo+IGxpa2UgYSBsb3Qgb2YgZXZl
bnQgY2hhbm5lbCBmYWlsdXJlcy4uLgo+IAo+IFhFTlZCRHxQZG9SZXNldDpBU1NFUlRJT04gRkFJ
TEVEOiAoKChOVFNUQVRVUykoU3RhdHVzKSkgPj0gMCkgCj4gQXNzZXJ0aW9uIAo+IGY6XHF1YmVz
LWJ1aWxkZXJccXViZXMtc3JjXHhlbi1wdlx4ZW52YmRcc3JjXHhlbnZiZFxwZG8uYygyMjk3KTog
Cj4gKCgoTlRTVEFUVVMpKFN0YXR1cykpID49IDApCj4gCj4gCj4+IFllcywgdGhhdCBjZXJ0YWlu
bHkgc291bmRzIGxpa2UgaXQgY291bGQgYmUgdGhlIGNhdXNlLiBXaGF0Cj4+IHZlcnNpb24gb2Yg
WGVuIGFyZSB5b3UgcnVubmluZyBvbj8gVGhlIGxhdGVzdCBYRU5CVVMgc3VwcG9ydHMKPj4gRklG
TyBldmVudCBjaGFubmVscyBhbmQgcGVyLWNwdSB1cGNhbGxzICh3aGljaCBpcyBwYXRjaCB0aGF0
IHdlbnQKPj4gaW50byBYZW4gcG9zdC00LjUpIGJ1dCBzaG91bGQgZmFsbCBiYWNrIHRvIDItbGV2
ZWwgYW5kIHN0YW5kYXJkCj4+IGNhbGxiYWNrIHZpYSBpZiB0aG9zZSBmZWF0dXJlcyBhcmUgbm90
IGluIHRoZSBoeXBlcnZpc29yLiBUaGVyZQo+PiB3YXMgYSBidWcgaW4gMi1sZXZlbCBldmVudCBo
YW5kbGluZyBpbiBYRU5CVVMgd2hpY2ggSSBmaXhlZAo+PiB3aXRoOgo+IAo+PiBjb21taXQgZjMy
MWUyMDRhMDgxZjljNGRjYzczMmU3MTI4M2E0MDE3NTFhMjQxYiBBdXRob3I6IFBhdWwKPj4gRHVy
cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+IERhdGU6ICAgRnJpIEZlYiAyNyAxMzo0ODo0
Ngo+PiAyMDE1ICswMDAwCj4gCj4+IEZpeCBldmVudCBjaGFubmVsIHVubWFza2luZyBmb3IgdHdv
LWxldmVsIEFCSQo+IAo+PiBUaGUgdHdvLWxldmVsIEFCSSByZXF1aXJlcyB0aGF0IGFuIGV2ZW50
IGlzIG1hc2tlZCBmb3IgdGhlCj4+IHVubWFzayBoeXBlcmNhbGwgdG8gcmFpc2UgdGhlIGV2ZW50
LCBzbyB0aGUgdGVzdC1hbmQtY2xlYXIKPj4gb3BlcmF0aW9uIGluIHRoZSBndWVzdCBiYXNpY2Fs
bHkgbWVhbnMgdGhhdCBwZW5kaW5nIGV2ZW50cyBnZXQKPj4gc3R1Y2suIFRoZSBzaW1wbGUgZml4
IGlzIHRvIHJlLW1hc2sgcGVuZGluZyBldmVudHMgYmVmb3JlIG1ha2luZwo+PiB0aGUgaHlwZXJj
YWxsLiBUaGlzIGlzIHVubmVjZXNzYXJ5IHdoZW4gdGhlIEZJRk8gQUJJIGlzIHVzZWQsIGJ1dAo+
PiBpdCdzIHNhZmUuIEhlbmNlIHRoaXMgcGF0Y2ggdW5jb25kaXRpb25hbGx5IHJlLW1hc2tzIHBl
bmRpbmcKPj4gZXZlbnRzLCByZWdhcmRsZXNzIG9mIEFCSSwgYmVmb3JlIG1ha2luZyB0aGUgdW5t
YXNrIGh5cGVyY2FsbC4KPiAKPj4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1
cnJhbnRAY2l0cml4LmNvbT4KPiAKPj4gSWYgeW91IGFyZSBvbiBhIFhlbiB0aGF0J3Mgb2xkIGVu
b3VnaCBub3QgdG8gaGF2ZSB0aGUgRklGTyBBQkkKPj4geW91J2xsIGRlZmluaXRlbHkgbmVlZCB0
aGF0IGZpeC4gUGF1bApXZSdyZSB1c2luZyBYZW4gNC4xIGluIFF1YmVzIHIyLCA0LjQgaW4gdGhl
IHVwY29taW5nIHIzLiBJJ2xsIGNoZWNrIG9uCnIzIG9uY2UgaXQgcnVucyBwcm9wZXJseS4KCkFz
IGZvciB0aGUgeGVuYnVzIGZpeCwgSSBkbyBoYXZlIGl0IC0tIEkndmUgY2xvbmVkIHRoZSBzb3Vy
Y2VzIGFuZApidWlsdCBhbGwgdGhlIGRyaXZlcnMgbXlzZWxmIGEgZmV3IGRheXMgYWdvLgo+IAo+
Pj4+IEFsc28gYWRkaW5nIE1hcmVrIHRvIHRoZSBjb252ZXJzYXRpb24sIGhlJ3Mgb25lIG9mIG91
ciBjb3JlIAo+Pj4+IGFyY2hpdGVjdHMgYW5kIGtub3dzIG1vcmUgYWJvdXQgYmFja2VuZCBzdHVm
ZiB0aGFuIEkgZG8gOikKPj4+PiAKPj4+PiAKPj4+Pj4gQ29vbC4KPj4+PiAKPj4+Pj4gUGF1bAo+
Pj4+IAo+Pj4+Pj4+IAo+Pj4+Pj4+PiBQYXVsCj4gCgotIC0tIApSYWZhxYIgV29qZHnFgmEKUXVi
ZXMgVG9vbHMgZm9yIFdpbmRvd3MgZGV2ZWxvcGVyCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0t
LS0tCgppUUVjQkFFQkFnQUdCUUpWQXVYUEFBb0pFSVdpOXJCMkdyVzdMZHNJQUpMaWwvWmVMRmJl
enREeGpvTys4aGo1CmxveHFmeHhuUm82WmtsUzBtL3JsUmlVYjhhZXRzSmRodHdySkhjdXllSWtW
OFp5cFljSXJRNHZzZGlOQ0JzOGkKYXBYUXJObUNydkFoK2ZsSGN1WGJackhFNzJsODF1NGdwaUFv
SkhZUDFGL1dQL05VS3F1YlhvV0ErNno1amFlRQo4Q0pFcmtIZlBuZmxyN3Y0Vjk5Rm1qbktvWTE2
SFNmd3dNS3lrNGxPZWw1ZEtrbDRPaTJZSUdMVitabmpXaW84CmtPNHh4MXhHRjNSUU05SEhLRWM1
dUdhUTE4eVlmaWl5M3NURXY1VjJTWFVyVlJRM0FxWTVCaWpoUmI4aUluT2IKUWYvamdoNlQ2dE53
VEtkTmlBTWcyNTRldE41RnBJRTkwcjNGY0dnRkNtYTNMT2ZUdHRKK3U3VS9DYTkyVUswPQo9RjVK
awotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0KCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:10 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8I-0000R4-4s; Fri, 13 Mar 2015 14:00:10 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8G-0000Qj-Mb
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:08 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	50/57-06842-76DE2055; Fri, 13 Mar 2015 14:00:07 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1426255205!12627411!1
X-Originating-IP: [74.125.82.182]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23596 invoked from network); 13 Mar 2015 14:00:05 -0000
Received: from mail-we0-f182.google.com (HELO mail-we0-f182.google.com)
	(74.125.82.182)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:05 -0000
Received: by wesx3 with SMTP id x3so23547808wes.4
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:subject:date:message-id;
	bh=9z1RCoKz4n2PpEg/7Zm0R+WkRQigYDmA9nRg4LRqEow=;
	b=nK2gnMJ3iEZkNZ1/GKsWa11EXYRvyNiXEzpn5a4tLWKeJxXoCkwt5LyTbN4Ej2AJCq
	2GmtY1UsFTzkAnmfMl+ghLC18/9V6UqEKu0vk+zj1Mc+qYAz+znZNZilln4uxnWyHu3M
	qsbqKwMEszoYkKiSmLIgWHomMrIqrpj0dViYC668t33MSgraiSZwfMxBt4B+Qajo3rP9
	6gHg7a0sNhDmAGjFeUmaIjExJ4TsXUVCVYXdhT4hGyVwaRPVFBbF6U0w9TPXkHMuERyM
	l+IE0S1zAtTibL44ub7FgeE08cMijCkqWfIvfUsNIgfOaznpm+Jz//0jA02JpoOOxlIp
	4vnA==
X-Received: by 10.180.89.34 with SMTP id bl2mr12515088wib.23.1426255205085;
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.04
	for <win-pv-devel@lists.xenproject.org>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:04 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:57 +0000
Message-Id: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Subject: [win-pv-devel] [PATCH 0/3] Fixes an improvments for HCK testing
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

While testing with the 8.1 HCK problems were found with OID handling. This
series fixes those problems and adds a few more improvements as well as
some useful logging that was lost.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:10 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8I-0000R4-4s; Fri, 13 Mar 2015 14:00:10 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8G-0000Qj-Mb
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:08 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	50/57-06842-76DE2055; Fri, 13 Mar 2015 14:00:07 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1426255205!12627411!1
X-Originating-IP: [74.125.82.182]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23596 invoked from network); 13 Mar 2015 14:00:05 -0000
Received: from mail-we0-f182.google.com (HELO mail-we0-f182.google.com)
	(74.125.82.182)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:05 -0000
Received: by wesx3 with SMTP id x3so23547808wes.4
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:subject:date:message-id;
	bh=9z1RCoKz4n2PpEg/7Zm0R+WkRQigYDmA9nRg4LRqEow=;
	b=nK2gnMJ3iEZkNZ1/GKsWa11EXYRvyNiXEzpn5a4tLWKeJxXoCkwt5LyTbN4Ej2AJCq
	2GmtY1UsFTzkAnmfMl+ghLC18/9V6UqEKu0vk+zj1Mc+qYAz+znZNZilln4uxnWyHu3M
	qsbqKwMEszoYkKiSmLIgWHomMrIqrpj0dViYC668t33MSgraiSZwfMxBt4B+Qajo3rP9
	6gHg7a0sNhDmAGjFeUmaIjExJ4TsXUVCVYXdhT4hGyVwaRPVFBbF6U0w9TPXkHMuERyM
	l+IE0S1zAtTibL44ub7FgeE08cMijCkqWfIvfUsNIgfOaznpm+Jz//0jA02JpoOOxlIp
	4vnA==
X-Received: by 10.180.89.34 with SMTP id bl2mr12515088wib.23.1426255205085;
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.04
	for <win-pv-devel@lists.xenproject.org>
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:04 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:57 +0000
Message-Id: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Subject: [win-pv-devel] [PATCH 0/3] Fixes an improvments for HCK testing
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

While testing with the 8.1 HCK problems were found with OID handling. This
series fixes those problems and adds a few more improvements as well as
some useful logging that was lost.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000RQ-5v; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qp-DN
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:09 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
	17/AE-22408-86DE2055; Fri, 13 Mar 2015 14:00:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1426255206!12627418!1
X-Originating-IP: [209.85.212.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23764 invoked from network); 13 Mar 2015 14:00:06 -0000
Received: from mail-wi0-f177.google.com (HELO mail-wi0-f177.google.com)
	(209.85.212.177)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:06 -0000
Received: by widfb4 with SMTP id fb4so12350637wid.0
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=LpFmvFjYynhy/fH+kuBHoACDHsKSDK46zpmRgNmhJZs=;
	b=XcsJWzlFTtNI8SpRiM0IV7jms27QlxRThsIYdzy7UAHi+NJAUpUVAewEC/QdFzbtv0
	u+qcB8XnzUezaDM3YNCY4NejD8QoVa0+1Og6sJEaoUfM+PpqBMSiHuXpyw47uz91fUIt
	IGhRvjvLzQ3CRBp1D+V/NOW+swVVAvdmY3pRVGMVXIjwq1zk0MPQOJ8qpxiwGVfNGWU3
	L3CQoJq4Vv0a+5Cfi32GfZEJT81PDeHwYSFgxcJJhMuI3SeiB0JFIU8sCMLMROb9a7n6
	Cuaq2oQTVYCtmgSmXVGSUIelRO/pcYPkkFWyl6lhXLVCfhFz6Egm+2ZPDt4hCs8kmoZE
	DVmA==
X-Received: by 10.180.106.103 with SMTP id gt7mr141212032wib.59.1426255206059; 
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:58 +0000
Message-Id: <1426255200-11288-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/3] Fix NDISTest PacketFilters test
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The PacketFilters test fails because it has apparently discovered a whole
load of invalid filters. This, as it turns out, is not because of any bug
in the query OID code but rather in the set OID code. The code as it stands
returns success even for setting an invalid filter, and this is why the
test believes those filters are enabled.
This patch stops ignoring the resturn code of AdapterSetPacketFilter and
hence fixes the test.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index 8616579..f96386c 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1093,8 +1093,8 @@ AdapterSetInformation(
     case OID_GEN_CURRENT_PACKET_FILTER:
         BytesNeeded = sizeof(ULONG);
         if (BufferLength == BytesNeeded) {
-            AdapterSetPacketFilter(Adapter,
-                                   (PULONG)Buffer);
+            ndisStatus = AdapterSetPacketFilter(Adapter,
+                                                (PULONG)Buffer);
             BytesRead = sizeof(ULONG);
         }
         break;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000RQ-5v; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qp-DN
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:09 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
	17/AE-22408-86DE2055; Fri, 13 Mar 2015 14:00:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1426255206!12627418!1
X-Originating-IP: [209.85.212.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23764 invoked from network); 13 Mar 2015 14:00:06 -0000
Received: from mail-wi0-f177.google.com (HELO mail-wi0-f177.google.com)
	(209.85.212.177)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:06 -0000
Received: by widfb4 with SMTP id fb4so12350637wid.0
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=LpFmvFjYynhy/fH+kuBHoACDHsKSDK46zpmRgNmhJZs=;
	b=XcsJWzlFTtNI8SpRiM0IV7jms27QlxRThsIYdzy7UAHi+NJAUpUVAewEC/QdFzbtv0
	u+qcB8XnzUezaDM3YNCY4NejD8QoVa0+1Og6sJEaoUfM+PpqBMSiHuXpyw47uz91fUIt
	IGhRvjvLzQ3CRBp1D+V/NOW+swVVAvdmY3pRVGMVXIjwq1zk0MPQOJ8qpxiwGVfNGWU3
	L3CQoJq4Vv0a+5Cfi32GfZEJT81PDeHwYSFgxcJJhMuI3SeiB0JFIU8sCMLMROb9a7n6
	Cuaq2oQTVYCtmgSmXVGSUIelRO/pcYPkkFWyl6lhXLVCfhFz6Egm+2ZPDt4hCs8kmoZE
	DVmA==
X-Received: by 10.180.106.103 with SMTP id gt7mr141212032wib.59.1426255206059; 
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:58 +0000
Message-Id: <1426255200-11288-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/3] Fix NDISTest PacketFilters test
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The PacketFilters test fails because it has apparently discovered a whole
load of invalid filters. This, as it turns out, is not because of any bug
in the query OID code but rather in the set OID code. The code as it stands
returns success even for setting an invalid filter, and this is why the
test believes those filters are enabled.
This patch stops ignoring the resturn code of AdapterSetPacketFilter and
hence fixes the test.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index 8616579..f96386c 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -1093,8 +1093,8 @@ AdapterSetInformation(
     case OID_GEN_CURRENT_PACKET_FILTER:
         BytesNeeded = sizeof(ULONG);
         if (BufferLength == BytesNeeded) {
-            AdapterSetPacketFilter(Adapter,
-                                   (PULONG)Buffer);
+            ndisStatus = AdapterSetPacketFilter(Adapter,
+                                                (PULONG)Buffer);
             BytesRead = sizeof(ULONG);
         }
         break;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000RY-7I; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qr-Q8
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:10 +0000
Received: from [85.158.137.68] by server-16.bemta-3.messagelabs.com id
	10/13-13627-96DE2055; Fri, 13 Mar 2015 14:00:09 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1426255208!9384655!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 26974 invoked from network); 13 Mar 2015 14:00:08 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:08 -0000
Received: by wiwh11 with SMTP id h11so6205200wiw.5
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=VLqx9k2achJyzbriVV0E5uqlS4/wP1JOnPlqE1PQqes=;
	b=AU36nzvyNzXIzqcOfvDnYqEcBkumeadjwaukOOMs4+qKAl45tuGPLD+hvuXHkgE5li
	rQ70h+Se9n+b48m8QyjwTLxqXunwuiG49MHPac514yBmgOSpORz5BcepxQ6A4kIRT0bf
	R+rDqRepwWFn3Zk1mP58Oe5OUwOlflD9yNZbppdAIDes5XI965BqS0FWxz/KjUYBnE6r
	VbtQiFjiRRq1PlqUPwcwhEgTRO+AFV+dQDovjijlBDp6ptoVXEVWHE15qbkBkCpTeTUD
	YwG5qO5ILO4QRF9iRD/O5ao5/ugzmQGGVYHYVMMoMqLN+Gkx5Z/0dOt4sXbJodDVwtbz
	RR3Q==
X-Received: by 10.194.156.133 with SMTP id we5mr99552243wjb.37.1426255207906; 
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.07
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 14:00:00 +0000
Message-Id: <1426255200-11288-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/3] Add back useful information logging that
	was removed
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It is useful to know when various offloads are enabled or disabled. That
information used to be logged but the logging macro was removed for some
reason when the multi-queue patches were added. This patch adds that
logging back in.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 67 insertions(+), 2 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index c2df640..69a9c44 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -189,6 +189,71 @@ AdapterVifCallback(
     va_end(Arguments);
 }
 
+#define DISPLAY_OFFLOAD(_Offload)                                   \
+        do {                                                        \
+            if ((_Offload).Checksum.IPv4Receive.IpChecksum)         \
+                Info("Checksum.IPv4Receive.IpChecksum ON\n");       \
+            else                                                    \
+                Info("Checksum.IPv4Receive.IpChecksum OFF\n");      \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Receive.TcpChecksum)        \
+                Info("Checksum.IPv4Receive.TcpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Receive.TcpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Receive.UdpChecksum)        \
+                Info("Checksum.IPv4Receive.UdpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Receive.UdpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Receive.TcpChecksum)        \
+                Info("Checksum.IPv6Receive.TcpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv6Receive.TcpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Receive.UdpChecksum)        \
+                Info("Checksum.IPv6Receive.UdpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv6Receive.UdpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.IpChecksum)        \
+                Info("Checksum.IPv4Transmit.IpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.IpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.TcpChecksum)       \
+                Info("Checksum.IPv4Transmit.TcpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.TcpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.UdpChecksum)       \
+                Info("Checksum.IPv4Transmit.UdpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.UdpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Transmit.TcpChecksum)       \
+                Info("Checksum.IPv6Transmit.TcpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv6Transmit.TcpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Transmit.UdpChecksum)       \
+                Info("Checksum.IPv6Transmit.UdpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv6Transmit.UdpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).LsoV2.IPv4.MaxOffLoadSize != 0)          \
+                Info("LsoV2.IPv4.MaxOffLoadSize = %u\n",            \
+                     (_Offload).LsoV2.IPv4.MaxOffLoadSize);         \
+            else                                                    \
+                Info("LsoV2.IPv4 OFF\n");                           \
+                                                                    \
+            if ((_Offload).LsoV2.IPv6.MaxOffLoadSize != 0)          \
+                Info("LsoV2.IPv6.MaxOffLoadSize = %u\n",            \
+                     (_Offload).LsoV2.IPv6.MaxOffLoadSize);         \
+            else                                                    \
+                Info("LsoV2.IPv6 OFF\n");                           \
+        } while (FALSE)
+
 static VOID
 AdapterIndicateOffloadChanged(
     IN  PXENNET_ADAPTER         Adapter
@@ -283,7 +348,7 @@ AdapterIndicateOffloadChanged(
 
     if (!RtlEqualMemory(&Adapter->Offload, &Offload, sizeof(NDIS_OFFLOAD))) {
         Adapter->Offload = Offload;
-        // DISPPLAY_OFFLOAD(Offload);
+        DISPLAY_OFFLOAD(Offload);
     }
 
     RtlZeroMemory(&Status, sizeof(NDIS_STATUS_INDICATION));
@@ -2067,7 +2132,7 @@ AdapterSetOffloadAttributes(
 
     if (!RtlEqualMemory(&Adapter->Offload, &Default, sizeof (NDIS_OFFLOAD))) {
         Adapter->Offload = Default;
-        //DISPLAY_OFFLOAD(Default);
+        DISPLAY_OFFLOAD(Default);
     }
 
     RtlZeroMemory(&Attribs, sizeof(NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES));
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000RY-7I; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qr-Q8
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:10 +0000
Received: from [85.158.137.68] by server-16.bemta-3.messagelabs.com id
	10/13-13627-96DE2055; Fri, 13 Mar 2015 14:00:09 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1426255208!9384655!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 26974 invoked from network); 13 Mar 2015 14:00:08 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:08 -0000
Received: by wiwh11 with SMTP id h11so6205200wiw.5
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=VLqx9k2achJyzbriVV0E5uqlS4/wP1JOnPlqE1PQqes=;
	b=AU36nzvyNzXIzqcOfvDnYqEcBkumeadjwaukOOMs4+qKAl45tuGPLD+hvuXHkgE5li
	rQ70h+Se9n+b48m8QyjwTLxqXunwuiG49MHPac514yBmgOSpORz5BcepxQ6A4kIRT0bf
	R+rDqRepwWFn3Zk1mP58Oe5OUwOlflD9yNZbppdAIDes5XI965BqS0FWxz/KjUYBnE6r
	VbtQiFjiRRq1PlqUPwcwhEgTRO+AFV+dQDovjijlBDp6ptoVXEVWHE15qbkBkCpTeTUD
	YwG5qO5ILO4QRF9iRD/O5ao5/ugzmQGGVYHYVMMoMqLN+Gkx5Z/0dOt4sXbJodDVwtbz
	RR3Q==
X-Received: by 10.194.156.133 with SMTP id we5mr99552243wjb.37.1426255207906; 
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.07
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 14:00:00 +0000
Message-Id: <1426255200-11288-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/3] Add back useful information logging that
	was removed
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It is useful to know when various offloads are enabled or disabled. That
information used to be logged but the logging macro was removed for some
reason when the multi-queue patches were added. This patch adds that
logging back in.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 67 insertions(+), 2 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index c2df640..69a9c44 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -189,6 +189,71 @@ AdapterVifCallback(
     va_end(Arguments);
 }
 
+#define DISPLAY_OFFLOAD(_Offload)                                   \
+        do {                                                        \
+            if ((_Offload).Checksum.IPv4Receive.IpChecksum)         \
+                Info("Checksum.IPv4Receive.IpChecksum ON\n");       \
+            else                                                    \
+                Info("Checksum.IPv4Receive.IpChecksum OFF\n");      \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Receive.TcpChecksum)        \
+                Info("Checksum.IPv4Receive.TcpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Receive.TcpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Receive.UdpChecksum)        \
+                Info("Checksum.IPv4Receive.UdpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Receive.UdpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Receive.TcpChecksum)        \
+                Info("Checksum.IPv6Receive.TcpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv6Receive.TcpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Receive.UdpChecksum)        \
+                Info("Checksum.IPv6Receive.UdpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv6Receive.UdpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.IpChecksum)        \
+                Info("Checksum.IPv4Transmit.IpChecksum ON\n");      \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.IpChecksum OFF\n");     \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.TcpChecksum)       \
+                Info("Checksum.IPv4Transmit.TcpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.TcpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv4Transmit.UdpChecksum)       \
+                Info("Checksum.IPv4Transmit.UdpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv4Transmit.UdpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Transmit.TcpChecksum)       \
+                Info("Checksum.IPv6Transmit.TcpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv6Transmit.TcpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).Checksum.IPv6Transmit.UdpChecksum)       \
+                Info("Checksum.IPv6Transmit.UdpChecksum ON\n");     \
+            else                                                    \
+                Info("Checksum.IPv6Transmit.UdpChecksum OFF\n");    \
+                                                                    \
+            if ((_Offload).LsoV2.IPv4.MaxOffLoadSize != 0)          \
+                Info("LsoV2.IPv4.MaxOffLoadSize = %u\n",            \
+                     (_Offload).LsoV2.IPv4.MaxOffLoadSize);         \
+            else                                                    \
+                Info("LsoV2.IPv4 OFF\n");                           \
+                                                                    \
+            if ((_Offload).LsoV2.IPv6.MaxOffLoadSize != 0)          \
+                Info("LsoV2.IPv6.MaxOffLoadSize = %u\n",            \
+                     (_Offload).LsoV2.IPv6.MaxOffLoadSize);         \
+            else                                                    \
+                Info("LsoV2.IPv6 OFF\n");                           \
+        } while (FALSE)
+
 static VOID
 AdapterIndicateOffloadChanged(
     IN  PXENNET_ADAPTER         Adapter
@@ -283,7 +348,7 @@ AdapterIndicateOffloadChanged(
 
     if (!RtlEqualMemory(&Adapter->Offload, &Offload, sizeof(NDIS_OFFLOAD))) {
         Adapter->Offload = Offload;
-        // DISPPLAY_OFFLOAD(Offload);
+        DISPLAY_OFFLOAD(Offload);
     }
 
     RtlZeroMemory(&Status, sizeof(NDIS_STATUS_INDICATION));
@@ -2067,7 +2132,7 @@ AdapterSetOffloadAttributes(
 
     if (!RtlEqualMemory(&Adapter->Offload, &Default, sizeof (NDIS_OFFLOAD))) {
         Adapter->Offload = Default;
-        //DISPLAY_OFFLOAD(Default);
+        DISPLAY_OFFLOAD(Default);
     }
 
     RtlZeroMemory(&Attribs, sizeof(NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES));
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000Ro-8p; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qq-O6
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:10 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	3F/99-09011-86DE2055; Fri, 13 Mar 2015 14:00:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1426255207!11765675!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30516 invoked from network); 13 Mar 2015 14:00:07 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:07 -0000
Received: by widex7 with SMTP id ex7so6248136wid.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=Fi33EK47ksukn1csKb8PbUAizqdaRf4rlRASf4JlXSs=;
	b=lvMfcor+EeqDO3Sm4+Eryj2Ph5puMEsIKreEXWlywFMrqnrvjynXFvCOFU+iLR2b+r
	diBpifbZ2HH4GZyWQxB8O5CJc7snQdesPGVscy1jPjEYcs+6gXdmtjtUeEzhCA+FNrOx
	u6GXYq4PYwvaggD26FM0HEVTQffqGA/Zz03+uvpNRIDsOMV8rUQ4tLGC1/6pv3Xmlnja
	XCiQUHEkfg0b6r04CKdbIBArCk2WGdaj8RiCe2Nf4VdV2NJNMYv6GTW7GjsJDvkh6Ncx
	MrVKUcAcmMt1Y0t0iIhNP0qFOV1byNQoOlgdmAuJrkLRHW60lQ99I6/CNu2fENxuDd46
	Vcfg==
X-Received: by 10.180.35.72 with SMTP id f8mr140486106wij.31.1426255207039;
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.06
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:59 +0000
Message-Id: <1426255200-11288-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/3] OID handling improvements
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The query OID code contains several mistakes in setting BytesNeeded and
BytesWritten. This patch re-factors the code slightly to fix those
mistakes and also adds warnings is the stack tries to query or set an OID
that we do not handle.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 177 ++++++++++++++++++++++++++++++++-------------------
 1 file changed, 110 insertions(+), 67 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index f96386c..c2df640 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -30,6 +30,7 @@
  */
 
 #include <ndis.h>
+#include <stdlib.h>
 #include "adapter.h"
 #include "transmitter.h"
 #include "receiver.h"
@@ -1064,15 +1065,17 @@ AdapterSetInformation(
     IN  PNDIS_OID_REQUEST   Request
     )
 {
-    PVOID           Buffer;
-    ULONG           BufferLength;
-    ULONG           BytesNeeded;
-    ULONG           BytesRead;
-    NDIS_STATUS     ndisStatus;
+    PVOID                   Buffer;
+    ULONG                   BufferLength;
+    ULONG                   BytesNeeded;
+    ULONG                   BytesRead;
+    BOOLEAN                 Warn;
+    NDIS_STATUS             ndisStatus;
 
     Buffer = Request->DATA.SET_INFORMATION.InformationBuffer;
     BufferLength = Request->DATA.SET_INFORMATION.InformationBufferLength;
     BytesNeeded = BytesRead = 0;
+    Warn = TRUE;
     ndisStatus = NDIS_STATUS_SUCCESS;
 
     switch (Request->DATA.SET_INFORMATION.Oid) {
@@ -1134,7 +1137,12 @@ AdapterSetInformation(
 
     case OID_GEN_INTERRUPT_MODERATION:
     case OID_GEN_MACHINE_NAME:
+        Warn = FALSE;
+        /*FALLTHRU*/
     default:
+        if (Warn)
+            Warning("UNSUPPORTED OID %08x\n", Request->DATA.QUERY_INFORMATION.Oid);
+
         ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
         break;
     }
@@ -1148,61 +1156,55 @@ AdapterSetInformation(
 
 static FORCEINLINE NDIS_STATUS
 __CopyBuffer(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  PVOID               Source,
-    IN  ULONG               SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  PVOID   Source,
+    IN  ULONG   SourceLength,
+    OUT PULONG  CopyLength
     )
 {
-    if (BufferLength >= SourceLength) {
-        RtlCopyMemory(Buffer, Source, SourceLength);
-        return NDIS_STATUS_SUCCESS;
-    }
+    *CopyLength = __min(SourceLength, DestinationLength);
+    RtlCopyMemory(Destination, Source, *CopyLength);
 
-    RtlCopyMemory(Buffer, Source, BufferLength);
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return (DestinationLength >= SourceLength) ?
+           NDIS_STATUS_SUCCESS :
+           NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
 __SetUlong(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  ULONG               Source,
-    IN OUT PULONG           SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  ULONG   Source,
+    OUT PULONG  CopyLength
     )
 {
-    *SourceLength = sizeof(ULONG);
-
-    if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = (ULONG)Source;
-        return NDIS_STATUS_SUCCESS;
-    }
-
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return __CopyBuffer(Destination,
+                        DestinationLength & ~3,
+                        &Source,
+                        sizeof (ULONG),
+                        CopyLength);
 }
 
 static FORCEINLINE NDIS_STATUS
 __SetUlong64(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  ULONGLONG           Source,
-    IN OUT PULONG           SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  ULONG64 Source,
+    OUT PULONG  CopyLength
     )
 {
-    *SourceLength = sizeof(ULONGLONG);
-
-    if (BufferLength >= sizeof(ULONGLONG)) {
-        *(PULONGLONG)Buffer = Source;
-        return NDIS_STATUS_SUCCESS;
-    }
+    NDIS_STATUS ndisStatus;
 
-    if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = (ULONG)Source;
-        *SourceLength = sizeof(ULONG);
-        return NDIS_STATUS_SUCCESS;
-    }
+    ndisStatus =  __CopyBuffer(Destination,
+                               DestinationLength & ~3,
+                               &Source,
+                               sizeof (ULONG64),
+                               CopyLength);
+    if (DestinationLength >= 4)
+        ndisStatus = NDIS_STATUS_SUCCESS;
 
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return ndisStatus;
 }
 
 NDIS_STATUS
@@ -1211,27 +1213,30 @@ AdapterQueryInformation(
     IN  PNDIS_OID_REQUEST   Request
     )
 {
-    PVOID           Buffer;
-    ULONG           BufferLength;
-    ULONG           BytesNeeded;
-    ULONG           BytesWritten;
-    ULONG           Value32;
-    ULONGLONG       Value64;
-    ETHERNET_ADDRESS    EthernetAddress;
-    NDIS_STATUS     ndisStatus;
+    PVOID                   Buffer;
+    ULONG                   BufferLength;
+    ULONG                   BytesNeeded;
+    ULONG                   BytesWritten;
+    ULONG                   Value32;
+    ULONGLONG               Value64;
+    ETHERNET_ADDRESS        EthernetAddress;
+    BOOLEAN                 Warn;
+    NDIS_STATUS             ndisStatus;
 
     Buffer = Request->DATA.QUERY_INFORMATION.InformationBuffer;
     BufferLength = Request->DATA.QUERY_INFORMATION.InformationBufferLength;
-    BytesNeeded = BytesWritten = sizeof(ULONG);
+    BytesNeeded = BytesWritten = 0;
+    Warn = TRUE;
     ndisStatus = NDIS_STATUS_SUCCESS;
 
     switch (Request->DATA.QUERY_INFORMATION.Oid) {
     case OID_PNP_CAPABILITIES:
-        BytesNeeded = BytesWritten = sizeof(Adapter->Capabilities);
+        BytesNeeded = sizeof(Adapter->Capabilities);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &Adapter->Capabilities,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_PNP_QUERY_POWER:
@@ -1241,14 +1246,16 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_SUPPORTED_LIST:
-        BytesNeeded = BytesWritten = sizeof(XennetSupportedOids);
+        BytesNeeded = sizeof(XennetSupportedOids);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &XennetSupportedOids[0],
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_HARDWARE_STATUS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 NdisHardwareStatusReady,
@@ -1257,6 +1264,7 @@ AdapterQueryInformation(
 
     case OID_GEN_MEDIA_SUPPORTED:
     case OID_GEN_MEDIA_IN_USE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 XENNET_MEDIA_TYPE,
@@ -1266,6 +1274,7 @@ AdapterQueryInformation(
     case OID_GEN_MAXIMUM_LOOKAHEAD:
     case OID_GEN_TRANSMIT_BLOCK_SIZE:
     case OID_GEN_RECEIVE_BLOCK_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize,
@@ -1278,6 +1287,7 @@ AdapterQueryInformation(
                     &Adapter->VifInterface,
                     (PULONG)&Value32);
         Value32 *= Adapter->MaximumFrameSize;
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1285,14 +1295,16 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_VENDOR_DESCRIPTION:
-        BytesNeeded = BytesWritten = (ULONG)strlen(COMPANY_NAME_STR) + 1;
+        BytesNeeded = (ULONG)strlen(COMPANY_NAME_STR) + 1;
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   COMPANY_NAME_STR,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_VENDOR_DRIVER_VERSION:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 ((MAJOR_VERSION << 8) | MINOR_VERSION) << 8,
@@ -1300,6 +1312,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_DRIVER_VERSION:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (6 << 8) | 0, // NDIS 6.0
@@ -1307,6 +1320,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAC_OPTIONS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 XENNET_MAC_OPTIONS,
@@ -1314,7 +1328,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_STATISTICS:
-        BytesNeeded = BytesWritten = sizeof(NDIS_STATISTICS_INFO);
+        BytesNeeded = sizeof(NDIS_STATISTICS_INFO);
         ndisStatus = AdapterQueryGeneralStatistics(Adapter,
                                                    (PNDIS_STATISTICS_INFO)Buffer,
                                                    BufferLength,
@@ -1333,25 +1347,28 @@ AdapterQueryInformation(
         XENVIF_VIF(MacQueryPermanentAddress,
                     &Adapter->VifInterface,
                     &EthernetAddress);
-        BytesNeeded = BytesWritten = sizeof(ETHERNET_ADDRESS);
+        BytesNeeded = sizeof(ETHERNET_ADDRESS);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_802_3_CURRENT_ADDRESS:
         XENVIF_VIF(MacQueryCurrentAddress,
                     &Adapter->VifInterface,
                     &EthernetAddress);
-        BytesNeeded = BytesWritten = sizeof(ETHERNET_ADDRESS);
+        BytesNeeded = sizeof(ETHERNET_ADDRESS);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_MAXIMUM_FRAME_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize -
@@ -1360,6 +1377,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAXIMUM_TOTAL_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize -
@@ -1369,6 +1387,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_CURRENT_LOOKAHEAD:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->CurrentLookahead,
@@ -1376,6 +1395,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_VENDOR_ID:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 0x5853,
@@ -1388,6 +1408,7 @@ AdapterQueryInformation(
                    NULL,
                    &Value64,
                    NULL);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)(Value64 / 100),
@@ -1400,6 +1421,7 @@ AdapterQueryInformation(
                     (PNET_IF_MEDIA_CONNECT_STATE)&Value32,
                     NULL,
                     NULL);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1407,6 +1429,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAXIMUM_SEND_PACKETS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 16,
@@ -1415,6 +1438,7 @@ AdapterQueryInformation(
 
     case OID_GEN_CURRENT_PACKET_FILTER:
         AdapterGetPacketFilter(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1423,6 +1447,7 @@ AdapterQueryInformation(
 
     case OID_GEN_XMIT_OK:
         AdapterGetXmitOk(Adapter, &Value64);
+        BytesNeeded = sizeof(ULONG64);
         ndisStatus = __SetUlong64(Buffer,
                                   BufferLength,
                                   Value64,
@@ -1431,6 +1456,7 @@ AdapterQueryInformation(
 
     case OID_GEN_RCV_OK:
         AdapterGetRcvOk(Adapter, &Value64);
+        BytesNeeded = sizeof(ULONG64);
         ndisStatus = __SetUlong64(Buffer,
                                   BufferLength,
                                   Value64,
@@ -1439,6 +1465,7 @@ AdapterQueryInformation(
 
     case OID_GEN_XMIT_ERROR:
         AdapterGetXmitError(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1447,6 +1474,7 @@ AdapterQueryInformation(
 
     case OID_GEN_RCV_ERROR:
         AdapterGetRcvError(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1459,6 +1487,7 @@ AdapterQueryInformation(
     case OID_802_3_RCV_ERROR_ALIGNMENT:
     case OID_802_3_XMIT_ONE_COLLISION:
     case OID_802_3_XMIT_MORE_COLLISIONS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 0,
@@ -1466,6 +1495,7 @@ AdapterQueryInformation(
         break;
 
     case OID_802_3_MAXIMUM_LIST_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 32,
@@ -1477,6 +1507,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_UNICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1488,6 +1519,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_UNICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1499,6 +1531,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_MULTICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1510,6 +1543,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_MULTICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1521,6 +1555,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_BROADCAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1532,6 +1567,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_BROADCAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1543,6 +1579,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_UNICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1554,6 +1591,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_UNICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1565,6 +1603,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_MULTICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1576,6 +1615,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_MULTICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1587,6 +1627,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_BROADCAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1598,6 +1639,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_BROADCAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1615,19 +1657,20 @@ AdapterQueryInformation(
     case OID_IP4_OFFLOAD_STATS:
     case OID_IP6_OFFLOAD_STATS:
     case OID_GEN_SUPPORTED_GUIDS:
-
         // We don't handle these since NDIS 6.0 is supposed to do this for us
     case OID_GEN_MAC_ADDRESS:
     case OID_GEN_MAX_LINK_SPEED:
-
         // ignore these common unwanted OIDs
 	case OID_GEN_INIT_TIME_MS:
 	case OID_GEN_RESET_COUNTS:
 	case OID_GEN_MEDIA_SENSE_COUNTS:
-
+        Warn = FALSE;
+        /*FALLTHRU*/
     default:
+        if (Warn)
+            Warning("UNSUPPORTED OID %08x\n", Request->DATA.QUERY_INFORMATION.Oid);
+
         ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
-        BytesNeeded = 0;
         break;
     }
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 14:00:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWQ8J-0000Ro-8p; Fri, 13 Mar 2015 14:00:11 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWQ8H-0000Qq-O6
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 14:00:10 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	3F/99-09011-86DE2055; Fri, 13 Mar 2015 14:00:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1426255207!11765675!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30516 invoked from network); 13 Mar 2015 14:00:07 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 14:00:07 -0000
Received: by widex7 with SMTP id ex7so6248136wid.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=Fi33EK47ksukn1csKb8PbUAizqdaRf4rlRASf4JlXSs=;
	b=lvMfcor+EeqDO3Sm4+Eryj2Ph5puMEsIKreEXWlywFMrqnrvjynXFvCOFU+iLR2b+r
	diBpifbZ2HH4GZyWQxB8O5CJc7snQdesPGVscy1jPjEYcs+6gXdmtjtUeEzhCA+FNrOx
	u6GXYq4PYwvaggD26FM0HEVTQffqGA/Zz03+uvpNRIDsOMV8rUQ4tLGC1/6pv3Xmlnja
	XCiQUHEkfg0b6r04CKdbIBArCk2WGdaj8RiCe2Nf4VdV2NJNMYv6GTW7GjsJDvkh6Ncx
	MrVKUcAcmMt1Y0t0iIhNP0qFOV1byNQoOlgdmAuJrkLRHW60lQ99I6/CNu2fENxuDd46
	Vcfg==
X-Received: by 10.180.35.72 with SMTP id f8mr140486106wij.31.1426255207039;
	Fri, 13 Mar 2015 07:00:07 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id n6sm2956003wjy.8.2015.03.13.07.00.06
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 07:00:06 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 13:59:59 +0000
Message-Id: <1426255200-11288-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
References: <1426255200-11288-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/3] OID handling improvements
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The query OID code contains several mistakes in setting BytesNeeded and
BytesWritten. This patch re-factors the code slightly to fix those
mistakes and also adds warnings is the stack tries to query or set an OID
that we do not handle.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/adapter.c | 177 ++++++++++++++++++++++++++++++++-------------------
 1 file changed, 110 insertions(+), 67 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index f96386c..c2df640 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -30,6 +30,7 @@
  */
 
 #include <ndis.h>
+#include <stdlib.h>
 #include "adapter.h"
 #include "transmitter.h"
 #include "receiver.h"
@@ -1064,15 +1065,17 @@ AdapterSetInformation(
     IN  PNDIS_OID_REQUEST   Request
     )
 {
-    PVOID           Buffer;
-    ULONG           BufferLength;
-    ULONG           BytesNeeded;
-    ULONG           BytesRead;
-    NDIS_STATUS     ndisStatus;
+    PVOID                   Buffer;
+    ULONG                   BufferLength;
+    ULONG                   BytesNeeded;
+    ULONG                   BytesRead;
+    BOOLEAN                 Warn;
+    NDIS_STATUS             ndisStatus;
 
     Buffer = Request->DATA.SET_INFORMATION.InformationBuffer;
     BufferLength = Request->DATA.SET_INFORMATION.InformationBufferLength;
     BytesNeeded = BytesRead = 0;
+    Warn = TRUE;
     ndisStatus = NDIS_STATUS_SUCCESS;
 
     switch (Request->DATA.SET_INFORMATION.Oid) {
@@ -1134,7 +1137,12 @@ AdapterSetInformation(
 
     case OID_GEN_INTERRUPT_MODERATION:
     case OID_GEN_MACHINE_NAME:
+        Warn = FALSE;
+        /*FALLTHRU*/
     default:
+        if (Warn)
+            Warning("UNSUPPORTED OID %08x\n", Request->DATA.QUERY_INFORMATION.Oid);
+
         ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
         break;
     }
@@ -1148,61 +1156,55 @@ AdapterSetInformation(
 
 static FORCEINLINE NDIS_STATUS
 __CopyBuffer(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  PVOID               Source,
-    IN  ULONG               SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  PVOID   Source,
+    IN  ULONG   SourceLength,
+    OUT PULONG  CopyLength
     )
 {
-    if (BufferLength >= SourceLength) {
-        RtlCopyMemory(Buffer, Source, SourceLength);
-        return NDIS_STATUS_SUCCESS;
-    }
+    *CopyLength = __min(SourceLength, DestinationLength);
+    RtlCopyMemory(Destination, Source, *CopyLength);
 
-    RtlCopyMemory(Buffer, Source, BufferLength);
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return (DestinationLength >= SourceLength) ?
+           NDIS_STATUS_SUCCESS :
+           NDIS_STATUS_BUFFER_TOO_SHORT;
 }
 
 static FORCEINLINE NDIS_STATUS
 __SetUlong(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  ULONG               Source,
-    IN OUT PULONG           SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  ULONG   Source,
+    OUT PULONG  CopyLength
     )
 {
-    *SourceLength = sizeof(ULONG);
-
-    if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = (ULONG)Source;
-        return NDIS_STATUS_SUCCESS;
-    }
-
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return __CopyBuffer(Destination,
+                        DestinationLength & ~3,
+                        &Source,
+                        sizeof (ULONG),
+                        CopyLength);
 }
 
 static FORCEINLINE NDIS_STATUS
 __SetUlong64(
-    IN  PVOID               Buffer,
-    IN  ULONG               BufferLength,
-    IN  ULONGLONG           Source,
-    IN OUT PULONG           SourceLength
+    IN  PVOID   Destination,
+    IN  ULONG   DestinationLength,
+    IN  ULONG64 Source,
+    OUT PULONG  CopyLength
     )
 {
-    *SourceLength = sizeof(ULONGLONG);
-
-    if (BufferLength >= sizeof(ULONGLONG)) {
-        *(PULONGLONG)Buffer = Source;
-        return NDIS_STATUS_SUCCESS;
-    }
+    NDIS_STATUS ndisStatus;
 
-    if (BufferLength >= sizeof(ULONG)) {
-        *(PULONG)Buffer = (ULONG)Source;
-        *SourceLength = sizeof(ULONG);
-        return NDIS_STATUS_SUCCESS;
-    }
+    ndisStatus =  __CopyBuffer(Destination,
+                               DestinationLength & ~3,
+                               &Source,
+                               sizeof (ULONG64),
+                               CopyLength);
+    if (DestinationLength >= 4)
+        ndisStatus = NDIS_STATUS_SUCCESS;
 
-    return NDIS_STATUS_BUFFER_TOO_SHORT;
+    return ndisStatus;
 }
 
 NDIS_STATUS
@@ -1211,27 +1213,30 @@ AdapterQueryInformation(
     IN  PNDIS_OID_REQUEST   Request
     )
 {
-    PVOID           Buffer;
-    ULONG           BufferLength;
-    ULONG           BytesNeeded;
-    ULONG           BytesWritten;
-    ULONG           Value32;
-    ULONGLONG       Value64;
-    ETHERNET_ADDRESS    EthernetAddress;
-    NDIS_STATUS     ndisStatus;
+    PVOID                   Buffer;
+    ULONG                   BufferLength;
+    ULONG                   BytesNeeded;
+    ULONG                   BytesWritten;
+    ULONG                   Value32;
+    ULONGLONG               Value64;
+    ETHERNET_ADDRESS        EthernetAddress;
+    BOOLEAN                 Warn;
+    NDIS_STATUS             ndisStatus;
 
     Buffer = Request->DATA.QUERY_INFORMATION.InformationBuffer;
     BufferLength = Request->DATA.QUERY_INFORMATION.InformationBufferLength;
-    BytesNeeded = BytesWritten = sizeof(ULONG);
+    BytesNeeded = BytesWritten = 0;
+    Warn = TRUE;
     ndisStatus = NDIS_STATUS_SUCCESS;
 
     switch (Request->DATA.QUERY_INFORMATION.Oid) {
     case OID_PNP_CAPABILITIES:
-        BytesNeeded = BytesWritten = sizeof(Adapter->Capabilities);
+        BytesNeeded = sizeof(Adapter->Capabilities);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &Adapter->Capabilities,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_PNP_QUERY_POWER:
@@ -1241,14 +1246,16 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_SUPPORTED_LIST:
-        BytesNeeded = BytesWritten = sizeof(XennetSupportedOids);
+        BytesNeeded = sizeof(XennetSupportedOids);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &XennetSupportedOids[0],
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_HARDWARE_STATUS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 NdisHardwareStatusReady,
@@ -1257,6 +1264,7 @@ AdapterQueryInformation(
 
     case OID_GEN_MEDIA_SUPPORTED:
     case OID_GEN_MEDIA_IN_USE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 XENNET_MEDIA_TYPE,
@@ -1266,6 +1274,7 @@ AdapterQueryInformation(
     case OID_GEN_MAXIMUM_LOOKAHEAD:
     case OID_GEN_TRANSMIT_BLOCK_SIZE:
     case OID_GEN_RECEIVE_BLOCK_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize,
@@ -1278,6 +1287,7 @@ AdapterQueryInformation(
                     &Adapter->VifInterface,
                     (PULONG)&Value32);
         Value32 *= Adapter->MaximumFrameSize;
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1285,14 +1295,16 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_VENDOR_DESCRIPTION:
-        BytesNeeded = BytesWritten = (ULONG)strlen(COMPANY_NAME_STR) + 1;
+        BytesNeeded = (ULONG)strlen(COMPANY_NAME_STR) + 1;
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   COMPANY_NAME_STR,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_VENDOR_DRIVER_VERSION:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 ((MAJOR_VERSION << 8) | MINOR_VERSION) << 8,
@@ -1300,6 +1312,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_DRIVER_VERSION:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (6 << 8) | 0, // NDIS 6.0
@@ -1307,6 +1320,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAC_OPTIONS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 XENNET_MAC_OPTIONS,
@@ -1314,7 +1328,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_STATISTICS:
-        BytesNeeded = BytesWritten = sizeof(NDIS_STATISTICS_INFO);
+        BytesNeeded = sizeof(NDIS_STATISTICS_INFO);
         ndisStatus = AdapterQueryGeneralStatistics(Adapter,
                                                    (PNDIS_STATISTICS_INFO)Buffer,
                                                    BufferLength,
@@ -1333,25 +1347,28 @@ AdapterQueryInformation(
         XENVIF_VIF(MacQueryPermanentAddress,
                     &Adapter->VifInterface,
                     &EthernetAddress);
-        BytesNeeded = BytesWritten = sizeof(ETHERNET_ADDRESS);
+        BytesNeeded = sizeof(ETHERNET_ADDRESS);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_802_3_CURRENT_ADDRESS:
         XENVIF_VIF(MacQueryCurrentAddress,
                     &Adapter->VifInterface,
                     &EthernetAddress);
-        BytesNeeded = BytesWritten = sizeof(ETHERNET_ADDRESS);
+        BytesNeeded = sizeof(ETHERNET_ADDRESS);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
                                   &EthernetAddress,
-                                  BytesWritten);
+                                  BytesNeeded,
+                                  &BytesWritten);
         break;
 
     case OID_GEN_MAXIMUM_FRAME_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize -
@@ -1360,6 +1377,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAXIMUM_TOTAL_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->MaximumFrameSize -
@@ -1369,6 +1387,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_CURRENT_LOOKAHEAD:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Adapter->CurrentLookahead,
@@ -1376,6 +1395,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_VENDOR_ID:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 0x5853,
@@ -1388,6 +1408,7 @@ AdapterQueryInformation(
                    NULL,
                    &Value64,
                    NULL);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)(Value64 / 100),
@@ -1400,6 +1421,7 @@ AdapterQueryInformation(
                     (PNET_IF_MEDIA_CONNECT_STATE)&Value32,
                     NULL,
                     NULL);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1407,6 +1429,7 @@ AdapterQueryInformation(
         break;
 
     case OID_GEN_MAXIMUM_SEND_PACKETS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 16,
@@ -1415,6 +1438,7 @@ AdapterQueryInformation(
 
     case OID_GEN_CURRENT_PACKET_FILTER:
         AdapterGetPacketFilter(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1423,6 +1447,7 @@ AdapterQueryInformation(
 
     case OID_GEN_XMIT_OK:
         AdapterGetXmitOk(Adapter, &Value64);
+        BytesNeeded = sizeof(ULONG64);
         ndisStatus = __SetUlong64(Buffer,
                                   BufferLength,
                                   Value64,
@@ -1431,6 +1456,7 @@ AdapterQueryInformation(
 
     case OID_GEN_RCV_OK:
         AdapterGetRcvOk(Adapter, &Value64);
+        BytesNeeded = sizeof(ULONG64);
         ndisStatus = __SetUlong64(Buffer,
                                   BufferLength,
                                   Value64,
@@ -1439,6 +1465,7 @@ AdapterQueryInformation(
 
     case OID_GEN_XMIT_ERROR:
         AdapterGetXmitError(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1447,6 +1474,7 @@ AdapterQueryInformation(
 
     case OID_GEN_RCV_ERROR:
         AdapterGetRcvError(Adapter, &Value32);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 Value32,
@@ -1459,6 +1487,7 @@ AdapterQueryInformation(
     case OID_802_3_RCV_ERROR_ALIGNMENT:
     case OID_802_3_XMIT_ONE_COLLISION:
     case OID_802_3_XMIT_MORE_COLLISIONS:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 0,
@@ -1466,6 +1495,7 @@ AdapterQueryInformation(
         break;
 
     case OID_802_3_MAXIMUM_LIST_SIZE:
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 32,
@@ -1477,6 +1507,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_UNICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1488,6 +1519,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_UNICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1499,6 +1531,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_MULTICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1510,6 +1543,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_MULTICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1521,6 +1555,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_BROADCAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1532,6 +1567,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_TRANSMITTER_BROADCAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1543,6 +1579,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_UNICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1554,6 +1591,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_UNICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1565,6 +1603,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_MULTICAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1576,6 +1615,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_MULTICAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1587,6 +1627,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_BROADCAST_OCTETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1598,6 +1639,7 @@ AdapterQueryInformation(
                    &Adapter->VifInterface,
                    XENVIF_RECEIVER_BROADCAST_PACKETS,
                    &Value64);
+        BytesNeeded = sizeof(ULONG);
         ndisStatus = __SetUlong(Buffer,
                                 BufferLength,
                                 (ULONG)Value64,
@@ -1615,19 +1657,20 @@ AdapterQueryInformation(
     case OID_IP4_OFFLOAD_STATS:
     case OID_IP6_OFFLOAD_STATS:
     case OID_GEN_SUPPORTED_GUIDS:
-
         // We don't handle these since NDIS 6.0 is supposed to do this for us
     case OID_GEN_MAC_ADDRESS:
     case OID_GEN_MAX_LINK_SPEED:
-
         // ignore these common unwanted OIDs
 	case OID_GEN_INIT_TIME_MS:
 	case OID_GEN_RESET_COUNTS:
 	case OID_GEN_MEDIA_SENSE_COUNTS:
-
+        Warn = FALSE;
+        /*FALLTHRU*/
     default:
+        if (Warn)
+            Warning("UNSUPPORTED OID %08x\n", Request->DATA.QUERY_INFORMATION.Oid);
+
         ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
-        BytesNeeded = 0;
         break;
     }
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 15:43:29 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 15:43:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWRkH-00034z-FT; Fri, 13 Mar 2015 15:43:29 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWRkH-00034k-3L
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 15:43:29 +0000
Received: from [85.158.139.211] by server-10.bemta-5.messagelabs.com id
	1E/4B-06536-0A503055; Fri, 13 Mar 2015 15:43:28 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426261407!11646132!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21175 invoked from network); 13 Mar 2015 15:43:28 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 15:43:28 -0000
Received: by wggx13 with SMTP id x13so24137162wgg.4
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=C9VDGX6LchWmf+nfOgQ9wlJFf8RBBZSxJ1Lj3667/DA=;
	b=B11qA/0XWTvxH0IEbsV9glAnPJ91p4tQ1SdH/DBWfvGN/vOM7vPRWYvbULdn6C8NhW
	HAt9rhytujofRN49XyidieBVLPWD31c+5YVIEOhmdX9P6EabMD61RT4wRzYgVMRfK03J
	MuWKDZn1WzCB/h8w+fLjLISph5Wu8T0UXkvWDvhR02qG9scUziP19mHsFV55ZB3J1QbD
	P1F68d0ldXJ/TsALjogWPAk+vOqQjJDTxmDJtY6JRdYmyRWR36lNp+1/+J2/8K9ZBDJR
	2nNdeeJp0Tqsi6F9j+7LrUrSXmhnwm/E7VNNju47nUoEoX8PedMY57Q/Eeh3lLj+sAL2
	ik+w==
X-Received: by 10.180.126.69 with SMTP id mw5mr144616175wib.12.1426261407667; 
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id gt4sm3286371wib.21.2015.03.13.08.43.26
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 15:43:27 +0000
Message-Id: <1426261407-9996-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Get rid of the MonitorEvent from CACHE
	context
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The event is being signalled but nothing ever takes notice of it so one
can only conclude that it is not needed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/cache.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 9058d56..e2c83a8 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -92,7 +92,6 @@ struct _XENBUS_CACHE_CONTEXT {
     PXENBUS_DEBUG_CALLBACK  DebugCallback;
     XENBUS_STORE_INTERFACE  StoreInterface;
     PXENBUS_THREAD          MonitorThread;
-    KEVENT                  MonitorEvent;
     LIST_ENTRY              List;
 };
 
@@ -787,8 +786,6 @@ CacheMonitor(
 
 loop:
         KeReleaseSpinLock(&Context->Lock, Irql);
-
-        KeSetEvent(&Context->MonitorEvent, IO_NO_INCREMENT, FALSE);
     }
 
     Trace("====>\n");
@@ -921,8 +918,6 @@ CacheInitialize(
     InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
-    KeInitializeEvent(&(*Context)->MonitorEvent, NotificationEvent, FALSE);
-
     status = ThreadCreate(CacheMonitor, *Context, &(*Context)->MonitorThread);
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -936,8 +931,6 @@ CacheInitialize(
 fail2:
     Error("fail2\n");
 
-    RtlZeroMemory(&(*Context)->MonitorEvent, sizeof (KEVENT));
-
     RtlZeroMemory(&(*Context)->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&(*Context)->List, sizeof (LIST_ENTRY));
 
@@ -1004,8 +997,6 @@ CacheTeardown(
     ThreadJoin(Context->MonitorThread);
     Context->MonitorThread = NULL;
 
-    RtlZeroMemory(&Context->MonitorEvent, sizeof (KEVENT));
-
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 13 15:43:29 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 13 Mar 2015 15:43:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YWRkH-00034z-FT; Fri, 13 Mar 2015 15:43:29 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YWRkH-00034k-3L
	for win-pv-devel@lists.xenproject.org; Fri, 13 Mar 2015 15:43:29 +0000
Received: from [85.158.139.211] by server-10.bemta-5.messagelabs.com id
	1E/4B-06536-0A503055; Fri, 13 Mar 2015 15:43:28 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426261407!11646132!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21175 invoked from network); 13 Mar 2015 15:43:28 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Mar 2015 15:43:28 -0000
Received: by wggx13 with SMTP id x13so24137162wgg.4
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=C9VDGX6LchWmf+nfOgQ9wlJFf8RBBZSxJ1Lj3667/DA=;
	b=B11qA/0XWTvxH0IEbsV9glAnPJ91p4tQ1SdH/DBWfvGN/vOM7vPRWYvbULdn6C8NhW
	HAt9rhytujofRN49XyidieBVLPWD31c+5YVIEOhmdX9P6EabMD61RT4wRzYgVMRfK03J
	MuWKDZn1WzCB/h8w+fLjLISph5Wu8T0UXkvWDvhR02qG9scUziP19mHsFV55ZB3J1QbD
	P1F68d0ldXJ/TsALjogWPAk+vOqQjJDTxmDJtY6JRdYmyRWR36lNp+1/+J2/8K9ZBDJR
	2nNdeeJp0Tqsi6F9j+7LrUrSXmhnwm/E7VNNju47nUoEoX8PedMY57Q/Eeh3lLj+sAL2
	ik+w==
X-Received: by 10.180.126.69 with SMTP id mw5mr144616175wib.12.1426261407667; 
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id gt4sm3286371wib.21.2015.03.13.08.43.26
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 13 Mar 2015 08:43:27 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 13 Mar 2015 15:43:27 +0000
Message-Id: <1426261407-9996-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Get rid of the MonitorEvent from CACHE
	context
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The event is being signalled but nothing ever takes notice of it so one
can only conclude that it is not needed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/cache.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 9058d56..e2c83a8 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -92,7 +92,6 @@ struct _XENBUS_CACHE_CONTEXT {
     PXENBUS_DEBUG_CALLBACK  DebugCallback;
     XENBUS_STORE_INTERFACE  StoreInterface;
     PXENBUS_THREAD          MonitorThread;
-    KEVENT                  MonitorEvent;
     LIST_ENTRY              List;
 };
 
@@ -787,8 +786,6 @@ CacheMonitor(
 
 loop:
         KeReleaseSpinLock(&Context->Lock, Irql);
-
-        KeSetEvent(&Context->MonitorEvent, IO_NO_INCREMENT, FALSE);
     }
 
     Trace("====>\n");
@@ -921,8 +918,6 @@ CacheInitialize(
     InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
-    KeInitializeEvent(&(*Context)->MonitorEvent, NotificationEvent, FALSE);
-
     status = ThreadCreate(CacheMonitor, *Context, &(*Context)->MonitorThread);
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -936,8 +931,6 @@ CacheInitialize(
 fail2:
     Error("fail2\n");
 
-    RtlZeroMemory(&(*Context)->MonitorEvent, sizeof (KEVENT));
-
     RtlZeroMemory(&(*Context)->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&(*Context)->List, sizeof (LIST_ENTRY));
 
@@ -1004,8 +997,6 @@ CacheTeardown(
     ThreadJoin(Context->MonitorThread);
     Context->MonitorThread = NULL;
 
-    RtlZeroMemory(&Context->MonitorEvent, sizeof (KEVENT));
-
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 16 15:23:56 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 16 Mar 2015 15:23:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXWs0-0003bS-DK; Mon, 16 Mar 2015 15:23:56 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YXWry-0003ak-Pe
	for win-pv-devel@lists.xenproject.org; Mon, 16 Mar 2015 15:23:55 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	86/49-09011-A85F6055; Mon, 16 Mar 2015 15:23:54 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1426519432!10182692!1
X-Originating-IP: [74.125.82.46]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2446 invoked from network); 16 Mar 2015 15:23:52 -0000
Received: from mail-wg0-f46.google.com (HELO mail-wg0-f46.google.com)
	(74.125.82.46)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	16 Mar 2015 15:23:52 -0000
Received: by wgbcc7 with SMTP id cc7so42887247wgb.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 16 Mar 2015 08:23:52 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=OmOq9o4bvdyxov9p2PN6LNTeTe2S3+Up9AdtJeMfghU=;
	b=BC8OpFudIY+/1qY38s99NBWusDxkwyqxCBdeT6HHiTnojZLizqcm19yB6KLWwZFQww
	6uQZuOtMENAynkbLcDUHbBIy+9CW2joodR3r8YdxEEhhD50Rq3n5/702uKIughGg7ejQ
	FwLF7rnSo3zieHkHyjWoPaGtZfjANlY3HKIRxvOKkAjR/hxDm33Yca7vI1bvpsfH6/T1
	/kSezEcEVHH7ehjZHUZimPdoxzNV+oNS2MGHyWFNi8nuEpbXdiFijLarM+0QFK1ZuSl5
	IzhNKbb3qBIlzDa7jT5lr4g/rAj7rhePfcfOgHy3HsgEhc1ERBHT5YZoJdi3niAnPK4x
	VhRA==
X-Gm-Message-State: ALoCoQmqjqgcbir+axmMjr/nWxZ0GGYSTrfvWtbPkB3HGoUOxXKkA1vlwU7SJ9zfd3Cibz0lCOgg
X-Received: by 10.180.35.72 with SMTP id f8mr165391647wij.31.1426519432167;
	Mon, 16 Mar 2015 08:23:52 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	bo1sm15857025wjb.15.2015.03.16.08.23.49
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 16 Mar 2015 08:23:51 -0700 (PDT)
Message-ID: <5506F5AE.1000607@m2r.biz>
Date: Mon, 16 Mar 2015 16:24:30 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7160065121784358490=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7160065121784358490==
Content-Type: multipart/alternative;
 boundary="------------040703060504030008090705"

This is a multi-part message in MIME format.
--------------040703060504030008090705
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 6077
Content-Transfer-Encoding: quoted-printable

Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
> Have a look in C:\Windows\System32\DriverStore\FileRepository. If you 
> still have packages for old drivers in here then Windows can find them 
> and re-install them even if you think you=92ve uninstalled. The correct 
> way to remove packages is using =91pnputil =96d=92 but it=92s a bit clunky.
>
> Paul
>

I removed all pv drivers visible in windows control panel, after I 
removed with "pnputil -f -d" all remaining drivers found with "pnputil 
/e" and rebooted.
Now still load latest xenbus (visible from qemu log) and network is not 
available even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in 
C:\windows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, 
emulated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 
1 minute after windows boot.

Is there another way to clean uninstall all drivers without risk of 
problems=3F

Thanks for any reply and sorry for my bad english.

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------040703060504030008090705
Content-Type: text/html; charset=windows-1252
Content-Length: 41650
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 11/03/2015 16:47, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C12.C32C4710">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.EmailStyle17
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Have a look in
              C:\Windows\System32\DriverStore\FileRepository. If you
              still have packages for old drivers in here then Windows
              can find them and re-install them even if you think you=92ve
              uninstalled. The correct way to remove packages is using =91<span
                class=3D"SpellE">pnputil</span> =96d=92 but it=92s a bit clunky.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I removed all pv drivers visible in windows control panel, after I
    removed with "pnputil -f -d" all remaining drivers found with
    "pnputil /e" and rebooted.<br>
    Now still load latest xenbus (visible from qemu log) and network is
    not available even if .../FileRepository folder don't have other
    xen's drivers.<br>
    I tried a search and I found there are still all pv drivers files in
    C:\windows\system32 and C:\windows\system32\drivers<br>
    I removed also these files and rebooted and now didn't load pv
    drivers, emulated network is working and seems ok.<br>
    Previous week tests instead gave me windows blue screen "registry
    error" 1 minute after windows boot.<br>
    <br>
    Is there another way to clean uninstall all drivers without risk of
    problems=3F<br>
    <br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    11 March 2015 15:39<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Have
                  you tried uninstalling all versions of XENVIF and
                  XENNET and then re-installing the latest=3F Windows
                  should always prefer the newest driver by date but
                  maybe something has gone wrong and for some reason is
                  favouring a really old version you have lying around
                  in DriverStore.</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Yes, I already uninstalled all old drivers build of all
                component 3 tests ago, rebooted windows and after
                installed the new build but seems olders xenvif and
                xennet still remained even if not visible in control
                center and always on new xenvif and xennet install give
                me "ready to use" instead of "device updated" message at
                end.<br>
                The only other way I know to delete the drivers is
                search the files in c:/windows/... but I tried time ago
                with other things gave me always blue screen on next
                boot, so I not tried with pv.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">The
                RangeSetPop error is not anything to worry about. It is
                expected. It simply means the grant table has run out of
                space and needs to be expanded, which is why you see the
                error immediately followed by a map and populate of the
                next grant table page.</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                  style=3D"mso-spacerun:yes">=A0
                </span>Paul</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      11 March 2015 15:17<br>
                      <b><span style=3D"font-weight:bold">To:</span></b> <a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Cc:</span></b>
                      Paul Durrant<br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      [win-pv-devel] xenvif xennet don't update or load
                      correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">As I reported time ago there was
                  strange thing when update network components: give
                  "ready to use" instead of "device updated" message at
                  end of driver component install.<br>
                  Today I saw in qemu log of one W7 pro 64 bit domU
                  this:<br>
                  xen_platform_log xen platform: XENVIF|DriverEntry:
                  XENVIF 8.0.0 (0) (24.09.2014)<br>
                  xen_platform_log xen platform: XENNET|DriverEntry:
                  XENNET 8.0.0 (0) (24.09.2014)<br>
                  <br>
                  Is probably the first build I installed in this domU
                  and that I already uninstall from control center time
                  ago.<br>
                  <br>
                  other components instead seems loaded correctly the
                  latest build installed:<br>
                  xen_platform_log xen platform: XEN|DllInitialize: XEN
                  8.0.0 (41) (05.03.2015)<br>
                  xen_platform_log xen platform: XENFILT|DriverEntry:
                  XENFILT 8.0.0 (41) (05.03.2015)<br>
                  xen_platform_log xen platform:
                  XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                  xen_platform_log xen platform: XENIFACE|DriverEntry:
                  8.0.0.13 (2/3/2015)<br>
                  <br>
                  ----------<br>
                  <br>
                  I saw also these errors in qemu log:<br>
                  ...<br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">xen_platform_log xen platform:
                  GNTTAB: MAP XENMAPSPACE_grant_table[1] @
                  00000000.f8002000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000200 - 000003ff]<br>
                  <b><span style=3D"font-weight:bold">xen_platform_log xen
                      platform: XENBUS|RangeSetPop: fail1 (c000009a)</span></b><br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000400 - 000005ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000600 - 000007ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000800 - 000009ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000a00 - 00000bff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000c00 - 00000dff]</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">...<br>
                  Can someone tell me something about=3F<br>
                  Can they be related to some failed memory balloning
                  error in dom0's kern.log and syslog=3F<br>
                  <br>
                  Full qemu log in attachment is needed.<br>
                  <br>
                  If you need more informations and/or tests tell me and
                  I'll post them.<br>
                  Thanks for any reply and sorry for my bad english.<br
                    style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span><o:p></o:p></font></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------040703060504030008090705--


--===============7160065121784358490==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7160065121784358490==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 16 15:23:56 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 16 Mar 2015 15:23:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXWs0-0003bS-DK; Mon, 16 Mar 2015 15:23:56 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YXWry-0003ak-Pe
	for win-pv-devel@lists.xenproject.org; Mon, 16 Mar 2015 15:23:55 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	86/49-09011-A85F6055; Mon, 16 Mar 2015 15:23:54 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1426519432!10182692!1
X-Originating-IP: [74.125.82.46]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2446 invoked from network); 16 Mar 2015 15:23:52 -0000
Received: from mail-wg0-f46.google.com (HELO mail-wg0-f46.google.com)
	(74.125.82.46)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	16 Mar 2015 15:23:52 -0000
Received: by wgbcc7 with SMTP id cc7so42887247wgb.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 16 Mar 2015 08:23:52 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=OmOq9o4bvdyxov9p2PN6LNTeTe2S3+Up9AdtJeMfghU=;
	b=BC8OpFudIY+/1qY38s99NBWusDxkwyqxCBdeT6HHiTnojZLizqcm19yB6KLWwZFQww
	6uQZuOtMENAynkbLcDUHbBIy+9CW2joodR3r8YdxEEhhD50Rq3n5/702uKIughGg7ejQ
	FwLF7rnSo3zieHkHyjWoPaGtZfjANlY3HKIRxvOKkAjR/hxDm33Yca7vI1bvpsfH6/T1
	/kSezEcEVHH7ehjZHUZimPdoxzNV+oNS2MGHyWFNi8nuEpbXdiFijLarM+0QFK1ZuSl5
	IzhNKbb3qBIlzDa7jT5lr4g/rAj7rhePfcfOgHy3HsgEhc1ERBHT5YZoJdi3niAnPK4x
	VhRA==
X-Gm-Message-State: ALoCoQmqjqgcbir+axmMjr/nWxZ0GGYSTrfvWtbPkB3HGoUOxXKkA1vlwU7SJ9zfd3Cibz0lCOgg
X-Received: by 10.180.35.72 with SMTP id f8mr165391647wij.31.1426519432167;
	Mon, 16 Mar 2015 08:23:52 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	bo1sm15857025wjb.15.2015.03.16.08.23.49
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 16 Mar 2015 08:23:51 -0700 (PDT)
Message-ID: <5506F5AE.1000607@m2r.biz>
Date: Mon, 16 Mar 2015 16:24:30 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7160065121784358490=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7160065121784358490==
Content-Type: multipart/alternative;
 boundary="------------040703060504030008090705"

This is a multi-part message in MIME format.
--------------040703060504030008090705
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 6077
Content-Transfer-Encoding: quoted-printable

Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
> Have a look in C:\Windows\System32\DriverStore\FileRepository. If you 
> still have packages for old drivers in here then Windows can find them 
> and re-install them even if you think you=92ve uninstalled. The correct 
> way to remove packages is using =91pnputil =96d=92 but it=92s a bit clunky.
>
> Paul
>

I removed all pv drivers visible in windows control panel, after I 
removed with "pnputil -f -d" all remaining drivers found with "pnputil 
/e" and rebooted.
Now still load latest xenbus (visible from qemu log) and network is not 
available even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in 
C:\windows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, 
emulated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 
1 minute after windows boot.

Is there another way to clean uninstall all drivers without risk of 
problems=3F

Thanks for any reply and sorry for my bad english.

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------040703060504030008090705
Content-Type: text/html; charset=windows-1252
Content-Length: 41650
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 11/03/2015 16:47, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D05C12.C32C4710">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.EmailStyle17
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Have a look in
              C:\Windows\System32\DriverStore\FileRepository. If you
              still have packages for old drivers in here then Windows
              can find them and re-install them even if you think you=92ve
              uninstalled. The correct way to remove packages is using =91<span
                class=3D"SpellE">pnputil</span> =96d=92 but it=92s a bit clunky.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I removed all pv drivers visible in windows control panel, after I
    removed with "pnputil -f -d" all remaining drivers found with
    "pnputil /e" and rebooted.<br>
    Now still load latest xenbus (visible from qemu log) and network is
    not available even if .../FileRepository folder don't have other
    xen's drivers.<br>
    I tried a search and I found there are still all pv drivers files in
    C:\windows\system32 and C:\windows\system32\drivers<br>
    I removed also these files and rebooted and now didn't load pv
    drivers, emulated network is working and seems ok.<br>
    Previous week tests instead gave me windows blue screen "registry
    error" 1 minute after windows boot.<br>
    <br>
    Is there another way to clean uninstall all drivers without risk of
    problems=3F<br>
    <br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    11 March 2015 15:39<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Have
                  you tried uninstalling all versions of XENVIF and
                  XENNET and then re-installing the latest=3F Windows
                  should always prefer the newest driver by date but
                  maybe something has gone wrong and for some reason is
                  favouring a really old version you have lying around
                  in DriverStore.</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Yes, I already uninstalled all old drivers build of all
                component 3 tests ago, rebooted windows and after
                installed the new build but seems olders xenvif and
                xennet still remained even if not visible in control
                center and always on new xenvif and xennet install give
                me "ready to use" instead of "device updated" message at
                end.<br>
                The only other way I know to delete the drivers is
                search the files in c:/windows/... but I tried time ago
                with other things gave me always blue screen on next
                boot, so I not tried with pv.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">The
                RangeSetPop error is not anything to worry about. It is
                expected. It simply means the grant table has run out of
                space and needs to be expanded, which is why you see the
                error immediately followed by a map and populate of the
                next grant table page.</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                  style=3D"mso-spacerun:yes">=A0
                </span>Paul</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      11 March 2015 15:17<br>
                      <b><span style=3D"font-weight:bold">To:</span></b> <a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Cc:</span></b>
                      Paul Durrant<br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      [win-pv-devel] xenvif xennet don't update or load
                      correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">As I reported time ago there was
                  strange thing when update network components: give
                  "ready to use" instead of "device updated" message at
                  end of driver component install.<br>
                  Today I saw in qemu log of one W7 pro 64 bit domU
                  this:<br>
                  xen_platform_log xen platform: XENVIF|DriverEntry:
                  XENVIF 8.0.0 (0) (24.09.2014)<br>
                  xen_platform_log xen platform: XENNET|DriverEntry:
                  XENNET 8.0.0 (0) (24.09.2014)<br>
                  <br>
                  Is probably the first build I installed in this domU
                  and that I already uninstall from control center time
                  ago.<br>
                  <br>
                  other components instead seems loaded correctly the
                  latest build installed:<br>
                  xen_platform_log xen platform: XEN|DllInitialize: XEN
                  8.0.0 (41) (05.03.2015)<br>
                  xen_platform_log xen platform: XENFILT|DriverEntry:
                  XENFILT 8.0.0 (41) (05.03.2015)<br>
                  xen_platform_log xen platform:
                  XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                  xen_platform_log xen platform: XENIFACE|DriverEntry:
                  8.0.0.13 (2/3/2015)<br>
                  <br>
                  ----------<br>
                  <br>
                  I saw also these errors in qemu log:<br>
                  ...<br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">xen_platform_log xen platform:
                  GNTTAB: MAP XENMAPSPACE_grant_table[1] @
                  00000000.f8002000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000200 - 000003ff]<br>
                  <b><span style=3D"font-weight:bold">xen_platform_log xen
                      platform: XENBUS|RangeSetPop: fail1 (c000009a)</span></b><br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000400 - 000005ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000600 - 000007ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000800 - 000009ff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000a00 - 00000bff]<br>
                  xen_platform_log xen platform: XENBUS|RangeSetPop:
                  fail1 (c000009a)<br>
                  xen_platform_log xen platform: GNTTAB: MAP
                  XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                  xen_platform_log xen platform: XENBUS|GnttabExpand:
                  added references [00000c00 - 00000dff]</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">...<br>
                  Can someone tell me something about=3F<br>
                  Can they be related to some failed memory balloning
                  error in dom0's kern.log and syslog=3F<br>
                  <br>
                  Full qemu log in attachment is needed.<br>
                  <br>
                  If you need more informations and/or tests tell me and
                  I'll post them.<br>
                  Thanks for any reply and sorry for my bad english.<br
                    style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span><o:p></o:p></font></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------040703060504030008090705--


--===============7160065121784358490==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7160065121784358490==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 16 17:40:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 16 Mar 2015 17:40:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXZ0K-0007de-2H; Mon, 16 Mar 2015 17:40:40 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YXZ0I-0007dZ-5V
	for win-pv-devel@lists.xenproject.org; Mon, 16 Mar 2015 17:40:38 +0000
Received: from [85.158.139.211] by server-10.bemta-5.messagelabs.com id
	3A/E6-14739-59517055; Mon, 16 Mar 2015 17:40:37 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1426527635!11027943!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3905 invoked from network); 16 Mar 2015 17:40:35 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	16 Mar 2015 17:40:35 -0000
X-IronPort-AV: E=Sophos;i="5.11,410,1422921600"; d="scan'208,217";a="32886923"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1A=
Date: Mon, 16 Mar 2015 17:40:34 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
In-Reply-To: <5506F5AE.1000607@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8669356223620354992=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============8669356223620354992==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.




--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06010.56CD1B10"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:" Arial";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Hi,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the
<span class=3D"SpellE">pnputil</span> tool does not actually remove the dri=
vers, and hence you&#8217;ll see
<span class=3D"SpellE">DllInitialize</span>() and <span class=3D"SpellE">Dr=
iverEntry</span>() functions called *<b><span style=3D"font-weight:bold">bu=
t</span></b>* there should be no
<span class=3D"SpellE">AddDevice</span>() called i.e. the drivers are unbou=
nd from the devices but the modules are still present.<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\FileRepos=
itory.
 If you still have packages for old drivers in here then Windows can find t=
hem and re-install them even if you think you&#8217;ve uninstalled. The cor=
rect way to remove packages is using &#8216;pnputil &#8211;d&#8217; but it&=
#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">As I reported time ago there =
was strange thing when update network components: give
 &quot;ready to use&quot; instead of &quot;device updated&quot; message at =
end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">xen_platform_log xen platform=
: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_--


--===============8669356223620354992==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8669356223620354992==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 16 17:40:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 16 Mar 2015 17:40:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXZ0K-0007de-2H; Mon, 16 Mar 2015 17:40:40 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YXZ0I-0007dZ-5V
	for win-pv-devel@lists.xenproject.org; Mon, 16 Mar 2015 17:40:38 +0000
Received: from [85.158.139.211] by server-10.bemta-5.messagelabs.com id
	3A/E6-14739-59517055; Mon, 16 Mar 2015 17:40:37 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1426527635!11027943!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3905 invoked from network); 16 Mar 2015 17:40:35 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	16 Mar 2015 17:40:35 -0000
X-IronPort-AV: E=Sophos;i="5.11,410,1422921600"; d="scan'208,217";a="32886923"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1A=
Date: Mon, 16 Mar 2015 17:40:34 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
In-Reply-To: <5506F5AE.1000607@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8669356223620354992=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============8669356223620354992==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.




--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06010.56CD1B10"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:" Arial";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Hi,<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the
<span class=3D"SpellE">pnputil</span> tool does not actually remove the dri=
vers, and hence you&#8217;ll see
<span class=3D"SpellE">DllInitialize</span>() and <span class=3D"SpellE">Dr=
iverEntry</span>() functions called *<b><span style=3D"font-weight:bold">bu=
t</span></b>* there should be no
<span class=3D"SpellE">AddDevice</span>() called i.e. the drivers are unbou=
nd from the devices but the modules are still present.<o:p></o:p></span></f=
ont></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\FileRepos=
itory.
 If you still have packages for old drivers in here then Windows can find t=
hem and re-install them even if you think you&#8217;ve uninstalled. The cor=
rect way to remove packages is using &#8216;pnputil &#8211;d&#8217; but it&=
#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">As I reported time ago there =
was strange thing when update network components: give
 &quot;ready to use&quot; instead of &quot;device updated&quot; message at =
end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">xen_platform_log xen platform=
: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025844451AMSPEX01CL01cit_--


--===============8669356223620354992==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8669356223620354992==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 17 08:58:57 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 17 Mar 2015 08:58:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXnKz-0006qu-FS; Tue, 17 Mar 2015 08:58:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YXnKx-0006qi-Ky
	for win-pv-devel@lists.xenproject.org; Tue, 17 Mar 2015 08:58:56 +0000
Received: from [193.109.254.147] by server-6.bemta-14.messagelabs.com id
	F6/FC-06320-FCCE7055; Tue, 17 Mar 2015 08:58:55 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-27.messagelabs.com!1426582733!13538785!1
X-Originating-IP: [209.85.212.176]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28150 invoked from network); 17 Mar 2015 08:58:53 -0000
Received: from mail-wi0-f176.google.com (HELO mail-wi0-f176.google.com)
	(209.85.212.176)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	17 Mar 2015 08:58:53 -0000
Received: by wibg7 with SMTP id g7so57442451wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 17 Mar 2015 01:58:53 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=PNosZWS7psqInyAWFABPkeHPwuBMgKQYlB2CUBTmqqE=;
	b=V1DiMflf9v+gawBMZmMadHGBdpqlBaHMaJ7GVVYn3MvSUQD5q3gkkHDNrUBLkWVDUh
	CH4ur63xn+AkCB2ajBk8IBsEbTiVoegGYrf+hjnRDQCMT/82bJ/cYh5y2b/dG0Wo7GGE
	jGNZJEZkdFqfG3isABeLgm4U8VZsMbqtQJrlMVHloE6xp/w9HDiLpZcF6v2HMeoozPfk
	oRGPcD+VFi6Xo/uAfs8bqNIB2/lBJ9koHDcGjgg1GZkAT7dK6fjaGCBCCR50M5pXYdVJ
	QjBJQPW6rDIuHc+YVhRUbpqWAfmW4wf2yoLPMhkFmnw5MZ/i2dBP+3Nak8QJP+DgrA6W
	zpFQ==
X-Gm-Message-State: ALoCoQlqygIcT2c+jc70gHomYbMUYmt/GfIKhprcU0hG7/Onh4GEI0OqqKRna20mGcggaZYKd4W6
X-Received: by 10.194.177.195 with SMTP id cs3mr127609446wjc.141.1426582732851;
	Tue, 17 Mar 2015 01:58:52 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id n3sm18980429wja.36.2015.03.17.01.58.50
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 17 Mar 2015 01:58:52 -0700 (PDT)
Message-ID: <5507ECF6.4080902@m2r.biz>
Date: Tue, 17 Mar 2015 09:59:34 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2879428103948316217=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============2879428103948316217==
Content-Type: multipart/alternative;
 boundary="------------020600030207090202060403"

This is a multi-part message in MIME format.
--------------020600030207090202060403
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 7620
Content-Transfer-Encoding: quoted-printable

Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
> Hi,
>
> Windows driver removal is a black art and is broken in different ways 
> on different versions of Windows. As you correctly observe, using the 
> pnputil tool does not actually remove the drivers, and hence you=92ll 
> see DllInitialize() and DriverEntry() functions called **but** there 
> should be no AddDevice() called i.e. the drivers are unbound from the 
> devices but the modules are still present.
>
> If you also want to stop the driver modules from loading then you need 
> to remove the service keys from the registry, which you should be able 
> to safely do after the reboot. If you just remove the binaries from 
> system32 then you may well end up in a situation where the registry is 
> telling the system to load a driver but, when it looks, the binary has 
> gone.
>
> Paul
>

Can you tell me which ones registry keys I must delete with the manually 
remove of remaining pv drivers in system32 without cause problems please=3F

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020600030207090202060403
Content-Type: text/html; charset=windows-1252
Content-Length: 50029
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 16/03/2015 18:40, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06010.56CD1B10">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:" Arial";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Hi,<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Windows driver removal is a black art and is broken
              in different ways on different versions of Windows. As you
              correctly observe, using the
              <span class=3D"SpellE">pnputil</span> tool does not actually
              remove the drivers, and hence you=92ll see
              <span class=3D"SpellE">DllInitialize</span>() and <span
                class=3D"SpellE">DriverEntry</span>() functions called *<b><span
                  style=3D"font-weight:bold">but</span></b>* there should
              be no
              <span class=3D"SpellE">AddDevice</span>() called i.e. the
              drivers are unbound from the devices but the modules are
              still present.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>If you also want to stop the driver modules from
              loading then you need to remove the service keys from the
              registry, which you should be able to safely do after the
              reboot. If you just remove the binaries from system32 then
              you may well end up in a situation where the registry is
              telling the system to load a driver but, when it looks,
              the binary has gone.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Can you tell me which ones registry keys I must delete with the
    manually remove of remaining pv drivers in system32 without cause
    problems please=3F<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    16 March 2015 15:25<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Have
                  a look in
                  C:\Windows\System32\DriverStore\FileRepository. If you
                  still have packages for old drivers in here then
                  Windows can find them and re-install them even if you
                  think you=92ve uninstalled. The correct way to remove
                  packages is using =91pnputil =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I removed all pv drivers visible in windows control
                panel, after I removed with "pnputil -f -d" all
                remaining drivers found with "pnputil /e" and rebooted.<br>
                Now still load latest xenbus (visible from qemu log) and
                network is not available even if .../FileRepository
                folder don't have other xen's drivers.<br>
                I tried a search and I found there are still all pv
                drivers files in C:\windows\system32 and
                C:\windows\system32\drivers<br>
                I removed also these files and rebooted and now didn't
                load pv drivers, emulated network is working and seems
                ok.<br>
                Previous week tests instead gave me windows blue screen
                "registry error" 1 minute after windows boot.<br>
                <br>
                Is there another way to clean uninstall all drivers
                without risk of problems=3F<br>
                <br>
                Thanks for any reply and sorry for my bad english.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      11 March 2015 15:39<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                    you tried uninstalling all versions of XENVIF and
                    XENNET and then re-installing the latest=3F Windows
                    should always prefer the newest driver by date but
                    maybe something has gone wrong and for some reason
                    is favouring a really old version you have lying
                    around in DriverStore.</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Yes, I already uninstalled all old drivers build of
                  all component 3 tests ago, rebooted windows and after
                  installed the new build but seems olders xenvif and
                  xennet still remained even if not visible in control
                  center and always on new xenvif and xennet install
                  give me "ready to use" instead of "device updated"
                  message at end.<br>
                  The only other way I know to delete the drivers is
                  search the files in c:/windows/... but I tried time
                  ago with other things gave me always blue screen on
                  next boot, so I not tried with pv.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                  RangeSetPop error is not anything to worry about. It
                  is expected. It simply means the grant table has run
                  out of space and needs to be expanded, which is why
                  you see the error immediately followed by a map and
                  populate of the next grant table page.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        11 March 2015 15:17<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Cc:</span></b>
                        Paul Durrant<br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">As I reported time ago
                    there was strange thing when update network
                    components: give "ready to use" instead of "device
                    updated" message at end of driver component install.<br>
                    Today I saw in qemu log of one W7 pro 64 bit domU
                    this:<br>
                    xen_platform_log xen platform: XENVIF|DriverEntry:
                    XENVIF 8.0.0 (0) (24.09.2014)<br>
                    xen_platform_log xen platform: XENNET|DriverEntry:
                    XENNET 8.0.0 (0) (24.09.2014)<br>
                    <br>
                    Is probably the first build I installed in this domU
                    and that I already uninstall from control center
                    time ago.<br>
                    <br>
                    other components instead seems loaded correctly the
                    latest build installed:<br>
                    xen_platform_log xen platform: XEN|DllInitialize:
                    XEN 8.0.0 (41) (05.03.2015)<br>
                    xen_platform_log xen platform: XENFILT|DriverEntry:
                    XENFILT 8.0.0 (41) (05.03.2015)<br>
                    xen_platform_log xen platform:
                    XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                    xen_platform_log xen platform: XENIFACE|DriverEntry:
                    8.0.0.13 (2/3/2015)<br>
                    <br>
                    ----------<br>
                    <br>
                    I saw also these errors in qemu log:<br>
                    ...<br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">xen_platform_log xen
                    platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @
                    00000000.f8002000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000200 - 000003ff]<br>
                    <b><span style=3D"font-weight:bold">xen_platform_log
                        xen platform: XENBUS|RangeSetPop: fail1
                        (c000009a)</span></b><br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000400 - 000005ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000600 - 000007ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000800 - 000009ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000a00 - 00000bff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000c00 - 00000dff]</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                  color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                    style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">...<br>
                    Can someone tell me something about=3F<br>
                    Can they be related to some failed memory balloning
                    error in dom0's kern.log and syslog=3F<br>
                    <br>
                    Full qemu log in attachment is needed.<br>
                    <br>
                    If you need more informations and/or tests tell me
                    and I'll post them.<br>
                    Thanks for any reply and sorry for my bad english.<br
                      style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span><o:p></o:p></font></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020600030207090202060403--


--===============2879428103948316217==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2879428103948316217==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 17 08:58:57 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 17 Mar 2015 08:58:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YXnKz-0006qu-FS; Tue, 17 Mar 2015 08:58:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YXnKx-0006qi-Ky
	for win-pv-devel@lists.xenproject.org; Tue, 17 Mar 2015 08:58:56 +0000
Received: from [193.109.254.147] by server-6.bemta-14.messagelabs.com id
	F6/FC-06320-FCCE7055; Tue, 17 Mar 2015 08:58:55 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-27.messagelabs.com!1426582733!13538785!1
X-Originating-IP: [209.85.212.176]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28150 invoked from network); 17 Mar 2015 08:58:53 -0000
Received: from mail-wi0-f176.google.com (HELO mail-wi0-f176.google.com)
	(209.85.212.176)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	17 Mar 2015 08:58:53 -0000
Received: by wibg7 with SMTP id g7so57442451wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 17 Mar 2015 01:58:53 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=PNosZWS7psqInyAWFABPkeHPwuBMgKQYlB2CUBTmqqE=;
	b=V1DiMflf9v+gawBMZmMadHGBdpqlBaHMaJ7GVVYn3MvSUQD5q3gkkHDNrUBLkWVDUh
	CH4ur63xn+AkCB2ajBk8IBsEbTiVoegGYrf+hjnRDQCMT/82bJ/cYh5y2b/dG0Wo7GGE
	jGNZJEZkdFqfG3isABeLgm4U8VZsMbqtQJrlMVHloE6xp/w9HDiLpZcF6v2HMeoozPfk
	oRGPcD+VFi6Xo/uAfs8bqNIB2/lBJ9koHDcGjgg1GZkAT7dK6fjaGCBCCR50M5pXYdVJ
	QjBJQPW6rDIuHc+YVhRUbpqWAfmW4wf2yoLPMhkFmnw5MZ/i2dBP+3Nak8QJP+DgrA6W
	zpFQ==
X-Gm-Message-State: ALoCoQlqygIcT2c+jc70gHomYbMUYmt/GfIKhprcU0hG7/Onh4GEI0OqqKRna20mGcggaZYKd4W6
X-Received: by 10.194.177.195 with SMTP id cs3mr127609446wjc.141.1426582732851;
	Tue, 17 Mar 2015 01:58:52 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id n3sm18980429wja.36.2015.03.17.01.58.50
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 17 Mar 2015 01:58:52 -0700 (PDT)
Message-ID: <5507ECF6.4080902@m2r.biz>
Date: Tue, 17 Mar 2015 09:59:34 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2879428103948316217=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============2879428103948316217==
Content-Type: multipart/alternative;
 boundary="------------020600030207090202060403"

This is a multi-part message in MIME format.
--------------020600030207090202060403
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 7620
Content-Transfer-Encoding: quoted-printable

Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
> Hi,
>
> Windows driver removal is a black art and is broken in different ways 
> on different versions of Windows. As you correctly observe, using the 
> pnputil tool does not actually remove the drivers, and hence you=92ll 
> see DllInitialize() and DriverEntry() functions called **but** there 
> should be no AddDevice() called i.e. the drivers are unbound from the 
> devices but the modules are still present.
>
> If you also want to stop the driver modules from loading then you need 
> to remove the service keys from the registry, which you should be able 
> to safely do after the reboot. If you just remove the binaries from 
> system32 then you may well end up in a situation where the registry is 
> telling the system to load a driver but, when it looks, the binary has 
> gone.
>
> Paul
>

Can you tell me which ones registry keys I must delete with the manually 
remove of remaining pv drivers in system32 without cause problems please=3F

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020600030207090202060403
Content-Type: text/html; charset=windows-1252
Content-Length: 50029
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 16/03/2015 18:40, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06010.56CD1B10">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-alt:" Arial";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Hi,<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Windows driver removal is a black art and is broken
              in different ways on different versions of Windows. As you
              correctly observe, using the
              <span class=3D"SpellE">pnputil</span> tool does not actually
              remove the drivers, and hence you=92ll see
              <span class=3D"SpellE">DllInitialize</span>() and <span
                class=3D"SpellE">DriverEntry</span>() functions called *<b><span
                  style=3D"font-weight:bold">but</span></b>* there should
              be no
              <span class=3D"SpellE">AddDevice</span>() called i.e. the
              drivers are unbound from the devices but the modules are
              still present.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>If you also want to stop the driver modules from
              loading then you need to remove the service keys from the
              registry, which you should be able to safely do after the
              reboot. If you just remove the binaries from system32 then
              you may well end up in a situation where the registry is
              telling the system to load a driver but, when it looks,
              the binary has gone.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Can you tell me which ones registry keys I must delete with the
    manually remove of remaining pv drivers in system32 without cause
    problems please=3F<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    16 March 2015 15:25<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Have
                  a look in
                  C:\Windows\System32\DriverStore\FileRepository. If you
                  still have packages for old drivers in here then
                  Windows can find them and re-install them even if you
                  think you=92ve uninstalled. The correct way to remove
                  packages is using =91pnputil =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I removed all pv drivers visible in windows control
                panel, after I removed with "pnputil -f -d" all
                remaining drivers found with "pnputil /e" and rebooted.<br>
                Now still load latest xenbus (visible from qemu log) and
                network is not available even if .../FileRepository
                folder don't have other xen's drivers.<br>
                I tried a search and I found there are still all pv
                drivers files in C:\windows\system32 and
                C:\windows\system32\drivers<br>
                I removed also these files and rebooted and now didn't
                load pv drivers, emulated network is working and seems
                ok.<br>
                Previous week tests instead gave me windows blue screen
                "registry error" 1 minute after windows boot.<br>
                <br>
                Is there another way to clean uninstall all drivers
                without risk of problems=3F<br>
                <br>
                Thanks for any reply and sorry for my bad english.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      11 March 2015 15:39<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 11/03/2015 16:22, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                    you tried uninstalling all versions of XENVIF and
                    XENNET and then re-installing the latest=3F Windows
                    should always prefer the newest driver by date but
                    maybe something has gone wrong and for some reason
                    is favouring a really old version you have lying
                    around in DriverStore.</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Yes, I already uninstalled all old drivers build of
                  all component 3 tests ago, rebooted windows and after
                  installed the new build but seems olders xenvif and
                  xennet still remained even if not visible in control
                  center and always on new xenvif and xennet install
                  give me "ready to use" instead of "device updated"
                  message at end.<br>
                  The only other way I know to delete the drivers is
                  search the files in c:/windows/... but I tried time
                  ago with other things gave me always blue screen on
                  next boot, so I not tried with pv.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                  RangeSetPop error is not anything to worry about. It
                  is expected. It simply means the grant table has run
                  out of space and needs to be expanded, which is why
                  you see the error immediately followed by a map and
                  populate of the next grant table page.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        11 March 2015 15:17<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Cc:</span></b>
                        Paul Durrant<br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">As I reported time ago
                    there was strange thing when update network
                    components: give "ready to use" instead of "device
                    updated" message at end of driver component install.<br>
                    Today I saw in qemu log of one W7 pro 64 bit domU
                    this:<br>
                    xen_platform_log xen platform: XENVIF|DriverEntry:
                    XENVIF 8.0.0 (0) (24.09.2014)<br>
                    xen_platform_log xen platform: XENNET|DriverEntry:
                    XENNET 8.0.0 (0) (24.09.2014)<br>
                    <br>
                    Is probably the first build I installed in this domU
                    and that I already uninstall from control center
                    time ago.<br>
                    <br>
                    other components instead seems loaded correctly the
                    latest build installed:<br>
                    xen_platform_log xen platform: XEN|DllInitialize:
                    XEN 8.0.0 (41) (05.03.2015)<br>
                    xen_platform_log xen platform: XENFILT|DriverEntry:
                    XENFILT 8.0.0 (41) (05.03.2015)<br>
                    xen_platform_log xen platform:
                    XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.03.2015)<br>
                    xen_platform_log xen platform: XENIFACE|DriverEntry:
                    8.0.0.13 (2/3/2015)<br>
                    <br>
                    ----------<br>
                    <br>
                    I saw also these errors in qemu log:<br>
                    ...<br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">xen_platform_log xen
                    platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @
                    00000000.f8002000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000200 - 000003ff]<br>
                    <b><span style=3D"font-weight:bold">xen_platform_log
                        xen platform: XENBUS|RangeSetPop: fail1
                        (c000009a)</span></b><br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000400 - 000005ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000600 - 000007ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000800 - 000009ff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000a00 - 00000bff]<br>
                    xen_platform_log xen platform: XENBUS|RangeSetPop:
                    fail1 (c000009a)<br>
                    xen_platform_log xen platform: GNTTAB: MAP
                    XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                    xen_platform_log xen platform: XENBUS|GnttabExpand:
                    added references [00000c00 - 00000dff]</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                  color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                    style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">...<br>
                    Can someone tell me something about=3F<br>
                    Can they be related to some failed memory balloning
                    error in dom0's kern.log and syslog=3F<br>
                    <br>
                    Full qemu log in attachment is needed.<br>
                    <br>
                    If you need more informations and/or tests tell me
                    and I'll post them.<br>
                    Thanks for any reply and sorry for my bad english.<br
                      style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span><o:p></o:p></font></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020600030207090202060403--


--===============2879428103948316217==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2879428103948316217==--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:20 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIC-0006iF-Hd; Thu, 19 Mar 2015 13:15:20 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIB-0006i5-Ax
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:19 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	77/AF-01069-5EBCA055; Thu, 19 Mar 2015 13:15:17 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426770917!14280251!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10118 invoked from network); 19 Mar 2015 13:15:17 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:17 -0000
Received: by wifj2 with SMTP id j2so68648487wif.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=3gU/CLqDw8PGhr5UdZd8Fht6dE/dZsvioWDMxJQKD6E=;
	b=Njxpw/sthdCZi503Mx/wRp9aWqBsEE8DU0rkZFvHa5c/PrY7Vg8NfxsBcmVZa+cyj0
	wYaLETNo+gtTDZaSqjK5OapZgkbXNNP4csu+zIqmbh1y/7zPazXQVftu47792hPZG/F0
	ohqGCdwvNeUnSv2DzBHKIwis1fU65Jsl8kIM6WIsGiejnARhevxcrV9asNK/x5de9W3E
	WocIy9YQEXq+47L4vJNKu2zk8V63Qx6SHHFCr4ERKw9H96WaR/rFTq9ARyk8BLY7Zfr9
	togwQViC2gY83ts3kpHiNOF0GdJoC2Ud8rCWrM1kz+c5D9skBmxDQoZSwtqFKbvFLq2w
	QDLg==
X-Received: by 10.194.61.100 with SMTP id o4mr153071364wjr.28.1426770916828;
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.15
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:15 +0000
Message-Id: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 0/6] Make XENBUS package group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Windows has had the notion of processor groups for some time and it
is becoming increasingly hard to ignore them, even though an HVM guest
will have no more processors than would fit into a single group.

This series, therefore, removes use of non-group-aware API functions and
adds use of their group-aware equivalents. Doing this also required
changes to get rid of static arrays based on MAXIMUM_PROCESSORS and
use of KAFFINITY types except when required.

Patch #1 fixes line endings (again).

Patch #2 puts util.h in the place where it should be.

Patch #3 updates to a newer set of Xen headers, and also refines
get_xen_headers.py slightly to handle the git add. Note that this patch
is not a simple update to new headers though as recent changes in xen.git
had some fallout and meant some re-arrangement of the headers was required.

Patch #4 fixes some obvious stupidity in the vcxproj files

Patch #5 adds code to do a strict version check between the XEN export
driver and XENBUS/XENFILT. The export driver's ABI is not stable so
odd crashes could occur unless a check is done. The package co-installer
is also changed to request a reboot, to make sure a compatible module
set is running.

Patch #6 actually changes the API calls from non-group-aware to
group-aware and does the other necessary re-factoring.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:20 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIC-0006iF-Hd; Thu, 19 Mar 2015 13:15:20 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIB-0006i5-Ax
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:19 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	77/AF-01069-5EBCA055; Thu, 19 Mar 2015 13:15:17 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426770917!14280251!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10118 invoked from network); 19 Mar 2015 13:15:17 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:17 -0000
Received: by wifj2 with SMTP id j2so68648487wif.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=3gU/CLqDw8PGhr5UdZd8Fht6dE/dZsvioWDMxJQKD6E=;
	b=Njxpw/sthdCZi503Mx/wRp9aWqBsEE8DU0rkZFvHa5c/PrY7Vg8NfxsBcmVZa+cyj0
	wYaLETNo+gtTDZaSqjK5OapZgkbXNNP4csu+zIqmbh1y/7zPazXQVftu47792hPZG/F0
	ohqGCdwvNeUnSv2DzBHKIwis1fU65Jsl8kIM6WIsGiejnARhevxcrV9asNK/x5de9W3E
	WocIy9YQEXq+47L4vJNKu2zk8V63Qx6SHHFCr4ERKw9H96WaR/rFTq9ARyk8BLY7Zfr9
	togwQViC2gY83ts3kpHiNOF0GdJoC2Ud8rCWrM1kz+c5D9skBmxDQoZSwtqFKbvFLq2w
	QDLg==
X-Received: by 10.194.61.100 with SMTP id o4mr153071364wjr.28.1426770916828;
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.15
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:16 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:15 +0000
Message-Id: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 0/6] Make XENBUS package group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Windows has had the notion of processor groups for some time and it
is becoming increasingly hard to ignore them, even though an HVM guest
will have no more processors than would fit into a single group.

This series, therefore, removes use of non-group-aware API functions and
adds use of their group-aware equivalents. Doing this also required
changes to get rid of static arrays based on MAXIMUM_PROCESSORS and
use of KAFFINITY types except when required.

Patch #1 fixes line endings (again).

Patch #2 puts util.h in the place where it should be.

Patch #3 updates to a newer set of Xen headers, and also refines
get_xen_headers.py slightly to handle the git add. Note that this patch
is not a simple update to new headers though as recent changes in xen.git
had some fallout and meant some re-arrangement of the headers was required.

Patch #4 fixes some obvious stupidity in the vcxproj files

Patch #5 adds code to do a strict version check between the XEN export
driver and XENBUS/XENFILT. The export driver's ABI is not stable so
odd crashes could occur unless a check is done. The package co-installer
is also changed to request a reboot, to make sure a compatible module
set is running.

Patch #6 actually changes the API calls from non-group-aware to
group-aware and does the other necessary re-factoring.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:23 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIF-0006iu-JF; Thu, 19 Mar 2015 13:15:23 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIE-0006ie-Es
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:22 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
	6B/30-18861-9EBCA055; Thu, 19 Mar 2015 13:15:21 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1426770918!11885732!1
X-Originating-IP: [74.125.82.169]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4753 invoked from network); 19 Mar 2015 13:15:18 -0000
Received: from mail-we0-f169.google.com (HELO mail-we0-f169.google.com)
	(74.125.82.169)
	by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:18 -0000
Received: by weop45 with SMTP id p45so56974736weo.0
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=DqFJQ93CjXsI50TTF8e4dWxI2Z/mpsE2tzTJ83FXASE=;
	b=khBPVaUSLLGB89IyTA767BYcD5ihrdU82IPrFYoWXw4CzHlZfrTBox9LRSihfD/17a
	rBKC0AvNnkHa1eFyMWGiZoTX4hH6rRcBvqo50ZDI2GjNZXeKd1UrPEtDYkheA16CiZQg
	voMhEAodfwU9pmmoLtawAMk5nt3nezf7b6YHLX4T8cQLD8QQJAWKPaYpm/O3ihUKgnTZ
	3D50OBvCXAeKs32anud92CJeRbkeklKDa1nX93pqBH0bsXdbsVsk4qjDWISx66c3fHCq
	nx4Xe2PHDBtjEUUyH0tGMKsid3al3nW+Uh+Pvsh77zaxMZtKvqn8VPqH4ETZASGu0voO
	9XOQ==
X-Received: by 10.180.108.177 with SMTP id hl17mr16145006wib.35.1426770918021; 
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.16
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:17 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:16 +0000
Message-Id: <1426770921-14080-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 87517
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/6] Fix line endings
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

U2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0t
CiBCVUlMRC5tZCAgICAgICAgICAgICAgICAgICAgICAgfCAgOTQgKysrKy0tLS0KIGRvYy9ncm91
cHMuZG94ICAgICAgICAgICAgICAgICB8ICAgNiArLQogZG9jL21haW4uZG94ICAgICAgICAgICAg
ICAgICAgIHwgICA4ICstCiBnZXRfeGVuX2hlYWRlcnMucHkgICAgICAgICAgICAgfCAxNTIgKysr
KysrLS0tLS0tLQogaW5jbHVkZS92ZXJzaW9uLmh4ICAgICAgICAgICAgIHwgMTA5ICsrKysrLS0t
LQogdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIHwgNTA0ICsrKysrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2czIwMTIveGVuYnVzLnNsbiAgICAgICAgICAgICAg
fCAzNjAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHZzMjAxMy9wYWNrYWdlL3BhY2th
Z2UudmN4cHJvaiB8ICAgMiArLQogdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qIHwgICAy
ICstCiA5IGZpbGVzIGNoYW5nZWQsIDYxOCBpbnNlcnRpb25zKCspLCA2MTkgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvQlVJTEQubWQgYi9CVUlMRC5tZAppbmRleCA4MTI2MDc5Li5jMGY5YzM3
IDEwMDY0NAotLS0gYS9CVUlMRC5tZAorKysgYi9CVUlMRC5tZApAQCAtMSw0NyArMSw0NyBAQAot
QnVpbGRpbmcgdGhlIFhlbkJ1cyBQYWNrYWdlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LQotRmlyc3QgeW91J2xsIG5lZWQgYSBkZXZpY2UgZHJpdmVyIGJ1aWxkIGVudmlyb25tZW50IGZv
ciBXaW5kb3dzIDggb3IKLVdpbmRvd3MgOC4xLgotRm9yIFdpbmRvd3MgOCB0aGlzIG1lYW5zOgot
Ci0qICAgVmlzdWFsIFN0dWRpbyAyMDEyIChQcm9mZXNzaW9uYWwgb3IgVWx0aW1hdGUpCi0qICAg
V2luZG93cyBEcml2ZXIgS2l0IDgKLQotRm9yIFdpbmRvd3MgOC4xIHRoaXMgbWVhbnM6Ci0KLSog
ICBWaXN1YWwgU3R1ZGlvIDIwMTMgKEFueSBTS1UsIGluY2x1ZGluZyBFeHByZXNzKQotKiAgIFdp
bmRvd3MgRHJpdmVyIEtpdCA4LjEKLQotKFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL3dpbmRvd3MvaGFyZHdhcmUvaGg4NTIzNjUuYXNweCkuIFlvdQotbWF5IGZpbmQgaXQgdXNl
ZnVsIHRvIGluc3RhbGwgVmlydHVhbENsb25lRHJpdmUgZnJvbSBodHRwOi8vd3d3LnNseXNvZnQu
Y29tCi1hcyBWaXN1YWwgU3R1ZGlvIGlzIGdlbmVyYWxseSBzdXBwbGllZCBpbiBJU08gZm9ybS4K
LQotSW5zdGFsbCBWaXN1YWwgU3R1ZGlvIGZpcnN0ICh5b3Ugb25seSBuZWVkIGluc3RhbGwgTUZD
IGZvciBDKyspIGFuZCB0aGVuCi10aGUgV0RLLiBTZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUg
Y2FsbGVkIFZTIHRvIHRoZSBiYXNlIG9mIHRoZSBWaXN1YWwKLVN0dWRpbyBJbnN0YWxsYXRpb24g
KGUuZy4gQzpcUHJvZ3JhbSBGaWxlc1xNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMi4wKSBhbmQK
LWEgdmFyaWFibGUgY2FsbGVkIEtJVCB0byB0aGUgYmFzZSBvZiB0aGUgV0RLCi0oZS5nLiBDOlxQ
cm9ncmFtIEZpbGVzXFdpbmRvd3MgS2l0c1w4LjEpLiBBbHNvIHNldCBhbiBlbnZpcm9ubWVudCB2
YXJpYWJsZQotY2FsbGVkIFNZTUJPTFxfU0VSVkVSIHRvIHBvaW50IGF0IGEgbG9jYXRpb24gd2hl
cmUgZHJpdmVyIHN5bWJvbHMgY2FuIGJlCi1zdG9yZWQuIFRoaXMgY2FuIGJlIGxvY2FsIGRpcmVj
dG9yeSBlLmcuIEM6XFN5bWJvbHMuCi0KLU5leHQgeW91J2xsIG5lZWQgYSAzLnggdmVyc2lvbiBv
ZiBweXRob24gKHdoaWNoIHlvdSBjYW4gZ2V0IGZyb20KLWh0dHA6Ly93d3cucHl0aG9uLm9yZyku
IE1ha2Ugc3VyZSBweXRob24uZXhlIGlzIHNvbWV3aGVyZSBvbiB5b3VyIGRlZmF1bHQKLXBhdGgu
Ci0KLU5vdyBmaXJlIHVwIGEgQ29tbWFuZCBQcm9tcHQgYW5kIG5hdmlnYXRlIHRvIHRoZSBiYXNl
IG9mIHlvdXIgZ2l0IHJlcG9zaXRvcnkuCi1BdCB0aGUgcHJvbXB0IHR5cGU6Ci0KLSAgICBidWls
ZC5weSBjaGVja2VkCi0KLVRoaXMgd2lsbCBjcmVhdGUgYSBkZWJ1ZyBidWlsZCBvZiB0aGUgZHJp
dmVyLiBUbyBjcmVhdGUgYSBub24tZGVidWcgYnVpbGQKLXR5cGU6Ci0KLSAgICBidWlsZC5weSBm
cmVlCi0KLU5vdGUgdGhhdCBTdGF0aWMgRHJpdmVyIFZlcmlmaWVyIGlzIHJ1biBieSBkZWZhdWx0
IGFzIHBhcnQgb2YgdGhlIGJ1aWxkCi1wcm9jZXNzLiBUaGlzIGNhbiBiZSB2ZXJ5IHRpbWUgY29u
c3VtaW5nLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBydW4gdGhlCi12ZXJpZmllciB0aGVuIHlvdSBj
YW4gYWRkIHRoZSAnbm9zZHYnIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB5b3VyIGNvbW1hbmQKLWUu
Zy46Ci0KLSAgICBidWlsZC5weSBmcmVlIG5vc2R2CitCdWlsZGluZyB0aGUgWGVuQnVzIFBhY2th
Z2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXJzdCB5b3UnbGwgbmVlZCBhIGRl
dmljZSBkcml2ZXIgYnVpbGQgZW52aXJvbm1lbnQgZm9yIFdpbmRvd3MgOCBvcgorV2luZG93cyA4
LjEuCitGb3IgV2luZG93cyA4IHRoaXMgbWVhbnM6CisKKyogICBWaXN1YWwgU3R1ZGlvIDIwMTIg
KFByb2Zlc3Npb25hbCBvciBVbHRpbWF0ZSkKKyogICBXaW5kb3dzIERyaXZlciBLaXQgOAorCitG
b3IgV2luZG93cyA4LjEgdGhpcyBtZWFuczoKKworKiAgIFZpc3VhbCBTdHVkaW8gMjAxMyAoQW55
IFNLVSwgaW5jbHVkaW5nIEV4cHJlc3MpCisqICAgV2luZG93cyBEcml2ZXIgS2l0IDguMQorCiso
U2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9oYXJkd2FyZS9oaDg1
MjM2NS5hc3B4KS4gWW91CittYXkgZmluZCBpdCB1c2VmdWwgdG8gaW5zdGFsbCBWaXJ0dWFsQ2xv
bmVEcml2ZSBmcm9tIGh0dHA6Ly93d3cuc2x5c29mdC5jb20KK2FzIFZpc3VhbCBTdHVkaW8gaXMg
Z2VuZXJhbGx5IHN1cHBsaWVkIGluIElTTyBmb3JtLgorCitJbnN0YWxsIFZpc3VhbCBTdHVkaW8g
Zmlyc3QgKHlvdSBvbmx5IG5lZWQgaW5zdGFsbCBNRkMgZm9yIEMrKykgYW5kIHRoZW4KK3RoZSBX
REsuIFNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgVlMgdG8gdGhlIGJhc2Ugb2Yg
dGhlIFZpc3VhbAorU3R1ZGlvIEluc3RhbGxhdGlvbiAoZS5nLiBDOlxQcm9ncmFtIEZpbGVzXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEyLjApIGFuZAorYSB2YXJpYWJsZSBjYWxsZWQgS0lUIHRv
IHRoZSBiYXNlIG9mIHRoZSBXREsKKyhlLmcuIEM6XFByb2dyYW0gRmlsZXNcV2luZG93cyBLaXRz
XDguMSkuIEFsc28gc2V0IGFuIGVudmlyb25tZW50IHZhcmlhYmxlCitjYWxsZWQgU1lNQk9MXF9T
RVJWRVIgdG8gcG9pbnQgYXQgYSBsb2NhdGlvbiB3aGVyZSBkcml2ZXIgc3ltYm9scyBjYW4gYmUK
K3N0b3JlZC4gVGhpcyBjYW4gYmUgbG9jYWwgZGlyZWN0b3J5IGUuZy4gQzpcU3ltYm9scy4KKwor
TmV4dCB5b3UnbGwgbmVlZCBhIDMueCB2ZXJzaW9uIG9mIHB5dGhvbiAod2hpY2ggeW91IGNhbiBn
ZXQgZnJvbQoraHR0cDovL3d3dy5weXRob24ub3JnKS4gTWFrZSBzdXJlIHB5dGhvbi5leGUgaXMg
c29tZXdoZXJlIG9uIHlvdXIgZGVmYXVsdAorcGF0aC4KKworTm93IGZpcmUgdXAgYSBDb21tYW5k
IFByb21wdCBhbmQgbmF2aWdhdGUgdG8gdGhlIGJhc2Ugb2YgeW91ciBnaXQgcmVwb3NpdG9yeS4K
K0F0IHRoZSBwcm9tcHQgdHlwZToKKworICAgIGJ1aWxkLnB5IGNoZWNrZWQKKworVGhpcyB3aWxs
IGNyZWF0ZSBhIGRlYnVnIGJ1aWxkIG9mIHRoZSBkcml2ZXIuIFRvIGNyZWF0ZSBhIG5vbi1kZWJ1
ZyBidWlsZAordHlwZToKKworICAgIGJ1aWxkLnB5IGZyZWUKKworTm90ZSB0aGF0IFN0YXRpYyBE
cml2ZXIgVmVyaWZpZXIgaXMgcnVuIGJ5IGRlZmF1bHQgYXMgcGFydCBvZiB0aGUgYnVpbGQKK3By
b2Nlc3MuIFRoaXMgY2FuIGJlIHZlcnkgdGltZSBjb25zdW1pbmcuIElmIHlvdSBkb24ndCB3YW50
IHRvIHJ1biB0aGUKK3ZlcmlmaWVyIHRoZW4geW91IGNhbiBhZGQgdGhlICdub3Nkdicga2V5d29y
ZCB0byB0aGUgZW5kIG9mIHlvdXIgY29tbWFuZAorZS5nLjoKKworICAgIGJ1aWxkLnB5IGZyZWUg
bm9zZHYKZGlmZiAtLWdpdCBhL2RvYy9ncm91cHMuZG94IGIvZG9jL2dyb3Vwcy5kb3gKaW5kZXgg
MDUyNTlhOS4uNmJlMDM1OSAxMDA2NDQKLS0tIGEvZG9jL2dyb3Vwcy5kb3gKKysrIGIvZG9jL2dy
b3Vwcy5kb3gKQEAgLTEsNCArMSw0IEBACi0vKiEKLSAqIFxkZWZncm91cCBpbnRlcmZhY2VzICJJ
bnRlcmZhY2VzIgotICogXGJyaWVmIFRoaXMgZ3JvdXAgY29udGFpbnMgYWxsIHRoZSBpbnRlcmZh
Y2VzIGV4cG9ydGVkIGJ5IGRyaXZlcnMgaW4gdGhpcyBwYWNrYWdlCisvKiEKKyAqIFxkZWZncm91
cCBpbnRlcmZhY2VzICJJbnRlcmZhY2VzIgorICogXGJyaWVmIFRoaXMgZ3JvdXAgY29udGFpbnMg
YWxsIHRoZSBpbnRlcmZhY2VzIGV4cG9ydGVkIGJ5IGRyaXZlcnMgaW4gdGhpcyBwYWNrYWdlCiAg
Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbWFpbi5kb3gg
Yi9kb2MvbWFpbi5kb3gKaW5kZXggODMyMDE5ZS4uYjVhMDdkMiAxMDA2NDQKLS0tIGEvZG9jL21h
aW4uZG94CisrKyBiL2RvYy9tYWluLmRveApAQCAtMSw1ICsxLDUgQEAKLS8qIQotICogXG1haW5w
YWdlIFhFTkJVUyBEb2N1bWVudGF0aW9uCi0gKgotICogXHJlZiBpbnRlcmZhY2VzICJJbnRlcmZh
Y2VzIgorLyohCisgKiBcbWFpbnBhZ2UgWEVOQlVTIERvY3VtZW50YXRpb24KKyAqCisgKiBccmVm
IGludGVyZmFjZXMgIkludGVyZmFjZXMiCiAgKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9nZXRfeGVuX2hlYWRlcnMucHkgYi9nZXRfeGVuX2hlYWRlcnMucHkKaW5k
ZXggZWYxYTJjOC4uM2I3MjU4ZSAxMDA3NTUKLS0tIGEvZ2V0X3hlbl9oZWFkZXJzLnB5CisrKyBi
L2dldF94ZW5faGVhZGVycy5weQpAQCAtMSw3NiArMSw3NiBAQAotIyFweXRob24gLXUKLQotaW1w
b3J0IG9zLCBzeXMKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgcmUK
LQotZGVmIHNoZWxsKGNvbW1hbmQpOgotICAgIHByaW50KGNvbW1hbmQpCi0gICAgc3lzLnN0ZG91
dC5mbHVzaCgpCi0KLSAgICBwaXBlID0gb3MucG9wZW4oJyAnLmpvaW4oY29tbWFuZCksICdyJywg
MSkKLQotICAgIGZvciBsaW5lIGluIHBpcGU6Ci0gICAgICAgIHByaW50KGxpbmUucnN0cmlwKCkp
Ci0KLSAgICByZXR1cm4gcGlwZS5jbG9zZSgpCi0KLWRlZiBnZXRfcmVwbyh1cmwsIHdvcmtpbmcp
OgotICAgIHNoZWxsKFsnZ2l0JywgJ2Nsb25lJywgJy0tbm8tY2hlY2tvdXQnLCB1cmwsIHdvcmtp
bmddKQotCi1kZWYgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpOgotICAgIGN3ZCA9IG9zLmdldGN3
ZCgpCi0gICAgb3MuY2hkaXIod29ya2luZykKLSAgICBzaGVsbChbJ2dpdCcsICdjaGVja291dCcs
ICctYicsIHRhZ10pCi0gICAgb3MuY2hkaXIoY3dkKQotCi1kZWYgY29weV9maWxlKHdvcmtpbmcs
IHNyY19kaXIsIGRzdF9kaXIsIG5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3MubWFrZWRpcnMo
J2luY2x1ZGVcXHhlblxcJXMnICUgZHN0X2RpcikKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAg
ICAgTm9uZQotCi0gICAgc3JjID0gb3BlbignJXNcXHhlblxcaW5jbHVkZVxcJXNcXCVzJyAlICh3
b3JraW5nLCBzcmNfZGlyLCBuYW1lKSwgJ3InKQotICAgIGRzdCA9IG9wZW4oJ2luY2x1ZGVcXHhl
blxcJXNcXCVzJyAlIChkc3RfZGlyLCBuYW1lKSwgJ3cnLCBuZXdsaW5lPSdcbicpCi0KLSAgICBw
cmludChuYW1lKQotCi0gICAgZm9yIGxpbmUgaW4gc3JjOgotICAgICAgICBsaW5lID0gcmUuc3Vi
KCcgdW5zaWduZWQgbG9uZycsICcgVUxPTkdfUFRSJywgbGluZSkKLSAgICAgICAgbGluZSA9IHJl
LnN1YignXCh1bnNpZ25lZCBsb25nJywgJyhVTE9OR19QVFInLCBsaW5lKQotICAgICAgICBsaW5l
ID0gcmUuc3ViKCcgbG9uZycsICcgTE9OR19QVFInLCBsaW5lKQotICAgICAgICBsaW5lID0gcmUu
c3ViKCdcKGxvbmcnLCAnKExPTkdfUFRSJywgbGluZSkKLSAgICAgICAgZHN0LndyaXRlKGxpbmUp
Ci0KLSAgICBkc3QuY2xvc2UoKQotICAgIHNyYy5jbG9zZSgpCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgdGFnID0gc3lzLmFyZ3ZbMV0KLSAgICB3b3JraW5nID0gc3lzLmFyZ3Zb
Ml0KLQotICAgIGdldF9yZXBvKCdnaXQ6Ly94ZW5iaXRzLnhlbi5vcmcveGVuLmdpdCcsIHdvcmtp
bmcpCi0gICAgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpCi0KLSAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpYycsICcuJywgJ3hlbi5oJykKLQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVi
bGljJywgJy4nLCAneGVuLWNvbXBhdC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3RyYWNlLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAnbWVtb3J5LmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnc2No
ZWQuaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICdldmVudF9jaGFu
bmVsLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZ3JhbnRfdGFi
bGUuaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd2ZXJzaW9uLmgn
KQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZmVhdHVyZXMuaCcpCi0K
LSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3hlbicsICcuJywgJ2Vycm5vLmgnKQotCi0gICAgY29w
eV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi5oJykK
LSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAnYXJjaC14ODYnLCAn
eGVuLXg4Nl8zMi5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYn
LCAnYXJjaC14ODYnLCAneGVuLXg4Nl82NC5oJykKLQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAn
cHVibGljXFxodm0nLCAnaHZtJywgJ2h2bV9vcC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpY1xcaHZtJywgJ2h2bScsICdwYXJhbXMuaCcpCi0KLSAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpY1xcaW8nLCAnaW8nLCAneHNfd2lyZS5oJykKKyMhcHl0aG9uIC11CisKK2ltcG9y
dCBvcywgc3lzCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCisK
K2RlZiBzaGVsbChjb21tYW5kKToKKyAgICBwcmludChjb21tYW5kKQorICAgIHN5cy5zdGRvdXQu
Zmx1c2goKQorCisgICAgcGlwZSA9IG9zLnBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCAncicsIDEp
CisKKyAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICBwcmludChsaW5lLnJzdHJpcCgpKQor
CisgICAgcmV0dXJuIHBpcGUuY2xvc2UoKQorCitkZWYgZ2V0X3JlcG8odXJsLCB3b3JraW5nKToK
KyAgICBzaGVsbChbJ2dpdCcsICdjbG9uZScsICctLW5vLWNoZWNrb3V0JywgdXJsLCB3b3JraW5n
XSkKKworZGVmIGdldF9icmFuY2godGFnLCB3b3JraW5nKToKKyAgICBjd2QgPSBvcy5nZXRjd2Qo
KQorICAgIG9zLmNoZGlyKHdvcmtpbmcpCisgICAgc2hlbGwoWydnaXQnLCAnY2hlY2tvdXQnLCAn
LWInLCB0YWddKQorICAgIG9zLmNoZGlyKGN3ZCkKKworZGVmIGNvcHlfZmlsZSh3b3JraW5nLCBz
cmNfZGlyLCBkc3RfZGlyLCBuYW1lKToKKyAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKCdp
bmNsdWRlXFx4ZW5cXCVzJyAlIGRzdF9kaXIpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAg
IE5vbmUKKworICAgIHNyYyA9IG9wZW4oJyVzXFx4ZW5cXGluY2x1ZGVcXCVzXFwlcycgJSAod29y
a2luZywgc3JjX2RpciwgbmFtZSksICdyJykKKyAgICBkc3QgPSBvcGVuKCdpbmNsdWRlXFx4ZW5c
XCVzXFwlcycgJSAoZHN0X2RpciwgbmFtZSksICd3JywgbmV3bGluZT0nXG4nKQorCisgICAgcHJp
bnQobmFtZSkKKworICAgIGZvciBsaW5lIGluIHNyYzoKKyAgICAgICAgbGluZSA9IHJlLnN1Yign
IHVuc2lnbmVkIGxvbmcnLCAnIFVMT05HX1BUUicsIGxpbmUpCisgICAgICAgIGxpbmUgPSByZS5z
dWIoJ1wodW5zaWduZWQgbG9uZycsICcoVUxPTkdfUFRSJywgbGluZSkKKyAgICAgICAgbGluZSA9
IHJlLnN1YignIGxvbmcnLCAnIExPTkdfUFRSJywgbGluZSkKKyAgICAgICAgbGluZSA9IHJlLnN1
YignXChsb25nJywgJyhMT05HX1BUUicsIGxpbmUpCisgICAgICAgIGRzdC53cml0ZShsaW5lKQor
CisgICAgZHN0LmNsb3NlKCkKKyAgICBzcmMuY2xvc2UoKQorCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHRhZyA9IHN5cy5hcmd2WzFdCisgICAgd29ya2luZyA9IHN5cy5hcmd2WzJd
CisKKyAgICBnZXRfcmVwbygnZ2l0Oi8veGVuYml0cy54ZW4ub3JnL3hlbi5naXQnLCB3b3JraW5n
KQorICAgIGdldF9icmFuY2godGFnLCB3b3JraW5nKQorCisgICAgY29weV9maWxlKHdvcmtpbmcs
ICdwdWJsaWMnLCAnLicsICd4ZW4uaCcpCisKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3hlbi1jb21wYXQuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMn
LCAnLicsICd0cmFjZS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywg
J21lbW9yeS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ3NjaGVk
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZXZlbnRfY2hhbm5l
bC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2dyYW50X3RhYmxl
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAndmVyc2lvbi5oJykK
KyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2ZlYXR1cmVzLmgnKQorCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnLicsICdlcnJuby5oJykKKworICAgIGNvcHlf
ZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICdhcmNoLXg4NicsICd4ZW4uaCcpCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hl
bi14ODZfMzIuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2Jywg
J2FyY2gteDg2JywgJ3hlbi14ODZfNjQuaCcpCisKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1
YmxpY1xcaHZtJywgJ2h2bScsICdodm1fb3AuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGh2bScsICdodm0nLCAncGFyYW1zLmgnKQorCisgICAgY29weV9maWxlKHdvcmtpbmcs
ICdwdWJsaWNcXGlvJywgJ2lvJywgJ3hzX3dpcmUuaCcpCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Zl
cnNpb24uaHggYi9pbmNsdWRlL3ZlcnNpb24uaHgKaW5kZXggOTJiMGE2Yi4uNGI3MzUxZCAxMDA2
NDQKLS0tIGEvaW5jbHVkZS92ZXJzaW9uLmh4CisrKyBiL2luY2x1ZGUvdmVyc2lvbi5oeApAQCAt
MSw1NSArMSw1NCBAQAotLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCi0gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCi0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgotICogCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgCi0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSAKLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgCi0gKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIAotICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgCi0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKLSAqIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgCi0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIAotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiAKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNkZWZpbmUgQ09N
UEFOWV9OQU1FX1NUUgkiQENPTVBBTllfTkFNRUAiCi0jZGVmaW5lIFBST0RVQ1RfTkFNRV9TVFIJ
IkBQUk9EVUNUX05BTUVAIgotCi0jZGVmaW5lIE1BSk9SX1ZFUlNJT04JQE1BSk9SX1ZFUlNJT05A
Ci0jZGVmaW5lIE1BSk9SX1ZFUlNJT05fU1RSCSJATUFKT1JfVkVSU0lPTkAiCi0KLSNkZWZpbmUg
TUlOT1JfVkVSU0lPTglATUlOT1JfVkVSU0lPTkAKLSNkZWZpbmUgTUlOT1JfVkVSU0lPTl9TVFIJ
IkBNSU5PUl9WRVJTSU9OQCIKLQotI2RlZmluZSBNSUNST19WRVJTSU9OCUBNSUNST19WRVJTSU9O
QAotI2RlZmluZSBNSUNST19WRVJTSU9OX1NUUgkiQE1JQ1JPX1ZFUlNJT05AIgotCi0jZGVmaW5l
IEJVSUxEX05VTUJFUglAQlVJTERfTlVNQkVSQAotI2RlZmluZSBCVUlMRF9OVU1CRVJfU1RSCSJA
QlVJTERfTlVNQkVSQCIKLQotI2RlZmluZSBZRUFSCUBZRUFSQAotI2RlZmluZSBZRUFSX1NUUgki
QFlFQVJAIgotCi0jZGVmaW5lIE1PTlRICUBNT05USEAKLSNkZWZpbmUgTU9OVEhfU1RSCSJATU9O
VEhAIgotCi0jZGVmaW5lIERBWQlAREFZQAotI2RlZmluZSBEQVlfU1RSCSJAREFZQCIKLQorLyog
Q29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkCisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyCisgKiAgICAgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQKKyAqIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICog
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjZGVmaW5lIENPTVBBTllfTkFNRV9TVFIJIkBDT01QQU5ZX05BTUVAIgorI2RlZmluZSBQ
Uk9EVUNUX05BTUVfU1RSCSJAUFJPRFVDVF9OQU1FQCIKKworI2RlZmluZSBNQUpPUl9WRVJTSU9O
CUBNQUpPUl9WRVJTSU9OQAorI2RlZmluZSBNQUpPUl9WRVJTSU9OX1NUUgkiQE1BSk9SX1ZFUlNJ
T05AIgorCisjZGVmaW5lIE1JTk9SX1ZFUlNJT04JQE1JTk9SX1ZFUlNJT05ACisjZGVmaW5lIE1J
Tk9SX1ZFUlNJT05fU1RSCSJATUlOT1JfVkVSU0lPTkAiCisKKyNkZWZpbmUgTUlDUk9fVkVSU0lP
TglATUlDUk9fVkVSU0lPTkAKKyNkZWZpbmUgTUlDUk9fVkVSU0lPTl9TVFIJIkBNSUNST19WRVJT
SU9OQCIKKworI2RlZmluZSBCVUlMRF9OVU1CRVIJQEJVSUxEX05VTUJFUkAKKyNkZWZpbmUgQlVJ
TERfTlVNQkVSX1NUUgkiQEJVSUxEX05VTUJFUkAiCisKKyNkZWZpbmUgWUVBUglAWUVBUkAKKyNk
ZWZpbmUgWUVBUl9TVFIJIkBZRUFSQCIKKworI2RlZmluZSBNT05USAlATU9OVEhACisjZGVmaW5l
IE1PTlRIX1NUUgkiQE1PTlRIQCIKKworI2RlZmluZSBEQVkJQERBWUAKKyNkZWZpbmUgREFZX1NU
UgkiQERBWUAiCmRpZmYgLS1naXQgYS92czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2ogYi92
czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKaW5kZXggNThiOTM3OC4uZTY2NGQ3NSAxMDA2
NDQKLS0tIGEvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qCisrKyBiL3ZzMjAxMi9wYWNr
YWdlL3BhY2thZ2UudmN4cHJvagpAQCAtMSwyNTMgKzEsMjUzIEBACi3vu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxk
IiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20v
ZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJbXBvcnQgUHJvamVjdD0iLi5cY29uZmlncy5w
cm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
RHJpdmVyVHlwZT5XRE08L0RyaXZlclR5cGU+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD5XaW5kb3dz
S2VybmVsTW9kZURyaXZlcjguMDwvUGxhdGZvcm1Ub29sc2V0PgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5VdGlsaXR5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8RHJpdmVyVHlwZT5QYWNrYWdl
PC9Ecml2ZXJUeXBlPgotICAgIDxEaXNhYmxlRmFzdFVwVG9EYXRlQ2hlY2s+dHJ1ZTwvRGlzYWJs
ZUZhc3RVcFRvRGF0ZUNoZWNrPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJHbG9iYWxzIj4KLSAgICA8Q29uZmlndXJhdGlvbj5XaW5kb3dzIFZpc3RhIERlYnVn
PC9Db25maWd1cmF0aW9uPgotICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScg
PT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8RGVidWdnZXJGbGF2b3I+RGJnZW5nS2VybmVs
RGVidWdnZXI8L0RlYnVnZ2VyRmxhdm9yPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+
Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+ezky
RTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn08L1Byb2plY3RHdWlkPgotICA8L1By
b3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iLi5cdGFyZ2V0cy5wcm9wcyIgLz4KLSAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxFbmFibGVJbmYyY2F0PnRydWU8L0VuYWJsZUluZjJj
YXQ+Ci0gICAgPEluZjJDYXRXaW5kb3dzVmVyc2lvbkxpc3QgQ29uZGl0aW9uPSInJChQbGF0Zm9y
bSknPT0neDY0JyI+VmlzdGFfeDY0OzdfeDY0O1NlcnZlcjIwMDhfeDY0O1NlcnZlcjIwMDhSMl94
NjQ7U2VydmVyOF94NjQ8L0luZjJDYXRXaW5kb3dzVmVyc2lvbkxpc3Q+Ci0gICAgPEluZjJDYXRX
aW5kb3dzVmVyc2lvbkxpc3QgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj5WaXN0
YV94ODY7N194ODY7U2VydmVyMjAwOF94ODY7OF94ODY8L0luZjJDYXRXaW5kb3dzVmVyc2lvbkxp
c3Q+Ci0gICAgPERlYnVnZ2VyRmxhdm9yPkRiZ2VuZ0tlcm5lbERlYnVnZ2VyPC9EZWJ1Z2dlckZs
YXZvcj4KLSAgICA8RW5hYmxlRGVwbG95bWVudD5GYWxzZTwvRW5hYmxlRGVwbG95bWVudD4KLSAg
ICA8SW1wb3J0VG9TdG9yZT5GYWxzZTwvSW1wb3J0VG9TdG9yZT4KLSAgICA8SW5zdGFsbE1vZGU+
Tm9uZTwvSW5zdGFsbE1vZGU+Ci0gICAgPFNjcmlwdERldmljZVF1ZXJ5PiVQYXRoVG9JbmYlPC9T
Y3JpcHREZXZpY2VRdWVyeT4KLSAgICA8RW5hYmxlVmVyaWZpZXI+RmFsc2U8L0VuYWJsZVZlcmlm
aWVyPgotICAgIDxBbGxEcml2ZXJzPkZhbHNlPC9BbGxEcml2ZXJzPgotICAgIDxWZXJpZnlQcm9q
ZWN0T3V0cHV0PlRydWU8L1ZlcmlmeVByb2plY3RPdXRwdXQ+Ci0gICAgPFZlcmlmeURyaXZlcnMg
Lz4KLSAgICA8VmVyaWZ5RmxhZ3M+MTMzNTYzPC9WZXJpZnlGbGFncz4KLSAgICA8SW50RGlyPi4u
XCQoUHJvamVjdE5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGly
PgotICAgIDxPdXREaXI+Li5cJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9PdXRE
aXI+Ci0gICAgPFBhY2thZ2VEaXI+Li5cLi5ceGVuYnVzXCQoRERLUGxhdGZvcm0pPC9QYWNrYWdl
RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+Ci0g
ICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3RvbUJ1aWxkQmVmb3JlVGFy
Z2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfFdpbjMyJyI+
Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3RvbUJ1aWxkQmVmb3Jl
VGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzInIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAgIDwvQ3VzdG9tQnVpbGRC
ZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxl
YXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3Rv
bUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBS
ZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1
c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3Mg
OCBEZWJ1Z3xXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gICAgPC9D
dXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dz
IDggUmVsZWFzZXx4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAgIDwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAg
IDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2lu
ZG93cyBWaXN0YSBSZWxlYXNlfHg2NCciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+
Ci0gICAgPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDcgUmVsZWFzZXx4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRz
PgotICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nV2luZG93cyA3IERlYnVnfHg2NCciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+
Ci0gICAgPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4K
LSAgICA8L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4K
LSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAg
IDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91
dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwv
Q3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2lu
ZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8
Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1dHM+Ci0gICAgICA8L0lucHV0
cz4KLSAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDwvVHJlYXRPdXRwdXRBc0Nv
bnRlbnQ+Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1
aWxkU3RlcD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8Q29tbWFu
ZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1dHM+Ci0gICAgICA8L0lucHV0cz4KLSAg
ICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+
Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNl
fFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAg
PC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0
T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxP
dXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+Ci0g
ICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgot
ICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250
ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAg
ICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IERlYnVnfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1
aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0
cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAg
PC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRz
PgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA4IFJlbGVhc2V8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAg
ICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwv
SW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1
dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPENvbW1h
bmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgICA8SW5wdXRzPgotICAgICAgPC9JbnB1dHM+Ci0g
ICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50
PgotICAgICAgPE91dHB1dHM+Ci0gICAgICA8L091dHB1dHM+Ci0gICAgPC9DdXN0b21CdWlsZFN0
ZXA+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJl
bGVhc2V8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAg
ICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRy
ZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAg
IDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8eDY0JyI+
Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5k
PgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXND
b250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgot
ICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfHg2NCciPgotICAgIDxDdXN0b21C
dWlsZFN0ZXA+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1
dHM+Ci0gICAgICA8L0lucHV0cz4KLSAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAg
IDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0
cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAg
ICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgICA8SW5wdXRzPgotICAgICAgPC9J
bnB1dHM+Ci0gICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8L1RyZWF0T3V0cHV0
QXNDb250ZW50PgotICAgICAgPE91dHB1dHM+Ci0gICAgICA8L091dHB1dHM+Ci0gICAgPC9DdXN0
b21CdWlsZFN0ZXA+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5maWx0XHhlbmZpbHQudmN4cHJvaiI+
Ci0gICAgICA8UHJvamVjdD57ZDc0MTFiMmMtMmM0My00MzRkLTlmNTYtZTEwYTNkMmY1YmFkfTwv
UHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iLi5ceGVuYnVzX2NvaW5zdFx4ZW5idXNfY29pbnN0LnZjeHByb2oiPgotICAgICAg
PFByb2plY3Q+ezRiZjQxMzc4LWMwMWItNDAwMi04NTgxLTU2M2M1ZjcwMzM2Mn08L1Byb2plY3Q+
Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9
Ii4uXHhlbmJ1c1x4ZW5idXMudmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57MTRjMTZjMjktNzdj
OS00NzViLWE2MTgtMWIwMWU2N2NmOTg1fTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVu
Y2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuXHhlbi52Y3hwcm9qIj4K
LSAgICAgIDxQcm9qZWN0Pns5YzZhNWQ0OC1hMzMxLTRiMWYtYTAwNC03YmI2N2JhNWJlMWN9PC9Q
cm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVt
R3JvdXA+Ci0gICAgPEZpbGVzVG9QYWNrYWdlIEluY2x1ZGU9IiQoS0lUKVxSZWRpc3RcRElGeFxk
cGluc3RcRW5nTXVpXHg4NlxkcGluc3QuZXhlIiBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdX
aW4zMiciIC8+Ci0gICAgPEZpbGVzVG9QYWNrYWdlIEluY2x1ZGU9IiQoS0lUKVxSZWRpc3RcRElG
eFxkcGluc3RcRW5nTXVpXHg2NFxkcGluc3QuZXhlIiBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSd4NjQnIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlxjb25maWdzLnByb3BzIiAv
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxEcml2ZXJU
eXBlPldETTwvRHJpdmVyVHlwZT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxN
b2RlRHJpdmVyOC4wPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlV0
aWxpdHk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxEcml2ZXJUeXBlPlBhY2thZ2U8L0RyaXZl
clR5cGU+CisgICAgPERpc2FibGVGYXN0VXBUb0RhdGVDaGVjaz50cnVlPC9EaXNhYmxlRmFzdFVw
VG9EYXRlQ2hlY2s+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uPldpbmRvd3MgVmlzdGEgRGVidWc8L0NvbmZp
Z3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+
V2luMzI8L1BsYXRmb3JtPgorICAgIDxEZWJ1Z2dlckZsYXZvcj5EYmdlbmdLZXJuZWxEZWJ1Z2dl
cjwvRGVidWdnZXJGbGF2b3I+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57OTJFNUE0NkIt
OTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgorICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXA+CisgICAgPEVuYWJsZUluZjJjYXQ+dHJ1ZTwvRW5hYmxlSW5mMmNhdD4KKyAg
ICA8SW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4
NjQnIj5WaXN0YV94NjQ7N194NjQ7U2VydmVyMjAwOF94NjQ7U2VydmVyMjAwOFIyX3g2NDtTZXJ2
ZXI4X3g2NDwvSW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdD4KKyAgICA8SW5mMkNhdFdpbmRvd3NW
ZXJzaW9uTGlzdCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPlZpc3RhX3g4Njs3
X3g4NjtTZXJ2ZXIyMDA4X3g4Njs4X3g4NjwvSW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdD4KKyAg
ICA8RGVidWdnZXJGbGF2b3I+RGJnZW5nS2VybmVsRGVidWdnZXI8L0RlYnVnZ2VyRmxhdm9yPgor
ICAgIDxFbmFibGVEZXBsb3ltZW50PkZhbHNlPC9FbmFibGVEZXBsb3ltZW50PgorICAgIDxJbXBv
cnRUb1N0b3JlPkZhbHNlPC9JbXBvcnRUb1N0b3JlPgorICAgIDxJbnN0YWxsTW9kZT5Ob25lPC9J
bnN0YWxsTW9kZT4KKyAgICA8U2NyaXB0RGV2aWNlUXVlcnk+JVBhdGhUb0luZiU8L1NjcmlwdERl
dmljZVF1ZXJ5PgorICAgIDxFbmFibGVWZXJpZmllcj5GYWxzZTwvRW5hYmxlVmVyaWZpZXI+Cisg
ICAgPEFsbERyaXZlcnM+RmFsc2U8L0FsbERyaXZlcnM+CisgICAgPFZlcmlmeVByb2plY3RPdXRw
dXQ+VHJ1ZTwvVmVyaWZ5UHJvamVjdE91dHB1dD4KKyAgICA8VmVyaWZ5RHJpdmVycyAvPgorICAg
IDxWZXJpZnlGbGFncz4xMzM1NjM8L1ZlcmlmeUZsYWdzPgorICAgIDxJbnREaXI+Li5cJChQcm9q
ZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9JbnREaXI+CisgICAg
PE91dERpcj4uLlwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBsYXRmb3JtKVw8L091dERpcj4KKyAg
ICA8UGFja2FnZURpcj4uLlwuLlx4ZW5idXNcJChEREtQbGF0Zm9ybSk8L1BhY2thZ2VEaXI+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8V2luMzInIj4KKyAgICA8Q3Vz
dG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRz
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPgor
ICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0b21CdWlsZEJlZm9yZVRh
cmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRC
ZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8
V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVp
bGRCZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IERlYnVn
fFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8L0N1c3RvbUJ1
aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxl
YXNlfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0b21C
dWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0
b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8
L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRv
d3MgNyBSZWxlYXNlfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAg
PC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5k
b3dzIDcgRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8
L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRv
d3MgOCBEZWJ1Z3x4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAg
PENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1
dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXND
b250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21C
dWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIERlYnVnfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxDb21tYW5k
PgorICAgICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAgICAgIDwvSW5wdXRzPgorICAg
ICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4K
KyAgICAgIDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVw
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxl
YXNlfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxDb21tYW5kPgorICAg
ICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAgICAgIDwvSW5wdXRzPgorICAgICAgPFRy
ZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAg
IDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8V2luMzIn
Ij4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1h
bmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRB
c0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+
CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8V2luMzInIj4KKyAgICA8Q3Vz
dG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8
SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Cisg
ICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091
dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVw
PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAg
ICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0
T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAg
PC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdX
aW5kb3dzIDggUmVsZWFzZXx4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENv
bW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+
CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250
ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8Q29tbWFuZD4KKyAg
ICAgIDwvQ29tbWFuZD4KKyAgICAgIDxJbnB1dHM+CisgICAgICA8L0lucHV0cz4KKyAgICAgIDxU
cmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAg
ICA8T3V0cHV0cz4KKyAgICAgIDwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgUmVsZWFzZXx4
NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0Nv
bW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRw
dXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1
dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXx4NjQnIj4KKyAgICA8
Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAg
ICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+
CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8
L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkU3Rl
cD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAg
ICAgIDwvSW5wdXRzPgorICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVh
dE91dHB1dEFzQ29udGVudD4KKyAgICAgIDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAg
IDwvQ3VzdG9tQnVpbGRTdGVwPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8Q29t
bWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICAgIDxJbnB1dHM+CisgICAgICA8L0lucHV0cz4K
KyAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRl
bnQ+CisgICAgICA8T3V0cHV0cz4KKyAgICAgIDwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9q
ZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhlbmZpbHRceGVuZmlsdC52Y3hwcm9qIj4KKyAgICAg
IDxQcm9qZWN0PntkNzQxMWIyYy0yYzQzLTQzNGQtOWY1Ni1lMTBhM2QyZjViYWR9PC9Qcm9qZWN0
PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSIuLlx4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiI+CisgICAgICA8UHJvamVj
dD57NGJmNDEzNzgtYzAxYi00MDAyLTg1ODEtNTYzYzVmNzAzMzYyfTwvUHJvamVjdD4KKyAgICA8
L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVu
YnVzXHhlbmJ1cy52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxNGMxNmMyOS03N2M5LTQ3NWIt
YTYxOC0xYjAxZTY3Y2Y5ODV9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5ceGVuLnZjeHByb2oiPgorICAgICAg
PFByb2plY3Q+ezljNmE1ZDQ4LWEzMzEtNGIxZi1hMDA0LTdiYjY3YmE1YmUxY308L1Byb2plY3Q+
CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iJChLSVQpXFJlZGlzdFxESUZ4XGRwaW5zdFxF
bmdNdWlceDg2XGRwaW5zdC5leGUiIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyIg
Lz4KKyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iJChLSVQpXFJlZGlzdFxESUZ4XGRwaW5z
dFxFbmdNdWlceDY0XGRwaW5zdC5leGUiIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCci
IC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5idXMuc2xuIGIvdnMyMDEyL3hlbmJ1
cy5zbG4KaW5kZXggZmYxNjE1MC4uNjI2ZmQ4NSAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbmJ1cy5z
bG4KKysrIGIvdnMyMDEyL3hlbmJ1cy5zbG4KQEAgLTEsMTgwICsxLDE4MCBAQAotTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlz
dWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gInhlbiIsICJ4ZW5ceGVuLnZjeHByb2oiLCAiezlDNkE1RDQ4LUEzMzEtNEIx
Ri1BMDA0LTdCQjY3QkE1QkUxQ30iCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmZpbHQiLCAieGVuZmlsdFx4ZW5maWx0
LnZjeHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCi0JUHJv
amVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfSA9IHs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAw
NC03QkI2N0JBNUJFMUN9Ci0JRW5kUHJvamVjdFNlY3Rpb24KLUVuZFByb2plY3QKLVByb2plY3Qo
Ins4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieGVuYnVzX2NvaW5z
dCIsICJ4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiIsICJ7NEJGNDEzNzgtQzAx
Qi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSIKLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5k
ZW5jaWVzKSA9IHBvc3RQcm9qZWN0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JB
NUJFMUN9ID0gezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30KLQlFbmRQcm9q
ZWN0U2VjdGlvbgotRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDEx
LTAwQTBDOTFCQzk0Mn0iKSA9ICJ4ZW5idXMiLCAieGVuYnVzXHhlbmJ1cy52Y3hwcm9qIiwgInsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9IgotCVByb2plY3RTZWN0aW9uKFBy
b2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKLQkJezlDNkE1RDQ4LUEzMzEtNEIxRi1B
MDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFD
fQotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInBhY2thZ2UiLCAicGFja2FnZVxwYWNrYWdl
LnZjeHByb2oiLCAiezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0iCi0JUHJv
amVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCQl7MTRDMTZD
MjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fSA9IHsxNEMxNkMyOS03N0M5LTQ3NUItQTYx
OC0xQjAxRTY3Q0Y5ODV9Ci0JCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
ID0ge0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0KLQkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JC
NjdCQTVCRTFDfQotCQl7NEJGNDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSA9IHs0
QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9Ci0JRW5kUHJvamVjdFNlY3Rpb24K
LUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9u
UGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCVdpbmRvd3MgNyBEZWJ1Z3xXaW4zMiA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMgotCQlXaW5kb3dzIDcgRGVidWd8eDY0ID0gV2luZG93cyA3IERlYnVn
fHg2NAotCQlXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMy
Ci0JCVdpbmRvd3MgNyBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQlXaW5k
b3dzIDggRGVidWd8V2luMzIgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJV2luZG93cyA4IERl
YnVnfHg2NCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJV2luZG93cyA4IFJlbGVhc2V8V2luMzIg
PSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQlXaW5kb3dzIDggUmVsZWFzZXx4NjQgPSBXaW5k
b3dzIDggUmVsZWFzZXx4NjQKLQkJV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8V2luMzIKLQkJV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQgPSBXaW5kb3dzIFZp
c3RhIERlYnVnfHg2NAotCQlXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIgPSBXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIKLQkJV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3Mg
VmlzdGEgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihQcm9q
ZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KLQkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNm
ZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JC
NjdCQTVCRTFDfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1
Z3xXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJezlDNkE1RDQ4
LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4w
ID0gV2luZG93cyA3IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVs
ZWFzZXxXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5k
b3dzIDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKLQkJ
ezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IFJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7OUM2QTVENDgtQTMzMS00
QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdp
bmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdp
bjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBE
ZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0JCXs5QzZBNUQ0OC1B
MzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2Zn
ID0gV2luZG93cyA4IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0
Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5QzZBNUQ0
OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEw
MDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyA4IFJlbGVhc2V8eDY0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9
LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0J
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRC
MUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2
N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5k
b3dzIFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNl
fFdpbjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3Mg
VmlzdGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7OUM2
QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8
eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcg
PSBXaW5kb3dzIDcgRGVidWd8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEz
RDJGNUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8
V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3
IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0JCXtENzQxMUIyQy0y
QzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9
IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVh
c2V8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93
cyA3IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXtE
NzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2
NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0
RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA4IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4z
MgotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVi
dWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgotCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA4IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NAot
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5CdWls
ZC4wID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2
LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3Mg
OCBSZWxlYXNlfHg2NAotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5X
aW5kb3dzIDggUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NAotCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVn
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKLQkJe0Q3NDExQjJD
LTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5C
dWlsZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBX
aW5kb3dzIFZpc3RhIERlYnVnfHg2NAotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNE
MkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBE
ZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxX
aW4zMgotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMgot
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJl
bGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKLQkJe0Q3NDEx
QjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2
NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
V2luZG93cyA3IERlYnVnfFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3
MDMzNjJ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfFdp
bjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBE
ZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA3IERlYnVnfHg2NAotCQl7NEJGNDEzNzgtQzAx
Qi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBX
aW5kb3dzIDcgRGVidWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNl
fFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3Mg
NyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgotCQl7NEJG
NDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQu
QWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDIt
ODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93
cyA3IFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgOCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIK
LQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVn
fFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezRCRjQxMzc4LUMwMUIt
NDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBX
aW5kb3dzIDggRGVidWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKLQkJezRCRjQxMzc4LUMw
MUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQu
MCA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01
NjNDNUY3MDMzNjJ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDgg
UmVsZWFzZXx4NjQKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2lu
ZG93cyA4IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKLQkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXs0QkY0MTM3OC1D
MDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQnVp
bGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04
NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyBWaXN0YSBEZWJ1Z3x4NjQKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1Rjcw
MzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVi
dWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3Mg
VmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzIKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIKLQkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBSZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3
OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQu
QnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKLQkJezE0QzE2QzI5LTc3QzktNDc1
Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdp
bmRvd3MgNyBEZWJ1Z3xXaW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NG
OTg1fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4z
MgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJezE0QzE2QzI5LTc3Qzkt
NDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2lu
ZG93cyA3IERlYnVnfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxX
aW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcg
UmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKLQkJezE0QzE2
QzI5LTc3QzktNDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkFj
dGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2
MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3Mg
NyBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0J
CXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3xX
aW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5LTQ3
NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA4IERlYnVnfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0Ci0JCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdp
bjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5
LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIw
MUU2N0NGOTg1fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJl
bGVhc2V8eDY0Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRv
d3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0JCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7MTRDMTZDMjktNzdD
OS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYx
OC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRv
d3MgVmlzdGEgRGVidWd8eDY0Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5
ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVn
fHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCi0JCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVsZWFz
ZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjkt
NzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYt
QjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5k
b3dzIDcgRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5
Rn0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIK
LQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IERlYnVn
fFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA3IERlYnVnfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0g
V2luZG93cyA3IERlYnVnfHg2NAotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUy
NzlGfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0J
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4
NjQuRGVwbG95LjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYt
QjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdp
bmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dz
IDcgUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfHg2
NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVD
Ni1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5
Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkRlcGxveS4wID0gV2luZG93cyA3IFJlbGVhc2V8eDY0
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkx
M0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYy
RDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA4IERlYnVn
fFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3Mg
OCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAotCQl7OTJFNUE0NkIt
OTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuRGVwbG95LjAgPSBXaW5kb3dzIDggRGVidWd8eDY0
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2
Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2
RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRv
d3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXx4
NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJl
bGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkx
M0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkRlcGxveS4w
ID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2
MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBW
aXN0YSBEZWJ1Z3xXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlG
fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVn
fFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3Mg
VmlzdGEgRGVidWd8V2luMzIuRGVwbG95LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0J
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05
MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2Rjgt
N0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5EZXBsb3kuMCA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9
LldpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJl
bGVhc2V8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2lu
ZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8
V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyBW
aXN0YSBSZWxlYXNlfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7OTJF
NUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8
eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuRGVwbG95
LjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlv
bk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbAorTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKKyMgVmlzdWFs
IFN0dWRpbyAyMDEyCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gInhlbiIsICJ4ZW5ceGVuLnZjeHByb2oiLCAiezlDNkE1RDQ4LUEzMzEtNEIxRi1B
MDA0LTdCQjY3QkE1QkUxQ30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmZpbHQiLCAieGVuZmlsdFx4ZW5maWx0LnZj
eHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCisJUHJvamVj
dFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7OUM2QTVENDgt
QTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfSA9IHs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03
QkI2N0JBNUJFMUN9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieGVuYnVzX2NvaW5zdCIs
ICJ4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiIsICJ7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5j
aWVzKSA9IHBvc3RQcm9qZWN0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJF
MUN9ID0gezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30KKwlFbmRQcm9qZWN0
U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAw
QTBDOTFCQzk0Mn0iKSA9ICJ4ZW5idXMiLCAieGVuYnVzXHhlbmJ1cy52Y3hwcm9qIiwgInsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9IgorCVByb2plY3RTZWN0aW9uKFByb2pl
Y3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0
LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfQor
CUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInBhY2thZ2UiLCAicGFja2FnZVxwYWNrYWdlLnZj
eHByb2oiLCAiezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0iCisJUHJvamVj
dFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7MTRDMTZDMjkt
NzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fSA9IHsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0x
QjAxRTY3Q0Y5ODV9CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9ID0g
e0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0KKwkJezlDNkE1RDQ4LUEzMzEt
NEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfQorCQl7NEJGNDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSA9IHs0QkY0
MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0Vu
ZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxh
dGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCVdpbmRvd3MgNyBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3Mg
NyBEZWJ1Z3xXaW4zMgorCQlXaW5kb3dzIDcgRGVidWd8eDY0ID0gV2luZG93cyA3IERlYnVnfHg2
NAorCQlXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJ
CVdpbmRvd3MgNyBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQlXaW5kb3dz
IDggRGVidWd8V2luMzIgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJV2luZG93cyA4IERlYnVn
fHg2NCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKKwkJV2luZG93cyA4IFJlbGVhc2V8V2luMzIgPSBX
aW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQlXaW5kb3dzIDggUmVsZWFzZXx4NjQgPSBXaW5kb3dz
IDggUmVsZWFzZXx4NjQKKwkJV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3MgVmlz
dGEgRGVidWd8V2luMzIKKwkJV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQgPSBXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NAorCQlXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIgPSBXaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIKKwkJV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgVmlz
dGEgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0
Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJezlDNkE1RDQ4LUEzMzEt
NEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9
IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xX
aW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcg
RGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKKwkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0g
V2luZG93cyA3IERlYnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJezlD
NkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IFJlbGVhc2V8eDY0
LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFG
LUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRv
d3MgNyBSZWxlYXNlfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFD
fS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMy
CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXs5QzZBNUQ0OC1BMzMx
LTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0g
V2luZG93cyA4IERlYnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJ
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs5QzZBNUQ0OC1B
MzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQt
N0JCNjdCQTVCRTFDfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4
IFJlbGVhc2V8eDY0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9Lldp
bmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXs5
QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8
V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7OUM2QTVENDgt
QTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYt
QTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdp
bmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JB
NUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERl
YnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdp
bjMyCisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQz
NEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBX
aW5kb3dzIDcgRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2lu
MzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERl
YnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdp
bmRvd3MgNyBEZWJ1Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8
V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3
IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXtENzQx
MUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05
RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dz
IDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0u
V2luZG93cyA4IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgor
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8
V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdp
bmRvd3MgOCBEZWJ1Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA4IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5CdWlsZC4w
ID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUx
MEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBS
ZWxlYXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5k
b3dzIDggUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NAorCQl7RDc0
MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdp
bjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5CdWls
ZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlG
NTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIFZpc3RhIERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1
QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1
Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBW
aXN0YSBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4z
MgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMgorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJD
LTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NC5C
dWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7NEJGNDEzNzgtQzAxQi00MDAy
LTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA3IERlYnVnfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfFdpbjMy
CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBEZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA3IERlYnVnfHg2NAorCQl7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgRGVidWd8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfFdp
bjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgorCQl7NEJGNDEz
NzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4
MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA3
IFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9Lldp
bmRvd3MgOCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfFdp
bjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJezRCRjQxMzc4LUMwMUItNDAw
Mi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIDggRGVidWd8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKKwkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2lu
MzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJezRCRjQxMzc4LUMwMUIt
NDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9
IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjND
NUY3MDMzNjJ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVs
ZWFzZXx4NjQKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93
cyA4IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKKwkJezRCRjQx
Mzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFC
LTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQnVpbGQu
MCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgx
LTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2
Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8
eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIK
KwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIKKwkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1D
MDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuQnVp
bGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKKwkJezE0QzE2QzI5LTc3QzktNDc1Qi1B
NjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgor
CQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKKwkJezE0QzE2QzI5LTc3QzktNDc1
Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93
cyA3IERlYnVnfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4z
MgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJezE0QzE2QzI5
LTc3QzktNDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkFjdGl2
ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgt
MUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBS
ZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5k
b3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3xXaW4z
Mi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3NUIt
QTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyA4IERlYnVnfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMy
LkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3
NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2
N0NGOTg1fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVh
c2V8eDY0CisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3Mg
OCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXsxNEMxNkMy
OS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00
NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0x
QjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8eDY0CisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9
LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2
NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4
NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdD
OS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZG
OC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dz
IDcgRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0u
V2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIKKwkJ
ezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IERlYnVnfFdp
bjMyLkRlcGxveS4wID0gV2luZG93cyA3IERlYnVnfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1
QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA3IERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlG
fS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQu
RGVwbG95LjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZG
OC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRv
d3MgNyBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxX
aW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDcg
UmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXs5MkU1
QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1C
NkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dz
IDcgUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0u
V2luZG93cyA3IFJlbGVhc2V8eDY0LkRlcGxveS4wID0gV2luZG93cyA3IFJlbGVhc2V8eDY0CisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0Mt
NDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDggRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1
Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA4IERlYnVnfFdp
bjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBE
ZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEz
Qy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBX
aW5kb3dzIDggRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuRGVwbG95LjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05
MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2Rjgt
N0UwNjJEODUyNzlGfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3Mg
OCBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9
LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQK
KwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVh
c2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0Mt
NDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkRlcGxveS4wID0g
V2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0
YSBEZWJ1Z3xXaW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5X
aW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdp
bjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlz
dGEgRGVidWd8V2luMzIuRGVwbG95LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0Uw
NjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5EZXBsb3kuMCA9IFdpbmRvd3MgVmlz
dGEgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9Lldp
bmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVh
c2V8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7OTJFNUE0
NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1
QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuRGVwbG95LjAg
PSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNl
Y3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5v
ZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvdnMy
MDEzL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIGIvdnMyMDEzL3BhY2thZ2UvcGFja2FnZS52Y3hw
cm9qCmluZGV4IDkzNmYxYTMuLmJlMTNmZDkgMTAwNjQ0Ci0tLSBhL3ZzMjAxMy9wYWNrYWdlL3Bh
Y2thZ2UudmN4cHJvagorKysgYi92czIwMTMvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAgLTEs
NCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJn
ZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEltcG9ydCBQcm9qZWN0PSIu
Llxjb25maWdzLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgpkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qIGIvdnMyMDEz
L3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCmluZGV4IGU4Y2FiMzMuLjE2NjIzY2UgMTAwNjQ0Ci0t
LSBhL3ZzMjAxMy94ZW5maWx0L3hlbmZpbHQudmN4cHJvagorKysgYi92czIwMTMveGVuZmlsdC94
ZW5maWx0LnZjeHByb2oKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
IDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
ICAgPEltcG9ydCBQcm9qZWN0PSIuLlxjb25maWdzLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+Ci0tIAoyLjEuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:23 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIF-0006iu-JF; Thu, 19 Mar 2015 13:15:23 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIE-0006ie-Es
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:22 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
	6B/30-18861-9EBCA055; Thu, 19 Mar 2015 13:15:21 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1426770918!11885732!1
X-Originating-IP: [74.125.82.169]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4753 invoked from network); 19 Mar 2015 13:15:18 -0000
Received: from mail-we0-f169.google.com (HELO mail-we0-f169.google.com)
	(74.125.82.169)
	by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:18 -0000
Received: by weop45 with SMTP id p45so56974736weo.0
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=DqFJQ93CjXsI50TTF8e4dWxI2Z/mpsE2tzTJ83FXASE=;
	b=khBPVaUSLLGB89IyTA767BYcD5ihrdU82IPrFYoWXw4CzHlZfrTBox9LRSihfD/17a
	rBKC0AvNnkHa1eFyMWGiZoTX4hH6rRcBvqo50ZDI2GjNZXeKd1UrPEtDYkheA16CiZQg
	voMhEAodfwU9pmmoLtawAMk5nt3nezf7b6YHLX4T8cQLD8QQJAWKPaYpm/O3ihUKgnTZ
	3D50OBvCXAeKs32anud92CJeRbkeklKDa1nX93pqBH0bsXdbsVsk4qjDWISx66c3fHCq
	nx4Xe2PHDBtjEUUyH0tGMKsid3al3nW+Uh+Pvsh77zaxMZtKvqn8VPqH4ETZASGu0voO
	9XOQ==
X-Received: by 10.180.108.177 with SMTP id hl17mr16145006wib.35.1426770918021; 
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.16
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:17 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:16 +0000
Message-Id: <1426770921-14080-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 87517
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/6] Fix line endings
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

U2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0t
CiBCVUlMRC5tZCAgICAgICAgICAgICAgICAgICAgICAgfCAgOTQgKysrKy0tLS0KIGRvYy9ncm91
cHMuZG94ICAgICAgICAgICAgICAgICB8ICAgNiArLQogZG9jL21haW4uZG94ICAgICAgICAgICAg
ICAgICAgIHwgICA4ICstCiBnZXRfeGVuX2hlYWRlcnMucHkgICAgICAgICAgICAgfCAxNTIgKysr
KysrLS0tLS0tLQogaW5jbHVkZS92ZXJzaW9uLmh4ICAgICAgICAgICAgIHwgMTA5ICsrKysrLS0t
LQogdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIHwgNTA0ICsrKysrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2czIwMTIveGVuYnVzLnNsbiAgICAgICAgICAgICAg
fCAzNjAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHZzMjAxMy9wYWNrYWdlL3BhY2th
Z2UudmN4cHJvaiB8ICAgMiArLQogdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qIHwgICAy
ICstCiA5IGZpbGVzIGNoYW5nZWQsIDYxOCBpbnNlcnRpb25zKCspLCA2MTkgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvQlVJTEQubWQgYi9CVUlMRC5tZAppbmRleCA4MTI2MDc5Li5jMGY5YzM3
IDEwMDY0NAotLS0gYS9CVUlMRC5tZAorKysgYi9CVUlMRC5tZApAQCAtMSw0NyArMSw0NyBAQAot
QnVpbGRpbmcgdGhlIFhlbkJ1cyBQYWNrYWdlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LQotRmlyc3QgeW91J2xsIG5lZWQgYSBkZXZpY2UgZHJpdmVyIGJ1aWxkIGVudmlyb25tZW50IGZv
ciBXaW5kb3dzIDggb3IKLVdpbmRvd3MgOC4xLgotRm9yIFdpbmRvd3MgOCB0aGlzIG1lYW5zOgot
Ci0qICAgVmlzdWFsIFN0dWRpbyAyMDEyIChQcm9mZXNzaW9uYWwgb3IgVWx0aW1hdGUpCi0qICAg
V2luZG93cyBEcml2ZXIgS2l0IDgKLQotRm9yIFdpbmRvd3MgOC4xIHRoaXMgbWVhbnM6Ci0KLSog
ICBWaXN1YWwgU3R1ZGlvIDIwMTMgKEFueSBTS1UsIGluY2x1ZGluZyBFeHByZXNzKQotKiAgIFdp
bmRvd3MgRHJpdmVyIEtpdCA4LjEKLQotKFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL3dpbmRvd3MvaGFyZHdhcmUvaGg4NTIzNjUuYXNweCkuIFlvdQotbWF5IGZpbmQgaXQgdXNl
ZnVsIHRvIGluc3RhbGwgVmlydHVhbENsb25lRHJpdmUgZnJvbSBodHRwOi8vd3d3LnNseXNvZnQu
Y29tCi1hcyBWaXN1YWwgU3R1ZGlvIGlzIGdlbmVyYWxseSBzdXBwbGllZCBpbiBJU08gZm9ybS4K
LQotSW5zdGFsbCBWaXN1YWwgU3R1ZGlvIGZpcnN0ICh5b3Ugb25seSBuZWVkIGluc3RhbGwgTUZD
IGZvciBDKyspIGFuZCB0aGVuCi10aGUgV0RLLiBTZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUg
Y2FsbGVkIFZTIHRvIHRoZSBiYXNlIG9mIHRoZSBWaXN1YWwKLVN0dWRpbyBJbnN0YWxsYXRpb24g
KGUuZy4gQzpcUHJvZ3JhbSBGaWxlc1xNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMi4wKSBhbmQK
LWEgdmFyaWFibGUgY2FsbGVkIEtJVCB0byB0aGUgYmFzZSBvZiB0aGUgV0RLCi0oZS5nLiBDOlxQ
cm9ncmFtIEZpbGVzXFdpbmRvd3MgS2l0c1w4LjEpLiBBbHNvIHNldCBhbiBlbnZpcm9ubWVudCB2
YXJpYWJsZQotY2FsbGVkIFNZTUJPTFxfU0VSVkVSIHRvIHBvaW50IGF0IGEgbG9jYXRpb24gd2hl
cmUgZHJpdmVyIHN5bWJvbHMgY2FuIGJlCi1zdG9yZWQuIFRoaXMgY2FuIGJlIGxvY2FsIGRpcmVj
dG9yeSBlLmcuIEM6XFN5bWJvbHMuCi0KLU5leHQgeW91J2xsIG5lZWQgYSAzLnggdmVyc2lvbiBv
ZiBweXRob24gKHdoaWNoIHlvdSBjYW4gZ2V0IGZyb20KLWh0dHA6Ly93d3cucHl0aG9uLm9yZyku
IE1ha2Ugc3VyZSBweXRob24uZXhlIGlzIHNvbWV3aGVyZSBvbiB5b3VyIGRlZmF1bHQKLXBhdGgu
Ci0KLU5vdyBmaXJlIHVwIGEgQ29tbWFuZCBQcm9tcHQgYW5kIG5hdmlnYXRlIHRvIHRoZSBiYXNl
IG9mIHlvdXIgZ2l0IHJlcG9zaXRvcnkuCi1BdCB0aGUgcHJvbXB0IHR5cGU6Ci0KLSAgICBidWls
ZC5weSBjaGVja2VkCi0KLVRoaXMgd2lsbCBjcmVhdGUgYSBkZWJ1ZyBidWlsZCBvZiB0aGUgZHJp
dmVyLiBUbyBjcmVhdGUgYSBub24tZGVidWcgYnVpbGQKLXR5cGU6Ci0KLSAgICBidWlsZC5weSBm
cmVlCi0KLU5vdGUgdGhhdCBTdGF0aWMgRHJpdmVyIFZlcmlmaWVyIGlzIHJ1biBieSBkZWZhdWx0
IGFzIHBhcnQgb2YgdGhlIGJ1aWxkCi1wcm9jZXNzLiBUaGlzIGNhbiBiZSB2ZXJ5IHRpbWUgY29u
c3VtaW5nLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBydW4gdGhlCi12ZXJpZmllciB0aGVuIHlvdSBj
YW4gYWRkIHRoZSAnbm9zZHYnIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB5b3VyIGNvbW1hbmQKLWUu
Zy46Ci0KLSAgICBidWlsZC5weSBmcmVlIG5vc2R2CitCdWlsZGluZyB0aGUgWGVuQnVzIFBhY2th
Z2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXJzdCB5b3UnbGwgbmVlZCBhIGRl
dmljZSBkcml2ZXIgYnVpbGQgZW52aXJvbm1lbnQgZm9yIFdpbmRvd3MgOCBvcgorV2luZG93cyA4
LjEuCitGb3IgV2luZG93cyA4IHRoaXMgbWVhbnM6CisKKyogICBWaXN1YWwgU3R1ZGlvIDIwMTIg
KFByb2Zlc3Npb25hbCBvciBVbHRpbWF0ZSkKKyogICBXaW5kb3dzIERyaXZlciBLaXQgOAorCitG
b3IgV2luZG93cyA4LjEgdGhpcyBtZWFuczoKKworKiAgIFZpc3VhbCBTdHVkaW8gMjAxMyAoQW55
IFNLVSwgaW5jbHVkaW5nIEV4cHJlc3MpCisqICAgV2luZG93cyBEcml2ZXIgS2l0IDguMQorCiso
U2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9oYXJkd2FyZS9oaDg1
MjM2NS5hc3B4KS4gWW91CittYXkgZmluZCBpdCB1c2VmdWwgdG8gaW5zdGFsbCBWaXJ0dWFsQ2xv
bmVEcml2ZSBmcm9tIGh0dHA6Ly93d3cuc2x5c29mdC5jb20KK2FzIFZpc3VhbCBTdHVkaW8gaXMg
Z2VuZXJhbGx5IHN1cHBsaWVkIGluIElTTyBmb3JtLgorCitJbnN0YWxsIFZpc3VhbCBTdHVkaW8g
Zmlyc3QgKHlvdSBvbmx5IG5lZWQgaW5zdGFsbCBNRkMgZm9yIEMrKykgYW5kIHRoZW4KK3RoZSBX
REsuIFNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgVlMgdG8gdGhlIGJhc2Ugb2Yg
dGhlIFZpc3VhbAorU3R1ZGlvIEluc3RhbGxhdGlvbiAoZS5nLiBDOlxQcm9ncmFtIEZpbGVzXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEyLjApIGFuZAorYSB2YXJpYWJsZSBjYWxsZWQgS0lUIHRv
IHRoZSBiYXNlIG9mIHRoZSBXREsKKyhlLmcuIEM6XFByb2dyYW0gRmlsZXNcV2luZG93cyBLaXRz
XDguMSkuIEFsc28gc2V0IGFuIGVudmlyb25tZW50IHZhcmlhYmxlCitjYWxsZWQgU1lNQk9MXF9T
RVJWRVIgdG8gcG9pbnQgYXQgYSBsb2NhdGlvbiB3aGVyZSBkcml2ZXIgc3ltYm9scyBjYW4gYmUK
K3N0b3JlZC4gVGhpcyBjYW4gYmUgbG9jYWwgZGlyZWN0b3J5IGUuZy4gQzpcU3ltYm9scy4KKwor
TmV4dCB5b3UnbGwgbmVlZCBhIDMueCB2ZXJzaW9uIG9mIHB5dGhvbiAod2hpY2ggeW91IGNhbiBn
ZXQgZnJvbQoraHR0cDovL3d3dy5weXRob24ub3JnKS4gTWFrZSBzdXJlIHB5dGhvbi5leGUgaXMg
c29tZXdoZXJlIG9uIHlvdXIgZGVmYXVsdAorcGF0aC4KKworTm93IGZpcmUgdXAgYSBDb21tYW5k
IFByb21wdCBhbmQgbmF2aWdhdGUgdG8gdGhlIGJhc2Ugb2YgeW91ciBnaXQgcmVwb3NpdG9yeS4K
K0F0IHRoZSBwcm9tcHQgdHlwZToKKworICAgIGJ1aWxkLnB5IGNoZWNrZWQKKworVGhpcyB3aWxs
IGNyZWF0ZSBhIGRlYnVnIGJ1aWxkIG9mIHRoZSBkcml2ZXIuIFRvIGNyZWF0ZSBhIG5vbi1kZWJ1
ZyBidWlsZAordHlwZToKKworICAgIGJ1aWxkLnB5IGZyZWUKKworTm90ZSB0aGF0IFN0YXRpYyBE
cml2ZXIgVmVyaWZpZXIgaXMgcnVuIGJ5IGRlZmF1bHQgYXMgcGFydCBvZiB0aGUgYnVpbGQKK3By
b2Nlc3MuIFRoaXMgY2FuIGJlIHZlcnkgdGltZSBjb25zdW1pbmcuIElmIHlvdSBkb24ndCB3YW50
IHRvIHJ1biB0aGUKK3ZlcmlmaWVyIHRoZW4geW91IGNhbiBhZGQgdGhlICdub3Nkdicga2V5d29y
ZCB0byB0aGUgZW5kIG9mIHlvdXIgY29tbWFuZAorZS5nLjoKKworICAgIGJ1aWxkLnB5IGZyZWUg
bm9zZHYKZGlmZiAtLWdpdCBhL2RvYy9ncm91cHMuZG94IGIvZG9jL2dyb3Vwcy5kb3gKaW5kZXgg
MDUyNTlhOS4uNmJlMDM1OSAxMDA2NDQKLS0tIGEvZG9jL2dyb3Vwcy5kb3gKKysrIGIvZG9jL2dy
b3Vwcy5kb3gKQEAgLTEsNCArMSw0IEBACi0vKiEKLSAqIFxkZWZncm91cCBpbnRlcmZhY2VzICJJ
bnRlcmZhY2VzIgotICogXGJyaWVmIFRoaXMgZ3JvdXAgY29udGFpbnMgYWxsIHRoZSBpbnRlcmZh
Y2VzIGV4cG9ydGVkIGJ5IGRyaXZlcnMgaW4gdGhpcyBwYWNrYWdlCisvKiEKKyAqIFxkZWZncm91
cCBpbnRlcmZhY2VzICJJbnRlcmZhY2VzIgorICogXGJyaWVmIFRoaXMgZ3JvdXAgY29udGFpbnMg
YWxsIHRoZSBpbnRlcmZhY2VzIGV4cG9ydGVkIGJ5IGRyaXZlcnMgaW4gdGhpcyBwYWNrYWdlCiAg
Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvbWFpbi5kb3gg
Yi9kb2MvbWFpbi5kb3gKaW5kZXggODMyMDE5ZS4uYjVhMDdkMiAxMDA2NDQKLS0tIGEvZG9jL21h
aW4uZG94CisrKyBiL2RvYy9tYWluLmRveApAQCAtMSw1ICsxLDUgQEAKLS8qIQotICogXG1haW5w
YWdlIFhFTkJVUyBEb2N1bWVudGF0aW9uCi0gKgotICogXHJlZiBpbnRlcmZhY2VzICJJbnRlcmZh
Y2VzIgorLyohCisgKiBcbWFpbnBhZ2UgWEVOQlVTIERvY3VtZW50YXRpb24KKyAqCisgKiBccmVm
IGludGVyZmFjZXMgIkludGVyZmFjZXMiCiAgKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9nZXRfeGVuX2hlYWRlcnMucHkgYi9nZXRfeGVuX2hlYWRlcnMucHkKaW5k
ZXggZWYxYTJjOC4uM2I3MjU4ZSAxMDA3NTUKLS0tIGEvZ2V0X3hlbl9oZWFkZXJzLnB5CisrKyBi
L2dldF94ZW5faGVhZGVycy5weQpAQCAtMSw3NiArMSw3NiBAQAotIyFweXRob24gLXUKLQotaW1w
b3J0IG9zLCBzeXMKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgcmUK
LQotZGVmIHNoZWxsKGNvbW1hbmQpOgotICAgIHByaW50KGNvbW1hbmQpCi0gICAgc3lzLnN0ZG91
dC5mbHVzaCgpCi0KLSAgICBwaXBlID0gb3MucG9wZW4oJyAnLmpvaW4oY29tbWFuZCksICdyJywg
MSkKLQotICAgIGZvciBsaW5lIGluIHBpcGU6Ci0gICAgICAgIHByaW50KGxpbmUucnN0cmlwKCkp
Ci0KLSAgICByZXR1cm4gcGlwZS5jbG9zZSgpCi0KLWRlZiBnZXRfcmVwbyh1cmwsIHdvcmtpbmcp
OgotICAgIHNoZWxsKFsnZ2l0JywgJ2Nsb25lJywgJy0tbm8tY2hlY2tvdXQnLCB1cmwsIHdvcmtp
bmddKQotCi1kZWYgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpOgotICAgIGN3ZCA9IG9zLmdldGN3
ZCgpCi0gICAgb3MuY2hkaXIod29ya2luZykKLSAgICBzaGVsbChbJ2dpdCcsICdjaGVja291dCcs
ICctYicsIHRhZ10pCi0gICAgb3MuY2hkaXIoY3dkKQotCi1kZWYgY29weV9maWxlKHdvcmtpbmcs
IHNyY19kaXIsIGRzdF9kaXIsIG5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3MubWFrZWRpcnMo
J2luY2x1ZGVcXHhlblxcJXMnICUgZHN0X2RpcikKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAg
ICAgTm9uZQotCi0gICAgc3JjID0gb3BlbignJXNcXHhlblxcaW5jbHVkZVxcJXNcXCVzJyAlICh3
b3JraW5nLCBzcmNfZGlyLCBuYW1lKSwgJ3InKQotICAgIGRzdCA9IG9wZW4oJ2luY2x1ZGVcXHhl
blxcJXNcXCVzJyAlIChkc3RfZGlyLCBuYW1lKSwgJ3cnLCBuZXdsaW5lPSdcbicpCi0KLSAgICBw
cmludChuYW1lKQotCi0gICAgZm9yIGxpbmUgaW4gc3JjOgotICAgICAgICBsaW5lID0gcmUuc3Vi
KCcgdW5zaWduZWQgbG9uZycsICcgVUxPTkdfUFRSJywgbGluZSkKLSAgICAgICAgbGluZSA9IHJl
LnN1YignXCh1bnNpZ25lZCBsb25nJywgJyhVTE9OR19QVFInLCBsaW5lKQotICAgICAgICBsaW5l
ID0gcmUuc3ViKCcgbG9uZycsICcgTE9OR19QVFInLCBsaW5lKQotICAgICAgICBsaW5lID0gcmUu
c3ViKCdcKGxvbmcnLCAnKExPTkdfUFRSJywgbGluZSkKLSAgICAgICAgZHN0LndyaXRlKGxpbmUp
Ci0KLSAgICBkc3QuY2xvc2UoKQotICAgIHNyYy5jbG9zZSgpCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgdGFnID0gc3lzLmFyZ3ZbMV0KLSAgICB3b3JraW5nID0gc3lzLmFyZ3Zb
Ml0KLQotICAgIGdldF9yZXBvKCdnaXQ6Ly94ZW5iaXRzLnhlbi5vcmcveGVuLmdpdCcsIHdvcmtp
bmcpCi0gICAgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpCi0KLSAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpYycsICcuJywgJ3hlbi5oJykKLQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVi
bGljJywgJy4nLCAneGVuLWNvbXBhdC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3RyYWNlLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAnbWVtb3J5LmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnc2No
ZWQuaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICdldmVudF9jaGFu
bmVsLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZ3JhbnRfdGFi
bGUuaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd2ZXJzaW9uLmgn
KQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZmVhdHVyZXMuaCcpCi0K
LSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3hlbicsICcuJywgJ2Vycm5vLmgnKQotCi0gICAgY29w
eV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi5oJykK
LSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAnYXJjaC14ODYnLCAn
eGVuLXg4Nl8zMi5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYn
LCAnYXJjaC14ODYnLCAneGVuLXg4Nl82NC5oJykKLQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAn
cHVibGljXFxodm0nLCAnaHZtJywgJ2h2bV9vcC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpY1xcaHZtJywgJ2h2bScsICdwYXJhbXMuaCcpCi0KLSAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpY1xcaW8nLCAnaW8nLCAneHNfd2lyZS5oJykKKyMhcHl0aG9uIC11CisKK2ltcG9y
dCBvcywgc3lzCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCisK
K2RlZiBzaGVsbChjb21tYW5kKToKKyAgICBwcmludChjb21tYW5kKQorICAgIHN5cy5zdGRvdXQu
Zmx1c2goKQorCisgICAgcGlwZSA9IG9zLnBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCAncicsIDEp
CisKKyAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICBwcmludChsaW5lLnJzdHJpcCgpKQor
CisgICAgcmV0dXJuIHBpcGUuY2xvc2UoKQorCitkZWYgZ2V0X3JlcG8odXJsLCB3b3JraW5nKToK
KyAgICBzaGVsbChbJ2dpdCcsICdjbG9uZScsICctLW5vLWNoZWNrb3V0JywgdXJsLCB3b3JraW5n
XSkKKworZGVmIGdldF9icmFuY2godGFnLCB3b3JraW5nKToKKyAgICBjd2QgPSBvcy5nZXRjd2Qo
KQorICAgIG9zLmNoZGlyKHdvcmtpbmcpCisgICAgc2hlbGwoWydnaXQnLCAnY2hlY2tvdXQnLCAn
LWInLCB0YWddKQorICAgIG9zLmNoZGlyKGN3ZCkKKworZGVmIGNvcHlfZmlsZSh3b3JraW5nLCBz
cmNfZGlyLCBkc3RfZGlyLCBuYW1lKToKKyAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKCdp
bmNsdWRlXFx4ZW5cXCVzJyAlIGRzdF9kaXIpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAg
IE5vbmUKKworICAgIHNyYyA9IG9wZW4oJyVzXFx4ZW5cXGluY2x1ZGVcXCVzXFwlcycgJSAod29y
a2luZywgc3JjX2RpciwgbmFtZSksICdyJykKKyAgICBkc3QgPSBvcGVuKCdpbmNsdWRlXFx4ZW5c
XCVzXFwlcycgJSAoZHN0X2RpciwgbmFtZSksICd3JywgbmV3bGluZT0nXG4nKQorCisgICAgcHJp
bnQobmFtZSkKKworICAgIGZvciBsaW5lIGluIHNyYzoKKyAgICAgICAgbGluZSA9IHJlLnN1Yign
IHVuc2lnbmVkIGxvbmcnLCAnIFVMT05HX1BUUicsIGxpbmUpCisgICAgICAgIGxpbmUgPSByZS5z
dWIoJ1wodW5zaWduZWQgbG9uZycsICcoVUxPTkdfUFRSJywgbGluZSkKKyAgICAgICAgbGluZSA9
IHJlLnN1YignIGxvbmcnLCAnIExPTkdfUFRSJywgbGluZSkKKyAgICAgICAgbGluZSA9IHJlLnN1
YignXChsb25nJywgJyhMT05HX1BUUicsIGxpbmUpCisgICAgICAgIGRzdC53cml0ZShsaW5lKQor
CisgICAgZHN0LmNsb3NlKCkKKyAgICBzcmMuY2xvc2UoKQorCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHRhZyA9IHN5cy5hcmd2WzFdCisgICAgd29ya2luZyA9IHN5cy5hcmd2WzJd
CisKKyAgICBnZXRfcmVwbygnZ2l0Oi8veGVuYml0cy54ZW4ub3JnL3hlbi5naXQnLCB3b3JraW5n
KQorICAgIGdldF9icmFuY2godGFnLCB3b3JraW5nKQorCisgICAgY29weV9maWxlKHdvcmtpbmcs
ICdwdWJsaWMnLCAnLicsICd4ZW4uaCcpCisKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3hlbi1jb21wYXQuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMn
LCAnLicsICd0cmFjZS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywg
J21lbW9yeS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ3NjaGVk
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAnZXZlbnRfY2hhbm5l
bC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2dyYW50X3RhYmxl
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAndmVyc2lvbi5oJykK
KyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2ZlYXR1cmVzLmgnKQorCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnLicsICdlcnJuby5oJykKKworICAgIGNvcHlf
ZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICdhcmNoLXg4NicsICd4ZW4uaCcpCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hl
bi14ODZfMzIuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2Jywg
J2FyY2gteDg2JywgJ3hlbi14ODZfNjQuaCcpCisKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1
YmxpY1xcaHZtJywgJ2h2bScsICdodm1fb3AuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGh2bScsICdodm0nLCAncGFyYW1zLmgnKQorCisgICAgY29weV9maWxlKHdvcmtpbmcs
ICdwdWJsaWNcXGlvJywgJ2lvJywgJ3hzX3dpcmUuaCcpCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Zl
cnNpb24uaHggYi9pbmNsdWRlL3ZlcnNpb24uaHgKaW5kZXggOTJiMGE2Yi4uNGI3MzUxZCAxMDA2
NDQKLS0tIGEvaW5jbHVkZS92ZXJzaW9uLmh4CisrKyBiL2luY2x1ZGUvdmVyc2lvbi5oeApAQCAt
MSw1NSArMSw1NCBAQAotLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCi0gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCi0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgotICogCi0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSAKLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIAotICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgCi0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSAKLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgCi0gKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIAotICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgCi0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKLSAqIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgCi0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIAotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiAKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNkZWZpbmUgQ09N
UEFOWV9OQU1FX1NUUgkiQENPTVBBTllfTkFNRUAiCi0jZGVmaW5lIFBST0RVQ1RfTkFNRV9TVFIJ
IkBQUk9EVUNUX05BTUVAIgotCi0jZGVmaW5lIE1BSk9SX1ZFUlNJT04JQE1BSk9SX1ZFUlNJT05A
Ci0jZGVmaW5lIE1BSk9SX1ZFUlNJT05fU1RSCSJATUFKT1JfVkVSU0lPTkAiCi0KLSNkZWZpbmUg
TUlOT1JfVkVSU0lPTglATUlOT1JfVkVSU0lPTkAKLSNkZWZpbmUgTUlOT1JfVkVSU0lPTl9TVFIJ
IkBNSU5PUl9WRVJTSU9OQCIKLQotI2RlZmluZSBNSUNST19WRVJTSU9OCUBNSUNST19WRVJTSU9O
QAotI2RlZmluZSBNSUNST19WRVJTSU9OX1NUUgkiQE1JQ1JPX1ZFUlNJT05AIgotCi0jZGVmaW5l
IEJVSUxEX05VTUJFUglAQlVJTERfTlVNQkVSQAotI2RlZmluZSBCVUlMRF9OVU1CRVJfU1RSCSJA
QlVJTERfTlVNQkVSQCIKLQotI2RlZmluZSBZRUFSCUBZRUFSQAotI2RlZmluZSBZRUFSX1NUUgki
QFlFQVJAIgotCi0jZGVmaW5lIE1PTlRICUBNT05USEAKLSNkZWZpbmUgTU9OVEhfU1RSCSJATU9O
VEhAIgotCi0jZGVmaW5lIERBWQlAREFZQAotI2RlZmluZSBEQVlfU1RSCSJAREFZQCIKLQorLyog
Q29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkCisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyCisgKiAgICAgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQKKyAqIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICog
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjZGVmaW5lIENPTVBBTllfTkFNRV9TVFIJIkBDT01QQU5ZX05BTUVAIgorI2RlZmluZSBQ
Uk9EVUNUX05BTUVfU1RSCSJAUFJPRFVDVF9OQU1FQCIKKworI2RlZmluZSBNQUpPUl9WRVJTSU9O
CUBNQUpPUl9WRVJTSU9OQAorI2RlZmluZSBNQUpPUl9WRVJTSU9OX1NUUgkiQE1BSk9SX1ZFUlNJ
T05AIgorCisjZGVmaW5lIE1JTk9SX1ZFUlNJT04JQE1JTk9SX1ZFUlNJT05ACisjZGVmaW5lIE1J
Tk9SX1ZFUlNJT05fU1RSCSJATUlOT1JfVkVSU0lPTkAiCisKKyNkZWZpbmUgTUlDUk9fVkVSU0lP
TglATUlDUk9fVkVSU0lPTkAKKyNkZWZpbmUgTUlDUk9fVkVSU0lPTl9TVFIJIkBNSUNST19WRVJT
SU9OQCIKKworI2RlZmluZSBCVUlMRF9OVU1CRVIJQEJVSUxEX05VTUJFUkAKKyNkZWZpbmUgQlVJ
TERfTlVNQkVSX1NUUgkiQEJVSUxEX05VTUJFUkAiCisKKyNkZWZpbmUgWUVBUglAWUVBUkAKKyNk
ZWZpbmUgWUVBUl9TVFIJIkBZRUFSQCIKKworI2RlZmluZSBNT05USAlATU9OVEhACisjZGVmaW5l
IE1PTlRIX1NUUgkiQE1PTlRIQCIKKworI2RlZmluZSBEQVkJQERBWUAKKyNkZWZpbmUgREFZX1NU
UgkiQERBWUAiCmRpZmYgLS1naXQgYS92czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2ogYi92
czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKaW5kZXggNThiOTM3OC4uZTY2NGQ3NSAxMDA2
NDQKLS0tIGEvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qCisrKyBiL3ZzMjAxMi9wYWNr
YWdlL3BhY2thZ2UudmN4cHJvagpAQCAtMSwyNTMgKzEsMjUzIEBACi3vu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxk
IiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20v
ZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJbXBvcnQgUHJvamVjdD0iLi5cY29uZmlncy5w
cm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
RHJpdmVyVHlwZT5XRE08L0RyaXZlclR5cGU+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD5XaW5kb3dz
S2VybmVsTW9kZURyaXZlcjguMDwvUGxhdGZvcm1Ub29sc2V0PgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5VdGlsaXR5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8RHJpdmVyVHlwZT5QYWNrYWdl
PC9Ecml2ZXJUeXBlPgotICAgIDxEaXNhYmxlRmFzdFVwVG9EYXRlQ2hlY2s+dHJ1ZTwvRGlzYWJs
ZUZhc3RVcFRvRGF0ZUNoZWNrPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJHbG9iYWxzIj4KLSAgICA8Q29uZmlndXJhdGlvbj5XaW5kb3dzIFZpc3RhIERlYnVn
PC9Db25maWd1cmF0aW9uPgotICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScg
PT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8RGVidWdnZXJGbGF2b3I+RGJnZW5nS2VybmVs
RGVidWdnZXI8L0RlYnVnZ2VyRmxhdm9yPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+
Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+ezky
RTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn08L1Byb2plY3RHdWlkPgotICA8L1By
b3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iLi5cdGFyZ2V0cy5wcm9wcyIgLz4KLSAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxFbmFibGVJbmYyY2F0PnRydWU8L0VuYWJsZUluZjJj
YXQ+Ci0gICAgPEluZjJDYXRXaW5kb3dzVmVyc2lvbkxpc3QgQ29uZGl0aW9uPSInJChQbGF0Zm9y
bSknPT0neDY0JyI+VmlzdGFfeDY0OzdfeDY0O1NlcnZlcjIwMDhfeDY0O1NlcnZlcjIwMDhSMl94
NjQ7U2VydmVyOF94NjQ8L0luZjJDYXRXaW5kb3dzVmVyc2lvbkxpc3Q+Ci0gICAgPEluZjJDYXRX
aW5kb3dzVmVyc2lvbkxpc3QgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj5WaXN0
YV94ODY7N194ODY7U2VydmVyMjAwOF94ODY7OF94ODY8L0luZjJDYXRXaW5kb3dzVmVyc2lvbkxp
c3Q+Ci0gICAgPERlYnVnZ2VyRmxhdm9yPkRiZ2VuZ0tlcm5lbERlYnVnZ2VyPC9EZWJ1Z2dlckZs
YXZvcj4KLSAgICA8RW5hYmxlRGVwbG95bWVudD5GYWxzZTwvRW5hYmxlRGVwbG95bWVudD4KLSAg
ICA8SW1wb3J0VG9TdG9yZT5GYWxzZTwvSW1wb3J0VG9TdG9yZT4KLSAgICA8SW5zdGFsbE1vZGU+
Tm9uZTwvSW5zdGFsbE1vZGU+Ci0gICAgPFNjcmlwdERldmljZVF1ZXJ5PiVQYXRoVG9JbmYlPC9T
Y3JpcHREZXZpY2VRdWVyeT4KLSAgICA8RW5hYmxlVmVyaWZpZXI+RmFsc2U8L0VuYWJsZVZlcmlm
aWVyPgotICAgIDxBbGxEcml2ZXJzPkZhbHNlPC9BbGxEcml2ZXJzPgotICAgIDxWZXJpZnlQcm9q
ZWN0T3V0cHV0PlRydWU8L1ZlcmlmeVByb2plY3RPdXRwdXQ+Ci0gICAgPFZlcmlmeURyaXZlcnMg
Lz4KLSAgICA8VmVyaWZ5RmxhZ3M+MTMzNTYzPC9WZXJpZnlGbGFncz4KLSAgICA8SW50RGlyPi4u
XCQoUHJvamVjdE5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGly
PgotICAgIDxPdXREaXI+Li5cJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9PdXRE
aXI+Ci0gICAgPFBhY2thZ2VEaXI+Li5cLi5ceGVuYnVzXCQoRERLUGxhdGZvcm0pPC9QYWNrYWdl
RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+Ci0g
ICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3RvbUJ1aWxkQmVmb3JlVGFy
Z2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfFdpbjMyJyI+
Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3RvbUJ1aWxkQmVmb3Jl
VGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzInIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAgIDwvQ3VzdG9tQnVpbGRC
ZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxl
YXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1c3Rv
bUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBS
ZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgICA8L0N1
c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3Mg
OCBEZWJ1Z3xXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gICAgPC9D
dXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dz
IDggUmVsZWFzZXx4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAgIDwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICAg
IDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2lu
ZG93cyBWaXN0YSBSZWxlYXNlfHg2NCciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+
Ci0gICAgPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDcgUmVsZWFzZXx4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRz
PgotICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nV2luZG93cyA3IERlYnVnfHg2NCciPgotICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+
Ci0gICAgPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4K
LSAgICA8L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4K
LSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAg
IDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91
dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwv
Q3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2lu
ZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8
Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1dHM+Ci0gICAgICA8L0lucHV0
cz4KLSAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDwvVHJlYXRPdXRwdXRBc0Nv
bnRlbnQ+Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1
aWxkU3RlcD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8Q29tbWFu
ZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1dHM+Ci0gICAgICA8L0lucHV0cz4KLSAg
ICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+
Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3Rl
cD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNl
fFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAg
PC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0
T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxP
dXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+Ci0g
ICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgot
ICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250
ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAg
ICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IERlYnVnfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1
aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0
cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAg
PC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRz
PgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA4IFJlbGVhc2V8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAg
ICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwv
SW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1
dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3Vz
dG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPENvbW1h
bmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgICA8SW5wdXRzPgotICAgICAgPC9JbnB1dHM+Ci0g
ICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50
PgotICAgICAgPE91dHB1dHM+Ci0gICAgICA8L091dHB1dHM+Ci0gICAgPC9DdXN0b21CdWlsZFN0
ZXA+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJl
bGVhc2V8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAg
ICAgPC9Db21tYW5kPgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRy
ZWF0T3V0cHV0QXNDb250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAg
IDxPdXRwdXRzPgotICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8eDY0JyI+
Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5k
PgotICAgICAgPElucHV0cz4KLSAgICAgIDwvSW5wdXRzPgotICAgICAgPFRyZWF0T3V0cHV0QXND
b250ZW50PgotICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAgIDxPdXRwdXRzPgot
ICAgICAgPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfHg2NCciPgotICAgIDxDdXN0b21C
dWlsZFN0ZXA+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICAgIDxJbnB1
dHM+Ci0gICAgICA8L0lucHV0cz4KLSAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KLSAgICAg
IDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8T3V0cHV0cz4KLSAgICAgIDwvT3V0cHV0
cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAg
ICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgICA8SW5wdXRzPgotICAgICAgPC9J
bnB1dHM+Ci0gICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Ci0gICAgICA8L1RyZWF0T3V0cHV0
QXNDb250ZW50PgotICAgICAgPE91dHB1dHM+Ci0gICAgICA8L091dHB1dHM+Ci0gICAgPC9DdXN0
b21CdWlsZFN0ZXA+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5maWx0XHhlbmZpbHQudmN4cHJvaiI+
Ci0gICAgICA8UHJvamVjdD57ZDc0MTFiMmMtMmM0My00MzRkLTlmNTYtZTEwYTNkMmY1YmFkfTwv
UHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iLi5ceGVuYnVzX2NvaW5zdFx4ZW5idXNfY29pbnN0LnZjeHByb2oiPgotICAgICAg
PFByb2plY3Q+ezRiZjQxMzc4LWMwMWItNDAwMi04NTgxLTU2M2M1ZjcwMzM2Mn08L1Byb2plY3Q+
Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9
Ii4uXHhlbmJ1c1x4ZW5idXMudmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57MTRjMTZjMjktNzdj
OS00NzViLWE2MTgtMWIwMWU2N2NmOTg1fTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVu
Y2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuXHhlbi52Y3hwcm9qIj4K
LSAgICAgIDxQcm9qZWN0Pns5YzZhNWQ0OC1hMzMxLTRiMWYtYTAwNC03YmI2N2JhNWJlMWN9PC9Q
cm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVt
R3JvdXA+Ci0gICAgPEZpbGVzVG9QYWNrYWdlIEluY2x1ZGU9IiQoS0lUKVxSZWRpc3RcRElGeFxk
cGluc3RcRW5nTXVpXHg4NlxkcGluc3QuZXhlIiBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdX
aW4zMiciIC8+Ci0gICAgPEZpbGVzVG9QYWNrYWdlIEluY2x1ZGU9IiQoS0lUKVxSZWRpc3RcRElG
eFxkcGluc3RcRW5nTXVpXHg2NFxkcGluc3QuZXhlIiBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSd4NjQnIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlxjb25maWdzLnByb3BzIiAv
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxEcml2ZXJU
eXBlPldETTwvRHJpdmVyVHlwZT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxN
b2RlRHJpdmVyOC4wPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlV0
aWxpdHk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxEcml2ZXJUeXBlPlBhY2thZ2U8L0RyaXZl
clR5cGU+CisgICAgPERpc2FibGVGYXN0VXBUb0RhdGVDaGVjaz50cnVlPC9EaXNhYmxlRmFzdFVw
VG9EYXRlQ2hlY2s+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uPldpbmRvd3MgVmlzdGEgRGVidWc8L0NvbmZp
Z3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+
V2luMzI8L1BsYXRmb3JtPgorICAgIDxEZWJ1Z2dlckZsYXZvcj5EYmdlbmdLZXJuZWxEZWJ1Z2dl
cjwvRGVidWdnZXJGbGF2b3I+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57OTJFNUE0NkIt
OTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgorICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXA+CisgICAgPEVuYWJsZUluZjJjYXQ+dHJ1ZTwvRW5hYmxlSW5mMmNhdD4KKyAg
ICA8SW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4
NjQnIj5WaXN0YV94NjQ7N194NjQ7U2VydmVyMjAwOF94NjQ7U2VydmVyMjAwOFIyX3g2NDtTZXJ2
ZXI4X3g2NDwvSW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdD4KKyAgICA8SW5mMkNhdFdpbmRvd3NW
ZXJzaW9uTGlzdCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPlZpc3RhX3g4Njs3
X3g4NjtTZXJ2ZXIyMDA4X3g4Njs4X3g4NjwvSW5mMkNhdFdpbmRvd3NWZXJzaW9uTGlzdD4KKyAg
ICA8RGVidWdnZXJGbGF2b3I+RGJnZW5nS2VybmVsRGVidWdnZXI8L0RlYnVnZ2VyRmxhdm9yPgor
ICAgIDxFbmFibGVEZXBsb3ltZW50PkZhbHNlPC9FbmFibGVEZXBsb3ltZW50PgorICAgIDxJbXBv
cnRUb1N0b3JlPkZhbHNlPC9JbXBvcnRUb1N0b3JlPgorICAgIDxJbnN0YWxsTW9kZT5Ob25lPC9J
bnN0YWxsTW9kZT4KKyAgICA8U2NyaXB0RGV2aWNlUXVlcnk+JVBhdGhUb0luZiU8L1NjcmlwdERl
dmljZVF1ZXJ5PgorICAgIDxFbmFibGVWZXJpZmllcj5GYWxzZTwvRW5hYmxlVmVyaWZpZXI+Cisg
ICAgPEFsbERyaXZlcnM+RmFsc2U8L0FsbERyaXZlcnM+CisgICAgPFZlcmlmeVByb2plY3RPdXRw
dXQ+VHJ1ZTwvVmVyaWZ5UHJvamVjdE91dHB1dD4KKyAgICA8VmVyaWZ5RHJpdmVycyAvPgorICAg
IDxWZXJpZnlGbGFncz4xMzM1NjM8L1ZlcmlmeUZsYWdzPgorICAgIDxJbnREaXI+Li5cJChQcm9q
ZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9JbnREaXI+CisgICAg
PE91dERpcj4uLlwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBsYXRmb3JtKVw8L091dERpcj4KKyAg
ICA8UGFja2FnZURpcj4uLlwuLlx4ZW5idXNcJChEREtQbGF0Zm9ybSk8L1BhY2thZ2VEaXI+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8V2luMzInIj4KKyAgICA8Q3Vz
dG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRz
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPgor
ICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0b21CdWlsZEJlZm9yZVRh
cmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVpbGRC
ZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8
V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwvQ3VzdG9tQnVp
bGRCZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IERlYnVn
fFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8L0N1c3RvbUJ1
aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxl
YXNlfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0b21C
dWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAgPC9DdXN0
b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8
L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRv
d3MgNyBSZWxlYXNlfHg2NCciPgorICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgICAg
PC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5k
b3dzIDcgRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgICA8
L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRv
d3MgOCBEZWJ1Z3x4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICAgIDwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAg
PENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1
dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXND
b250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21C
dWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIERlYnVnfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxDb21tYW5k
PgorICAgICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAgICAgIDwvSW5wdXRzPgorICAg
ICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4K
KyAgICAgIDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVw
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxl
YXNlfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxDb21tYW5kPgorICAg
ICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAgICAgIDwvSW5wdXRzPgorICAgICAgPFRy
ZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAg
IDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJlbGVhc2V8V2luMzIn
Ij4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1h
bmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRB
c0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+
CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8V2luMzInIj4KKyAgICA8Q3Vz
dG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8
SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+Cisg
ICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091
dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVw
PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAg
ICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0
T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAg
PC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdX
aW5kb3dzIDggUmVsZWFzZXx4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENv
bW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+
CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250
ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWls
ZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8Q29tbWFuZD4KKyAg
ICAgIDwvQ29tbWFuZD4KKyAgICAgIDxJbnB1dHM+CisgICAgICA8L0lucHV0cz4KKyAgICAgIDxU
cmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRlbnQ+CisgICAg
ICA8T3V0cHV0cz4KKyAgICAgIDwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgUmVsZWFzZXx4
NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0Nv
bW1hbmQ+CisgICAgICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRw
dXRBc0NvbnRlbnQ+CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1
dHM+CisgICAgICA8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXx4NjQnIj4KKyAgICA8
Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAg
ICA8SW5wdXRzPgorICAgICAgPC9JbnB1dHM+CisgICAgICA8VHJlYXRPdXRwdXRBc0NvbnRlbnQ+
CisgICAgICA8L1RyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPE91dHB1dHM+CisgICAgICA8
L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkU3Rl
cD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgICAgPElucHV0cz4KKyAg
ICAgIDwvSW5wdXRzPgorICAgICAgPFRyZWF0T3V0cHV0QXNDb250ZW50PgorICAgICAgPC9UcmVh
dE91dHB1dEFzQ29udGVudD4KKyAgICAgIDxPdXRwdXRzPgorICAgICAgPC9PdXRwdXRzPgorICAg
IDwvQ3VzdG9tQnVpbGRTdGVwPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IERlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8Q29t
bWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICAgIDxJbnB1dHM+CisgICAgICA8L0lucHV0cz4K
KyAgICAgIDxUcmVhdE91dHB1dEFzQ29udGVudD4KKyAgICAgIDwvVHJlYXRPdXRwdXRBc0NvbnRl
bnQ+CisgICAgICA8T3V0cHV0cz4KKyAgICAgIDwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9q
ZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhlbmZpbHRceGVuZmlsdC52Y3hwcm9qIj4KKyAgICAg
IDxQcm9qZWN0PntkNzQxMWIyYy0yYzQzLTQzNGQtOWY1Ni1lMTBhM2QyZjViYWR9PC9Qcm9qZWN0
PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSIuLlx4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiI+CisgICAgICA8UHJvamVj
dD57NGJmNDEzNzgtYzAxYi00MDAyLTg1ODEtNTYzYzVmNzAzMzYyfTwvUHJvamVjdD4KKyAgICA8
L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVu
YnVzXHhlbmJ1cy52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxNGMxNmMyOS03N2M5LTQ3NWIt
YTYxOC0xYjAxZTY3Y2Y5ODV9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5ceGVuLnZjeHByb2oiPgorICAgICAg
PFByb2plY3Q+ezljNmE1ZDQ4LWEzMzEtNGIxZi1hMDA0LTdiYjY3YmE1YmUxY308L1Byb2plY3Q+
CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iJChLSVQpXFJlZGlzdFxESUZ4XGRwaW5zdFxF
bmdNdWlceDg2XGRwaW5zdC5leGUiIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyIg
Lz4KKyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iJChLSVQpXFJlZGlzdFxESUZ4XGRwaW5z
dFxFbmdNdWlceDY0XGRwaW5zdC5leGUiIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCci
IC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5idXMuc2xuIGIvdnMyMDEyL3hlbmJ1
cy5zbG4KaW5kZXggZmYxNjE1MC4uNjI2ZmQ4NSAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbmJ1cy5z
bG4KKysrIGIvdnMyMDEyL3hlbmJ1cy5zbG4KQEAgLTEsMTgwICsxLDE4MCBAQAotTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlz
dWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gInhlbiIsICJ4ZW5ceGVuLnZjeHByb2oiLCAiezlDNkE1RDQ4LUEzMzEtNEIx
Ri1BMDA0LTdCQjY3QkE1QkUxQ30iCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmZpbHQiLCAieGVuZmlsdFx4ZW5maWx0
LnZjeHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCi0JUHJv
amVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfSA9IHs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAw
NC03QkI2N0JBNUJFMUN9Ci0JRW5kUHJvamVjdFNlY3Rpb24KLUVuZFByb2plY3QKLVByb2plY3Qo
Ins4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieGVuYnVzX2NvaW5z
dCIsICJ4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiIsICJ7NEJGNDEzNzgtQzAx
Qi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSIKLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5k
ZW5jaWVzKSA9IHBvc3RQcm9qZWN0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JB
NUJFMUN9ID0gezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30KLQlFbmRQcm9q
ZWN0U2VjdGlvbgotRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDEx
LTAwQTBDOTFCQzk0Mn0iKSA9ICJ4ZW5idXMiLCAieGVuYnVzXHhlbmJ1cy52Y3hwcm9qIiwgInsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9IgotCVByb2plY3RTZWN0aW9uKFBy
b2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKLQkJezlDNkE1RDQ4LUEzMzEtNEIxRi1B
MDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFD
fQotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInBhY2thZ2UiLCAicGFja2FnZVxwYWNrYWdl
LnZjeHByb2oiLCAiezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0iCi0JUHJv
amVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCQl7MTRDMTZD
MjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fSA9IHsxNEMxNkMyOS03N0M5LTQ3NUItQTYx
OC0xQjAxRTY3Q0Y5ODV9Ci0JCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
ID0ge0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0KLQkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JC
NjdCQTVCRTFDfQotCQl7NEJGNDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSA9IHs0
QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9Ci0JRW5kUHJvamVjdFNlY3Rpb24K
LUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9u
UGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCVdpbmRvd3MgNyBEZWJ1Z3xXaW4zMiA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMgotCQlXaW5kb3dzIDcgRGVidWd8eDY0ID0gV2luZG93cyA3IERlYnVn
fHg2NAotCQlXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMy
Ci0JCVdpbmRvd3MgNyBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQlXaW5k
b3dzIDggRGVidWd8V2luMzIgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJV2luZG93cyA4IERl
YnVnfHg2NCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJV2luZG93cyA4IFJlbGVhc2V8V2luMzIg
PSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQlXaW5kb3dzIDggUmVsZWFzZXx4NjQgPSBXaW5k
b3dzIDggUmVsZWFzZXx4NjQKLQkJV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8V2luMzIKLQkJV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQgPSBXaW5kb3dzIFZp
c3RhIERlYnVnfHg2NAotCQlXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIgPSBXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIKLQkJV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3Mg
VmlzdGEgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihQcm9q
ZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KLQkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNm
ZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JC
NjdCQTVCRTFDfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1
Z3xXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJezlDNkE1RDQ4
LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4w
ID0gV2luZG93cyA3IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVs
ZWFzZXxXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5k
b3dzIDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKLQkJ
ezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IFJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7OUM2QTVENDgtQTMzMS00
QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdp
bmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdp
bjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBE
ZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0JCXs5QzZBNUQ0OC1B
MzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2Zn
ID0gV2luZG93cyA4IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0
Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5QzZBNUQ0
OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEw
MDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyA4IFJlbGVhc2V8eDY0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9
LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0J
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRC
MUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2
N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NAotCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5k
b3dzIFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNl
fFdpbjMyCi0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3Mg
VmlzdGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7OUM2
QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8
eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcg
PSBXaW5kb3dzIDcgRGVidWd8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEz
RDJGNUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8
V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3
IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0JCXtENzQxMUIyQy0y
QzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9
IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVh
c2V8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93
cyA3IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXtE
NzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2
NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0
RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA4IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4z
MgotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVi
dWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgotCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA4IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NAot
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5CdWls
ZC4wID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2
LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3Mg
OCBSZWxlYXNlfHg2NAotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5X
aW5kb3dzIDggUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NAotCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVn
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKLQkJe0Q3NDExQjJD
LTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5C
dWlsZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBX
aW5kb3dzIFZpc3RhIERlYnVnfHg2NAotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNE
MkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBE
ZWJ1Z3x4NjQKLQkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxX
aW4zMgotCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMgot
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJl
bGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKLQkJe0Q3NDEx
QjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2
NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
V2luZG93cyA3IERlYnVnfFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3
MDMzNjJ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfFdp
bjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBE
ZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA3IERlYnVnfHg2NAotCQl7NEJGNDEzNzgtQzAx
Qi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBX
aW5kb3dzIDcgRGVidWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNl
fFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3Mg
NyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgotCQl7NEJG
NDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQu
QWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDIt
ODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93
cyA3IFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgOCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIK
LQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVn
fFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezRCRjQxMzc4LUMwMUIt
NDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBX
aW5kb3dzIDggRGVidWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKLQkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKLQkJezRCRjQxMzc4LUMw
MUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQu
MCA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01
NjNDNUY3MDMzNjJ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDgg
UmVsZWFzZXx4NjQKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2lu
ZG93cyA4IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKLQkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXs0QkY0MTM3OC1D
MDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQnVp
bGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04
NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyBWaXN0YSBEZWJ1Z3x4NjQKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1Rjcw
MzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVi
dWd8eDY0Ci0JCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3Mg
VmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzIKLQkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIKLQkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBSZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs0QkY0MTM3
OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQu
QnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKLQkJezE0QzE2QzI5LTc3QzktNDc1
Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdp
bmRvd3MgNyBEZWJ1Z3xXaW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NG
OTg1fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4z
MgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKLQkJezE0QzE2QzI5LTc3Qzkt
NDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2lu
ZG93cyA3IERlYnVnfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxX
aW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcg
UmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKLQkJezE0QzE2
QzI5LTc3QzktNDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkFj
dGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2
MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3Mg
NyBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0J
CXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3xX
aW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5LTQ3
NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA4IERlYnVnfHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0Ci0JCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdp
bjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5
LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIw
MUU2N0NGOTg1fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJl
bGVhc2V8eDY0Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRv
d3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0JCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgotCQl7MTRDMTZDMjktNzdD
OS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYx
OC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRv
d3MgVmlzdGEgRGVidWd8eDY0Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5
ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVn
fHg2NAotCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZp
c3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCi0JCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVsZWFz
ZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7MTRDMTZDMjkt
NzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYt
QjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5k
b3dzIDcgRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5
Rn0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIK
LQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IERlYnVn
fFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA3IERlYnVnfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0g
V2luZG93cyA3IERlYnVnfHg2NAotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUy
NzlGfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0J
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4
NjQuRGVwbG95LjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYt
QjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdp
bmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dz
IDcgUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCi0JCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfHg2
NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVD
Ni1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5
Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkRlcGxveS4wID0gV2luZG93cyA3IFJlbGVhc2V8eDY0
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkx
M0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYy
RDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA4IERlYnVn
fFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3Mg
OCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAotCQl7OTJFNUE0NkIt
OTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuRGVwbG95LjAgPSBXaW5kb3dzIDggRGVidWd8eDY0
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2
Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2
RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRv
d3MgOCBSZWxlYXNlfFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXx4
NjQKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJl
bGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKLQkJezkyRTVBNDZCLTkx
M0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkRlcGxveS4w
ID0gV2luZG93cyA4IFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2
MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBW
aXN0YSBEZWJ1Z3xXaW4zMgotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlG
fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVn
fFdpbjMyCi0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3Mg
VmlzdGEgRGVidWd8V2luMzIuRGVwbG95LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCi0J
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05
MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAotCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2Rjgt
N0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5EZXBsb3kuMCA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8eDY0Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9
LldpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJl
bGVhc2V8V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2lu
ZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8
V2luMzIKLQkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyBW
aXN0YSBSZWxlYXNlfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMy
Ci0JCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEg
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAotCQl7OTJF
NUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8
eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuRGVwbG95
LjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlv
bk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbAorTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKKyMgVmlzdWFs
IFN0dWRpbyAyMDEyCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gInhlbiIsICJ4ZW5ceGVuLnZjeHByb2oiLCAiezlDNkE1RDQ4LUEzMzEtNEIxRi1B
MDA0LTdCQjY3QkE1QkUxQ30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmZpbHQiLCAieGVuZmlsdFx4ZW5maWx0LnZj
eHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCisJUHJvamVj
dFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7OUM2QTVENDgt
QTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfSA9IHs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03
QkI2N0JBNUJFMUN9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieGVuYnVzX2NvaW5zdCIs
ICJ4ZW5idXNfY29pbnN0XHhlbmJ1c19jb2luc3QudmN4cHJvaiIsICJ7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5j
aWVzKSA9IHBvc3RQcm9qZWN0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJF
MUN9ID0gezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30KKwlFbmRQcm9qZWN0
U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAw
QTBDOTFCQzk0Mn0iKSA9ICJ4ZW5idXMiLCAieGVuYnVzXHhlbmJ1cy52Y3hwcm9qIiwgInsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9IgorCVByb2plY3RTZWN0aW9uKFByb2pl
Y3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJezlDNkE1RDQ4LUEzMzEtNEIxRi1BMDA0
LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfQor
CUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInBhY2thZ2UiLCAicGFja2FnZVxwYWNrYWdlLnZj
eHByb2oiLCAiezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0iCisJUHJvamVj
dFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7MTRDMTZDMjkt
NzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fSA9IHsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0x
QjAxRTY3Q0Y5ODV9CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9ID0g
e0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0KKwkJezlDNkE1RDQ4LUEzMzEt
NEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30gPSB7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfQorCQl7NEJGNDEzNzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfSA9IHs0QkY0
MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0Vu
ZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxh
dGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCVdpbmRvd3MgNyBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3Mg
NyBEZWJ1Z3xXaW4zMgorCQlXaW5kb3dzIDcgRGVidWd8eDY0ID0gV2luZG93cyA3IERlYnVnfHg2
NAorCQlXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJ
CVdpbmRvd3MgNyBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQlXaW5kb3dz
IDggRGVidWd8V2luMzIgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJV2luZG93cyA4IERlYnVn
fHg2NCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKKwkJV2luZG93cyA4IFJlbGVhc2V8V2luMzIgPSBX
aW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQlXaW5kb3dzIDggUmVsZWFzZXx4NjQgPSBXaW5kb3dz
IDggUmVsZWFzZXx4NjQKKwkJV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiA9IFdpbmRvd3MgVmlz
dGEgRGVidWd8V2luMzIKKwkJV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQgPSBXaW5kb3dzIFZpc3Rh
IERlYnVnfHg2NAorCQlXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIgPSBXaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIKKwkJV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgVmlz
dGEgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0
Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJezlDNkE1RDQ4LUEzMzEt
NEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9
IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdC
QTVCRTFDfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xX
aW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcg
RGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKKwkJezlDNkE1RDQ4LUEz
MzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0g
V2luZG93cyA3IERlYnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJezlD
NkE1RDQ4LUEzMzEtNEIxRi1BMDA0LTdCQjY3QkE1QkUxQ30uV2luZG93cyA3IFJlbGVhc2V8eDY0
LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFG
LUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRv
d3MgNyBSZWxlYXNlfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFD
fS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMy
CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXs5QzZBNUQ0OC1BMzMx
LTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0g
V2luZG93cyA4IERlYnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVC
RTFDfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJ
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs5QzZBNUQ0OC1B
MzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQt
N0JCNjdCQTVCRTFDfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4
IFJlbGVhc2V8eDY0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9Lldp
bmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXs5
QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8
V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7OUM2QTVENDgt
QTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYt
QTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdp
bmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JB
NUJFMUN9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERl
YnVnfHg2NAorCQl7OUM2QTVENDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dz
IFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdp
bjMyCisJCXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXs5QzZBNUQ0OC1BMzMxLTRCMUYtQTAwNC03QkI2N0JBNUJFMUN9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7OUM2QTVE
NDgtQTMzMS00QjFGLUEwMDQtN0JCNjdCQTVCRTFDfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQz
NEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBX
aW5kb3dzIDcgRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2lu
MzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERl
YnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdp
bmRvd3MgNyBEZWJ1Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8
V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3
IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXtENzQx
MUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05
RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dz
IDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0u
V2luZG93cyA4IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgor
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8
V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdp
bmRvd3MgOCBEZWJ1Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA4IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5CdWlsZC4w
ID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUx
MEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBS
ZWxlYXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5k
b3dzIDggUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NAorCQl7RDc0
MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdp
bjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5CdWls
ZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlG
NTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIFZpc3RhIERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1
QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBEZWJ1
Z3x4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBW
aXN0YSBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4z
MgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMgorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJD
LTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NC5C
dWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7NEJGNDEzNzgtQzAxQi00MDAy
LTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA3IERlYnVnfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMz
NjJ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfFdpbjMy
CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBEZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA3IERlYnVnfHg2NAorCQl7NEJGNDEzNzgtQzAxQi00
MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDcgRGVidWd8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfFdp
bjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgorCQl7NEJGNDEz
NzgtQzAxQi00MDAyLTg1ODEtNTYzQzVGNzAzMzYyfS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4
MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA3
IFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9Lldp
bmRvd3MgOCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJ
ezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfFdp
bjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJezRCRjQxMzc4LUMwMUItNDAw
Mi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIDggRGVidWd8eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9
LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBEZWJ1Z3x4NjQKKwkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2lu
MzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJezRCRjQxMzc4LUMwMUIt
NDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9
IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjND
NUY3MDMzNjJ9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVs
ZWFzZXx4NjQKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93
cyA4IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKKwkJezRCRjQx
Mzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs0QkY0MTM3OC1DMDFC
LTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQnVpbGQu
MCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgx
LTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQKKwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2
Mn0uV2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8
eDY0CisJCXs0QkY0MTM3OC1DMDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlz
dGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIK
KwkJezRCRjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIKKwkJezRC
RjQxMzc4LUMwMUItNDAwMi04NTgxLTU2M0M1RjcwMzM2Mn0uV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs0QkY0MTM3OC1D
MDFCLTQwMDItODU4MS01NjNDNUY3MDMzNjJ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuQnVp
bGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKKwkJezE0QzE2QzI5LTc3QzktNDc1Qi1B
NjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1
fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgor
CQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKKwkJezE0QzE2QzI5LTc3QzktNDc1
Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93
cyA3IERlYnVnfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4z
MgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJezE0QzE2QzI5
LTc3QzktNDc1Qi1BNjE4LTFCMDFFNjdDRjk4NX0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkFjdGl2
ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgt
MUIwMUU2N0NGOTg1fS5XaW5kb3dzIDcgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBS
ZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5k
b3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXsx
NEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3xXaW4z
Mi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3NUIt
QTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93
cyA4IERlYnVnfHg2NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5X
aW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMy
LkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3
NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2
N0NGOTg1fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVh
c2V8eDY0CisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3Mg
OCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXsxNEMxNkMy
OS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMgorCQl7MTRDMTZDMjktNzdDOS00
NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0x
QjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3Mg
VmlzdGEgRGVidWd8eDY0CisJCXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9
LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2
NAorCQl7MTRDMTZDMjktNzdDOS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXsxNEMxNkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJCXsxNEMx
NkMyOS03N0M5LTQ3NUItQTYxOC0xQjAxRTY3Q0Y5ODV9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4
NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7MTRDMTZDMjktNzdD
OS00NzVCLUE2MTgtMUIwMUU2N0NGOTg1fS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1aWxk
LjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZG
OC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dz
IDcgRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0u
V2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIKKwkJ
ezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IERlYnVnfFdp
bjMyLkRlcGxveS4wID0gV2luZG93cyA3IERlYnVnfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1
QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA3IERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlG
fS5XaW5kb3dzIDcgRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBEZWJ1Z3x4NjQu
RGVwbG95LjAgPSBXaW5kb3dzIDcgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZG
OC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRv
d3MgNyBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgNyBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXxX
aW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDcg
UmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXs5MkU1
QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1C
NkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dz
IDcgUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0u
V2luZG93cyA3IFJlbGVhc2V8eDY0LkRlcGxveS4wID0gV2luZG93cyA3IFJlbGVhc2V8eDY0CisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0Mt
NDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDggRGVidWd8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1
Mjc5Rn0uV2luZG93cyA4IERlYnVnfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyA4IERlYnVnfFdp
bjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBE
ZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEz
Qy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBX
aW5kb3dzIDggRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3
OUZ9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuRGVwbG95LjAgPSBXaW5kb3dzIDggRGVidWd8eDY0CisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05
MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2Rjgt
N0UwNjJEODUyNzlGfS5XaW5kb3dzIDggUmVsZWFzZXxXaW4zMi5EZXBsb3kuMCA9IFdpbmRvd3Mg
OCBSZWxlYXNlfFdpbjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9
LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQK
KwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVh
c2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXx4NjQKKwkJezkyRTVBNDZCLTkxM0Mt
NDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyA4IFJlbGVhc2V8eDY0LkRlcGxveS4wID0g
V2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4
NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0
YSBEZWJ1Z3xXaW4zMgorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5X
aW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdp
bjMyCisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlz
dGEgRGVidWd8V2luMzIuRGVwbG95LjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXs5
MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTND
LTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAorCQl7OTJFNUE0NkItOTEzQy00NUM2LUI2RjgtN0Uw
NjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5EZXBsb3kuMCA9IFdpbmRvd3MgVmlz
dGEgRGVidWd8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9Lldp
bmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVh
c2V8V2luMzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzIKKwkJezkyRTVBNDZCLTkxM0MtNDVDNi1CNkY4LTdFMDYyRDg1Mjc5Rn0uV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyLkRlcGxveS4wID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJ
CXs5MkU1QTQ2Qi05MTNDLTQ1QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NAorCQl7OTJFNUE0
NkItOTEzQy00NUM2LUI2RjgtN0UwNjJEODUyNzlGfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJCXs5MkU1QTQ2Qi05MTNDLTQ1
QzYtQjZGOC03RTA2MkQ4NTI3OUZ9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuRGVwbG95LjAg
PSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNl
Y3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5v
ZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvdnMy
MDEzL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIGIvdnMyMDEzL3BhY2thZ2UvcGFja2FnZS52Y3hw
cm9qCmluZGV4IDkzNmYxYTMuLmJlMTNmZDkgMTAwNjQ0Ci0tLSBhL3ZzMjAxMy9wYWNrYWdlL3Bh
Y2thZ2UudmN4cHJvagorKysgYi92czIwMTMvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAgLTEs
NCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJn
ZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEltcG9ydCBQcm9qZWN0PSIu
Llxjb25maWdzLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgpkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qIGIvdnMyMDEz
L3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCmluZGV4IGU4Y2FiMzMuLjE2NjIzY2UgMTAwNjQ0Ci0t
LSBhL3ZzMjAxMy94ZW5maWx0L3hlbmZpbHQudmN4cHJvagorKysgYi92czIwMTMveGVuZmlsdC94
ZW5maWx0LnZjeHByb2oKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
IDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
ICAgPEltcG9ydCBQcm9qZWN0PSIuLlxjb25maWdzLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+Ci0tIAoyLjEuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:24 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIG-0006jK-N0; Thu, 19 Mar 2015 13:15:24 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIF-0006ih-4G
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:23 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	31/89-18377-AEBCA055; Thu, 19 Mar 2015 13:15:22 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426770919!14280264!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10466 invoked from network); 19 Mar 2015 13:15:19 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:19 -0000
Received: by wetk59 with SMTP id k59so56959157wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=0mzIN8E3rPpxFdHrxvLNjNTjFkiEWOczKoqj2lK3UOs=;
	b=S0yVD5GEC5k2CS3DQpJc6BA9OJ/7MWZ67jbvORb00j/K9etWRXttLN3UMH3QhyMwqc
	BiS0YfeCEeD1Ay0PqOEulEnQLJE2T/kQb4pZDB/b7idw4gkBUvRdaxmT3x/4n+g5918L
	I83V/kqtp+Z7UcOFPcm4cAsceKsbB0YOMbGXOlGzzm8Bpqp2mv1Go6HHqpeP9A5H5nYS
	ihRE5i+a0vJzkh6jUkww3qCCczyj6E/g3UXmRRxRjHf1K7k2AoV0ZLaamcFD97gtNygl
	+hyLMspLPdECZzCsKcElP2fSNqATQyis14QyA1gGA2CR+PgStqfAijt2waUl+MW9e/0U
	9mSA==
X-Received: by 10.194.158.39 with SMTP id wr7mr155122544wjb.118.1426770918922; 
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:17 +0000
Message-Id: <1426770921-14080-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/6] Move util.h from include to src/common
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It should be co-located with headers such as assert.h and names.h

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/util.h           | 281 -----------------------------------------------
 src/common/registry.c    |   2 +-
 src/common/util.h        | 281 +++++++++++++++++++++++++++++++++++++++++++++++
 src/xen/acpi.c           |   2 +-
 src/xen/hypercall.c      |   2 +-
 src/xen/module.c         |   2 +-
 src/xen/system.c         |   2 +-
 src/xenbus/balloon.c     |   2 +-
 src/xenbus/bus.c         |   2 +-
 src/xenbus/debug.c       |   2 +-
 src/xenbus/dma.c         |   2 +-
 src/xenbus/driver.c      |   2 +-
 src/xenbus/evtchn.c      |   2 +-
 src/xenbus/evtchn_2l.c   |   2 +-
 src/xenbus/evtchn_fifo.c |   2 +-
 src/xenbus/fdo.c         |   2 +-
 src/xenbus/gnttab.c      |   2 +-
 src/xenbus/hash_table.c  |   2 +-
 src/xenbus/pdo.c         |   2 +-
 src/xenbus/range_set.c   |   2 +-
 src/xenbus/shared_info.c |   2 +-
 src/xenbus/store.c       |   2 +-
 src/xenbus/suspend.c     |   2 +-
 src/xenbus/sync.c        |   2 +-
 src/xenbus/thread.c      |   2 +-
 src/xenfilt/driver.c     |   4 +-
 src/xenfilt/emulated.c   |   2 +-
 src/xenfilt/fdo.c        |   2 +-
 src/xenfilt/pdo.c        |   2 +-
 src/xenfilt/thread.c     |   2 +-
 src/xenfilt/unplug.c     |   2 +-
 31 files changed, 311 insertions(+), 311 deletions(-)
 delete mode 100644 include/util.h
 create mode 100644 src/common/util.h

diff --git a/include/util.h b/include/util.h
deleted file mode 100644
index 485cda4..0000000
--- a/include/util.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _UTIL_H
-#define _UTIL_H
-
-#include <ntddk.h>
-
-#include "assert.h"
-
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
-
-static FORCEINLINE LONG
-__ffs(
-    IN  unsigned long long  mask
-    )
-{
-    unsigned char           *array = (unsigned char *)&mask;
-    unsigned int            byte;
-    unsigned int            bit;
-    unsigned char           val;
-
-    val = 0;
-
-    byte = 0;
-    while (byte < 8) {
-        val = array[byte];
-
-        if (val != 0)
-            break;
-
-        byte++;
-    }
-    if (byte == 8)
-        return -1;
-
-    bit = 0;
-    while (bit < 8) {
-        if (val & 0x01)
-            break;
-
-        val >>= 1;
-        bit++;
-    }
-
-    return (byte * 8) + bit;
-}
-
-#define __ffu(_mask)  \
-        __ffs(~(_mask))
-
-static FORCEINLINE VOID
-__CpuId(
-    IN  ULONG   Leaf,
-    OUT PULONG  EAX OPTIONAL,
-    OUT PULONG  EBX OPTIONAL,
-    OUT PULONG  ECX OPTIONAL,
-    OUT PULONG  EDX OPTIONAL
-    )
-{
-    ULONG       Value[4] = {0};
-
-    __cpuid(Value, Leaf);
-
-    if (EAX)
-        *EAX = Value[0];
-
-    if (EBX)
-        *EBX = Value[1];
-
-    if (ECX)
-        *ECX = Value[2];
-
-    if (EDX)
-        *EDX = Value[3];
-}
-
-static FORCEINLINE LONG
-__InterlockedAdd(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old + Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE LONG
-__InterlockedSubtract(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old - Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE PVOID
-__AllocatePoolWithTag(
-    IN  POOL_TYPE   PoolType,
-    IN  SIZE_T      NumberOfBytes,
-    IN  ULONG       Tag
-    )
-{
-    PUCHAR          Buffer;
-
-    __analysis_assume(PoolType == NonPagedPool ||
-                      PoolType == PagedPool);
-
-    Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
-    if (Buffer == NULL)
-        return NULL;
-
-    RtlZeroMemory(Buffer, NumberOfBytes);
-    return Buffer;
-}
-
-static FORCEINLINE PMDL
-__AllocatePage(
-    VOID
-    )
-{
-    PHYSICAL_ADDRESS    LowAddress;
-    PHYSICAL_ADDRESS    HighAddress;
-    LARGE_INTEGER       SkipBytes;
-    SIZE_T              TotalBytes;
-    PMDL                Mdl;
-    PUCHAR              MdlMappedSystemVa;
-    NTSTATUS            status;
-
-    LowAddress.QuadPart = 0ull;
-    HighAddress.QuadPart = ~0ull;
-    SkipBytes.QuadPart = 0ull;
-    TotalBytes = (SIZE_T)PAGE_SIZE;
-
-    Mdl = MmAllocatePagesForMdlEx(LowAddress,
-                                  HighAddress,
-                                  SkipBytes,
-                                  TotalBytes,
-                                  MmCached,
-                                  0);
-
-    status = STATUS_NO_MEMORY;
-    if (Mdl == NULL)
-        goto fail1;
-
-    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
-                             MDL_PARTIAL_HAS_BEEN_MAPPED |
-                             MDL_PARTIAL |
-                             MDL_PARENT_MAPPED_SYSTEM_VA |
-                             MDL_SOURCE_IS_NONPAGED_POOL |
-                             MDL_IO_SPACE)) == 0);
-
-    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
-                                                     KernelMode,
-						                             MmCached,   
-						                             NULL,
-						                             FALSE,
-						                             NormalPagePriority);
-
-    status = STATUS_UNSUCCESSFUL;
-    if (MdlMappedSystemVa == NULL)
-        goto fail2;
-
-    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
-
-    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
-
-    return Mdl;
-
-fail2:
-    Error("fail2\n");
-
-    MmFreePagesFromMdl(Mdl);
-    ExFreePool(Mdl);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return NULL;
-}
-
-static FORCEINLINE VOID
-__FreePage(
-    IN	PMDL	Mdl
-    )
-{
-    PUCHAR	MdlMappedSystemVa;
-
-    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
-    MdlMappedSystemVa = Mdl->MappedSystemVa;
-
-    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
-    
-    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
-
-    MmFreePagesFromMdl(Mdl);
-}
-
-static FORCEINLINE PCHAR
-__strtok_r(
-    IN      PCHAR   Buffer,
-    IN      PCHAR   Delimiter,
-    IN OUT  PCHAR   *Context
-    )
-{
-    PCHAR           Token;
-    PCHAR           End;
-
-    if (Buffer != NULL)
-        *Context = Buffer;
-
-    Token = *Context;
-
-    if (Token == NULL)
-        return NULL;
-
-    while (*Token != L'\0' &&
-           strchr(Delimiter, *Token) != NULL)
-        Token++;
-
-    if (*Token == L'\0')
-        return NULL;
-
-    End = Token + 1;
-    while (*End != L'\0' &&
-           strchr(Delimiter, *End) == NULL)
-        End++;
-
-    if (*End != L'\0')
-        *End++ = L'\0';
-
-    *Context = End;
-
-    return Token;
-}
-
-#endif  // _UTIL_H
diff --git a/src/common/registry.c b/src/common/registry.c
index bfddbcc..4caeaa5 100644
--- a/src/common/registry.c
+++ b/src/common/registry.c
@@ -30,10 +30,10 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "registry.h"
 #include "assert.h"
+#include "util.h"
 
 #define REGISTRY_TAG 'GERX'
 
diff --git a/src/common/util.h b/src/common/util.h
new file mode 100644
index 0000000..1a2bb86
--- /dev/null
+++ b/src/common/util.h
@@ -0,0 +1,281 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
+ *     materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _COMMON_UTIL_H
+#define _COMMON_UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+#define	P2ROUNDUP(_x, _a)   \
+        (-(-(_x) & -(_a)))
+
+static FORCEINLINE LONG
+__ffs(
+    IN  unsigned long long  mask
+    )
+{
+    unsigned char           *array = (unsigned char *)&mask;
+    unsigned int            byte;
+    unsigned int            bit;
+    unsigned char           val;
+
+    val = 0;
+
+    byte = 0;
+    while (byte < 8) {
+        val = array[byte];
+
+        if (val != 0)
+            break;
+
+        byte++;
+    }
+    if (byte == 8)
+        return -1;
+
+    bit = 0;
+    while (bit < 8) {
+        if (val & 0x01)
+            break;
+
+        val >>= 1;
+        bit++;
+    }
+
+    return (byte * 8) + bit;
+}
+
+#define __ffu(_mask)  \
+        __ffs(~(_mask))
+
+static FORCEINLINE VOID
+__CpuId(
+    IN  ULONG   Leaf,
+    OUT PULONG  EAX OPTIONAL,
+    OUT PULONG  EBX OPTIONAL,
+    OUT PULONG  ECX OPTIONAL,
+    OUT PULONG  EDX OPTIONAL
+    )
+{
+    ULONG       Value[4] = {0};
+
+    __cpuid(Value, Leaf);
+
+    if (EAX)
+        *EAX = Value[0];
+
+    if (EBX)
+        *EBX = Value[1];
+
+    if (ECX)
+        *ECX = Value[2];
+
+    if (EDX)
+        *EDX = Value[3];
+}
+
+static FORCEINLINE LONG
+__InterlockedAdd(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old + Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE LONG
+__InterlockedSubtract(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old - Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE PVOID
+__AllocatePoolWithTag(
+    IN  POOL_TYPE   PoolType,
+    IN  SIZE_T      NumberOfBytes,
+    IN  ULONG       Tag
+    )
+{
+    PUCHAR          Buffer;
+
+    __analysis_assume(PoolType == NonPagedPool ||
+                      PoolType == PagedPool);
+
+    Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
+    if (Buffer == NULL)
+        return NULL;
+
+    RtlZeroMemory(Buffer, NumberOfBytes);
+    return Buffer;
+}
+
+static FORCEINLINE PMDL
+__AllocatePage(
+    VOID
+    )
+{
+    PHYSICAL_ADDRESS    LowAddress;
+    PHYSICAL_ADDRESS    HighAddress;
+    LARGE_INTEGER       SkipBytes;
+    SIZE_T              TotalBytes;
+    PMDL                Mdl;
+    PUCHAR              MdlMappedSystemVa;
+    NTSTATUS            status;
+
+    LowAddress.QuadPart = 0ull;
+    HighAddress.QuadPart = ~0ull;
+    SkipBytes.QuadPart = 0ull;
+    TotalBytes = (SIZE_T)PAGE_SIZE;
+
+    Mdl = MmAllocatePagesForMdlEx(LowAddress,
+                                  HighAddress,
+                                  SkipBytes,
+                                  TotalBytes,
+                                  MmCached,
+                                  0);
+
+    status = STATUS_NO_MEMORY;
+    if (Mdl == NULL)
+        goto fail1;
+
+    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
+                             MDL_PARTIAL_HAS_BEEN_MAPPED |
+                             MDL_PARTIAL |
+                             MDL_PARENT_MAPPED_SYSTEM_VA |
+                             MDL_SOURCE_IS_NONPAGED_POOL |
+                             MDL_IO_SPACE)) == 0);
+
+    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
+                                                     KernelMode,
+						                             MmCached,
+						                             NULL,
+						                             FALSE,
+						                             NormalPagePriority);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (MdlMappedSystemVa == NULL)
+        goto fail2;
+
+    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
+
+    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
+
+    return Mdl;
+
+fail2:
+    Error("fail2\n");
+
+    MmFreePagesFromMdl(Mdl);
+    ExFreePool(Mdl);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return NULL;
+}
+
+static FORCEINLINE VOID
+__FreePage(
+    IN	PMDL	Mdl
+    )
+{
+    PUCHAR	MdlMappedSystemVa;
+
+    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
+    MdlMappedSystemVa = Mdl->MappedSystemVa;
+
+    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
+
+    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
+
+    MmFreePagesFromMdl(Mdl);
+}
+
+static FORCEINLINE PCHAR
+__strtok_r(
+    IN      PCHAR   Buffer,
+    IN      PCHAR   Delimiter,
+    IN OUT  PCHAR   *Context
+    )
+{
+    PCHAR           Token;
+    PCHAR           End;
+
+    if (Buffer != NULL)
+        *Context = Buffer;
+
+    Token = *Context;
+
+    if (Token == NULL)
+        return NULL;
+
+    while (*Token != L'\0' &&
+           strchr(Delimiter, *Token) != NULL)
+        Token++;
+
+    if (*Token == L'\0')
+        return NULL;
+
+    End = Token + 1;
+    while (*End != L'\0' &&
+           strchr(Delimiter, *End) == NULL)
+        End++;
+
+    if (*End != L'\0')
+        *End++ = L'\0';
+
+    *Context = End;
+
+    return Token;
+}
+
+#endif  // _COMMON_UTIL_H
diff --git a/src/xen/acpi.c b/src/xen/acpi.c
index 124dcb6..ebf8024 100644
--- a/src/xen/acpi.c
+++ b/src/xen/acpi.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "acpi.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_ACPI_TAG 'IPCA'
 
diff --git a/src/xen/hypercall.c b/src/xen/hypercall.c
index 717b8c2..5f14caa 100644
--- a/src/xen/hypercall.c
+++ b/src/xen/hypercall.c
@@ -34,11 +34,11 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
 #include "hypercall.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXIMUM_HYPERCALL_PAGE_COUNT 2
 
diff --git a/src/xen/module.c b/src/xen/module.c
index a1a5448..ed8838a 100644
--- a/src/xen/module.c
+++ b/src/xen/module.c
@@ -34,12 +34,12 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <aux_klib.h>
-#include <util.h>
 
 #include "high.h"
 #include "module.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MODULE_TAG   'UDOM'
 
diff --git a/src/xen/system.c b/src/xen/system.c
index ea3bc4e..b21efd8 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -36,7 +36,6 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "registry.h"
 #include "system.h"
@@ -44,6 +43,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XEN_SYSTEM_TAG  'TSYS'
 
diff --git a/src/xenbus/balloon.c b/src/xenbus/balloon.c
index 7c1754c..2dc4a6c 100644
--- a/src/xenbus/balloon.c
+++ b/src/xenbus/balloon.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "mutex.h"
 #include "balloon.h"
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MDL_SIZE_MAX        ((1 << (RTL_FIELD_SIZE(MDL, Size) * 8)) - 1)
 #define MAX_PAGES_PER_MDL   ((MDL_SIZE_MAX - sizeof(MDL)) / sizeof(PFN_NUMBER))
diff --git a/src/xenbus/bus.c b/src/xenbus/bus.c
index 1cd527f..d82fe0a 100644
--- a/src/xenbus/bus.c
+++ b/src/xenbus/bus.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "bus.h"
 #include "dma.h"
@@ -42,6 +41,7 @@
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_BUS_CONTEXT {
     LONG                    References;
diff --git a/src/xenbus/debug.c b/src/xenbus/debug.c
index f7f34f6..bd62b51 100644
--- a/src/xenbus/debug.c
+++ b/src/xenbus/debug.c
@@ -34,13 +34,13 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "high.h"
 #include "debug.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXIMUM_PREFIX_LENGTH   32
 
diff --git a/src/xenbus/dma.c b/src/xenbus/dma.c
index 67a811e..3969778 100644
--- a/src/xenbus/dma.c
+++ b/src/xenbus/dma.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "names.h"
 #include "dma.h"
@@ -40,6 +39,7 @@
 #include "pdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #pragma warning(push)
 #pragma warning(disable:4201) // nameless struct/union
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index 9067813..628e0fa 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -31,7 +31,6 @@
 
 #include <ntddk.h>
 #include <ntstrsafe.h>
-#include <util.h>
 
 #include "registry.h"
 #include "fdo.h"
@@ -40,6 +39,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 #include "version.h"
 
 extern PULONG       InitSafeBootMode;
diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 499127a..f44c3cf 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn.h"
 #include "evtchn_2l.h"
@@ -42,6 +41,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_EVTCHN_UNBOUND_PARAMETERS {
     USHORT  RemoteDomain;
diff --git a/src/xenbus/evtchn_2l.c b/src/xenbus/evtchn_2l.c
index e5af9db..fde520f 100644
--- a/src/xenbus/evtchn_2l.c
+++ b/src/xenbus/evtchn_2l.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn_2l.h"
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_EVTCHN_TWO_LEVEL_CONTEXT {
     PXENBUS_FDO                     Fdo;
diff --git a/src/xenbus/evtchn_fifo.c b/src/xenbus/evtchn_fifo.c
index e3cff7a..4268809 100644
--- a/src/xenbus/evtchn_fifo.c
+++ b/src/xenbus/evtchn_fifo.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn_fifo.h"
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAX_HVM_VCPUS   128
 
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 1eb5fa8..b30c4bc 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
 
 #include <unplug_interface.h>
@@ -60,6 +59,7 @@
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_FDO_TAG 'ODF'
 
diff --git a/src/xenbus/gnttab.c b/src/xenbus/gnttab.c
index 8b73f27..3912028 100644
--- a/src/xenbus/gnttab.c
+++ b/src/xenbus/gnttab.c
@@ -33,13 +33,13 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "gnttab.h"
 #include "fdo.h"
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_GNTTAB_MAXIMUM_FRAME_COUNT  32
 #define XENBUS_GNTTAB_ENTRY_PER_FRAME      (PAGE_SIZE / sizeof (grant_entry_v1_t))
diff --git a/src/xenbus/hash_table.c b/src/xenbus/hash_table.c
index 0cf1010..a9c1b79 100644
--- a/src/xenbus/hash_table.c
+++ b/src/xenbus/hash_table.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "hash_table.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_HASH_TABLE_NODE {
     LIST_ENTRY  ListEntry;
diff --git a/src/xenbus/pdo.c b/src/xenbus/pdo.c
index 4c6017d..58eeadd 100644
--- a/src/xenbus/pdo.c
+++ b/src/xenbus/pdo.c
@@ -34,7 +34,6 @@
 #include <ntddk.h>
 #include <wdmguid.h>
 #include <ntstrsafe.h>
-#include <util.h>
 
 #include <emulated_interface.h>
 #include <unplug_interface.h>
@@ -48,6 +47,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_TAG 'ODP'
 
diff --git a/src/xenbus/range_set.c b/src/xenbus/range_set.c
index 9186185..a0b1311 100644
--- a/src/xenbus/range_set.c
+++ b/src/xenbus/range_set.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <xen.h>
-#include <util.h>
 
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define RANGE_SET_TAG   'GNAR'
 
diff --git a/src/xenbus/shared_info.c b/src/xenbus/shared_info.c
index 244b9e1..09d035a 100644
--- a/src/xenbus/shared_info.c
+++ b/src/xenbus/shared_info.c
@@ -31,12 +31,12 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_SHARED_INFO_EVTCHN_PER_SELECTOR     (sizeof (ULONG_PTR) * 8)
 #define XENBUS_SHARED_INFO_EVTCHN_SELECTOR_COUNT   (RTL_FIELD_SIZE(shared_info_t, evtchn_pending) / sizeof (ULONG_PTR))
diff --git a/src/xenbus/store.c b/src/xenbus/store.c
index e6119d3..16ca37b 100644
--- a/src/xenbus/store.c
+++ b/src/xenbus/store.c
@@ -34,13 +34,13 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "store.h"
 #include "evtchn.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 extern ULONG
 NTAPI
diff --git a/src/xenbus/suspend.c b/src/xenbus/suspend.c
index de70e42..663ed8e 100644
--- a/src/xenbus/suspend.c
+++ b/src/xenbus/suspend.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include <unplug_interface.h>
 
@@ -42,6 +41,7 @@
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENBUS_SUSPEND_CALLBACK {
     LIST_ENTRY  ListEntry;
diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index 5730039..d4af525 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 // Routines to capture all CPUs in a spinning state with interrupts
 // disabled (so that we remain in a known code context) and optionally
diff --git a/src/xenbus/thread.c b/src/xenbus/thread.c
index 0ab8acb..9048e4f 100644
--- a/src/xenbus/thread.c
+++ b/src/xenbus/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_TAG 'ERHT'
 
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 0ae5d66..8279bd7 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -31,17 +31,17 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
+#include "registry.h"
 #include "fdo.h"
 #include "pdo.h"
 #include "driver.h"
 #include "emulated.h"
 #include "unplug.h"
-#include "registry.h"
 #include "mutex.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 #include "version.h"
 
 extern PULONG       InitSafeBootMode;
diff --git a/src/xenfilt/emulated.c b/src/xenfilt/emulated.c
index 8542d84..485fed6 100644
--- a/src/xenfilt/emulated.c
+++ b/src/xenfilt/emulated.c
@@ -34,12 +34,12 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "registry.h"
 #include "emulated.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXNAMELEN  128
 
diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index 1597a15..42a40e8 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
 
 #include "emulated.h"
@@ -48,6 +47,7 @@
 #include "mutex.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define FDO_TAG 'ODF'
 
diff --git a/src/xenfilt/pdo.c b/src/xenfilt/pdo.c
index 392e6af..893c76d 100644
--- a/src/xenfilt/pdo.c
+++ b/src/xenfilt/pdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 
 #include "emulated.h"
 #include "names.h"
@@ -45,6 +44,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_TAG 'ODP'
 
diff --git a/src/xenfilt/thread.c b/src/xenfilt/thread.c
index 431e06a..7ec0ac8 100644
--- a/src/xenfilt/thread.c
+++ b/src/xenfilt/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_TAG 'ERHT'
 
diff --git a/src/xenfilt/unplug.c b/src/xenfilt/unplug.c
index 21f1c7e..37562c5 100644
--- a/src/xenfilt/unplug.c
+++ b/src/xenfilt/unplug.c
@@ -34,7 +34,6 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 #include <version.h>
 
 #include "driver.h"
@@ -43,6 +42,7 @@
 #include "unplug.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENFILT_UNPLUG_CONTEXT {
     KSPIN_LOCK  Lock;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:24 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIG-0006jK-N0; Thu, 19 Mar 2015 13:15:24 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIF-0006ih-4G
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:23 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	31/89-18377-AEBCA055; Thu, 19 Mar 2015 13:15:22 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426770919!14280264!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10466 invoked from network); 19 Mar 2015 13:15:19 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:19 -0000
Received: by wetk59 with SMTP id k59so56959157wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=0mzIN8E3rPpxFdHrxvLNjNTjFkiEWOczKoqj2lK3UOs=;
	b=S0yVD5GEC5k2CS3DQpJc6BA9OJ/7MWZ67jbvORb00j/K9etWRXttLN3UMH3QhyMwqc
	BiS0YfeCEeD1Ay0PqOEulEnQLJE2T/kQb4pZDB/b7idw4gkBUvRdaxmT3x/4n+g5918L
	I83V/kqtp+Z7UcOFPcm4cAsceKsbB0YOMbGXOlGzzm8Bpqp2mv1Go6HHqpeP9A5H5nYS
	ihRE5i+a0vJzkh6jUkww3qCCczyj6E/g3UXmRRxRjHf1K7k2AoV0ZLaamcFD97gtNygl
	+hyLMspLPdECZzCsKcElP2fSNqATQyis14QyA1gGA2CR+PgStqfAijt2waUl+MW9e/0U
	9mSA==
X-Received: by 10.194.158.39 with SMTP id wr7mr155122544wjb.118.1426770918922; 
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:18 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:17 +0000
Message-Id: <1426770921-14080-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/6] Move util.h from include to src/common
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It should be co-located with headers such as assert.h and names.h

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/util.h           | 281 -----------------------------------------------
 src/common/registry.c    |   2 +-
 src/common/util.h        | 281 +++++++++++++++++++++++++++++++++++++++++++++++
 src/xen/acpi.c           |   2 +-
 src/xen/hypercall.c      |   2 +-
 src/xen/module.c         |   2 +-
 src/xen/system.c         |   2 +-
 src/xenbus/balloon.c     |   2 +-
 src/xenbus/bus.c         |   2 +-
 src/xenbus/debug.c       |   2 +-
 src/xenbus/dma.c         |   2 +-
 src/xenbus/driver.c      |   2 +-
 src/xenbus/evtchn.c      |   2 +-
 src/xenbus/evtchn_2l.c   |   2 +-
 src/xenbus/evtchn_fifo.c |   2 +-
 src/xenbus/fdo.c         |   2 +-
 src/xenbus/gnttab.c      |   2 +-
 src/xenbus/hash_table.c  |   2 +-
 src/xenbus/pdo.c         |   2 +-
 src/xenbus/range_set.c   |   2 +-
 src/xenbus/shared_info.c |   2 +-
 src/xenbus/store.c       |   2 +-
 src/xenbus/suspend.c     |   2 +-
 src/xenbus/sync.c        |   2 +-
 src/xenbus/thread.c      |   2 +-
 src/xenfilt/driver.c     |   4 +-
 src/xenfilt/emulated.c   |   2 +-
 src/xenfilt/fdo.c        |   2 +-
 src/xenfilt/pdo.c        |   2 +-
 src/xenfilt/thread.c     |   2 +-
 src/xenfilt/unplug.c     |   2 +-
 31 files changed, 311 insertions(+), 311 deletions(-)
 delete mode 100644 include/util.h
 create mode 100644 src/common/util.h

diff --git a/include/util.h b/include/util.h
deleted file mode 100644
index 485cda4..0000000
--- a/include/util.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _UTIL_H
-#define _UTIL_H
-
-#include <ntddk.h>
-
-#include "assert.h"
-
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
-
-static FORCEINLINE LONG
-__ffs(
-    IN  unsigned long long  mask
-    )
-{
-    unsigned char           *array = (unsigned char *)&mask;
-    unsigned int            byte;
-    unsigned int            bit;
-    unsigned char           val;
-
-    val = 0;
-
-    byte = 0;
-    while (byte < 8) {
-        val = array[byte];
-
-        if (val != 0)
-            break;
-
-        byte++;
-    }
-    if (byte == 8)
-        return -1;
-
-    bit = 0;
-    while (bit < 8) {
-        if (val & 0x01)
-            break;
-
-        val >>= 1;
-        bit++;
-    }
-
-    return (byte * 8) + bit;
-}
-
-#define __ffu(_mask)  \
-        __ffs(~(_mask))
-
-static FORCEINLINE VOID
-__CpuId(
-    IN  ULONG   Leaf,
-    OUT PULONG  EAX OPTIONAL,
-    OUT PULONG  EBX OPTIONAL,
-    OUT PULONG  ECX OPTIONAL,
-    OUT PULONG  EDX OPTIONAL
-    )
-{
-    ULONG       Value[4] = {0};
-
-    __cpuid(Value, Leaf);
-
-    if (EAX)
-        *EAX = Value[0];
-
-    if (EBX)
-        *EBX = Value[1];
-
-    if (ECX)
-        *ECX = Value[2];
-
-    if (EDX)
-        *EDX = Value[3];
-}
-
-static FORCEINLINE LONG
-__InterlockedAdd(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old + Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE LONG
-__InterlockedSubtract(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old - Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE PVOID
-__AllocatePoolWithTag(
-    IN  POOL_TYPE   PoolType,
-    IN  SIZE_T      NumberOfBytes,
-    IN  ULONG       Tag
-    )
-{
-    PUCHAR          Buffer;
-
-    __analysis_assume(PoolType == NonPagedPool ||
-                      PoolType == PagedPool);
-
-    Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
-    if (Buffer == NULL)
-        return NULL;
-
-    RtlZeroMemory(Buffer, NumberOfBytes);
-    return Buffer;
-}
-
-static FORCEINLINE PMDL
-__AllocatePage(
-    VOID
-    )
-{
-    PHYSICAL_ADDRESS    LowAddress;
-    PHYSICAL_ADDRESS    HighAddress;
-    LARGE_INTEGER       SkipBytes;
-    SIZE_T              TotalBytes;
-    PMDL                Mdl;
-    PUCHAR              MdlMappedSystemVa;
-    NTSTATUS            status;
-
-    LowAddress.QuadPart = 0ull;
-    HighAddress.QuadPart = ~0ull;
-    SkipBytes.QuadPart = 0ull;
-    TotalBytes = (SIZE_T)PAGE_SIZE;
-
-    Mdl = MmAllocatePagesForMdlEx(LowAddress,
-                                  HighAddress,
-                                  SkipBytes,
-                                  TotalBytes,
-                                  MmCached,
-                                  0);
-
-    status = STATUS_NO_MEMORY;
-    if (Mdl == NULL)
-        goto fail1;
-
-    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
-                             MDL_PARTIAL_HAS_BEEN_MAPPED |
-                             MDL_PARTIAL |
-                             MDL_PARENT_MAPPED_SYSTEM_VA |
-                             MDL_SOURCE_IS_NONPAGED_POOL |
-                             MDL_IO_SPACE)) == 0);
-
-    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
-                                                     KernelMode,
-						                             MmCached,   
-						                             NULL,
-						                             FALSE,
-						                             NormalPagePriority);
-
-    status = STATUS_UNSUCCESSFUL;
-    if (MdlMappedSystemVa == NULL)
-        goto fail2;
-
-    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
-
-    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
-
-    return Mdl;
-
-fail2:
-    Error("fail2\n");
-
-    MmFreePagesFromMdl(Mdl);
-    ExFreePool(Mdl);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return NULL;
-}
-
-static FORCEINLINE VOID
-__FreePage(
-    IN	PMDL	Mdl
-    )
-{
-    PUCHAR	MdlMappedSystemVa;
-
-    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
-    MdlMappedSystemVa = Mdl->MappedSystemVa;
-
-    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
-    
-    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
-
-    MmFreePagesFromMdl(Mdl);
-}
-
-static FORCEINLINE PCHAR
-__strtok_r(
-    IN      PCHAR   Buffer,
-    IN      PCHAR   Delimiter,
-    IN OUT  PCHAR   *Context
-    )
-{
-    PCHAR           Token;
-    PCHAR           End;
-
-    if (Buffer != NULL)
-        *Context = Buffer;
-
-    Token = *Context;
-
-    if (Token == NULL)
-        return NULL;
-
-    while (*Token != L'\0' &&
-           strchr(Delimiter, *Token) != NULL)
-        Token++;
-
-    if (*Token == L'\0')
-        return NULL;
-
-    End = Token + 1;
-    while (*End != L'\0' &&
-           strchr(Delimiter, *End) == NULL)
-        End++;
-
-    if (*End != L'\0')
-        *End++ = L'\0';
-
-    *Context = End;
-
-    return Token;
-}
-
-#endif  // _UTIL_H
diff --git a/src/common/registry.c b/src/common/registry.c
index bfddbcc..4caeaa5 100644
--- a/src/common/registry.c
+++ b/src/common/registry.c
@@ -30,10 +30,10 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "registry.h"
 #include "assert.h"
+#include "util.h"
 
 #define REGISTRY_TAG 'GERX'
 
diff --git a/src/common/util.h b/src/common/util.h
new file mode 100644
index 0000000..1a2bb86
--- /dev/null
+++ b/src/common/util.h
@@ -0,0 +1,281 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
+ *     materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _COMMON_UTIL_H
+#define _COMMON_UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+#define	P2ROUNDUP(_x, _a)   \
+        (-(-(_x) & -(_a)))
+
+static FORCEINLINE LONG
+__ffs(
+    IN  unsigned long long  mask
+    )
+{
+    unsigned char           *array = (unsigned char *)&mask;
+    unsigned int            byte;
+    unsigned int            bit;
+    unsigned char           val;
+
+    val = 0;
+
+    byte = 0;
+    while (byte < 8) {
+        val = array[byte];
+
+        if (val != 0)
+            break;
+
+        byte++;
+    }
+    if (byte == 8)
+        return -1;
+
+    bit = 0;
+    while (bit < 8) {
+        if (val & 0x01)
+            break;
+
+        val >>= 1;
+        bit++;
+    }
+
+    return (byte * 8) + bit;
+}
+
+#define __ffu(_mask)  \
+        __ffs(~(_mask))
+
+static FORCEINLINE VOID
+__CpuId(
+    IN  ULONG   Leaf,
+    OUT PULONG  EAX OPTIONAL,
+    OUT PULONG  EBX OPTIONAL,
+    OUT PULONG  ECX OPTIONAL,
+    OUT PULONG  EDX OPTIONAL
+    )
+{
+    ULONG       Value[4] = {0};
+
+    __cpuid(Value, Leaf);
+
+    if (EAX)
+        *EAX = Value[0];
+
+    if (EBX)
+        *EBX = Value[1];
+
+    if (ECX)
+        *ECX = Value[2];
+
+    if (EDX)
+        *EDX = Value[3];
+}
+
+static FORCEINLINE LONG
+__InterlockedAdd(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old + Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE LONG
+__InterlockedSubtract(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old - Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE PVOID
+__AllocatePoolWithTag(
+    IN  POOL_TYPE   PoolType,
+    IN  SIZE_T      NumberOfBytes,
+    IN  ULONG       Tag
+    )
+{
+    PUCHAR          Buffer;
+
+    __analysis_assume(PoolType == NonPagedPool ||
+                      PoolType == PagedPool);
+
+    Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
+    if (Buffer == NULL)
+        return NULL;
+
+    RtlZeroMemory(Buffer, NumberOfBytes);
+    return Buffer;
+}
+
+static FORCEINLINE PMDL
+__AllocatePage(
+    VOID
+    )
+{
+    PHYSICAL_ADDRESS    LowAddress;
+    PHYSICAL_ADDRESS    HighAddress;
+    LARGE_INTEGER       SkipBytes;
+    SIZE_T              TotalBytes;
+    PMDL                Mdl;
+    PUCHAR              MdlMappedSystemVa;
+    NTSTATUS            status;
+
+    LowAddress.QuadPart = 0ull;
+    HighAddress.QuadPart = ~0ull;
+    SkipBytes.QuadPart = 0ull;
+    TotalBytes = (SIZE_T)PAGE_SIZE;
+
+    Mdl = MmAllocatePagesForMdlEx(LowAddress,
+                                  HighAddress,
+                                  SkipBytes,
+                                  TotalBytes,
+                                  MmCached,
+                                  0);
+
+    status = STATUS_NO_MEMORY;
+    if (Mdl == NULL)
+        goto fail1;
+
+    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
+                             MDL_PARTIAL_HAS_BEEN_MAPPED |
+                             MDL_PARTIAL |
+                             MDL_PARENT_MAPPED_SYSTEM_VA |
+                             MDL_SOURCE_IS_NONPAGED_POOL |
+                             MDL_IO_SPACE)) == 0);
+
+    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
+                                                     KernelMode,
+						                             MmCached,
+						                             NULL,
+						                             FALSE,
+						                             NormalPagePriority);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (MdlMappedSystemVa == NULL)
+        goto fail2;
+
+    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
+
+    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
+
+    return Mdl;
+
+fail2:
+    Error("fail2\n");
+
+    MmFreePagesFromMdl(Mdl);
+    ExFreePool(Mdl);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return NULL;
+}
+
+static FORCEINLINE VOID
+__FreePage(
+    IN	PMDL	Mdl
+    )
+{
+    PUCHAR	MdlMappedSystemVa;
+
+    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
+    MdlMappedSystemVa = Mdl->MappedSystemVa;
+
+    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
+
+    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
+
+    MmFreePagesFromMdl(Mdl);
+}
+
+static FORCEINLINE PCHAR
+__strtok_r(
+    IN      PCHAR   Buffer,
+    IN      PCHAR   Delimiter,
+    IN OUT  PCHAR   *Context
+    )
+{
+    PCHAR           Token;
+    PCHAR           End;
+
+    if (Buffer != NULL)
+        *Context = Buffer;
+
+    Token = *Context;
+
+    if (Token == NULL)
+        return NULL;
+
+    while (*Token != L'\0' &&
+           strchr(Delimiter, *Token) != NULL)
+        Token++;
+
+    if (*Token == L'\0')
+        return NULL;
+
+    End = Token + 1;
+    while (*End != L'\0' &&
+           strchr(Delimiter, *End) == NULL)
+        End++;
+
+    if (*End != L'\0')
+        *End++ = L'\0';
+
+    *Context = End;
+
+    return Token;
+}
+
+#endif  // _COMMON_UTIL_H
diff --git a/src/xen/acpi.c b/src/xen/acpi.c
index 124dcb6..ebf8024 100644
--- a/src/xen/acpi.c
+++ b/src/xen/acpi.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "acpi.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_ACPI_TAG 'IPCA'
 
diff --git a/src/xen/hypercall.c b/src/xen/hypercall.c
index 717b8c2..5f14caa 100644
--- a/src/xen/hypercall.c
+++ b/src/xen/hypercall.c
@@ -34,11 +34,11 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
 #include "hypercall.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXIMUM_HYPERCALL_PAGE_COUNT 2
 
diff --git a/src/xen/module.c b/src/xen/module.c
index a1a5448..ed8838a 100644
--- a/src/xen/module.c
+++ b/src/xen/module.c
@@ -34,12 +34,12 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <aux_klib.h>
-#include <util.h>
 
 #include "high.h"
 #include "module.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MODULE_TAG   'UDOM'
 
diff --git a/src/xen/system.c b/src/xen/system.c
index ea3bc4e..b21efd8 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -36,7 +36,6 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "registry.h"
 #include "system.h"
@@ -44,6 +43,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XEN_SYSTEM_TAG  'TSYS'
 
diff --git a/src/xenbus/balloon.c b/src/xenbus/balloon.c
index 7c1754c..2dc4a6c 100644
--- a/src/xenbus/balloon.c
+++ b/src/xenbus/balloon.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "mutex.h"
 #include "balloon.h"
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MDL_SIZE_MAX        ((1 << (RTL_FIELD_SIZE(MDL, Size) * 8)) - 1)
 #define MAX_PAGES_PER_MDL   ((MDL_SIZE_MAX - sizeof(MDL)) / sizeof(PFN_NUMBER))
diff --git a/src/xenbus/bus.c b/src/xenbus/bus.c
index 1cd527f..d82fe0a 100644
--- a/src/xenbus/bus.c
+++ b/src/xenbus/bus.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "bus.h"
 #include "dma.h"
@@ -42,6 +41,7 @@
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_BUS_CONTEXT {
     LONG                    References;
diff --git a/src/xenbus/debug.c b/src/xenbus/debug.c
index f7f34f6..bd62b51 100644
--- a/src/xenbus/debug.c
+++ b/src/xenbus/debug.c
@@ -34,13 +34,13 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "high.h"
 #include "debug.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXIMUM_PREFIX_LENGTH   32
 
diff --git a/src/xenbus/dma.c b/src/xenbus/dma.c
index 67a811e..3969778 100644
--- a/src/xenbus/dma.c
+++ b/src/xenbus/dma.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "names.h"
 #include "dma.h"
@@ -40,6 +39,7 @@
 #include "pdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #pragma warning(push)
 #pragma warning(disable:4201) // nameless struct/union
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index 9067813..628e0fa 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -31,7 +31,6 @@
 
 #include <ntddk.h>
 #include <ntstrsafe.h>
-#include <util.h>
 
 #include "registry.h"
 #include "fdo.h"
@@ -40,6 +39,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 #include "version.h"
 
 extern PULONG       InitSafeBootMode;
diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 499127a..f44c3cf 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn.h"
 #include "evtchn_2l.h"
@@ -42,6 +41,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_EVTCHN_UNBOUND_PARAMETERS {
     USHORT  RemoteDomain;
diff --git a/src/xenbus/evtchn_2l.c b/src/xenbus/evtchn_2l.c
index e5af9db..fde520f 100644
--- a/src/xenbus/evtchn_2l.c
+++ b/src/xenbus/evtchn_2l.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn_2l.h"
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_EVTCHN_TWO_LEVEL_CONTEXT {
     PXENBUS_FDO                     Fdo;
diff --git a/src/xenbus/evtchn_fifo.c b/src/xenbus/evtchn_fifo.c
index e3cff7a..4268809 100644
--- a/src/xenbus/evtchn_fifo.c
+++ b/src/xenbus/evtchn_fifo.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "evtchn_fifo.h"
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAX_HVM_VCPUS   128
 
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 1eb5fa8..b30c4bc 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
 
 #include <unplug_interface.h>
@@ -60,6 +59,7 @@
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_FDO_TAG 'ODF'
 
diff --git a/src/xenbus/gnttab.c b/src/xenbus/gnttab.c
index 8b73f27..3912028 100644
--- a/src/xenbus/gnttab.c
+++ b/src/xenbus/gnttab.c
@@ -33,13 +33,13 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "gnttab.h"
 #include "fdo.h"
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_GNTTAB_MAXIMUM_FRAME_COUNT  32
 #define XENBUS_GNTTAB_ENTRY_PER_FRAME      (PAGE_SIZE / sizeof (grant_entry_v1_t))
diff --git a/src/xenbus/hash_table.c b/src/xenbus/hash_table.c
index 0cf1010..a9c1b79 100644
--- a/src/xenbus/hash_table.c
+++ b/src/xenbus/hash_table.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "hash_table.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENBUS_HASH_TABLE_NODE {
     LIST_ENTRY  ListEntry;
diff --git a/src/xenbus/pdo.c b/src/xenbus/pdo.c
index 4c6017d..58eeadd 100644
--- a/src/xenbus/pdo.c
+++ b/src/xenbus/pdo.c
@@ -34,7 +34,6 @@
 #include <ntddk.h>
 #include <wdmguid.h>
 #include <ntstrsafe.h>
-#include <util.h>
 
 #include <emulated_interface.h>
 #include <unplug_interface.h>
@@ -48,6 +47,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_TAG 'ODP'
 
diff --git a/src/xenbus/range_set.c b/src/xenbus/range_set.c
index 9186185..a0b1311 100644
--- a/src/xenbus/range_set.c
+++ b/src/xenbus/range_set.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <xen.h>
-#include <util.h>
 
 #include "range_set.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define RANGE_SET_TAG   'GNAR'
 
diff --git a/src/xenbus/shared_info.c b/src/xenbus/shared_info.c
index 244b9e1..09d035a 100644
--- a/src/xenbus/shared_info.c
+++ b/src/xenbus/shared_info.c
@@ -31,12 +31,12 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
 #include "shared_info.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define XENBUS_SHARED_INFO_EVTCHN_PER_SELECTOR     (sizeof (ULONG_PTR) * 8)
 #define XENBUS_SHARED_INFO_EVTCHN_SELECTOR_COUNT   (RTL_FIELD_SIZE(shared_info_t, evtchn_pending) / sizeof (ULONG_PTR))
diff --git a/src/xenbus/store.c b/src/xenbus/store.c
index e6119d3..16ca37b 100644
--- a/src/xenbus/store.c
+++ b/src/xenbus/store.c
@@ -34,13 +34,13 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <xen.h>
-#include <util.h>
 
 #include "store.h"
 #include "evtchn.h"
 #include "fdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 extern ULONG
 NTAPI
diff --git a/src/xenbus/suspend.c b/src/xenbus/suspend.c
index de70e42..663ed8e 100644
--- a/src/xenbus/suspend.c
+++ b/src/xenbus/suspend.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include <unplug_interface.h>
 
@@ -42,6 +41,7 @@
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENBUS_SUSPEND_CALLBACK {
     LIST_ENTRY  ListEntry;
diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index 5730039..d4af525 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "sync.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 // Routines to capture all CPUs in a spinning state with interrupts
 // disabled (so that we remain in a known code context) and optionally
diff --git a/src/xenbus/thread.c b/src/xenbus/thread.c
index 0ab8acb..9048e4f 100644
--- a/src/xenbus/thread.c
+++ b/src/xenbus/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_TAG 'ERHT'
 
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 0ae5d66..8279bd7 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -31,17 +31,17 @@
 
 #include <ntddk.h>
 #include <xen.h>
-#include <util.h>
 
+#include "registry.h"
 #include "fdo.h"
 #include "pdo.h"
 #include "driver.h"
 #include "emulated.h"
 #include "unplug.h"
-#include "registry.h"
 #include "mutex.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 #include "version.h"
 
 extern PULONG       InitSafeBootMode;
diff --git a/src/xenfilt/emulated.c b/src/xenfilt/emulated.c
index 8542d84..485fed6 100644
--- a/src/xenfilt/emulated.c
+++ b/src/xenfilt/emulated.c
@@ -34,12 +34,12 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "registry.h"
 #include "emulated.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXNAMELEN  128
 
diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index 1597a15..42a40e8 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
 
 #include "emulated.h"
@@ -48,6 +47,7 @@
 #include "mutex.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define FDO_TAG 'ODF'
 
diff --git a/src/xenfilt/pdo.c b/src/xenfilt/pdo.c
index 392e6af..893c76d 100644
--- a/src/xenfilt/pdo.c
+++ b/src/xenfilt/pdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 
 #include "emulated.h"
 #include "names.h"
@@ -45,6 +44,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_TAG 'ODP'
 
diff --git a/src/xenfilt/thread.c b/src/xenfilt/thread.c
index 431e06a..7ec0ac8 100644
--- a/src/xenfilt/thread.c
+++ b/src/xenfilt/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_TAG 'ERHT'
 
diff --git a/src/xenfilt/unplug.c b/src/xenfilt/unplug.c
index 21f1c7e..37562c5 100644
--- a/src/xenfilt/unplug.c
+++ b/src/xenfilt/unplug.c
@@ -34,7 +34,6 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 #include <version.h>
 
 #include "driver.h"
@@ -43,6 +42,7 @@
 #include "unplug.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENFILT_UNPLUG_CONTEXT {
     KSPIN_LOCK  Lock;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIH-0006jq-OO; Thu, 19 Mar 2015 13:15:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIG-0006jI-Jt
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:24 +0000
Received: from [193.109.254.147] by server-3.bemta-14.messagelabs.com id
	F6/74-21221-CEBCA055; Thu, 19 Mar 2015 13:15:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1426770923!8894473!1
X-Originating-IP: [74.125.82.48]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19184 invoked from network); 19 Mar 2015 13:15:23 -0000
Received: from mail-wg0-f48.google.com (HELO mail-wg0-f48.google.com)
	(74.125.82.48)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:23 -0000
Received: by wggv3 with SMTP id v3so62171577wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=HTOtgg7pd+pm1codOxSRmwSokGZlrRyW0XZOXbJEoew=;
	b=PlOW8mg5xlbJ50NSTKGQk4p4azNK7m1ZchL/GeCzoNlVs84PTJdGDmyvdtAIuxb/dv
	NVhsRoIp+j5NjLSkSnw7K9fl8EBnQWiS32xZfDeiDg6/bZvxPYdGxC9AUluiLrAOX/Bl
	8ggLM+C+KkzGHo+ILqFZ2ZpghvKzMDFN/0oRjDoniUgQavkTxKmPWxj+ANFZQW+onNwb
	lhRVc3vUyAdJyXA6Zp98VmgU3lxywJHxuQXuU36CH9v7BNoyAifg0l5x9//QxKSjoWdz
	pLubjoqLeWNvbKFPAMaPNrH0YNlinoMOit4gQscDKAdTDMEAtZ8GORVYhnND4YpoLfWE
	CwKA==
X-Received: by 10.180.93.165 with SMTP id cv5mr15684463wib.51.1426770922965;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:20 +0000
Message-Id: <1426770921-14080-6-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 5/6] Add strict version check between XEN and
	XENFILT/XENBUS
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Because the ABI between XEN and the other drivers in the package is
(intentionally) unstable, add a strict version check using the single
function XenTouch to prevent XENBUS or XENFILT loading if an incumbent
XEN is from a previous package installation.

Also add code to the co-installer to request a reboot, as this is needed
to bring up a compatible set of modules.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/xen.h        |  8 ++++++--
 src/coinst/coinst.c  | 45 +++++++++++++++++++++++++++++++++++++++++++++
 src/xen/driver.c     | 28 +++++++++++++++++++++++-----
 src/xenbus/driver.c  | 12 +++++++++---
 src/xenfilt/driver.c | 12 +++++++++---
 5 files changed, 92 insertions(+), 13 deletions(-)

diff --git a/include/xen.h b/include/xen.h
index 0c76fe7..29e32f9 100644
--- a/include/xen.h
+++ b/include/xen.h
@@ -62,9 +62,13 @@
 
 // Dummy function to cause XEN.SYS to be loaded and initialized
 XEN_API
-VOID
+NTSTATUS
 XenTouch(
-    VOID
+    IN  const CHAR  *Name,
+    IN  ULONG       MajorVersion,
+    IN  ULONG       MinorVersion,
+    IN  ULONG       MicroVersion,
+    IN  ULONG       BuildNumber
     );
 
 // HYPERCALL
diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
index bc33182..4b3e532 100644
--- a/src/coinst/coinst.c
+++ b/src/coinst/coinst.c
@@ -1827,6 +1827,50 @@ fail1:
 }
 
 static BOOLEAN
+RequestReboot(
+    IN  HDEVINFO            DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA    DeviceInfoData
+    )
+{
+    SP_DEVINSTALL_PARAMS    DeviceInstallParams;
+    HRESULT                 Error;
+
+    DeviceInstallParams.cbSize = sizeof (DeviceInstallParams);
+
+    if (!SetupDiGetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail1;
+
+    DeviceInstallParams.Flags |= DI_NEEDREBOOT;
+
+    Log("Flags = %08x", DeviceInstallParams.Flags);
+
+    if (!SetupDiSetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail2;
+
+    return TRUE;
+
+fail2:
+    Log("fail2");
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+
+        Message = GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
 SetFriendlyName(
     IN  HDEVINFO            DeviceInfoSet,
     IN  PSP_DEVINFO_DATA    DeviceInfoData,
@@ -2205,6 +2249,7 @@ DifInstallPostProcess(
 
         (VOID) InstallFilter(&GUID_DEVCLASS_SYSTEM, "XENFILT");
         (VOID) InstallFilter(&GUID_DEVCLASS_HDC, "XENFILT");
+        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
     }
 
     free(DeviceID);
diff --git a/src/xen/driver.c b/src/xen/driver.c
index 716367c..a319541 100644
--- a/src/xen/driver.c
+++ b/src/xen/driver.c
@@ -55,10 +55,14 @@ typedef struct _XEN_DRIVER {
 static XEN_DRIVER   Driver;
 
 XEN_API
-VOID
+NTSTATUS
 XenTouch(
-    VOID
-    )
+    IN  const CHAR  *Name,
+    IN  ULONG       MajorVersion,
+    IN  ULONG       MinorVersion,
+    IN  ULONG       MicroVersion,
+    IN  ULONG       BuildNumber
+   )
 {
     static ULONG    Reference;
     ULONG           Major;
@@ -66,8 +70,14 @@ XenTouch(
     CHAR            Extra[XEN_EXTRAVERSION_LEN];
     NTSTATUS        status;
 
+    if (MajorVersion != MAJOR_VERSION ||
+        MinorVersion != MINOR_VERSION ||
+        MicroVersion != MICRO_VERSION ||
+        BuildNumber != BUILD_NUMBER)
+        goto fail1;
+
     if (Reference++ != 0)
-        return;
+        goto done;
 
     status = XenVersion(&Major, &Minor);
     ASSERT(NT_SUCCESS(status));
@@ -81,6 +91,14 @@ XenTouch(
               Minor,
               Extra,
               __XEN_INTERFACE_VERSION__);
+
+done:
+    return STATUS_SUCCESS;
+
+fail1:
+    Info("MODULE '%s' NOT COMPATIBLE (REBOOT REQUIRED)\n", Name);
+
+    return STATUS_INCOMPATIBLE_DRIVER_BLOCKED;
 }
 
 static VOID
@@ -136,7 +154,7 @@ DllInitialize(
                                &Driver.InfoDisposition);
     ASSERT(NT_SUCCESS(status));
 
-    Info("XEN %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index 628e0fa..e74d369 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -512,9 +512,7 @@ DriverEntry(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    XenTouch();
-
-    Info("XENBUS %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
@@ -523,6 +521,14 @@ DriverEntry(
          MONTH,
          YEAR);
 
+    status = XenTouch(__MODULE__,
+                      MAJOR_VERSION,
+                      MINOR_VERSION,
+                      MICRO_VERSION,
+                      BUILD_NUMBER);
+    if (!NT_SUCCESS(status))
+        goto done;
+
     status = RegistryInitialize(RegistryPath);
     if (!NT_SUCCESS(status))
         goto fail1;
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 8279bd7..420e827 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -787,9 +787,7 @@ DriverEntry(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    XenTouch();
-
-    Info("XENFILT %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
@@ -798,6 +796,14 @@ DriverEntry(
          MONTH,
          YEAR);
 
+    status = XenTouch(__MODULE__,
+                      MAJOR_VERSION,
+                      MINOR_VERSION,
+                      MICRO_VERSION,
+                      BUILD_NUMBER);
+    if (!NT_SUCCESS(status))
+        goto done;
+
     status = RegistryInitialize(RegistryPath);
     if (!NT_SUCCESS(status))
         goto fail1;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIH-0006jq-OO; Thu, 19 Mar 2015 13:15:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIG-0006jI-Jt
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:24 +0000
Received: from [193.109.254.147] by server-3.bemta-14.messagelabs.com id
	F6/74-21221-CEBCA055; Thu, 19 Mar 2015 13:15:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1426770923!8894473!1
X-Originating-IP: [74.125.82.48]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19184 invoked from network); 19 Mar 2015 13:15:23 -0000
Received: from mail-wg0-f48.google.com (HELO mail-wg0-f48.google.com)
	(74.125.82.48)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:23 -0000
Received: by wggv3 with SMTP id v3so62171577wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=HTOtgg7pd+pm1codOxSRmwSokGZlrRyW0XZOXbJEoew=;
	b=PlOW8mg5xlbJ50NSTKGQk4p4azNK7m1ZchL/GeCzoNlVs84PTJdGDmyvdtAIuxb/dv
	NVhsRoIp+j5NjLSkSnw7K9fl8EBnQWiS32xZfDeiDg6/bZvxPYdGxC9AUluiLrAOX/Bl
	8ggLM+C+KkzGHo+ILqFZ2ZpghvKzMDFN/0oRjDoniUgQavkTxKmPWxj+ANFZQW+onNwb
	lhRVc3vUyAdJyXA6Zp98VmgU3lxywJHxuQXuU36CH9v7BNoyAifg0l5x9//QxKSjoWdz
	pLubjoqLeWNvbKFPAMaPNrH0YNlinoMOit4gQscDKAdTDMEAtZ8GORVYhnND4YpoLfWE
	CwKA==
X-Received: by 10.180.93.165 with SMTP id cv5mr15684463wib.51.1426770922965;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:20 +0000
Message-Id: <1426770921-14080-6-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 5/6] Add strict version check between XEN and
	XENFILT/XENBUS
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Because the ABI between XEN and the other drivers in the package is
(intentionally) unstable, add a strict version check using the single
function XenTouch to prevent XENBUS or XENFILT loading if an incumbent
XEN is from a previous package installation.

Also add code to the co-installer to request a reboot, as this is needed
to bring up a compatible set of modules.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/xen.h        |  8 ++++++--
 src/coinst/coinst.c  | 45 +++++++++++++++++++++++++++++++++++++++++++++
 src/xen/driver.c     | 28 +++++++++++++++++++++++-----
 src/xenbus/driver.c  | 12 +++++++++---
 src/xenfilt/driver.c | 12 +++++++++---
 5 files changed, 92 insertions(+), 13 deletions(-)

diff --git a/include/xen.h b/include/xen.h
index 0c76fe7..29e32f9 100644
--- a/include/xen.h
+++ b/include/xen.h
@@ -62,9 +62,13 @@
 
 // Dummy function to cause XEN.SYS to be loaded and initialized
 XEN_API
-VOID
+NTSTATUS
 XenTouch(
-    VOID
+    IN  const CHAR  *Name,
+    IN  ULONG       MajorVersion,
+    IN  ULONG       MinorVersion,
+    IN  ULONG       MicroVersion,
+    IN  ULONG       BuildNumber
     );
 
 // HYPERCALL
diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
index bc33182..4b3e532 100644
--- a/src/coinst/coinst.c
+++ b/src/coinst/coinst.c
@@ -1827,6 +1827,50 @@ fail1:
 }
 
 static BOOLEAN
+RequestReboot(
+    IN  HDEVINFO            DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA    DeviceInfoData
+    )
+{
+    SP_DEVINSTALL_PARAMS    DeviceInstallParams;
+    HRESULT                 Error;
+
+    DeviceInstallParams.cbSize = sizeof (DeviceInstallParams);
+
+    if (!SetupDiGetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail1;
+
+    DeviceInstallParams.Flags |= DI_NEEDREBOOT;
+
+    Log("Flags = %08x", DeviceInstallParams.Flags);
+
+    if (!SetupDiSetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail2;
+
+    return TRUE;
+
+fail2:
+    Log("fail2");
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+
+        Message = GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
 SetFriendlyName(
     IN  HDEVINFO            DeviceInfoSet,
     IN  PSP_DEVINFO_DATA    DeviceInfoData,
@@ -2205,6 +2249,7 @@ DifInstallPostProcess(
 
         (VOID) InstallFilter(&GUID_DEVCLASS_SYSTEM, "XENFILT");
         (VOID) InstallFilter(&GUID_DEVCLASS_HDC, "XENFILT");
+        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
     }
 
     free(DeviceID);
diff --git a/src/xen/driver.c b/src/xen/driver.c
index 716367c..a319541 100644
--- a/src/xen/driver.c
+++ b/src/xen/driver.c
@@ -55,10 +55,14 @@ typedef struct _XEN_DRIVER {
 static XEN_DRIVER   Driver;
 
 XEN_API
-VOID
+NTSTATUS
 XenTouch(
-    VOID
-    )
+    IN  const CHAR  *Name,
+    IN  ULONG       MajorVersion,
+    IN  ULONG       MinorVersion,
+    IN  ULONG       MicroVersion,
+    IN  ULONG       BuildNumber
+   )
 {
     static ULONG    Reference;
     ULONG           Major;
@@ -66,8 +70,14 @@ XenTouch(
     CHAR            Extra[XEN_EXTRAVERSION_LEN];
     NTSTATUS        status;
 
+    if (MajorVersion != MAJOR_VERSION ||
+        MinorVersion != MINOR_VERSION ||
+        MicroVersion != MICRO_VERSION ||
+        BuildNumber != BUILD_NUMBER)
+        goto fail1;
+
     if (Reference++ != 0)
-        return;
+        goto done;
 
     status = XenVersion(&Major, &Minor);
     ASSERT(NT_SUCCESS(status));
@@ -81,6 +91,14 @@ XenTouch(
               Minor,
               Extra,
               __XEN_INTERFACE_VERSION__);
+
+done:
+    return STATUS_SUCCESS;
+
+fail1:
+    Info("MODULE '%s' NOT COMPATIBLE (REBOOT REQUIRED)\n", Name);
+
+    return STATUS_INCOMPATIBLE_DRIVER_BLOCKED;
 }
 
 static VOID
@@ -136,7 +154,7 @@ DllInitialize(
                                &Driver.InfoDisposition);
     ASSERT(NT_SUCCESS(status));
 
-    Info("XEN %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index 628e0fa..e74d369 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -512,9 +512,7 @@ DriverEntry(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    XenTouch();
-
-    Info("XENBUS %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
@@ -523,6 +521,14 @@ DriverEntry(
          MONTH,
          YEAR);
 
+    status = XenTouch(__MODULE__,
+                      MAJOR_VERSION,
+                      MINOR_VERSION,
+                      MICRO_VERSION,
+                      BUILD_NUMBER);
+    if (!NT_SUCCESS(status))
+        goto done;
+
     status = RegistryInitialize(RegistryPath);
     if (!NT_SUCCESS(status))
         goto fail1;
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 8279bd7..420e827 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -787,9 +787,7 @@ DriverEntry(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    XenTouch();
-
-    Info("XENFILT %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+    Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
          MAJOR_VERSION,
          MINOR_VERSION,
          MICRO_VERSION,
@@ -798,6 +796,14 @@ DriverEntry(
          MONTH,
          YEAR);
 
+    status = XenTouch(__MODULE__,
+                      MAJOR_VERSION,
+                      MINOR_VERSION,
+                      MICRO_VERSION,
+                      BUILD_NUMBER);
+    if (!NT_SUCCESS(status))
+        goto done;
+
     status = RegistryInitialize(RegistryPath);
     if (!NT_SUCCESS(status))
         goto fail1;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:26 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaII-0006kR-QE; Thu, 19 Mar 2015 13:15:26 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIH-0006jl-KF
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:26 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
	B6/77-32332-CEBCA055; Thu, 19 Mar 2015 13:15:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1426770922!7744008!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8921 invoked from network); 19 Mar 2015 13:15:22 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:22 -0000
Received: by wifj2 with SMTP id j2so68650754wif.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=nEKyMaw6/NsIeV1oy4rp58a9dXl2Lc7iZigfY4+p000=;
	b=X7W3EP4cbVYIJso/+skofcnwmqX2yeF5I8IVV9DIJiBicjfayjPrp7fU4QSsh0ys3U
	sebnQCC8NX/zqo15jhlFDcT1Lrz7eoWkKNC0+nGK0F6ET9Mi5U9KtxRp5j76CtdhRNDT
	aBWgYZ59Pd9CfeowGmn5MIHM26nvhvSOM2tApKu/f/XwKZ3VaCKECdMDL1kJIB59Lz3U
	brs6qm4Rdued7q+/1Bkhq3Dsq7ZQ3aEnYmE+efrc8flSOjkgXPIbuBeHm1W07ZPaHu46
	hokW3rB7G26LYrj9V67Leo/kfkExxoCVI4x3sKkl2QjsVVMqNHkXxRVTkoah+dGzE3dq
	GQVg==
X-Received: by 10.180.91.79 with SMTP id cc15mr15659639wib.37.1426770922112;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:19 +0000
Message-Id: <1426770921-14080-5-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 4/6] Fix various bits of (largely autogen)
	stupidity in vcxproj files
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 vs2012/package/package.vcxproj             | 195 +------------------------
 vs2012/xen/xen.vcxproj                     | 220 ++++++++++++++---------------
 vs2012/xenbus/xenbus.vcxproj               | 212 +++++++++++++--------------
 vs2012/xenbus_coinst/xenbus_coinst.vcxproj | 134 +++++++++---------
 vs2012/xenfilt/xenfilt.vcxproj             | 166 +++++++++++-----------
 vs2013/package/package.vcxproj             |  37 +----
 vs2013/xen/xen.vcxproj                     |  38 +----
 vs2013/xenbus/xenbus.vcxproj               |  38 +----
 vs2013/xenbus_coinst/xenbus_coinst.vcxproj |  38 +----
 vs2013/xenfilt/xenfilt.vcxproj             |  38 +----
 10 files changed, 356 insertions(+), 760 deletions(-)

diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index e664d75..ee60bdb 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -2,10 +2,9 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
-    <DriverType>WDM</DriverType>
+    <DriverType>Package</DriverType>
     <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
-    <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
@@ -37,198 +36,6 @@
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
     <PackageDir>..\..\xenbus\$(DDKPlatform)</PackageDir>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
   <ItemGroup>
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
diff --git a/vs2012/xen/xen.vcxproj b/vs2012/xen/xen.vcxproj
index e7183e3..0d92eac 100644
--- a/vs2012/xen/xen.vcxproj
+++ b/vs2012/xen/xen.vcxproj
@@ -1,117 +1,109 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command> echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
-            <Outputs>..\..\include\version.h</Outputs>
-            <Inputs>..\..\include\version.hx</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\common\registry.c" />
-		<ClCompile Include="..\..\src\xen\driver.c" />
-		<ClCompile Include="..\..\src\xen\event_channel.c" />
-		<ClCompile Include="..\..\src\xen\grant_table.c" />
-		<ClCompile Include="..\..\src\xen\hvm.c" />
-		<ClCompile Include="..\..\src\xen\xen_version.c" />
-		<ClCompile Include="..\..\src\xen\hypercall.c" />
-		<ClCompile Include="..\..\src\xen\memory.c" />
-		<ClCompile Include="..\..\src\xen\sched.c" />
-		<ClCompile Include="..\..\src\xen\log.c" />
-		<ClCompile Include="..\..\src\xen\bug_check.c" />
-		<ClCompile Include="..\..\src\xen\module.c" />
-		<ClCompile Include="..\..\src\xen\process.c" />
-		<ClCompile Include="..\..\src\xen\acpi.c" />
-		<ClCompile Include="..\..\src\xen\system.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<MASM Include="..\..\src\xen\amd64\hypercall_thunk.asm">
-			<ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-		</MASM>
-		<MASM Include="..\..\src\xen\i386\hypercall_thunk.asm">
-			<ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-		</MASM>
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xen\xen.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\xen\xen.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command> echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
+      <Outputs>..\..\include\version.h</Outputs>
+      <Inputs>..\..\include\version.hx</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\common\registry.c" />
+    <ClCompile Include="..\..\src\xen\driver.c" />
+    <ClCompile Include="..\..\src\xen\event_channel.c" />
+    <ClCompile Include="..\..\src\xen\grant_table.c" />
+    <ClCompile Include="..\..\src\xen\hvm.c" />
+    <ClCompile Include="..\..\src\xen\xen_version.c" />
+    <ClCompile Include="..\..\src\xen\hypercall.c" />
+    <ClCompile Include="..\..\src\xen\memory.c" />
+    <ClCompile Include="..\..\src\xen\sched.c" />
+    <ClCompile Include="..\..\src\xen\log.c" />
+    <ClCompile Include="..\..\src\xen\bug_check.c" />
+    <ClCompile Include="..\..\src\xen\module.c" />
+    <ClCompile Include="..\..\src\xen\process.c" />
+    <ClCompile Include="..\..\src\xen\acpi.c" />
+    <ClCompile Include="..\..\src\xen\system.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <MASM Include="..\..\src\xen\amd64\hypercall_thunk.asm">
+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
+    </MASM>
+    <MASM Include="..\..\src\xen\i386\hypercall_thunk.asm">
+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
+    </MASM>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xen\xen.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\xen\xen.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenbus/xenbus.vcxproj b/vs2012/xenbus/xenbus.vcxproj
index 9a1ec69..3319372 100644
--- a/vs2012/xenbus/xenbus.vcxproj
+++ b/vs2012/xenbus/xenbus.vcxproj
@@ -1,113 +1,105 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>StampInf</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenbus.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2012\xenbus.inf"
-            </Command>
-            <Outputs>..\..\vs2012\xenbus.inf</Outputs>
-            <Inputs>..\..\src\xenbus.inf</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\common\registry.c" />
-		<ClCompile Include="..\..\src\xenbus\bus.c" />
-		<ClCompile Include="..\..\src\xenbus\dma.c" />
-		<ClCompile Include="..\..\src\xenbus\debug.c" />
-		<ClCompile Include="..\..\src\xenbus\driver.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn_2l.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn_fifo.c" />
-		<ClCompile Include="..\..\src\xenbus\fdo.c" />
-		<ClCompile Include="..\..\src\xenbus\gnttab.c" />
-		<ClCompile Include="..\..\src\xenbus\pdo.c" />
-		<ClCompile Include="..\..\src\xenbus\shared_info.c" />
-		<ClCompile Include="..\..\src\xenbus\store.c" />
-		<ClCompile Include="..\..\src\xenbus\suspend.c" />
-		<ClCompile Include="..\..\src\xenbus\sync.c" />
-		<ClCompile Include="..\..\src\xenbus\thread.c" />
-		<ClCompile Include="..\..\src\xenbus\range_set.c" />
-		<ClCompile Include="..\..\src\xenbus\balloon.c" />
-		<ClCompile Include="..\..\src\xenbus\cache.c" />
-		<ClCompile Include="..\..\src\xenbus\hash_table.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenbus\xenbus.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<Inf Include="..\xenbus.inf" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>StampInf</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command>echo "Build Inf"
+      powershell -Command "(Get-Content ..\..\src\xenbus.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2012\xenbus.inf"
+      </Command>
+      <Outputs>..\..\vs2012\xenbus.inf</Outputs>
+      <Inputs>..\..\src\xenbus.inf</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\common\registry.c" />
+    <ClCompile Include="..\..\src\xenbus\bus.c" />
+    <ClCompile Include="..\..\src\xenbus\dma.c" />
+    <ClCompile Include="..\..\src\xenbus\debug.c" />
+    <ClCompile Include="..\..\src\xenbus\driver.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn_2l.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn_fifo.c" />
+    <ClCompile Include="..\..\src\xenbus\fdo.c" />
+    <ClCompile Include="..\..\src\xenbus\gnttab.c" />
+    <ClCompile Include="..\..\src\xenbus\pdo.c" />
+    <ClCompile Include="..\..\src\xenbus\shared_info.c" />
+    <ClCompile Include="..\..\src\xenbus\store.c" />
+    <ClCompile Include="..\..\src\xenbus\suspend.c" />
+    <ClCompile Include="..\..\src\xenbus\sync.c" />
+    <ClCompile Include="..\..\src\xenbus\thread.c" />
+    <ClCompile Include="..\..\src\xenbus\range_set.c" />
+    <ClCompile Include="..\..\src\xenbus\balloon.c" />
+    <ClCompile Include="..\..\src\xenbus\cache.c" />
+    <ClCompile Include="..\..\src\xenbus\hash_table.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenbus\xenbus.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Inf Include="..\xenbus.inf" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenbus_coinst/xenbus_coinst.vcxproj b/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
index e2cfeb9..b58ced6 100644
--- a/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
+++ b/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
@@ -1,74 +1,66 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
-		<ConfigurationType>DynamicLibrary</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-	</PropertyGroup>
-	
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-			<PreprocessorDefinitions>__MODULE__="XENBUS_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
-		</ClCompile>
-		<Link>
-			<ModuleDefinitionFile>../../src/coinst/xenbus_coinst.def</ModuleDefinitionFile>
-			<AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-		</Link>
-		<ResourceCompile>
-			<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-		</ResourceCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
- 
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\coinst\coinst.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\coinst\xenbus_coinst.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>__MODULE__="XENBUS_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <ModuleDefinitionFile>../../src/coinst/xenbus_coinst.def</ModuleDefinitionFile>
+      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\coinst\coinst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\coinst\xenbus_coinst.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
\ No newline at end of file
diff --git a/vs2012/xenfilt/xenfilt.vcxproj b/vs2012/xenfilt/xenfilt.vcxproj
index aa43643..5dbb903 100644
--- a/vs2012/xenfilt/xenfilt.vcxproj
+++ b/vs2012/xenfilt/xenfilt.vcxproj
@@ -1,89 +1,81 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="../../src/common/registry.c" />
-		<ClCompile Include="../../src/xenfilt/driver.c" />
-		<ClCompile Include="../../src/xenfilt/unplug.c" />
-		<ClCompile Include="../../src/xenfilt/emulated.c" />
-		<ClCompile Include="../../src/xenfilt/fdo.c" />
-		<ClCompile Include="../../src/xenfilt/pdo.c" />
-		<ClCompile Include="../../src/xenfilt/thread.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenfilt\xenfilt.rc" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/common/registry.c" />
+    <ClCompile Include="../../src/xenfilt/driver.c" />
+    <ClCompile Include="../../src/xenfilt/unplug.c" />
+    <ClCompile Include="../../src/xenfilt/emulated.c" />
+    <ClCompile Include="../../src/xenfilt/fdo.c" />
+    <ClCompile Include="../../src/xenfilt/pdo.c" />
+    <ClCompile Include="../../src/xenfilt/thread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenfilt\xenfilt.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
\ No newline at end of file
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index be13fd9..ae1c230 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -3,6 +3,7 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
     <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
@@ -13,42 +14,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{92E5A46B-913C-45C6-B6F8-7E062D85279F}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xen/xen.vcxproj b/vs2013/xen/xen.vcxproj
index 71941db..a12f060 100644
--- a/vs2013/xen/xen.vcxproj
+++ b/vs2013/xen/xen.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenbus/xenbus.vcxproj b/vs2013/xenbus/xenbus.vcxproj
index 4988d7d..eb476a9 100644
--- a/vs2013/xenbus/xenbus.vcxproj
+++ b/vs2013/xenbus/xenbus.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenbus_coinst/xenbus_coinst.vcxproj b/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
index 48ed05b..c535302 100644
--- a/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
+++ b/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
@@ -3,8 +3,8 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
@@ -12,42 +12,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenfilt/xenfilt.vcxproj b/vs2013/xenfilt/xenfilt.vcxproj
index ecfaec8..b7759a7 100644
--- a/vs2013/xenfilt/xenfilt.vcxproj
+++ b/vs2013/xenfilt/xenfilt.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
   </PropertyGroup>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:26 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaII-0006kR-QE; Thu, 19 Mar 2015 13:15:26 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIH-0006jl-KF
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:26 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
	B6/77-32332-CEBCA055; Thu, 19 Mar 2015 13:15:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1426770922!7744008!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8921 invoked from network); 19 Mar 2015 13:15:22 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:22 -0000
Received: by wifj2 with SMTP id j2so68650754wif.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=nEKyMaw6/NsIeV1oy4rp58a9dXl2Lc7iZigfY4+p000=;
	b=X7W3EP4cbVYIJso/+skofcnwmqX2yeF5I8IVV9DIJiBicjfayjPrp7fU4QSsh0ys3U
	sebnQCC8NX/zqo15jhlFDcT1Lrz7eoWkKNC0+nGK0F6ET9Mi5U9KtxRp5j76CtdhRNDT
	aBWgYZ59Pd9CfeowGmn5MIHM26nvhvSOM2tApKu/f/XwKZ3VaCKECdMDL1kJIB59Lz3U
	brs6qm4Rdued7q+/1Bkhq3Dsq7ZQ3aEnYmE+efrc8flSOjkgXPIbuBeHm1W07ZPaHu46
	hokW3rB7G26LYrj9V67Leo/kfkExxoCVI4x3sKkl2QjsVVMqNHkXxRVTkoah+dGzE3dq
	GQVg==
X-Received: by 10.180.91.79 with SMTP id cc15mr15659639wib.37.1426770922112;
	Thu, 19 Mar 2015 06:15:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:19 +0000
Message-Id: <1426770921-14080-5-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 4/6] Fix various bits of (largely autogen)
	stupidity in vcxproj files
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 vs2012/package/package.vcxproj             | 195 +------------------------
 vs2012/xen/xen.vcxproj                     | 220 ++++++++++++++---------------
 vs2012/xenbus/xenbus.vcxproj               | 212 +++++++++++++--------------
 vs2012/xenbus_coinst/xenbus_coinst.vcxproj | 134 +++++++++---------
 vs2012/xenfilt/xenfilt.vcxproj             | 166 +++++++++++-----------
 vs2013/package/package.vcxproj             |  37 +----
 vs2013/xen/xen.vcxproj                     |  38 +----
 vs2013/xenbus/xenbus.vcxproj               |  38 +----
 vs2013/xenbus_coinst/xenbus_coinst.vcxproj |  38 +----
 vs2013/xenfilt/xenfilt.vcxproj             |  38 +----
 10 files changed, 356 insertions(+), 760 deletions(-)

diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index e664d75..ee60bdb 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -2,10 +2,9 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
-    <DriverType>WDM</DriverType>
+    <DriverType>Package</DriverType>
     <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
-    <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
@@ -37,198 +36,6 @@
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
     <PackageDir>..\..\xenbus\$(DDKPlatform)</PackageDir>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Inputs>
-      </Inputs>
-      <TreatOutputAsContent>
-      </TreatOutputAsContent>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
   <ItemGroup>
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
diff --git a/vs2012/xen/xen.vcxproj b/vs2012/xen/xen.vcxproj
index e7183e3..0d92eac 100644
--- a/vs2012/xen/xen.vcxproj
+++ b/vs2012/xen/xen.vcxproj
@@ -1,117 +1,109 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command> echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
-            <Outputs>..\..\include\version.h</Outputs>
-            <Inputs>..\..\include\version.hx</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\common\registry.c" />
-		<ClCompile Include="..\..\src\xen\driver.c" />
-		<ClCompile Include="..\..\src\xen\event_channel.c" />
-		<ClCompile Include="..\..\src\xen\grant_table.c" />
-		<ClCompile Include="..\..\src\xen\hvm.c" />
-		<ClCompile Include="..\..\src\xen\xen_version.c" />
-		<ClCompile Include="..\..\src\xen\hypercall.c" />
-		<ClCompile Include="..\..\src\xen\memory.c" />
-		<ClCompile Include="..\..\src\xen\sched.c" />
-		<ClCompile Include="..\..\src\xen\log.c" />
-		<ClCompile Include="..\..\src\xen\bug_check.c" />
-		<ClCompile Include="..\..\src\xen\module.c" />
-		<ClCompile Include="..\..\src\xen\process.c" />
-		<ClCompile Include="..\..\src\xen\acpi.c" />
-		<ClCompile Include="..\..\src\xen\system.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<MASM Include="..\..\src\xen\amd64\hypercall_thunk.asm">
-			<ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-		</MASM>
-		<MASM Include="..\..\src\xen\i386\hypercall_thunk.asm">
-			<ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-		</MASM>
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xen\xen.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\xen\xen.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command> echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
+      <Outputs>..\..\include\version.h</Outputs>
+      <Inputs>..\..\include\version.hx</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\common\registry.c" />
+    <ClCompile Include="..\..\src\xen\driver.c" />
+    <ClCompile Include="..\..\src\xen\event_channel.c" />
+    <ClCompile Include="..\..\src\xen\grant_table.c" />
+    <ClCompile Include="..\..\src\xen\hvm.c" />
+    <ClCompile Include="..\..\src\xen\xen_version.c" />
+    <ClCompile Include="..\..\src\xen\hypercall.c" />
+    <ClCompile Include="..\..\src\xen\memory.c" />
+    <ClCompile Include="..\..\src\xen\sched.c" />
+    <ClCompile Include="..\..\src\xen\log.c" />
+    <ClCompile Include="..\..\src\xen\bug_check.c" />
+    <ClCompile Include="..\..\src\xen\module.c" />
+    <ClCompile Include="..\..\src\xen\process.c" />
+    <ClCompile Include="..\..\src\xen\acpi.c" />
+    <ClCompile Include="..\..\src\xen\system.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <MASM Include="..\..\src\xen\amd64\hypercall_thunk.asm">
+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
+    </MASM>
+    <MASM Include="..\..\src\xen\i386\hypercall_thunk.asm">
+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
+    </MASM>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xen\xen.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\xen\xen.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenbus/xenbus.vcxproj b/vs2012/xenbus/xenbus.vcxproj
index 9a1ec69..3319372 100644
--- a/vs2012/xenbus/xenbus.vcxproj
+++ b/vs2012/xenbus/xenbus.vcxproj
@@ -1,113 +1,105 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>StampInf</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenbus.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2012\xenbus.inf"
-            </Command>
-            <Outputs>..\..\vs2012\xenbus.inf</Outputs>
-            <Inputs>..\..\src\xenbus.inf</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\common\registry.c" />
-		<ClCompile Include="..\..\src\xenbus\bus.c" />
-		<ClCompile Include="..\..\src\xenbus\dma.c" />
-		<ClCompile Include="..\..\src\xenbus\debug.c" />
-		<ClCompile Include="..\..\src\xenbus\driver.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn_2l.c" />
-		<ClCompile Include="..\..\src\xenbus\evtchn_fifo.c" />
-		<ClCompile Include="..\..\src\xenbus\fdo.c" />
-		<ClCompile Include="..\..\src\xenbus\gnttab.c" />
-		<ClCompile Include="..\..\src\xenbus\pdo.c" />
-		<ClCompile Include="..\..\src\xenbus\shared_info.c" />
-		<ClCompile Include="..\..\src\xenbus\store.c" />
-		<ClCompile Include="..\..\src\xenbus\suspend.c" />
-		<ClCompile Include="..\..\src\xenbus\sync.c" />
-		<ClCompile Include="..\..\src\xenbus\thread.c" />
-		<ClCompile Include="..\..\src\xenbus\range_set.c" />
-		<ClCompile Include="..\..\src\xenbus\balloon.c" />
-		<ClCompile Include="..\..\src\xenbus\cache.c" />
-		<ClCompile Include="..\..\src\xenbus\hash_table.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenbus\xenbus.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<Inf Include="..\xenbus.inf" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>StampInf</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command>echo "Build Inf"
+      powershell -Command "(Get-Content ..\..\src\xenbus.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2012\xenbus.inf"
+      </Command>
+      <Outputs>..\..\vs2012\xenbus.inf</Outputs>
+      <Inputs>..\..\src\xenbus.inf</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\common\registry.c" />
+    <ClCompile Include="..\..\src\xenbus\bus.c" />
+    <ClCompile Include="..\..\src\xenbus\dma.c" />
+    <ClCompile Include="..\..\src\xenbus\debug.c" />
+    <ClCompile Include="..\..\src\xenbus\driver.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn_2l.c" />
+    <ClCompile Include="..\..\src\xenbus\evtchn_fifo.c" />
+    <ClCompile Include="..\..\src\xenbus\fdo.c" />
+    <ClCompile Include="..\..\src\xenbus\gnttab.c" />
+    <ClCompile Include="..\..\src\xenbus\pdo.c" />
+    <ClCompile Include="..\..\src\xenbus\shared_info.c" />
+    <ClCompile Include="..\..\src\xenbus\store.c" />
+    <ClCompile Include="..\..\src\xenbus\suspend.c" />
+    <ClCompile Include="..\..\src\xenbus\sync.c" />
+    <ClCompile Include="..\..\src\xenbus\thread.c" />
+    <ClCompile Include="..\..\src\xenbus\range_set.c" />
+    <ClCompile Include="..\..\src\xenbus\balloon.c" />
+    <ClCompile Include="..\..\src\xenbus\cache.c" />
+    <ClCompile Include="..\..\src\xenbus\hash_table.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenbus\xenbus.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Inf Include="..\xenbus.inf" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenbus_coinst/xenbus_coinst.vcxproj b/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
index e2cfeb9..b58ced6 100644
--- a/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
+++ b/vs2012/xenbus_coinst/xenbus_coinst.vcxproj
@@ -1,74 +1,66 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
-		<ConfigurationType>DynamicLibrary</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-	</PropertyGroup>
-	
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-			<PreprocessorDefinitions>__MODULE__="XENBUS_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
-		</ClCompile>
-		<Link>
-			<ModuleDefinitionFile>../../src/coinst/xenbus_coinst.def</ModuleDefinitionFile>
-			<AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-		</Link>
-		<ResourceCompile>
-			<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-		</ResourceCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
- 
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\coinst\coinst.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\coinst\xenbus_coinst.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>__MODULE__="XENBUS_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <ModuleDefinitionFile>../../src/coinst/xenbus_coinst.def</ModuleDefinitionFile>
+      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\coinst\coinst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\coinst\xenbus_coinst.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
\ No newline at end of file
diff --git a/vs2012/xenfilt/xenfilt.vcxproj b/vs2012/xenfilt/xenfilt.vcxproj
index aa43643..5dbb903 100644
--- a/vs2012/xenfilt/xenfilt.vcxproj
+++ b/vs2012/xenfilt/xenfilt.vcxproj
@@ -1,89 +1,81 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="../../src/common/registry.c" />
-		<ClCompile Include="../../src/xenfilt/driver.c" />
-		<ClCompile Include="../../src/xenfilt/unplug.c" />
-		<ClCompile Include="../../src/xenfilt/emulated.c" />
-		<ClCompile Include="../../src/xenfilt/fdo.c" />
-		<ClCompile Include="../../src/xenfilt/pdo.c" />
-		<ClCompile Include="../../src/xenfilt/thread.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenfilt\xenfilt.rc" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;..\..\src\common;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/common/registry.c" />
+    <ClCompile Include="../../src/xenfilt/driver.c" />
+    <ClCompile Include="../../src/xenfilt/unplug.c" />
+    <ClCompile Include="../../src/xenfilt/emulated.c" />
+    <ClCompile Include="../../src/xenfilt/fdo.c" />
+    <ClCompile Include="../../src/xenfilt/pdo.c" />
+    <ClCompile Include="../../src/xenfilt/thread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenfilt\xenfilt.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
\ No newline at end of file
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index be13fd9..ae1c230 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -3,6 +3,7 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
     <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
@@ -13,42 +14,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{92E5A46B-913C-45C6-B6F8-7E062D85279F}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xen/xen.vcxproj b/vs2013/xen/xen.vcxproj
index 71941db..a12f060 100644
--- a/vs2013/xen/xen.vcxproj
+++ b/vs2013/xen/xen.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenbus/xenbus.vcxproj b/vs2013/xenbus/xenbus.vcxproj
index 4988d7d..eb476a9 100644
--- a/vs2013/xenbus/xenbus.vcxproj
+++ b/vs2013/xenbus/xenbus.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{14C16C29-77C9-475B-A618-1B01E67CF985}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenbus_coinst/xenbus_coinst.vcxproj b/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
index 48ed05b..c535302 100644
--- a/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
+++ b/vs2013/xenbus_coinst/xenbus_coinst.vcxproj
@@ -3,8 +3,8 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
@@ -12,42 +12,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenfilt/xenfilt.vcxproj b/vs2013/xenfilt/xenfilt.vcxproj
index ecfaec8..b7759a7 100644
--- a/vs2013/xenfilt/xenfilt.vcxproj
+++ b/vs2013/xenfilt/xenfilt.vcxproj
@@ -8,46 +8,10 @@
   </PropertyGroup>
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
   </PropertyGroup>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:31 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIM-0006lJ-U0; Thu, 19 Mar 2015 13:15:31 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIK-0006l3-OX
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:29 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
	C2/E2-04120-0FBCA055; Thu, 19 Mar 2015 13:15:28 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1426770924!9672034!1
X-Originating-IP: [74.125.82.174]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15786 invoked from network); 19 Mar 2015 13:15:24 -0000
Received: from mail-we0-f174.google.com (HELO mail-we0-f174.google.com)
	(74.125.82.174)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:24 -0000
Received: by wetk59 with SMTP id k59so56961255wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=hEn7CdqZXx17sCl0Fmtox7ooW9OPSkoXu0PIeutdgMM=;
	b=ynjRcO5HEWPA8r4xgQYSS2Xb99Wz7dleByhHqi19B1ZtlAhg2Pq2RYyN5w+Cp/ncDo
	KfGWyIb1fmx4zfNwelNU9hXv4XZXnLvnvIcOoH7nE+OhRcRx7unlr3pK8FFCakYcwwvq
	wOIbEE8CtXbL2QFJcQlm8XngaBdeXEyMqWk24y3csJ2Po8dnwX7qjSlalTDfCcl85tcq
	LlB+53xXg+DpIYwvXoTwi+Dl59v6Olak+RiyrMU78a34FCp13+JHOFlTp3VT9J5aCTCK
	ZgAHJwpcz1I/Il+NHRkkq4+uDtvz3wMuAS+HeBkfQOVLTpijtOQcML84+JVchj2xU37Q
	V6sA==
X-Received: by 10.194.93.165 with SMTP id cv5mr71995043wjb.24.1426770924063;
	Thu, 19 Mar 2015 06:15:24 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.23
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:23 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:21 +0000
Message-Id: <1426770921-14080-7-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 6/6] Make XEN,
	XENFILT and XENBUS processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCM multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/evtchn_interface.h      |  36 ++++-
 include/shared_info_interface.h |   4 +-
 include/xen.h                   |   1 +
 src/xen/driver.c                |   2 +
 src/xen/system.c                | 165 ++++++++++---------
 src/xenbus.inf                  |   1 +
 src/xenbus/cache.c              |  65 +++++---
 src/xenbus/driver.c             |   2 +
 src/xenbus/evtchn.c             | 342 ++++++++++++++++++++++++++--------------
 src/xenbus/evtchn_2l.c          |  21 ++-
 src/xenbus/evtchn_abi.h         |  30 ++--
 src/xenbus/evtchn_fifo.c        |  52 +++---
 src/xenbus/fdo.c                |  56 ++++---
 src/xenbus/fdo.h                |   3 +-
 src/xenbus/pdo.c                |  87 +---------
 src/xenbus/shared_info.c        |  31 ++--
 src/xenbus/sync.c               | 280 ++++++++++++++++++--------------
 src/xenfilt/driver.c            |   2 +
 vs2012/xen/xen.vcxproj          |   4 +-
 vs2012/xenbus/xenbus.vcxproj    |   4 +-
 vs2012/xenfilt/xenfilt.vcxproj  |   4 +-
 vs2013/xen/xen.vcxproj          |   4 +-
 vs2013/xenbus/xenbus.vcxproj    |   4 +-
 vs2013/xenfilt/xenfilt.vcxproj  |   4 +-
 24 files changed, 690 insertions(+), 514 deletions(-)

diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h
index 1bc456a..6f8fe42 100644
--- a/include/evtchn_interface.h
+++ b/include/evtchn_interface.h
@@ -112,18 +112,27 @@ typedef PXENBUS_EVTCHN_CHANNEL
     ...
     );
 
+typedef NTSTATUS
+(*XENBUS_EVTCHN_BIND_V2)(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    );
+
 /*! \typedef XENBUS_EVTCHN_BIND
     \brief Bind an event channel to a specific CPU
 
     \param Interface The interface header
     \param Channel The channel handle
-    \param Cpu The CPU that should handle events
+    \param Group The group number of the CPU that should handle events
+    \param Number The relative number of the CPU that should handle events
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_BIND)(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     );
 
 typedef BOOLEAN
@@ -225,7 +234,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V2 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
-    XENBUS_EVTCHN_BIND      EvtchnBind;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
     XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1;
     XENBUS_EVTCHN_SEND      EvtchnSend;
     XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
@@ -242,6 +251,23 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
+    XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
+    XENBUS_EVTCHN_SEND      EvtchnSend;
+    XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
+    XENBUS_EVTCHN_GET_PORT  EvtchnGetPort;
+    XENBUS_EVTCHN_CLOSE     EvtchnClose;
+};
+
+/*! \struct _XENBUS_EVTCHN_INTERFACE_V4
+    \brief EVTCHN interface version 4
+    \ingroup interfaces
+*/
+struct _XENBUS_EVTCHN_INTERFACE_V4 {
+    INTERFACE               Interface;
+    XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
+    XENBUS_EVTCHN_RELEASE   EvtchnRelease;
+    XENBUS_EVTCHN_OPEN      EvtchnOpen;
     XENBUS_EVTCHN_BIND      EvtchnBind;
     XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
     XENBUS_EVTCHN_SEND      EvtchnSend;
@@ -250,7 +276,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_CLOSE     EvtchnClose;
 };
 
-typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
+typedef struct _XENBUS_EVTCHN_INTERFACE_V4 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
 
 /*! \def XENBUS_EVTCHN
     \brief Macro at assist in method invocation
@@ -261,7 +287,7 @@ typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVT
 #endif  // _WINDLL
 
 #define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 1
-#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 3
+#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 4
 
 #endif  // _XENBUS_EVTCHN_INTERFACE_H
 
diff --git a/include/shared_info_interface.h b/include/shared_info_interface.h
index 0e5a0d7..287feab 100644
--- a/include/shared_info_interface.h
+++ b/include/shared_info_interface.h
@@ -66,7 +66,7 @@ typedef VOID
 typedef BOOLEAN
 (*XENBUS_SHARED_INFO_UPCALL_PENDING)(
     IN  PINTERFACE  Interface,
-    IN  ULONG       Cpu
+    IN  ULONG       Index
     );
 
 typedef BOOLEAN
@@ -81,7 +81,7 @@ typedef BOOLEAN
 typedef BOOLEAN
 (*XENBUS_SHARED_INFO_EVTCHN_POLL)(
     IN  PINTERFACE                  Interface,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_SHARED_INFO_EVENT    Event,
     IN  PVOID                       Argument
     );
diff --git a/include/xen.h b/include/xen.h
index 29e32f9..cf9c2d9 100644
--- a/include/xen.h
+++ b/include/xen.h
@@ -45,6 +45,7 @@
 #include <public/grant_table.h>
 #include <public/sched.h>
 #include <public/hvm/params.h>
+#include <public/hvm/hvm_info_table.h>
 
 // xs_wire.h gates the definition of the xsd_errors enumeration
 // on whether EINVAL is defined. Unfortunately EINVAL is actually
diff --git a/src/xen/driver.c b/src/xen/driver.c
index a319541..66a5e80 100644
--- a/src/xen/driver.c
+++ b/src/xen/driver.c
@@ -32,6 +32,7 @@
 #define XEN_API __declspec(dllexport)
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "hypercall.h"
@@ -126,6 +127,7 @@ DllInitialize(
     UNREFERENCED_PARAMETER(RegistryPath);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/src/xen/system.c b/src/xen/system.c
index b21efd8..a602d8b 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -32,6 +32,7 @@
 #define XEN_API __declspec(dllexport)
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -47,19 +48,19 @@
 
 #define XEN_SYSTEM_TAG  'TSYS'
 
-typedef struct _SYSTEM_CPU {
-    ULONG   Index;
+typedef struct _SYSTEM_PROCESSOR {
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
-} SYSTEM_CPU, *PSYSTEM_CPU;
+} SYSTEM_PROCESSOR, *PSYSTEM_PROCESSOR;
 
 typedef struct _SYSTEM_CONTEXT {
-    LONG        References;
-    PACPI_MADT  Madt;
-    PSYSTEM_CPU Cpu[MAXIMUM_PROCESSORS];
-    PVOID       PowerStateHandle;
-    PVOID       ProcessorChangeHandle;
+    LONG                References;
+    PACPI_MADT          Madt;
+    PSYSTEM_PROCESSOR   Processor;
+    ULONG               ProcessorCount;
+    PVOID               PowerStateHandle;
+    PVOID               ProcessorChangeHandle;
 } SYSTEM_CONTEXT, *PSYSTEM_CONTEXT;
 
 static SYSTEM_CONTEXT   SystemContext;
@@ -334,51 +335,51 @@ _IRQL_requires_min_(DISPATCH_LEVEL)
 _IRQL_requires_(DISPATCH_LEVEL)
 _IRQL_requires_same_
 VOID
-SystemCpuInformation(
-    IN  PKDPC       Dpc,
-    IN  PVOID       _Context,
-    IN  PVOID       Argument1,
-    IN  PVOID       Argument2
+SystemProcessorInformation(
+    IN  PKDPC           Dpc,
+    IN  PVOID           _Context,
+    IN  PVOID           Argument1,
+    IN  PVOID           Argument2
     )
 {
-    PSYSTEM_CONTEXT Context = &SystemContext;
-    PKEVENT         Event = _Context;
-    ULONG           Index;
-    PSYSTEM_CPU     Cpu;
-    ULONG           EBX;
-    ULONG           ECX;
-    ULONG           EDX;
+    PSYSTEM_CONTEXT     Context = &SystemContext;
+    PKEVENT             Event = _Context;
+    ULONG               Index;
+    PROCESSOR_NUMBER    ProcNumber;
+    PSYSTEM_PROCESSOR   Processor;
+    ULONG               EBX;
+    ULONG               ECX;
+    ULONG               EDX;
 
     UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
-    Index = KeGetCurrentProcessorNumber();
-    Cpu = Context->Cpu[Index];
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    ASSERT3U(Index, <, Context->ProcessorCount);
 
-    ASSERT(Cpu != NULL);
-    ASSERT3U(Cpu->Index, ==, Index);
+    Processor = &Context->Processor[Index];
 
-    Info("====> (%u)\n", Index);
+    Info("====> (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
 
     __CpuId(0, NULL, &EBX, &ECX, &EDX);
 
-    RtlCopyMemory(&Cpu->Manufacturer[0], &EBX, sizeof (ULONG));
-    RtlCopyMemory(&Cpu->Manufacturer[4], &EDX, sizeof (ULONG));
-    RtlCopyMemory(&Cpu->Manufacturer[8], &ECX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[0], &EBX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[4], &EDX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[8], &ECX, sizeof (ULONG));
 
     __CpuId(1, NULL, &EBX, NULL, NULL);
 
-    Cpu->ApicID = EBX >> 24;
-    Cpu->ProcessorID = SystemApicIDToProcessorID(Cpu->ApicID);
+    Processor->ApicID = EBX >> 24;
+    Processor->ProcessorID = SystemApicIDToProcessorID(Processor->ApicID);
 
-    Info("Manufacturer: %s\n", Cpu->Manufacturer);
-    Info("APIC ID: %02X\n", Cpu->ApicID);
-    Info("PROCESSOR ID: %02X\n", Cpu->ProcessorID);
+    Info("Manufacturer: %s\n", Processor->Manufacturer);
+    Info("APIC ID: %02X\n", Processor->ApicID);
+    Info("PROCESSOR ID: %02X\n", Processor->ProcessorID);
 
     KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
 
-    Info("<==== (%u)\n", Index);
+    Info("<==== (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
 }
 
 static
@@ -391,42 +392,62 @@ SystemProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT                             Context = &SystemContext;
+    PROCESSOR_NUMBER                            ProcNumber;
     ULONG                                       Index;
+    NTSTATUS                                    status;
 
     UNREFERENCED_PARAMETER(Argument);
 
     Index = Change->NtNumber;
-    Trace("====> (%u:%s)\n", Index, ProcessorChangeName(Change->State));
+
+    status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
+
+    Trace("====> (%u:%u:%s)\n",
+          ProcNumber.Group,
+          ProcNumber.Number,
+          ProcessorChangeName(Change->State));
 
     switch (Change->State) {
     case KeProcessorAddStartNotify: {
-        PSYSTEM_CPU Cpu;
+        PSYSTEM_PROCESSOR   Processor;
+        ULONG               ProcessorCount;
+
+        if (Index < Context->ProcessorCount)
+            break;
 
-        Cpu = __SystemAllocate(sizeof (SYSTEM_CPU));
+        ProcessorCount = Index + 1;
+        Processor = __SystemAllocate(sizeof (SYSTEM_PROCESSOR) *
+                                     ProcessorCount);
 
-        if (Cpu == NULL) {
+        if (Processor == NULL) {
             *Status = STATUS_NO_MEMORY;
             break;
         }
 
-        Cpu->Index = Index;
-        ASSERT3P(Context->Cpu[Index], ==, NULL);
-        Context->Cpu[Index] = Cpu;
+        if (Context->ProcessorCount != 0) {
+            RtlCopyMemory(Processor,
+                          Context->Processor,
+                          sizeof (SYSTEM_PROCESSOR) *
+                          Context->ProcessorCount);
+            __SystemFree(Context->Processor);
+        }
+
+        Context->Processor = Processor;
+        Context->ProcessorCount = ProcessorCount;
         break;
     }
     case KeProcessorAddCompleteNotify: {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-        KEVENT      Event;
-        KDPC        Dpc;
+        KEVENT              Event;
+        KDPC                Dpc;
 
-        ASSERT(Cpu != NULL);
-        ASSERT3U(Cpu->Index, ==, Index);
+        ASSERT3U(Index, <, Context->ProcessorCount);
 
         KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeDpc(&Dpc, SystemCpuInformation, &Event);
+        KeInitializeDpc(&Dpc, SystemProcessorInformation, &Event);
         KeSetImportanceDpc(&Dpc, HighImportance);
-        KeSetTargetProcessorDpc(&Dpc, (CCHAR)Index);
+        KeSetTargetProcessorDpcEx(&Dpc, &ProcNumber);
 
         KeInsertQueueDpc(&Dpc, NULL, NULL);
 
@@ -437,20 +458,15 @@ SystemProcessorChangeCallback(
                                      NULL);
         break;
     }
-    case KeProcessorAddFailureNotify: {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-
-        ASSERT(Cpu != NULL);
-        ASSERT3U(Cpu->Index, ==, Index);
-
-        Context->Cpu[Index] = NULL;
-        __SystemFree(Cpu);
-
+    default:
+        ASSERT(FALSE);
         break;
     }
-    }
 
-    Trace("<==== (%u:%s)\n", Index, ProcessorChangeName(Change->State));
+    Trace("<==== (%u:%u:%s)\n",
+          ProcNumber.Group,
+          ProcNumber.Number,
+          ProcessorChangeName(Change->State));
 }
 
 static NTSTATUS
@@ -459,16 +475,19 @@ SystemRegisterProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
+    PVOID           Handle;
     NTSTATUS        status;
 
-    Context->ProcessorChangeHandle = KeRegisterProcessorChangeCallback(SystemProcessorChangeCallback,
-                                                                       NULL,
-                                                                       KE_PROCESSOR_CHANGE_ADD_EXISTING);
+    Handle = KeRegisterProcessorChangeCallback(SystemProcessorChangeCallback,
+                                               NULL,
+                                               KE_PROCESSOR_CHANGE_ADD_EXISTING);
 
     status = STATUS_UNSUCCESSFUL;
-    if (Context->ProcessorChangeHandle == NULL)
+    if (Handle == NULL)
         goto fail1;
 
+    Context->ProcessorChangeHandle = Handle;
+
     return STATUS_SUCCESS;
 
 fail1:
@@ -483,22 +502,12 @@ SystemDeregisterProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
-    ULONG           Index;
 
     KeDeregisterProcessorChangeCallback(Context->ProcessorChangeHandle);
     Context->ProcessorChangeHandle = NULL;
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; Index++) {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-
-        if (Cpu == NULL)
-            continue;
-
-        Context->Cpu[Index] = NULL;
-        __SystemFree(Cpu);
-    }
-
-    ASSERT(IsZeroMemory(Context->Cpu, sizeof (SYSTEM_CPU) * MAXIMUM_PROCESSORS));
+    __SystemFree(Context->Processor);
+    Context->ProcessorCount = 0;
 }
 
 static NTSTATUS
@@ -732,11 +741,11 @@ SystemVirtualCpuIndex(
     )
 {
     PSYSTEM_CONTEXT     Context = &SystemContext;
-    PSYSTEM_CPU         Cpu = Context->Cpu[Index];
+    PSYSTEM_PROCESSOR   Processor = &Context->Processor[Index];
 
-    ASSERT(Cpu != NULL);
+    ASSERT3U(Index, <, Context->ProcessorCount);
 
-    return Cpu->ProcessorID;
+    return Processor->ProcessorID;
 }
 
 VOID
diff --git a/src/xenbus.inf b/src/xenbus.inf
index 5377fd0..90dcf64 100644
--- a/src/xenbus.inf
+++ b/src/xenbus.inf
@@ -96,6 +96,7 @@ HKR,"Interfaces",,0x00000010
 HKR,"Interrupt Management",,0x00000010
 HKR,"Interrupt Management\MessageSignaledInterruptProperties",,0x00000010
 HKR,"Interrupt Management\MessageSignaledInterruptProperties","MSISupported",0x00010001,1
+HKR,"Interrupt Management\GroupPolicy",0x00010001,1
 
 [XenFilt_Service] 
 DisplayName=%XenFiltDesc%
diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 3620f88..ba7dcdf 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 
@@ -79,8 +80,9 @@ struct _XENBUS_CACHE {
     PVOID                   Argument;
     LIST_ENTRY              GetList;
     PLIST_ENTRY             PutList;
-    LONG                    Count;
-    XENBUS_CACHE_MAGAZINE   Magazine[MAXIMUM_PROCESSORS];
+    LONG                    ObjectCount;
+    PXENBUS_CACHE_MAGAZINE  Magazine;
+    ULONG                   MagazineCount;
     XENBUS_CACHE_FIST       FIST;
 };
 
@@ -223,7 +225,7 @@ CacheGetObjectFromList(
     KIRQL                       Irql = PASSIVE_LEVEL;
     NTSTATUS                    status;
 
-    Count = InterlockedDecrement(&Cache->Count);
+    Count = InterlockedDecrement(&Cache->ObjectCount);
 
     status = STATUS_NO_MEMORY;
     if (Count < 0)
@@ -253,7 +255,7 @@ CacheGetObjectFromList(
     return Object;
 
 fail1:
-    (VOID) InterlockedIncrement(&Cache->Count);
+    (VOID) InterlockedIncrement(&Cache->ObjectCount);
 
     return NULL;    
 }
@@ -292,19 +294,18 @@ CachePutObjectToList(
 
     KeMemoryBarrier();
 
-    (VOID) InterlockedIncrement(&Cache->Count);
+    (VOID) InterlockedIncrement(&Cache->ObjectCount);
 }
 
 static PVOID
 CacheGetObjectFromMagazine(
     IN  PXENBUS_CACHE       Cache,
-    IN  ULONG               Cpu
+    IN  ULONG               Index
     )
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
-    ULONG                   Index;
 
-    Magazine = &Cache->Magazine[Cpu];
+    Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
         PVOID   Object;
@@ -323,14 +324,13 @@ CacheGetObjectFromMagazine(
 static BOOLEAN
 CachePutObjectToMagazine(
     IN  PXENBUS_CACHE       Cache,
-    IN  ULONG               Cpu,
+    IN  ULONG               Index,
     IN  PVOID               Object
     )
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
-    ULONG                   Index;
 
-    Magazine = &Cache->Magazine[Cpu];
+    Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
         if (Magazine->Slot[Index] == NULL) {
@@ -350,7 +350,7 @@ CacheGet(
     )
 {
     KIRQL               Irql;
-    ULONG               Cpu;
+    ULONG               Index;
     PVOID               Object;
 
     UNREFERENCED_PARAMETER(Interface);
@@ -370,9 +370,9 @@ CacheGet(
     }
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
-    Object = CacheGetObjectFromMagazine(Cache, Cpu);
+    Object = CacheGetObjectFromMagazine(Cache, Index);
     if (Object != NULL)
         goto done;
 
@@ -397,14 +397,14 @@ CachePut(
     )
 {
     KIRQL               Irql;
-    ULONG               Cpu;
+    ULONG               Index;
 
     UNREFERENCED_PARAMETER(Interface);
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
-    if (CachePutObjectToMagazine(Cache, Cpu, Object))
+    if (CachePutObjectToMagazine(Cache, Index, Object))
         goto done;
 
     CachePutObjectToList(Cache, Object, Locked);
@@ -418,12 +418,12 @@ CacheFlushMagazines(
     IN  PXENBUS_CACHE   Cache
     )
 {
-    ULONG               Cpu;
+    ULONG               Index;
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
+    for (Index = 0; Index < Cache->MagazineCount; Index++) {
         PVOID   Object;
 
-        while ((Object = CacheGetObjectFromMagazine(Cache, Cpu)) != NULL)
+        while ((Object = CacheGetObjectFromMagazine(Cache, Index)) != NULL)
             CachePutObjectToList(Cache, Object, TRUE);
     }
 }
@@ -609,6 +609,13 @@ CacheCreate(
     if (!NT_SUCCESS(status))
         goto fail4;
 
+    (*Cache)->MagazineCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    (*Cache)->Magazine = __CacheAllocate(sizeof (XENBUS_CACHE_MAGAZINE) * (*Cache)->MagazineCount);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Cache)->Magazine == NULL)
+        goto fail5;
+
     (*Cache)->Reservation = Reservation;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
@@ -619,6 +626,11 @@ CacheCreate(
 
     return STATUS_SUCCESS;
 
+fail5:
+    Error("fail5\n");
+
+    (*Cache)->MagazineCount = 0;
+
 fail4:
     Error("fail4\n");
 
@@ -669,9 +681,14 @@ CacheDestroy(
 
     Cache->Reservation = 0;
     CacheFlushMagazines(Cache);
-    CacheSpill(Cache, Cache->Count);
+    CacheSpill(Cache, Cache->ObjectCount);
+
+    ASSERT3U(Cache->ObjectCount, ==, 0);
 
-    ASSERT3U(Cache->Count, ==, 0);
+    ASSERT(IsZeroMemory(Cache->Magazine, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
+    __CacheFree(Cache->Magazine);
+    Cache->Magazine = NULL;
+    Cache->MagazineCount = 0;
 
     RtlZeroMemory(&Cache->GetList, sizeof (LIST_ENTRY));
 
@@ -720,7 +737,7 @@ CacheDebugCallback(
                          &Context->DebugInterface,
                          "- %s: Count = %d (Reservation = %d)\n",
                          Cache->Name,
-                         Cache->Count,
+                         Cache->ObjectCount,
                          Cache->Reservation);
         }
     }
@@ -776,7 +793,7 @@ CacheMonitor(
 
             Cache = CONTAINING_RECORD(ListEntry, XENBUS_CACHE, ListEntry);
 
-            Count = Cache->Count;
+            Count = Cache->ObjectCount;
 
             if (Count < Cache->Reservation)
                 CacheFill(Cache, Cache->Reservation - Count);
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index e74d369..a1115a4 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 
 #include "registry.h"
@@ -500,6 +501,7 @@ DriverEntry(
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index f44c3cf..889179c 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -84,17 +85,24 @@ struct _XENBUS_EVTCHN_CHANNEL {
     XENBUS_EVTCHN_PARAMETERS    Parameters;
     BOOLEAN                     Mask;
     ULONG                       LocalPort;
-    ULONG                       Cpu;
+    PROCESSOR_NUMBER            ProcNumber;
     BOOLEAN                     Closed;
 };
 
+typedef struct _XENBUS_EVTCHN_PROCESSOR {
+    PXENBUS_INTERRUPT   Interrupt;
+    LIST_ENTRY          PendingList;
+    KDPC                Dpc;
+    BOOLEAN             UpcallEnabled;
+} XENBUS_EVTCHN_PROCESSOR, *PXENBUS_EVTCHN_PROCESSOR;
+
 struct _XENBUS_EVTCHN_CONTEXT {
     PXENBUS_FDO                     Fdo;
     KSPIN_LOCK                      Lock;
     LONG                            References;
-    PXENBUS_INTERRUPT               LevelSensitiveInterrupt;
-    PXENBUS_INTERRUPT               LatchedInterrupt[MAXIMUM_PROCESSORS];
-    KAFFINITY                       Affinity;
+    PXENBUS_INTERRUPT               Interrupt;
+    PXENBUS_EVTCHN_PROCESSOR        Processor;
+    ULONG                           ProcessorCount;
     XENBUS_SUSPEND_INTERFACE        SuspendInterface;
     PXENBUS_SUSPEND_CALLBACK        SuspendCallbackEarly;
     PXENBUS_SUSPEND_CALLBACK        SuspendCallbackLate;
@@ -107,8 +115,6 @@ struct _XENBUS_EVTCHN_CONTEXT {
     BOOLEAN                         UseEvtchnFifoAbi;
     PXENBUS_HASH_TABLE              Table;
     LIST_ENTRY                      List;
-    LIST_ENTRY                      PendingList[MAXIMUM_PROCESSORS];
-    KDPC                            Dpc[MAXIMUM_PROCESSORS];
 };
 
 #define XENBUS_EVTCHN_TAG  'CTVE'
@@ -402,7 +408,7 @@ EvtchnReap(
     RemoveEntryList(&Channel->ListEntry);
     RtlZeroMemory(&Channel->ListEntry, sizeof (LIST_ENTRY));
 
-    Channel->Cpu = 0;
+    RtlZeroMemory(&Channel->ProcNumber, sizeof (PROCESSOR_NUMBER));
 
     ASSERT(IsListEmpty(&Channel->PendingListEntry));
     RtlZeroMemory(&Channel->PendingListEntry, sizeof (LIST_ENTRY));
@@ -428,18 +434,22 @@ EvtchnReap(
 
 static BOOLEAN
 EvtchnPollCallback(
-    IN  PVOID               Argument,
-    IN  ULONG               LocalPort
+    IN  PVOID                   Argument,
+    IN  ULONG                   LocalPort
     )
 {
-    PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    ULONG                   Cpu;
-    PXENBUS_EVTCHN_CHANNEL  Channel;
-    BOOLEAN                 Pending;
-    NTSTATUS                status;
+    PXENBUS_EVTCHN_CONTEXT      Context = Argument;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
+    PXENBUS_EVTCHN_CHANNEL      Channel;
+    BOOLEAN                     Pending;
+    NTSTATUS                    status;
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
 
     status = HashTableLookup(Context->Table,
                              LocalPort,
@@ -452,7 +462,7 @@ EvtchnPollCallback(
     Pending = !IsListEmpty(&Channel->PendingListEntry);
 
     if (!Pending)
-        InsertTailList(&Context->PendingList[Cpu],
+        InsertTailList(&Processor->PendingList,
                        &Channel->PendingListEntry);
 
 done:
@@ -462,23 +472,27 @@ done:
 static BOOLEAN
 EvtchnPoll(
     IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    IN  ULONG                   Cpu,
+    IN  ULONG                   Index,
     IN  PLIST_ENTRY             List
     )
 {
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     BOOLEAN                     DoneSomething;
     PLIST_ENTRY                 ListEntry;
 
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
     (VOID) XENBUS_EVTCHN_ABI(Poll,
                              &Context->EvtchnAbi,
-                             Cpu,
+                             Index,
                              EvtchnPollCallback,
                              Context);
 
     DoneSomething = FALSE;
 
-    ListEntry = Context->PendingList[Cpu].Flink;
-    while (ListEntry != &Context->PendingList[Cpu]) {
+    ListEntry = Processor->PendingList.Flink;
+    while (ListEntry != &Processor->PendingList) {
         PLIST_ENTRY             Next = ListEntry->Flink;
         PXENBUS_EVTCHN_CHANNEL  Channel;
 
@@ -518,23 +532,25 @@ EvtchnPoll(
 static VOID
 EvtchnFlush(
     IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    IN  ULONG                   Cpu
+    IN  ULONG                   Index
     )
 {
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     LIST_ENTRY                  List;
     PXENBUS_INTERRUPT           Interrupt;
     KIRQL                       Irql;
 
-    Interrupt = (Context->Affinity != 0) ? // Latched available
-                Context->LatchedInterrupt[Cpu] :
-                Context->LevelSensitiveInterrupt;
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
+    Interrupt = (Processor->UpcallEnabled) ?
+                Processor->Interrupt :
+                Context->Interrupt;
 
     InitializeListHead(&List);
 
     Irql = FdoAcquireInterruptLock(Context->Fdo, Interrupt);
-
-    (VOID) EvtchnPoll(Context, Cpu, &List);
-
+    (VOID) EvtchnPoll(Context, Index, &List);
     FdoReleaseInterruptLock(Context->Fdo, Interrupt, Irql);
 
     while (!IsListEmpty(&List)) {
@@ -571,21 +587,21 @@ EvtchnDpc(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = _Context;
-    ULONG                   Cpu;
+    ULONG                   Index;
 
     UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
     KeAcquireSpinLockAtDpcLevel(&Context->Lock);
 
     if (Context->References == 0)
         goto done;
 
-    EvtchnFlush(Context, Cpu);
+    EvtchnFlush(Context, Index);
 
 done:
     KeReleaseSpinLockFromDpcLevel(&Context->Lock);
@@ -598,28 +614,34 @@ EvtchnTrigger(
     )
 {
     PXENBUS_EVTCHN_CONTEXT      Context = Interface->Context;
-    PKDPC                       Dpc;
     KIRQL                       Irql;
-    ULONG                       Cpu;
+    PROCESSOR_NUMBER            ProcNumber;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     PXENBUS_INTERRUPT           Interrupt;
     BOOLEAN                     Pending;
 
     ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
 
     KeAcquireSpinLock(&Channel->Lock, &Irql);
-    Cpu = Channel->Cpu;
+    ProcNumber = Channel->ProcNumber;
     KeReleaseSpinLock(&Channel->Lock, Irql);
 
-    Interrupt = (Context->Affinity != 0) ? // Latched available
-                Context->LatchedInterrupt[Cpu] :
-                Context->LevelSensitiveInterrupt;
+    Index = KeGetProcessorIndexFromNumber(&ProcNumber);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
+    Interrupt = (Processor->UpcallEnabled) ?
+                Processor->Interrupt :
+                Context->Interrupt;
 
     Irql = FdoAcquireInterruptLock(Context->Fdo, Interrupt);
 
     Pending = !IsListEmpty(&Channel->PendingListEntry);
 
     if (!Pending)
-        InsertTailList(&Context->PendingList[Cpu],
+        InsertTailList(&Processor->PendingList,
                        &Channel->PendingListEntry);
 
     FdoReleaseInterruptLock(Context->Fdo, Interrupt, Irql);
@@ -627,18 +649,21 @@ EvtchnTrigger(
     if (Pending)
         return;
 
-    Dpc = &Context->Dpc[Cpu];
-    KeInsertQueueDpc(Dpc, NULL, NULL);
+    KeInsertQueueDpc(&Processor->Dpc, NULL, NULL);
 }
 
 static NTSTATUS
 EvtchnBind(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     )
 {
     PXENBUS_EVTCHN_CONTEXT      Context = Interface->Context;
+    PROCESSOR_NUMBER            ProcNumber;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     ULONG                       LocalPort;
     unsigned int                vcpu_id;
     KIRQL                       Irql;
@@ -646,8 +671,16 @@ EvtchnBind(
 
     ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
 
+    ProcNumber.Group = Group;
+    ProcNumber.Number = Number;
+
+    Index = KeGetProcessorIndexFromNumber(&ProcNumber);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
     status = STATUS_NOT_SUPPORTED;
-    if (~Context->Affinity & ((KAFFINITY)1 << Cpu))
+    if (!Processor->UpcallEnabled)
         goto fail1;
 
     KeAcquireSpinLock(&Channel->Lock, &Irql);
@@ -655,19 +688,20 @@ EvtchnBind(
     if (!Channel->Active)
         goto done;
 
-    if (Channel->Cpu == Cpu)
+    if (Channel->ProcNumber.Group == Group &&
+        Channel->ProcNumber.Number == Number)
         goto done;
 
     LocalPort = Channel->LocalPort;
-    vcpu_id = SystemVirtualCpuIndex(Cpu);
+    vcpu_id = SystemVirtualCpuIndex(Index);
 
     status = EventChannelBindVirtualCpu(LocalPort, vcpu_id);
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    Channel->Cpu = Cpu;
+    Channel->ProcNumber = ProcNumber;
 
-    Info("[%u]: CPU %u\n", LocalPort, Cpu);
+    Info("[%u]: CPU %u:%u\n", LocalPort, Group, Number);
 
 done:
     KeReleaseSpinLock(&Channel->Lock, Irql);
@@ -685,6 +719,18 @@ fail1:
     return status;
 }
 
+static NTSTATUS
+EvtchnBindVersion2(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    )
+{
+    ASSERT3U(Cpu, <, MAXIMUM_PROCESSORS);
+
+    return EvtchnBind(Interface, Channel, 0, (CHAR)Cpu);
+}
+
 static VOID
 EvtchnUnmask(
     IN  PINTERFACE              Interface,
@@ -842,27 +888,26 @@ EvtchnInterruptCallback(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    ULONG                   Cpu;
+    ULONG                   Index;
     BOOLEAN                 DoneSomething;
 
     UNREFERENCED_PARAMETER(InterruptObject);
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
     DoneSomething = FALSE;
     while (XENBUS_SHARED_INFO(UpcallPending,
                               &Context->SharedInfoInterface,
-                              Cpu))
-        DoneSomething |= EvtchnPoll(Context, Cpu, NULL);
+                              Index))
+        DoneSomething |= EvtchnPoll(Context, Index, NULL);
 
     return DoneSomething;
 }
 
 static NTSTATUS
 EvtchnAbiAcquire(
-    IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    OUT PKAFFINITY              Affinity
+    IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
     NTSTATUS                    status;
@@ -872,8 +917,7 @@ EvtchnAbiAcquire(
                          &Context->EvtchnAbi);
 
         status = XENBUS_EVTCHN_ABI(Acquire,
-                                   &Context->EvtchnAbi,
-                                   Affinity);
+                                   &Context->EvtchnAbi);
         if (!NT_SUCCESS(status))
             goto use_two_level;
 
@@ -886,8 +930,7 @@ use_two_level:
                          &Context->EvtchnAbi);
 
     status = XENBUS_EVTCHN_ABI(Acquire,
-                               &Context->EvtchnAbi,
-                               Affinity);
+                               &Context->EvtchnAbi);
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -917,32 +960,38 @@ EvtchnInterruptEnable(
     IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
-    LONG                        Cpu;
+    ULONG                       Index;
     ULONG                       Line;
     NTSTATUS                    status;
 
     Trace("====>\n");
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        unsigned int    vcpu_id;
-        UCHAR           Vector;
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+        unsigned int                vcpu_id;
+        UCHAR                       Vector;
+
+        Processor = &Context->Processor[Index];
 
-        if (Context->LatchedInterrupt[Cpu] == NULL)
+        if (Processor->Interrupt == NULL)
             continue;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
-        Vector = FdoGetInterruptVector(Context->Fdo,
-                                       Context->LatchedInterrupt[Cpu]);
+        vcpu_id = SystemVirtualCpuIndex(Index);
+        Vector = FdoGetInterruptVector(Context->Fdo, Processor->Interrupt);
 
         status = HvmSetEvtchnUpcallVector(vcpu_id, Vector);
         if (NT_SUCCESS(status)) {
-            Info("CPU %u\n", Cpu);
-            Context->Affinity |= (KAFFINITY)1 << Cpu;
+            PROCESSOR_NUMBER    ProcNumber;
+
+            status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+            ASSERT(NT_SUCCESS(status));
+
+            Info("CPU %u:%u\n", ProcNumber.Group, ProcNumber.Number);
+            Processor->UpcallEnabled = TRUE;
         }
     }
 
-    Line = FdoGetInterruptLine(Context->Fdo,
-                               Context->LevelSensitiveInterrupt);
+    Line = FdoGetInterruptLine(Context->Fdo, Context->Interrupt);
 
     status = HvmSetParam(HVM_PARAM_CALLBACK_IRQ, Line);
     ASSERT(NT_SUCCESS(status));
@@ -955,7 +1004,7 @@ EvtchnInterruptDisable(
     IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
     NTSTATUS                    status;
 
     UNREFERENCED_PARAMETER(Context);
@@ -965,20 +1014,21 @@ EvtchnInterruptDisable(
     status = HvmSetParam(HVM_PARAM_CALLBACK_IRQ, 0);
     ASSERT(NT_SUCCESS(status));
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        unsigned int    vcpu_id;
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+        unsigned int                vcpu_id;
+
+        Processor = &Context->Processor[Index];
 
-        if (~Context->Affinity & (KAFFINITY)1 << Cpu)
+        if (!Processor->UpcallEnabled)
             continue;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
 
         (VOID) HvmSetEvtchnUpcallVector(vcpu_id, 0);
-        Context->Affinity &= ~((KAFFINITY)1 << Cpu);
+        Processor->UpcallEnabled = FALSE;
     }
 
-    ASSERT3U(Context->Affinity, ==, 0);
-
     Trace("<====\n");
 }
 
@@ -1019,17 +1069,13 @@ EvtchnSuspendCallbackLate(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    KAFFINITY               Affinity;
     NTSTATUS                status;
 
     EvtchnAbiRelease(Context);
 
-    status = EvtchnAbiAcquire(Context, &Affinity);
+    status = EvtchnAbiAcquire(Context);
     ASSERT(NT_SUCCESS(status));
 
-    // Affinity must be a superset of Context->Affinity
-    ASSERT3U(Affinity & Context->Affinity, ==, Context->Affinity);
-
     EvtchnInterruptDisable(Context);
     EvtchnInterruptEnable(Context);
 }
@@ -1127,8 +1173,8 @@ EvtchnAcquire(
     PXENBUS_EVTCHN_CONTEXT  Context = Interface->Context;
     PXENBUS_FDO             Fdo = Context->Fdo;
     KIRQL                   Irql;
-    ULONG                   Cpu;
-    KAFFINITY               Affinity;
+    PROCESSOR_NUMBER        ProcNumber;
+    ULONG                   Index;
     NTSTATUS                status;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
@@ -1177,29 +1223,56 @@ EvtchnAcquire(
     if (!NT_SUCCESS(status))
         goto fail6;
 
-    status = EvtchnAbiAcquire(Context, &Affinity);
+    status = EvtchnAbiAcquire(Context);
     if (!NT_SUCCESS(status))
         goto fail7;
 
-    Context->LevelSensitiveInterrupt = FdoAllocateInterrupt(Fdo,
-                                                            LevelSensitive,
-                                                            0,
-                                                            EvtchnInterruptCallback,
-                                                            Context);
+    status = KeGetProcessorNumberFromIndex(0, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
+
+    Context->Interrupt = FdoAllocateInterrupt(Fdo,
+                                              LevelSensitive,
+                                              ProcNumber.Group,
+                                              ProcNumber.Number,
+                                              EvtchnInterruptCallback,
+                                              Context);
 
     status = STATUS_UNSUCCESSFUL;
-    if (Context->LevelSensitiveInterrupt == NULL)
+    if (Context->Interrupt == NULL)
         goto fail8;
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        if (~Affinity & (KAFFINITY)1 << Cpu)
+    Context->ProcessorCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    Context->Processor = __EvtchnAllocate(sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount);
+
+    status = STATUS_NO_MEMORY;
+    if (Context->Processor == NULL)
+        goto fail9;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+
+        if (!XENBUS_EVTCHN_ABI(IsProcessorEnabled,
+                               &Context->EvtchnAbi,
+                               Index))
             continue;
 
-        Context->LatchedInterrupt[Cpu] = FdoAllocateInterrupt(Fdo,
-                                                              Latched,
-                                                              Cpu,
-                                                              EvtchnInterruptCallback,
-                                                              Context);
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        Processor = &Context->Processor[Index];
+
+        Processor->Interrupt = FdoAllocateInterrupt(Fdo,
+                                                    Latched,
+                                                    ProcNumber.Group,
+                                                    ProcNumber.Number,
+                                                    EvtchnInterruptCallback,
+                                                    Context);
+        ASSERT(Processor->Interrupt != NULL);
+
+        InitializeListHead(&Processor->PendingList);
+
+        KeInitializeDpc(&Processor->Dpc, EvtchnDpc, Context);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
     }
 
     EvtchnInterruptEnable(Context);
@@ -1211,6 +1284,11 @@ done:
 
     return STATUS_SUCCESS;
 
+fail9:
+    Error("fail9\n");
+
+    Context->ProcessorCount = 0;
+
 fail8:
     Error("fail8\n");
 
@@ -1273,7 +1351,7 @@ EvtchnRelease(
     PXENBUS_EVTCHN_CONTEXT  Context = Interface->Context;
     PXENBUS_FDO             Fdo = Context->Fdo;
     KIRQL                   Irql;
-    ULONG                   Cpu;
+    ULONG                   Index;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
 
@@ -1284,18 +1362,30 @@ EvtchnRelease(
 
     EvtchnInterruptDisable(Context);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        if (Context->LatchedInterrupt[Cpu] == NULL)
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR Processor;
+
+        ASSERT(Context->Processor != NULL);
+        Processor = &Context->Processor[Index];
+
+        if (Processor->Interrupt == NULL)
             continue;
 
-        EvtchnFlush(Context, Cpu);
+        EvtchnFlush(Context, Index);
+
+        RtlZeroMemory(&Processor->Dpc, sizeof (KDPC));
+        RtlZeroMemory(&Processor->PendingList, sizeof (LIST_ENTRY));
 
-        FdoFreeInterrupt(Fdo, Context->LatchedInterrupt[Cpu]);
-        Context->LatchedInterrupt[Cpu] = NULL;
+        FdoFreeInterrupt(Fdo, Processor->Interrupt);
+        Processor->Interrupt = NULL;
     }
 
-    FdoFreeInterrupt(Fdo, Context->LevelSensitiveInterrupt);
-    Context->LevelSensitiveInterrupt = NULL;
+    ASSERT(IsZeroMemory(Context->Processor, sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount));
+    __EvtchnFree(Context->Processor);
+    Context->ProcessorCount = 0;
+
+    FdoFreeInterrupt(Fdo, Context->Interrupt);
+    Context->Interrupt = NULL;
 
     if (!IsListEmpty(&Context->List))
         BUG("OUTSTANDING EVENT CHANNELS");
@@ -1346,7 +1436,7 @@ static struct _XENBUS_EVTCHN_INTERFACE_V2 EvtchnInterfaceVersion2 = {
     EvtchnAcquire,
     EvtchnRelease,
     EvtchnOpen,
-    EvtchnBind,
+    EvtchnBindVersion2,
     EvtchnUnmaskVersion1,
     EvtchnSend,
     EvtchnTrigger,
@@ -1359,6 +1449,19 @@ static struct _XENBUS_EVTCHN_INTERFACE_V3 EvtchnInterfaceVersion3 = {
     EvtchnAcquire,
     EvtchnRelease,
     EvtchnOpen,
+    EvtchnBindVersion2,
+    EvtchnUnmask,
+    EvtchnSend,
+    EvtchnTrigger,
+    EvtchnGetPort,
+    EvtchnClose
+};
+
+static struct _XENBUS_EVTCHN_INTERFACE_V4 EvtchnInterfaceVersion4 = {
+    { sizeof (struct _XENBUS_EVTCHN_INTERFACE_V4), 4, NULL, NULL, NULL },
+    EvtchnAcquire,
+    EvtchnRelease,
+    EvtchnOpen,
     EvtchnBind,
     EvtchnUnmask,
     EvtchnSend,
@@ -1375,7 +1478,6 @@ EvtchnInitialize(
 {
     HANDLE                      ParametersKey;
     ULONG                       UseEvtchnFifoAbi;
-    ULONG                       Cpu;
     NTSTATUS                    status;
 
     Trace("====>\n");
@@ -1433,15 +1535,6 @@ EvtchnInitialize(
     InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        PKDPC   Dpc = &(*Context)->Dpc[Cpu];
-
-        InitializeListHead(&(*Context)->PendingList[Cpu]);
-
-        KeInitializeDpc(Dpc, EvtchnDpc, *Context);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Cpu);
-    }
-
     (*Context)->Fdo = Fdo;
 
     Trace("<====\n");
@@ -1536,6 +1629,23 @@ EvtchnGetInterface(
         status = STATUS_SUCCESS;
         break;
     }
+    case 4: {
+        struct _XENBUS_EVTCHN_INTERFACE_V4  *EvtchnInterface;
+
+        EvtchnInterface = (struct _XENBUS_EVTCHN_INTERFACE_V4 *)Interface;
+
+        status = STATUS_BUFFER_OVERFLOW;
+        if (Size < sizeof (struct _XENBUS_EVTCHN_INTERFACE_V4))
+            break;
+
+        *EvtchnInterface = EvtchnInterfaceVersion4;
+
+        ASSERT3U(Interface->Version, ==, Version);
+        Interface->Context = Context;
+
+        status = STATUS_SUCCESS;
+        break;
+    }
     default:
         status = STATUS_NOT_SUPPORTED;
         break;
@@ -1556,10 +1666,8 @@ EvtchnTeardown(
 
     Context->Fdo = NULL;
 
-    RtlZeroMemory(&Context->Dpc, sizeof (KDPC) * MAXIMUM_PROCESSORS);
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
-    RtlZeroMemory(&Context->PendingList, sizeof (LIST_ENTRY) * MAXIMUM_PROCESSORS);
 
     RtlZeroMemory(&Context->SharedInfoInterface,
                   sizeof (XENBUS_SHARED_INFO_INTERFACE));
diff --git a/src/xenbus/evtchn_2l.c b/src/xenbus/evtchn_2l.c
index fde520f..249543d 100644
--- a/src/xenbus/evtchn_2l.c
+++ b/src/xenbus/evtchn_2l.c
@@ -66,9 +66,20 @@ __EvtchnTwoLevelFree(
 }
 
 static BOOLEAN
+EvtchnTwoLevelIsProcessorEnabled(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
+    IN  ULONG                           Index
+    )
+{
+    UNREFERENCED_PARAMETER(_Context);
+
+    return (SystemVirtualCpuIndex(Index) == 0) ? TRUE : FALSE;
+}
+
+static BOOLEAN
 EvtchnTwoLevelPoll(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
-    IN  ULONG                           Cpu,
+    IN  ULONG                           Index,
     IN  XENBUS_EVTCHN_ABI_EVENT         Event,
     IN  PVOID                           Argument
     )
@@ -77,7 +88,7 @@ EvtchnTwoLevelPoll(
 
     return XENBUS_SHARED_INFO(EvtchnPoll,
                               &Context->SharedInfoInterface,
-                              Cpu,
+                              Index,
                               Event,
                               Argument);
 }
@@ -148,8 +159,7 @@ EvtchnTwoLevelPortUnmask(
 
 static NTSTATUS
 EvtchnTwoLevelAcquire(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
-    OUT PKAFFINITY                      Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context
     )
 {
     PXENBUS_EVTCHN_TWO_LEVEL_CONTEXT    Context = (PVOID)_Context;
@@ -167,8 +177,6 @@ EvtchnTwoLevelAcquire(
     if (!NT_SUCCESS(status))
         goto fail1;
 
-    *Affinity = (KAFFINITY)1;
-
     Trace("<====\n");
 
 done:
@@ -215,6 +223,7 @@ static XENBUS_EVTCHN_ABI EvtchnAbiTwoLevel = {
     NULL,
     EvtchnTwoLevelAcquire,
     EvtchnTwoLevelRelease,
+    EvtchnTwoLevelIsProcessorEnabled,
     EvtchnTwoLevelPoll,
     EvtchnTwoLevelPortEnable,
     EvtchnTwoLevelPortDisable,
diff --git a/src/xenbus/evtchn_abi.h b/src/xenbus/evtchn_abi.h
index 2e1bf43..404f85a 100644
--- a/src/xenbus/evtchn_abi.h
+++ b/src/xenbus/evtchn_abi.h
@@ -39,8 +39,7 @@ typedef PVOID *PXENBUS_EVTCHN_ABI_CONTEXT;
 
 typedef NTSTATUS
 (*XENBUS_EVTCHN_ABI_ACQUIRE)(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
-    OUT PKAFFINITY                  Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context
     );
 
 typedef VOID
@@ -49,6 +48,12 @@ typedef VOID
     );
 
 typedef BOOLEAN
+(*XENBUS_EVTCHN_ABI_IS_PROCESSOR_ENABLED)(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
+    IN  ULONG                       Index
+    );
+
+typedef BOOLEAN
 (*XENBUS_EVTCHN_ABI_EVENT)(
     IN  PVOID   Argument,
     IN  ULONG   Port
@@ -57,7 +62,7 @@ typedef BOOLEAN
 typedef BOOLEAN
 (*XENBUS_EVTCHN_ABI_POLL)(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_EVTCHN_ABI_EVENT     Event,
     IN  PVOID                       Argument
     );
@@ -93,15 +98,16 @@ typedef BOOLEAN
     );
 
 typedef struct _XENBUS_EVTCHN_ABI {
-    PXENBUS_EVTCHN_ABI_CONTEXT      Context;
-    XENBUS_EVTCHN_ABI_ACQUIRE       EvtchnAbiAcquire;
-    XENBUS_EVTCHN_ABI_RELEASE       EvtchnAbiRelease;
-    XENBUS_EVTCHN_ABI_POLL          EvtchnAbiPoll;
-    XENBUS_EVTCHN_ABI_PORT_ENABLE   EvtchnAbiPortEnable;
-    XENBUS_EVTCHN_ABI_PORT_DISABLE  EvtchnAbiPortDisable;
-    XENBUS_EVTCHN_ABI_PORT_ACK      EvtchnAbiPortAck;
-    XENBUS_EVTCHN_ABI_PORT_MASK     EvtchnAbiPortMask;
-    XENBUS_EVTCHN_ABI_PORT_UNMASK   EvtchnAbiPortUnmask;
+    PXENBUS_EVTCHN_ABI_CONTEXT              Context;
+    XENBUS_EVTCHN_ABI_ACQUIRE               EvtchnAbiAcquire;
+    XENBUS_EVTCHN_ABI_RELEASE               EvtchnAbiRelease;
+    XENBUS_EVTCHN_ABI_IS_PROCESSOR_ENABLED  EvtchnAbiIsProcessorEnabled;
+    XENBUS_EVTCHN_ABI_POLL                  EvtchnAbiPoll;
+    XENBUS_EVTCHN_ABI_PORT_ENABLE           EvtchnAbiPortEnable;
+    XENBUS_EVTCHN_ABI_PORT_DISABLE          EvtchnAbiPortDisable;
+    XENBUS_EVTCHN_ABI_PORT_ACK              EvtchnAbiPortAck;
+    XENBUS_EVTCHN_ABI_PORT_MASK             EvtchnAbiPortMask;
+    XENBUS_EVTCHN_ABI_PORT_UNMASK           EvtchnAbiPortUnmask;
 } XENBUS_EVTCHN_ABI, *PXENBUS_EVTCHN_ABI;
 
 #define XENBUS_EVTCHN_ABI(_Method, _Abi, ...)   \
diff --git a/src/xenbus/evtchn_fifo.c b/src/xenbus/evtchn_fifo.c
index 4268809..5996b82 100644
--- a/src/xenbus/evtchn_fifo.c
+++ b/src/xenbus/evtchn_fifo.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -40,16 +41,14 @@
 #include "assert.h"
 #include "util.h"
 
-#define MAX_HVM_VCPUS   128
-
 typedef struct _XENBUS_EVTCHN_FIFO_CONTEXT {
     PXENBUS_FDO                     Fdo;
     KSPIN_LOCK                      Lock;
     LONG                            References;
-    PMDL                            ControlBlockMdl[MAX_HVM_VCPUS];
+    PMDL                            ControlBlockMdl[HVM_MAX_VCPUS];
     PMDL                            *EventPageMdl;
     ULONG                           EventPageCount;
-    ULONG                           Head[MAX_HVM_VCPUS][EVTCHN_FIFO_MAX_QUEUES];
+    ULONG                           Head[HVM_MAX_VCPUS][EVTCHN_FIFO_MAX_QUEUES];
 } XENBUS_EVTCHN_FIFO_CONTEXT, *PXENBUS_EVTCHN_FIFO_CONTEXT;
 
 #define EVENT_WORDS_PER_PAGE    (PAGE_SIZE / sizeof (event_word_t))
@@ -280,6 +279,18 @@ EvtchnFifoContract(
 }
 
 static BOOLEAN
+EvtchnFifoIsProcessorEnabled(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
+    IN  ULONG                       Index
+    )
+{
+    PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
+    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Index);
+
+    return (Context->ControlBlockMdl[vcpu_id] != NULL) ? TRUE : FALSE;
+}
+
+static BOOLEAN
 EvtchnFifoPollPriority(
     IN  PXENBUS_EVTCHN_FIFO_CONTEXT Context,
     IN  unsigned int                vcpu_id,
@@ -331,13 +342,13 @@ EvtchnFifoPollPriority(
 static BOOLEAN
 EvtchnFifoPoll(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_EVTCHN_ABI_EVENT     Event,
     IN  PVOID                       Argument
     )
 {
     PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
-    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Cpu);
+    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Index);
     PMDL                            Mdl;
     evtchn_fifo_control_block_t     *ControlBlock;
     ULONG                           Ready;
@@ -346,11 +357,14 @@ EvtchnFifoPoll(
 
     Mdl = Context->ControlBlockMdl[vcpu_id];
 
+    DoneSomething = FALSE;
+    if (Mdl == NULL)
+        goto done;
+
     ControlBlock = MmGetSystemAddressForMdlSafe(Mdl, NormalPagePriority);
     ASSERT(ControlBlock != NULL);
 
     Ready = InterlockedExchange((LONG *)&ControlBlock->ready, 0);
-    DoneSomething = FALSE;
 
     while (_BitScanReverse(&Priority, Ready)) {
         DoneSomething |= EvtchnFifoPollPriority(Context,
@@ -362,6 +376,7 @@ EvtchnFifoPoll(
         Ready |= InterlockedExchange((LONG *)&ControlBlock->ready, 0);
     }
 
+done:
     return DoneSomething;
 }
 
@@ -502,13 +517,12 @@ EvtchnFifoReset(
 
 static NTSTATUS
 EvtchnFifoAcquire(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
-    OUT PKAFFINITY                  Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context
     )
 {
     PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
     KIRQL                           Irql;
-    LONG                            Cpu;
+    LONG                            Index;
     PMDL                            Mdl;
     NTSTATUS                        status;
 
@@ -519,10 +533,8 @@ EvtchnFifoAcquire(
 
     Trace("====>\n");
 
-    *Affinity = 0;
-    Cpu = 0;
-
-    while (Cpu < (LONG)KeQueryActiveProcessorCount(NULL)) {
+    Index = 0;
+    while (Index < (LONG)KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS)) {
         unsigned int        vcpu_id;
         PFN_NUMBER          Pfn;
         PHYSICAL_ADDRESS    Address;
@@ -533,7 +545,7 @@ EvtchnFifoAcquire(
         if (Mdl == NULL)
             goto fail1;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
         Pfn = MmGetMdlPfnArray(Mdl)[0];
 
         status = EventChannelInitControl(Pfn, vcpu_id);
@@ -550,8 +562,7 @@ EvtchnFifoAcquire(
 
         Context->ControlBlockMdl[vcpu_id] = Mdl;
 
-        *Affinity |= (KAFFINITY)1 << Cpu;
-        Cpu++;
+        Index++;
     }
 
     Trace("<====\n");
@@ -569,10 +580,10 @@ fail1:
 
     (VOID) EventChannelReset();
 
-    while (--Cpu >= 0) {
+    while (--Index >= 0) {
         unsigned int    vcpu_id;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
 
         Mdl = Context->ControlBlockMdl[vcpu_id];
         Context->ControlBlockMdl[vcpu_id] = NULL;
@@ -607,7 +618,7 @@ EvtchnFifoRelease(
 
     EvtchnFifoContract(Context);
 
-    vcpu_id = MAX_HVM_VCPUS;
+    vcpu_id = HVM_MAX_VCPUS;
     while (--vcpu_id >= 0) {
         PMDL            Mdl;
 
@@ -630,6 +641,7 @@ static XENBUS_EVTCHN_ABI EvtchnAbiFifo = {
     NULL,
     EvtchnFifoAcquire,
     EvtchnFifoRelease,
+    EvtchnFifoIsProcessorEnabled,
     EvtchnFifoPoll,
     EvtchnFifoPortEnable,
     EvtchnFifoPortDisable,
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index b30c4bc..8d8b125 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -32,6 +32,7 @@
 #define INITGUID 1
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
@@ -70,7 +71,7 @@ struct _XENBUS_INTERRUPT {
     LIST_ENTRY          ListEntry;
     KINTERRUPT_MODE     InterruptMode;
     PKINTERRUPT         InterruptObject;
-    ULONG               Cpu;
+    PROCESSOR_NUMBER    ProcNumber;
     UCHAR               Vector;
     ULONG               Line;
     PKSERVICE_ROUTINE   Callback;
@@ -1205,12 +1206,15 @@ FdoSuspend(
     )
 {
     PXENBUS_FDO         Fdo = Context;
+    GROUP_AFFINITY      Affinity;
     PKEVENT             Event;
 
     Info("====>\n");
 
     // We really want to know what CPU this thread will run on
-    KeSetSystemAffinityThread((KAFFINITY)1);
+    Affinity.Group = 0;
+    Affinity.Mask = (KAFFINITY)1;
+    KeSetSystemGroupAffinityThread(&Affinity, NULL);
 
     Event = ThreadGetEvent(Self);
 
@@ -1521,7 +1525,7 @@ FdoDumpIoResourceDescriptor(
     else if (Descriptor->Option == (IO_RESOURCE_ALTERNATIVE | IO_RESOURCE_PREFERRED))
         Trace("Preferred Alternative\n");
 
-    Trace("ShareDisposition=%s Flags=%04x\n",
+    Trace("ShareDisposition = %s Flags = %04x\n",
           ResourceDescriptorShareDispositionName(Descriptor->ShareDisposition),
           Descriptor->Flags);
 
@@ -1537,11 +1541,12 @@ FdoDumpIoResourceDescriptor(
         break;
 
     case CmResourceTypeInterrupt:
-        Trace("MinimumVector=%08x MaximumVector=%08x AffinityPolicy=%s PriorityPolicy=%s TargettedProcessors = %p\n",
+        Trace("MinimumVector = %08x MaximumVector = %08x AffinityPolicy = %s PriorityPolicy = %s Group = %u TargettedProcessors = %p\n",
               Descriptor->u.Interrupt.MinimumVector,
               Descriptor->u.Interrupt.MaximumVector,
               IrqDevicePolicyName(Descriptor->u.Interrupt.AffinityPolicy),
               IrqPriorityName(Descriptor->u.Interrupt.PriorityPolicy),
+              Descriptor->u.Interrupt.Group,
               (PVOID)Descriptor->u.Interrupt.TargetedProcessors);
         break;
 
@@ -1594,7 +1599,7 @@ FdoFilterResourceRequirements(
     Old = (PIO_RESOURCE_REQUIREMENTS_LIST)Irp->IoStatus.Information;
     ASSERT3U(Old->AlternativeLists, ==, 1);
 
-    Count = KeQueryActiveProcessorCount(NULL);
+    Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
 
     Size = Old->ListSize +
         (sizeof (IO_RESOURCE_DESCRIPTOR) * Count);
@@ -1618,6 +1623,7 @@ FdoFilterResourceRequirements(
 
         Descriptor->Flags |= CM_RESOURCE_INTERRUPT_POLICY_INCLUDED;
         Descriptor->u.Interrupt.AffinityPolicy = IrqPolicySpecifiedProcessors;
+        Descriptor->u.Interrupt.Group = 0;
         Descriptor->u.Interrupt.TargetedProcessors = (KAFFINITY)1;
     }
 
@@ -1635,7 +1641,13 @@ FdoFilterResourceRequirements(
     Interrupt.u.Interrupt.PriorityPolicy = IrqPriorityUndefined;
 
     for (Index = 0; Index < Count; Index++) {
-        Interrupt.u.Interrupt.TargetedProcessors = (KAFFINITY)1 << Index;
+        PROCESSOR_NUMBER    ProcNumber;
+
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        Interrupt.u.Interrupt.Group = ProcNumber.Group;
+        Interrupt.u.Interrupt.TargetedProcessors = (KAFFINITY)1 << ProcNumber.Number;
         List->Descriptors[List->Count++] = Interrupt;
     }
 
@@ -1825,7 +1837,7 @@ FdoConnectInterrupt(
 {
     IO_CONNECT_INTERRUPT_PARAMETERS     Connect;
     BOOLEAN                             Found;
-    ULONG                               Cpu;
+    ULONG                               Number;
     NTSTATUS                            status;
 
     Trace("====>\n");
@@ -1845,7 +1857,7 @@ FdoConnectInterrupt(
         (*Interrupt)->Line = Raw->u.Interrupt.Vector;
 
     RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
-    Connect.Version = CONNECT_FULLY_SPECIFIED;
+    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
     Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
     Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
     Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
@@ -1857,11 +1869,13 @@ FdoConnectInterrupt(
         Connect.FullySpecified.Vector = Translated->u.MessageInterrupt.Translated.Vector;
         Connect.FullySpecified.Irql = (KIRQL)Translated->u.MessageInterrupt.Translated.Level;
         Connect.FullySpecified.SynchronizeIrql = (KIRQL)Translated->u.MessageInterrupt.Translated.Level;
+        Connect.FullySpecified.Group = Translated->u.MessageInterrupt.Translated.Group;
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.MessageInterrupt.Translated.Affinity;
     } else {
         Connect.FullySpecified.Vector = Translated->u.Interrupt.Vector;
         Connect.FullySpecified.Irql = (KIRQL)Translated->u.Interrupt.Level;
         Connect.FullySpecified.SynchronizeIrql = (KIRQL)Translated->u.Interrupt.Level;
+        Connect.FullySpecified.Group = Translated->u.Interrupt.Group;
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
     }
 
@@ -1871,22 +1885,25 @@ FdoConnectInterrupt(
 
     (*Interrupt)->Vector = (UCHAR)Connect.FullySpecified.Vector;
 
+    (*Interrupt)->ProcNumber.Group = Connect.FullySpecified.Group;
+
 #if defined(__i386__)
-    Found = _BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse(&Number, Connect.FullySpecified.ProcessorEnableMask);
 #elif defined(__x86_64__)
-    Found = _BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse64(&Number, Connect.FullySpecified.ProcessorEnableMask);
 #else
 #error 'Unrecognised architecture'
 #endif
     ASSERT(Found);
 
-    (*Interrupt)->Cpu = Cpu;
+    (*Interrupt)->ProcNumber.Number = (UCHAR)Number;
 
-    Info("%p: %s %s CPU %u VECTOR %02x\n",
+    Info("%p: %s %s CPU %u:%u VECTOR %02x\n",
          (*Interrupt)->InterruptObject,
          ResourceDescriptorShareDispositionName(Translated->ShareDisposition),
          InterruptModeName((*Interrupt)->InterruptMode),
-         (*Interrupt)->Cpu,
+         (*Interrupt)->ProcNumber.Group,
+         (*Interrupt)->ProcNumber.Number,
          (*Interrupt)->Vector);
 
     Trace("<====\n");
@@ -1917,12 +1934,13 @@ FdoDisconnectInterrupt(
 
     Trace("====>\n");
 
-    Info("%p: CPU %u VECTOR %02x\n",
+    Info("%p: CPU %u:%u VECTOR %02x\n",
          Interrupt->InterruptObject,
-         Interrupt->Cpu,
+         Interrupt->ProcNumber.Group,
+         Interrupt->ProcNumber.Number,
          Interrupt->Vector);
 
-    Interrupt->Cpu = 0;
+    RtlZeroMemory(&Interrupt->ProcNumber, sizeof (PROCESSOR_NUMBER));
     Interrupt->Vector = 0;
 
     RtlZeroMemory(&Disconnect, sizeof (IO_DISCONNECT_INTERRUPT_PARAMETERS));
@@ -1994,7 +2012,8 @@ PXENBUS_INTERRUPT
 FdoAllocateInterrupt(
     IN  PXENBUS_FDO         Fdo,
     IN  KINTERRUPT_MODE     InterruptMode,
-    IN  ULONG               Cpu,
+    IN  USHORT              Group,
+    IN  UCHAR               Number,
     IN  KSERVICE_ROUTINE    Callback,
     IN  PVOID               Argument OPTIONAL
     )
@@ -2010,7 +2029,8 @@ FdoAllocateInterrupt(
 
         if (Interrupt->Callback == NULL &&
             Interrupt->InterruptMode == InterruptMode &&
-            Interrupt->Cpu == Cpu)
+            Interrupt->ProcNumber.Group == Group &&
+            Interrupt->ProcNumber.Number == Number)
             goto found;
     }
 
diff --git a/src/xenbus/fdo.h b/src/xenbus/fdo.h
index a07b55f..4b99ba0 100644
--- a/src/xenbus/fdo.h
+++ b/src/xenbus/fdo.h
@@ -169,7 +169,8 @@ extern PXENBUS_INTERRUPT
 FdoAllocateInterrupt(
     IN  PXENBUS_FDO         Fdo,
     IN  KINTERRUPT_MODE     InterruptMode,
-    IN  ULONG               Cpu,
+    IN  USHORT              Group,
+    IN  UCHAR               Number,
     IN  KSERVICE_ROUTINE    Callback,
     IN  PVOID               Argument OPTIONAL
     );
diff --git a/src/xenbus/pdo.c b/src/xenbus/pdo.c
index 58eeadd..7eb967c 100644
--- a/src/xenbus/pdo.c
+++ b/src/xenbus/pdo.c
@@ -821,100 +821,14 @@ PdoS3ToS4(
     Trace("(%s) <====\n", __PdoGetName(Pdo));
 }
 
-static VOID
-PdoParseResources(
-    IN  PXENBUS_PDO             Pdo,
-    IN  PCM_RESOURCE_LIST       RawResourceList,
-    IN  PCM_RESOURCE_LIST       TranslatedResourceList
-    )
-{
-    PCM_PARTIAL_RESOURCE_LIST   RawPartialList;
-    PCM_PARTIAL_RESOURCE_LIST   TranslatedPartialList;
-    ULONG                       Index;
-
-    UNREFERENCED_PARAMETER(Pdo);
-
-    ASSERT3U(RawResourceList->Count, ==, 1);
-    RawPartialList = &RawResourceList->List[0].PartialResourceList;
-
-    ASSERT3U(RawPartialList->Version, ==, 1);
-    ASSERT3U(RawPartialList->Revision, ==, 1);
-
-    ASSERT3U(TranslatedResourceList->Count, ==, 1);
-    TranslatedPartialList = &TranslatedResourceList->List[0].PartialResourceList;
-
-    ASSERT3U(TranslatedPartialList->Version, ==, 1);
-    ASSERT3U(TranslatedPartialList->Revision, ==, 1);
-
-    for (Index = 0; Index < TranslatedPartialList->Count; Index++) {
-        PCM_PARTIAL_RESOURCE_DESCRIPTOR RawPartialDescriptor;
-        PCM_PARTIAL_RESOURCE_DESCRIPTOR TranslatedPartialDescriptor;
-
-        RawPartialDescriptor = &RawPartialList->PartialDescriptors[Index];
-        TranslatedPartialDescriptor = &TranslatedPartialList->PartialDescriptors[Index];
-
-        Trace("%s: [%d] %02x:%s\n",
-              __PdoGetName(Pdo),
-              Index,
-              TranslatedPartialDescriptor->Type,
-              ResourceDescriptorTypeName(TranslatedPartialDescriptor->Type));
-
-        switch (TranslatedPartialDescriptor->Type) {
-        case CmResourceTypeMemory:
-            Trace("RAW: SharedDisposition=%02x Flags=%04x Start = %08x.%08x Length = %08x\n",
-                  RawPartialDescriptor->ShareDisposition,
-                  RawPartialDescriptor->Flags,
-                  RawPartialDescriptor->u.Memory.Start.HighPart,
-                  RawPartialDescriptor->u.Memory.Start.LowPart,
-                  RawPartialDescriptor->u.Memory.Length);
-
-            Trace("TRANSLATED: SharedDisposition=%02x Flags=%04x Start = %08x.%08x Length = %08x\n",
-                  TranslatedPartialDescriptor->ShareDisposition,
-                  TranslatedPartialDescriptor->Flags,
-                  TranslatedPartialDescriptor->u.Memory.Start.HighPart,
-                  TranslatedPartialDescriptor->u.Memory.Start.LowPart,
-                  TranslatedPartialDescriptor->u.Memory.Length);
-            break;
-
-        case CmResourceTypeInterrupt:
-            Trace("RAW: SharedDisposition=%02x Flags=%04x Level = %08x Vector = %08x Affinity = %p\n",
-                  RawPartialDescriptor->ShareDisposition,
-                  RawPartialDescriptor->Flags,
-                  RawPartialDescriptor->u.Interrupt.Level,
-                  RawPartialDescriptor->u.Interrupt.Vector,
-                  (PVOID)RawPartialDescriptor->u.Interrupt.Affinity);
-
-            Trace("TRANSLATED: SharedDisposition=%02x Flags=%04x Level = %08x Vector = %08x Affinity = %p\n",
-                  TranslatedPartialDescriptor->ShareDisposition,
-                  TranslatedPartialDescriptor->Flags,
-                  TranslatedPartialDescriptor->u.Interrupt.Level,
-                  TranslatedPartialDescriptor->u.Interrupt.Vector,
-                  (PVOID)TranslatedPartialDescriptor->u.Interrupt.Affinity);
-            break;
-
-        default:
-            break;
-        }
-    }
-
-    Trace("<====\n");
-}
-
 static NTSTATUS
 PdoStartDevice(
     IN  PXENBUS_PDO     Pdo,
     IN  PIRP            Irp
     )
 {
-    PIO_STACK_LOCATION  StackLocation;
     NTSTATUS            status;
 
-    StackLocation = IoGetCurrentIrpStackLocation(Irp);
-
-    PdoParseResources(Pdo,
-                      StackLocation->Parameters.StartDevice.AllocatedResources,
-                      StackLocation->Parameters.StartDevice.AllocatedResourcesTranslated);
-
     PdoD3ToD0(Pdo);
 
     __PdoSetDevicePnpState(Pdo, Started);
@@ -1375,6 +1289,7 @@ PdoQueryResourceRequirements(
     Interrupt.u.Interrupt.MaximumVector = (ULONG)-1;
     Interrupt.u.Interrupt.AffinityPolicy = IrqPolicyOneCloseProcessor;
     Interrupt.u.Interrupt.PriorityPolicy = IrqPriorityUndefined;
+    Interrupt.u.Interrupt.Group = ALL_PROCESSOR_GROUPS;
 
     Size = sizeof (IO_RESOURCE_DESCRIPTOR) * 2;
     Size += FIELD_OFFSET(IO_RESOURCE_LIST, Descriptors);
diff --git a/src/xenbus/shared_info.c b/src/xenbus/shared_info.c
index 09d035a..1b71ba1 100644
--- a/src/xenbus/shared_info.c
+++ b/src/xenbus/shared_info.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "shared_info.h"
@@ -155,12 +156,12 @@ SharedInfoEvtchnMaskAll(
 static BOOLEAN
 SharedInfoUpcallPending(
     IN  PINTERFACE              Interface,
-    IN  ULONG                   Cpu
+    IN  ULONG                   Index
     )
 {
     PXENBUS_SHARED_INFO_CONTEXT Context = Interface->Context;
     shared_info_t               *Shared = Context->Shared;
-    int                         vcpu_id = SystemVirtualCpuIndex(Cpu);
+    int                         vcpu_id = SystemVirtualCpuIndex(Index);
     UCHAR                       Pending;
 
     KeMemoryBarrier();
@@ -173,14 +174,14 @@ SharedInfoUpcallPending(
 static BOOLEAN
 SharedInfoEvtchnPoll(
     IN  PINTERFACE                  Interface,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_SHARED_INFO_EVENT    Event,
     IN  PVOID                       Argument OPTIONAL
     )
 {
     PXENBUS_SHARED_INFO_CONTEXT     Context = Interface->Context;
     shared_info_t                   *Shared = Context->Shared;
-    int                             vcpu_id = SystemVirtualCpuIndex(Cpu);
+    int                             vcpu_id = SystemVirtualCpuIndex(Index);
     ULONG                           Port;
     ULONG_PTR                       SelectorMask;
     BOOLEAN                         DoneSomething;
@@ -457,28 +458,36 @@ SharedInfoDebugCallback(
 
     if (!Crashing) {
         shared_info_t   *Shared;
-        ULONG           Cpu;
+        ULONG           Index;
         ULONG           Selector;
 
         Shared = Context->Shared;
 
         KeMemoryBarrier();
 
-        for (Cpu = 0; Cpu < KeQueryActiveProcessorCount(NULL); Cpu++) {
-            int vcpu_id = SystemVirtualCpuIndex(Cpu);
+        for (Index = 0;
+             Index < KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+             Index++) {
+            PROCESSOR_NUMBER    ProcNumber;
+            int                 vcpu_id;
+
+            (VOID) KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+            vcpu_id = SystemVirtualCpuIndex(Index);
 
             XENBUS_DEBUG(Printf,
                          &Context->DebugInterface,
-                         "CPU %u: PENDING: %s\n",
-                         Cpu,
+                         "CPU %u:%u: PENDING: %s\n",
+                         ProcNumber.Group,
+                         ProcNumber.Number,
                          Shared->vcpu_info[vcpu_id].evtchn_upcall_pending ?
                          "TRUE" :
                          "FALSE");
 
             XENBUS_DEBUG(Printf,
                          &Context->DebugInterface,
-                         "CPU %u: SELECTOR MASK: %p\n",
-                         Cpu,
+                         "CPU %u:u: SELECTOR MASK: %p\n",
+                         ProcNumber.Group,
+                         ProcNumber.Number,
                          (PVOID)Shared->vcpu_info[vcpu_id].evtchn_pending_sel);
         }
 
diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index d4af525..835b46b 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -39,80 +40,83 @@
 #include "util.h"
 
 // Routines to capture all CPUs in a spinning state with interrupts
-// disabled (so that we remain in a known code context) and optionally
-// execute a function on each CPU.
+// disabled (so that we remain in a known code context).
 // These routines are used for suspend/resume and live snapshot.
 
 // The general sequence of steps is follows:
 //
-// - SyncCaptureAndCall() is called on an arbitrary CPU
+// - SyncCapture() is called on an arbitrary CPU. It must be called at
+//   DISPATCH_LEVEL so it cannot be pre-empted and moved to another CPU.
+//   It schedules a DPC on each of the other CPUs and spins until all
+//   CPUs are executing the DPC, which will in-turn spin awaiting
+//   further instruction.
 //
-// - It raises to DISPATCH_LEVEL to avoid pre-emption and schedules
-//   a DPC on each of the other CPUs.
+// - SyncDisableInterrputs() instructs the DPC routines to all raise
+//   to HIGH_LEVEL and disable interrupts for its CPU. It then raises
+//   to HIGH_LEVEL itself, spins waiting for confirmation from each
+//   DPC that it has disabled interrupts and then disables interrupts
+//   itself.
 //
-// - It, and the DPC routines, all raise to HIGH_LEVEL, clear a
-//   a bit corresponding to their CPU in a 'captured' mask, and then
-//   spin waiting for the mask to become zero (i.e. all CPUs captured).
+//   NOTE: There is a back-off in trying to disable interrupts. It is
+//         possible that CPU A is waiting for an IPI to CPU B to
+//         complete, but CPU B is spinning with interrupts disabled.
+//         Thus the DPC on CPU A will never make it to HIGH_LEVEL and
+//         hence never get to disable interrupts. Thus if, while
+//         spinning with interrupts disabled, one DPC notices that
+//         another DPC has not made it, it briefly enables interrupts
+//         and drops back down to DISPATCH_LEVEL before trying again.
+//         This should allow any pending IPI to complete.
 //
-//   NOTE: There is a back-off in this spin. It is possible that CPU A
-//         is waiting for an IPI to CPU B to complete, but CPU B is
-//         spinning at HIGH_LEVEL. Thus CPU A will never make it to
-//         HIGH_LEVEL. Thus if, while spinning at HIGH_LEVEL, we notice
-//         that another CPU has not made it, we set our bit in the
-//         'captured' mask again and briefly drop down to DISPATCH_LEVEL
-//         before trying again. This should allow any pending IPI to
-//         complete.
+// - SyncEnableInterrupts() instructs the DPC routines to all enable
+//   interrupts and drop back to DISPATCH_LEVEL before enabling
+//   interrupts and dropping back to DISPATCH_LEVEL itself.
 //
-// - Once all CPUs are captured, each disables interrupts, executes an
-//   optional function. All the DPC routined clear a bit corresponding
-//   to their CPU in a 'completed' mask and then spin waiting for the
-//   mask to become zero. The requesting CPU also executes the optional
-//   function bit it then waits for the mask to only contain the bit
-//   corresponding to its CPU and then returns from
-//   SyncCaptureAndCall() at HIGH_LEVEL.
-//
-// - A subsequent call to SyncRelease() will clear the last
-//   remaining bit (clearly it is necessarily executed on the same CPU
-//   as SyncCaptureAndCall()) and thus allow all the DPC
-//   routines to lower back to DISPATCH_LEVEL and complete.
-//
-// - SyncRelease() also lowers back to DISPATCH_LEVEL and then
-//   back to the IRQL is was originally entered at.
+// - SyncRelease() instructs the DPC routines to exit, thus allowing
+//   the scheduler to run on the other CPUs again. It spins until all
+//   DPCs have completed and then returns.
+
+#pragma data_seg("sync")
+__declspec(allocate("sync"))
+static UCHAR        __Section[PAGE_SIZE];
+
+typedef struct  _SYNC_PROCESSOR {
+    KDPC                Dpc;
+    BOOLEAN             DisableInterrupts;
+    BOOLEAN             Exit;
+} SYNC_PROCESSOR, *PSYNC_PROCESSOR;
 
 typedef struct  _SYNC_CONTEXT {
-    KDPC                Dpc[MAXIMUM_PROCESSORS];
     ULONG               Sequence;
-    LONG                CpuCount;
+    LONG                ProcessorCount;
     LONG                CompletionCount;
-    BOOLEAN             DisableInterrupts[MAXIMUM_PROCESSORS];
-    BOOLEAN             Exit[MAXIMUM_PROCESSORS];
+    SYNC_PROCESSOR      Processor[1];
 } SYNC_CONTEXT, *PSYNC_CONTEXT;
 
-static LONG SyncOwner = MAXIMUM_PROCESSORS;
+static PSYNC_CONTEXT    SyncContext = (PVOID)__Section;
+static LONG             SyncOwner = -1;
 
 static FORCEINLINE VOID
 __SyncAcquire(
-    IN  LONG    Cpu
+    IN  LONG    Index
     )
 {
     LONG        Old;
 
-    Old = InterlockedExchange(&SyncOwner, Cpu);
-    ASSERT3U(Old, ==, MAXIMUM_PROCESSORS);
+    Old = InterlockedExchange(&SyncOwner, Index);
+    ASSERT3U(Old, ==, -1);
 }
 
 static FORCEINLINE VOID
 __SyncRelease(
-    IN  LONG    Cpu
+    IN  LONG    Index
     )
 {
     LONG        Old;
 
-    Old = InterlockedExchange(&SyncOwner, MAXIMUM_PROCESSORS);
-    ASSERT3U(Old, ==, Cpu);
+    Old = InterlockedExchange(&SyncOwner, -1);
+    ASSERT3U(Old, ==, Index);
 }
 
-static SYNC_CONTEXT  SyncContext;
 
 KDEFERRED_ROUTINE   SyncWorker;
 
@@ -122,53 +126,57 @@ KDEFERRED_ROUTINE   SyncWorker;
 VOID
 #pragma prefast(suppress:28166) // Function does not restore IRQL
 SyncWorker(
-    IN  PKDPC   Dpc,
-    IN  PVOID   Context,
-    IN  PVOID   Argument1,
-    IN  PVOID   Argument2
+    IN  PKDPC           Dpc,
+    IN  PVOID           _Context,
+    IN  PVOID           Argument1,
+    IN  PVOID           Argument2
     )
 {
-    BOOLEAN     InterruptsDisabled;
-    ULONG       Cpu;
+    PSYNC_CONTEXT       Context = SyncContext;
+    BOOLEAN             InterruptsDisabled;
+    ULONG               Index;
+    PSYNC_PROCESSOR     Processor;
+    PROCESSOR_NUMBER    ProcNumber;
 
     UNREFERENCED_PARAMETER(Dpc);
-    UNREFERENCED_PARAMETER(Context);
+    UNREFERENCED_PARAMETER(_Context);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
     InterruptsDisabled = FALSE;
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    Processor = &Context->Processor[Index];
 
-    Trace("====> (%u)\n", Cpu);
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    Trace("====> (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
+    InterlockedIncrement(&Context->CompletionCount);
 
     for (;;) {
         ULONG   Sequence;
 
-        if (SyncContext.Exit[Cpu])
+        if (Processor->Exit)
             break;
 
-        if (SyncContext.DisableInterrupts[Cpu] == InterruptsDisabled) {
+        if (Processor->DisableInterrupts == InterruptsDisabled) {
             _mm_pause();
             KeMemoryBarrier();
 
             continue;
         }
 
-        Sequence = SyncContext.Sequence;
+        Sequence = Context->Sequence;
 
-        if (SyncContext.DisableInterrupts[Cpu]) {
+        if (Processor->DisableInterrupts) {
             ULONG       Attempts;
             NTSTATUS    status;
 
             (VOID) KfRaiseIrql(HIGH_LEVEL);
             status = STATUS_SUCCESS;
 
-            InterlockedIncrement(&SyncContext.CompletionCount);
+            InterlockedIncrement(&Context->CompletionCount);
 
             Attempts = 0;
-            while (SyncContext.Sequence == Sequence &&
-                   SyncContext.CompletionCount < SyncContext.CpuCount) {
+            while (Context->Sequence == Sequence &&
+                   Context->CompletionCount < Context->ProcessorCount) {
                 _mm_pause();
                 KeMemoryBarrier();
 
@@ -177,14 +185,14 @@ SyncWorker(
                     LONG    New;
 
                     do {
-                        Old = SyncContext.CompletionCount;
+                        Old = Context->CompletionCount;
                         New = Old - 1;
 
-                        if (Old == SyncContext.CpuCount)
+                        if (Old == Context->ProcessorCount)
                             break;
-                    } while (InterlockedCompareExchange(&SyncContext.CompletionCount, New, Old) != Old);
+                    } while (InterlockedCompareExchange(&Context->CompletionCount, New, Old) != Old);
 
-                    if (Old < SyncContext.CpuCount) {
+                    if (Old < Context->ProcessorCount) {
 #pragma prefast(suppress:28138) // Use constant rather than variable
                         KeLowerIrql(DISPATCH_LEVEL);
                         status = STATUS_UNSUCCESSFUL;
@@ -207,10 +215,10 @@ SyncWorker(
 #pragma prefast(suppress:28138) // Use constant rather than variable
             KeLowerIrql(DISPATCH_LEVEL);
 
-            InterlockedIncrement(&SyncContext.CompletionCount);
+            InterlockedIncrement(&Context->CompletionCount);
 
-            while (SyncContext.Sequence == Sequence &&
-                   SyncContext.CompletionCount < SyncContext.CpuCount) {
+            while (Context->Sequence == Sequence &&
+                   Context->CompletionCount < Context->ProcessorCount) {
                 _mm_pause();
                 KeMemoryBarrier();
             }
@@ -218,8 +226,8 @@ SyncWorker(
         }
     }
 
-    Trace("<==== (%u)\n", Cpu);
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    Trace("<==== (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
+    InterlockedIncrement(&Context->CompletionCount);
 
     ASSERT(!InterruptsDisabled);
 }
@@ -231,44 +239,55 @@ SyncCapture(
     VOID
     )
 {
-    ULONG       Cpu;
-    ULONG       Index;
+    PSYNC_CONTEXT       Context = SyncContext;
+    LONG                Index;
+    PROCESSOR_NUMBER    ProcNumber;
+    USHORT              Group;
+    UCHAR               Number;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
-    Cpu = KeGetCurrentProcessorNumber();
-    __SyncAcquire(Cpu);
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    __SyncAcquire(Index);
 
-    Trace("====> (%u)\n", Cpu);
+    Group = ProcNumber.Group;
+    Number = ProcNumber.Number;
 
-    ASSERT(IsZeroMemory(&SyncContext, sizeof (SYNC_CONTEXT)));
+    Trace("====> (%u:%u)\n", Group, Number);
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
-    SyncContext.CpuCount = KeQueryActiveProcessorCount(NULL);
+    ASSERT(IsZeroMemory(Context, sizeof (SYNC_CONTEXT)));
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++) {
-        PKDPC   Dpc = &SyncContext.Dpc[Index];
+    Context->Sequence++;
+    Context->CompletionCount = 0;
 
-        SyncContext.DisableInterrupts[Index] = FALSE;
-        SyncContext.Exit[Index] = FALSE;
+    Context->ProcessorCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
 
-        if (Index == Cpu)
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+        NTSTATUS        status;
+
+        ASSERT3U((ULONG_PTR)(Processor + 1), <, (ULONG_PTR)__Section + PAGE_SIZE);
+
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        if (ProcNumber.Group == Group &&
+            ProcNumber.Number == Number)
             continue;
 
-        KeInitializeDpc(Dpc, SyncWorker, NULL);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Index);
-        KeInsertQueueDpc(Dpc, NULL, NULL);
+        KeInitializeDpc(&Processor->Dpc, SyncWorker, NULL);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
+        KeInsertQueueDpc(&Processor->Dpc, NULL, NULL);
     }
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
 
-    Trace("<==== (%u)\n", Cpu);
+    Trace("<==== (%u:%u)\n", Group, Number);
 }
 
 __drv_requiresIRQL(DISPATCH_LEVEL)
@@ -278,26 +297,32 @@ SyncDisableInterrupts(
     VOID
     )
 {
-    ULONG       Index;
-    ULONG       Attempts;
-    NTSTATUS    status;
+    PSYNC_CONTEXT   Context = SyncContext;
+    LONG            Index;
+    ULONG           Attempts;
+    NTSTATUS        status;
 
     Trace("====>\n");
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.DisableInterrupts[Index] = TRUE;
+        Processor->DisableInterrupts = TRUE;
+    }
+
+    KeMemoryBarrier();
 
 again:
     (VOID) KfRaiseIrql(HIGH_LEVEL);
     status = STATUS_SUCCESS;
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
     Attempts = 0;
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
 
@@ -306,18 +331,18 @@ again:
             LONG    New;
 
             do {
-                Old = SyncContext.CompletionCount;
+                Old = Context->CompletionCount;
                 New = Old - 1;
 
-                if (Old == SyncContext.CpuCount)
+                if (Old == Context->ProcessorCount)
                     break;
-            } while (InterlockedCompareExchange(&SyncContext.CompletionCount, New, Old) != Old);
+            } while (InterlockedCompareExchange(&Context->CompletionCount, New, Old) != Old);
 
-            if (Old < SyncContext.CpuCount) {
+            if (Old < Context->ProcessorCount) {
                 LogPrintf(LOG_LEVEL_WARNING,
                           "SYNC: %d < %d\n",
                           Old,
-                          SyncContext.CpuCount);
+                          Context->ProcessorCount);
 
 #pragma prefast(suppress:28138) // Use constant rather than variable
                 KeLowerIrql(DISPATCH_LEVEL);
@@ -339,23 +364,29 @@ VOID
 SyncEnableInterrupts(
     )
 {
-    KIRQL   Irql;
-    ULONG   Index;
+    PSYNC_CONTEXT   Context = SyncContext;
+    KIRQL           Irql;
+    LONG            Index;
 
     _enable();
 
     Irql = KeGetCurrentIrql();
     ASSERT3U(Irql, ==, HIGH_LEVEL);
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+
+        Processor->DisableInterrupts = FALSE;
+    }
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.DisableInterrupts[Index] = FALSE;
+    KeMemoryBarrier();
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
@@ -373,28 +404,33 @@ SyncRelease(
     VOID
     )
 {
-    ULONG       Cpu;
-    ULONG       Index;
+    PSYNC_CONTEXT   Context = SyncContext;
+    LONG            Index;
 
     Trace("====>\n");
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+
+        Processor->Exit = TRUE;
+    }
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.Exit[Index] = TRUE;
+    KeMemoryBarrier();
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
 
-    RtlZeroMemory(&SyncContext, sizeof (SYNC_CONTEXT));
+    RtlZeroMemory(Context, sizeof (SYNC_CONTEXT));
 
-    Cpu = KeGetCurrentProcessorNumber();
-    __SyncRelease(Cpu);
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+    __SyncRelease(Index);
 
     Trace("<====\n");
 }
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 420e827..16ed6f7 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "registry.h"
@@ -775,6 +776,7 @@ DriverEntry(
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/vs2012/xen/xen.vcxproj b/vs2012/xen/xen.vcxproj
index 0d92eac..df966af 100644
--- a/vs2012/xen/xen.vcxproj
+++ b/vs2012/xen/xen.vcxproj
@@ -34,7 +34,7 @@
       <Inputs>..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -42,7 +42,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
diff --git a/vs2012/xenbus/xenbus.vcxproj b/vs2012/xenbus/xenbus.vcxproj
index 3319372..ab78a02 100644
--- a/vs2012/xenbus/xenbus.vcxproj
+++ b/vs2012/xenbus/xenbus.vcxproj
@@ -34,7 +34,7 @@
       <Inputs>..\..\src\xenbus.inf</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -42,7 +42,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2012/xenfilt/xenfilt.vcxproj b/vs2012/xenfilt/xenfilt.vcxproj
index 5dbb903..34efda4 100644
--- a/vs2012/xenfilt/xenfilt.vcxproj
+++ b/vs2012/xenfilt/xenfilt.vcxproj
@@ -26,7 +26,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -34,7 +34,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xen/xen.vcxproj b/vs2013/xen/xen.vcxproj
index a12f060..cd40452 100644
--- a/vs2013/xen/xen.vcxproj
+++ b/vs2013/xen/xen.vcxproj
@@ -34,7 +34,7 @@
       </CustomBuildStep>
     <ClCompile>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -45,7 +45,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
diff --git a/vs2013/xenbus/xenbus.vcxproj b/vs2013/xenbus/xenbus.vcxproj
index eb476a9..ca486c9 100644
--- a/vs2013/xenbus/xenbus.vcxproj
+++ b/vs2013/xenbus/xenbus.vcxproj
@@ -33,7 +33,7 @@
         <Inputs>..\..\src\xenbus.inf</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -45,7 +45,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xenfilt/xenfilt.vcxproj b/vs2013/xenfilt/xenfilt.vcxproj
index b7759a7..db4a437 100644
--- a/vs2013/xenfilt/xenfilt.vcxproj
+++ b/vs2013/xenfilt/xenfilt.vcxproj
@@ -25,7 +25,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -37,7 +37,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:31 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIM-0006lJ-U0; Thu, 19 Mar 2015 13:15:31 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIK-0006l3-OX
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:29 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
	C2/E2-04120-0FBCA055; Thu, 19 Mar 2015 13:15:28 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1426770924!9672034!1
X-Originating-IP: [74.125.82.174]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15786 invoked from network); 19 Mar 2015 13:15:24 -0000
Received: from mail-we0-f174.google.com (HELO mail-we0-f174.google.com)
	(74.125.82.174)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:24 -0000
Received: by wetk59 with SMTP id k59so56961255wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=hEn7CdqZXx17sCl0Fmtox7ooW9OPSkoXu0PIeutdgMM=;
	b=ynjRcO5HEWPA8r4xgQYSS2Xb99Wz7dleByhHqi19B1ZtlAhg2Pq2RYyN5w+Cp/ncDo
	KfGWyIb1fmx4zfNwelNU9hXv4XZXnLvnvIcOoH7nE+OhRcRx7unlr3pK8FFCakYcwwvq
	wOIbEE8CtXbL2QFJcQlm8XngaBdeXEyMqWk24y3csJ2Po8dnwX7qjSlalTDfCcl85tcq
	LlB+53xXg+DpIYwvXoTwi+Dl59v6Olak+RiyrMU78a34FCp13+JHOFlTp3VT9J5aCTCK
	ZgAHJwpcz1I/Il+NHRkkq4+uDtvz3wMuAS+HeBkfQOVLTpijtOQcML84+JVchj2xU37Q
	V6sA==
X-Received: by 10.194.93.165 with SMTP id cv5mr71995043wjb.24.1426770924063;
	Thu, 19 Mar 2015 06:15:24 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.23
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:23 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:21 +0000
Message-Id: <1426770921-14080-7-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 6/6] Make XEN,
	XENFILT and XENBUS processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCM multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/evtchn_interface.h      |  36 ++++-
 include/shared_info_interface.h |   4 +-
 include/xen.h                   |   1 +
 src/xen/driver.c                |   2 +
 src/xen/system.c                | 165 ++++++++++---------
 src/xenbus.inf                  |   1 +
 src/xenbus/cache.c              |  65 +++++---
 src/xenbus/driver.c             |   2 +
 src/xenbus/evtchn.c             | 342 ++++++++++++++++++++++++++--------------
 src/xenbus/evtchn_2l.c          |  21 ++-
 src/xenbus/evtchn_abi.h         |  30 ++--
 src/xenbus/evtchn_fifo.c        |  52 +++---
 src/xenbus/fdo.c                |  56 ++++---
 src/xenbus/fdo.h                |   3 +-
 src/xenbus/pdo.c                |  87 +---------
 src/xenbus/shared_info.c        |  31 ++--
 src/xenbus/sync.c               | 280 ++++++++++++++++++--------------
 src/xenfilt/driver.c            |   2 +
 vs2012/xen/xen.vcxproj          |   4 +-
 vs2012/xenbus/xenbus.vcxproj    |   4 +-
 vs2012/xenfilt/xenfilt.vcxproj  |   4 +-
 vs2013/xen/xen.vcxproj          |   4 +-
 vs2013/xenbus/xenbus.vcxproj    |   4 +-
 vs2013/xenfilt/xenfilt.vcxproj  |   4 +-
 24 files changed, 690 insertions(+), 514 deletions(-)

diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h
index 1bc456a..6f8fe42 100644
--- a/include/evtchn_interface.h
+++ b/include/evtchn_interface.h
@@ -112,18 +112,27 @@ typedef PXENBUS_EVTCHN_CHANNEL
     ...
     );
 
+typedef NTSTATUS
+(*XENBUS_EVTCHN_BIND_V2)(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    );
+
 /*! \typedef XENBUS_EVTCHN_BIND
     \brief Bind an event channel to a specific CPU
 
     \param Interface The interface header
     \param Channel The channel handle
-    \param Cpu The CPU that should handle events
+    \param Group The group number of the CPU that should handle events
+    \param Number The relative number of the CPU that should handle events
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_BIND)(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     );
 
 typedef BOOLEAN
@@ -225,7 +234,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V2 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
-    XENBUS_EVTCHN_BIND      EvtchnBind;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
     XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1;
     XENBUS_EVTCHN_SEND      EvtchnSend;
     XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
@@ -242,6 +251,23 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
+    XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
+    XENBUS_EVTCHN_SEND      EvtchnSend;
+    XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
+    XENBUS_EVTCHN_GET_PORT  EvtchnGetPort;
+    XENBUS_EVTCHN_CLOSE     EvtchnClose;
+};
+
+/*! \struct _XENBUS_EVTCHN_INTERFACE_V4
+    \brief EVTCHN interface version 4
+    \ingroup interfaces
+*/
+struct _XENBUS_EVTCHN_INTERFACE_V4 {
+    INTERFACE               Interface;
+    XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
+    XENBUS_EVTCHN_RELEASE   EvtchnRelease;
+    XENBUS_EVTCHN_OPEN      EvtchnOpen;
     XENBUS_EVTCHN_BIND      EvtchnBind;
     XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
     XENBUS_EVTCHN_SEND      EvtchnSend;
@@ -250,7 +276,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_CLOSE     EvtchnClose;
 };
 
-typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
+typedef struct _XENBUS_EVTCHN_INTERFACE_V4 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
 
 /*! \def XENBUS_EVTCHN
     \brief Macro at assist in method invocation
@@ -261,7 +287,7 @@ typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVT
 #endif  // _WINDLL
 
 #define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 1
-#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 3
+#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 4
 
 #endif  // _XENBUS_EVTCHN_INTERFACE_H
 
diff --git a/include/shared_info_interface.h b/include/shared_info_interface.h
index 0e5a0d7..287feab 100644
--- a/include/shared_info_interface.h
+++ b/include/shared_info_interface.h
@@ -66,7 +66,7 @@ typedef VOID
 typedef BOOLEAN
 (*XENBUS_SHARED_INFO_UPCALL_PENDING)(
     IN  PINTERFACE  Interface,
-    IN  ULONG       Cpu
+    IN  ULONG       Index
     );
 
 typedef BOOLEAN
@@ -81,7 +81,7 @@ typedef BOOLEAN
 typedef BOOLEAN
 (*XENBUS_SHARED_INFO_EVTCHN_POLL)(
     IN  PINTERFACE                  Interface,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_SHARED_INFO_EVENT    Event,
     IN  PVOID                       Argument
     );
diff --git a/include/xen.h b/include/xen.h
index 29e32f9..cf9c2d9 100644
--- a/include/xen.h
+++ b/include/xen.h
@@ -45,6 +45,7 @@
 #include <public/grant_table.h>
 #include <public/sched.h>
 #include <public/hvm/params.h>
+#include <public/hvm/hvm_info_table.h>
 
 // xs_wire.h gates the definition of the xsd_errors enumeration
 // on whether EINVAL is defined. Unfortunately EINVAL is actually
diff --git a/src/xen/driver.c b/src/xen/driver.c
index a319541..66a5e80 100644
--- a/src/xen/driver.c
+++ b/src/xen/driver.c
@@ -32,6 +32,7 @@
 #define XEN_API __declspec(dllexport)
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "hypercall.h"
@@ -126,6 +127,7 @@ DllInitialize(
     UNREFERENCED_PARAMETER(RegistryPath);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/src/xen/system.c b/src/xen/system.c
index b21efd8..a602d8b 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -32,6 +32,7 @@
 #define XEN_API __declspec(dllexport)
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -47,19 +48,19 @@
 
 #define XEN_SYSTEM_TAG  'TSYS'
 
-typedef struct _SYSTEM_CPU {
-    ULONG   Index;
+typedef struct _SYSTEM_PROCESSOR {
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
-} SYSTEM_CPU, *PSYSTEM_CPU;
+} SYSTEM_PROCESSOR, *PSYSTEM_PROCESSOR;
 
 typedef struct _SYSTEM_CONTEXT {
-    LONG        References;
-    PACPI_MADT  Madt;
-    PSYSTEM_CPU Cpu[MAXIMUM_PROCESSORS];
-    PVOID       PowerStateHandle;
-    PVOID       ProcessorChangeHandle;
+    LONG                References;
+    PACPI_MADT          Madt;
+    PSYSTEM_PROCESSOR   Processor;
+    ULONG               ProcessorCount;
+    PVOID               PowerStateHandle;
+    PVOID               ProcessorChangeHandle;
 } SYSTEM_CONTEXT, *PSYSTEM_CONTEXT;
 
 static SYSTEM_CONTEXT   SystemContext;
@@ -334,51 +335,51 @@ _IRQL_requires_min_(DISPATCH_LEVEL)
 _IRQL_requires_(DISPATCH_LEVEL)
 _IRQL_requires_same_
 VOID
-SystemCpuInformation(
-    IN  PKDPC       Dpc,
-    IN  PVOID       _Context,
-    IN  PVOID       Argument1,
-    IN  PVOID       Argument2
+SystemProcessorInformation(
+    IN  PKDPC           Dpc,
+    IN  PVOID           _Context,
+    IN  PVOID           Argument1,
+    IN  PVOID           Argument2
     )
 {
-    PSYSTEM_CONTEXT Context = &SystemContext;
-    PKEVENT         Event = _Context;
-    ULONG           Index;
-    PSYSTEM_CPU     Cpu;
-    ULONG           EBX;
-    ULONG           ECX;
-    ULONG           EDX;
+    PSYSTEM_CONTEXT     Context = &SystemContext;
+    PKEVENT             Event = _Context;
+    ULONG               Index;
+    PROCESSOR_NUMBER    ProcNumber;
+    PSYSTEM_PROCESSOR   Processor;
+    ULONG               EBX;
+    ULONG               ECX;
+    ULONG               EDX;
 
     UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
-    Index = KeGetCurrentProcessorNumber();
-    Cpu = Context->Cpu[Index];
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    ASSERT3U(Index, <, Context->ProcessorCount);
 
-    ASSERT(Cpu != NULL);
-    ASSERT3U(Cpu->Index, ==, Index);
+    Processor = &Context->Processor[Index];
 
-    Info("====> (%u)\n", Index);
+    Info("====> (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
 
     __CpuId(0, NULL, &EBX, &ECX, &EDX);
 
-    RtlCopyMemory(&Cpu->Manufacturer[0], &EBX, sizeof (ULONG));
-    RtlCopyMemory(&Cpu->Manufacturer[4], &EDX, sizeof (ULONG));
-    RtlCopyMemory(&Cpu->Manufacturer[8], &ECX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[0], &EBX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[4], &EDX, sizeof (ULONG));
+    RtlCopyMemory(&Processor->Manufacturer[8], &ECX, sizeof (ULONG));
 
     __CpuId(1, NULL, &EBX, NULL, NULL);
 
-    Cpu->ApicID = EBX >> 24;
-    Cpu->ProcessorID = SystemApicIDToProcessorID(Cpu->ApicID);
+    Processor->ApicID = EBX >> 24;
+    Processor->ProcessorID = SystemApicIDToProcessorID(Processor->ApicID);
 
-    Info("Manufacturer: %s\n", Cpu->Manufacturer);
-    Info("APIC ID: %02X\n", Cpu->ApicID);
-    Info("PROCESSOR ID: %02X\n", Cpu->ProcessorID);
+    Info("Manufacturer: %s\n", Processor->Manufacturer);
+    Info("APIC ID: %02X\n", Processor->ApicID);
+    Info("PROCESSOR ID: %02X\n", Processor->ProcessorID);
 
     KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
 
-    Info("<==== (%u)\n", Index);
+    Info("<==== (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
 }
 
 static
@@ -391,42 +392,62 @@ SystemProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT                             Context = &SystemContext;
+    PROCESSOR_NUMBER                            ProcNumber;
     ULONG                                       Index;
+    NTSTATUS                                    status;
 
     UNREFERENCED_PARAMETER(Argument);
 
     Index = Change->NtNumber;
-    Trace("====> (%u:%s)\n", Index, ProcessorChangeName(Change->State));
+
+    status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
+
+    Trace("====> (%u:%u:%s)\n",
+          ProcNumber.Group,
+          ProcNumber.Number,
+          ProcessorChangeName(Change->State));
 
     switch (Change->State) {
     case KeProcessorAddStartNotify: {
-        PSYSTEM_CPU Cpu;
+        PSYSTEM_PROCESSOR   Processor;
+        ULONG               ProcessorCount;
+
+        if (Index < Context->ProcessorCount)
+            break;
 
-        Cpu = __SystemAllocate(sizeof (SYSTEM_CPU));
+        ProcessorCount = Index + 1;
+        Processor = __SystemAllocate(sizeof (SYSTEM_PROCESSOR) *
+                                     ProcessorCount);
 
-        if (Cpu == NULL) {
+        if (Processor == NULL) {
             *Status = STATUS_NO_MEMORY;
             break;
         }
 
-        Cpu->Index = Index;
-        ASSERT3P(Context->Cpu[Index], ==, NULL);
-        Context->Cpu[Index] = Cpu;
+        if (Context->ProcessorCount != 0) {
+            RtlCopyMemory(Processor,
+                          Context->Processor,
+                          sizeof (SYSTEM_PROCESSOR) *
+                          Context->ProcessorCount);
+            __SystemFree(Context->Processor);
+        }
+
+        Context->Processor = Processor;
+        Context->ProcessorCount = ProcessorCount;
         break;
     }
     case KeProcessorAddCompleteNotify: {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-        KEVENT      Event;
-        KDPC        Dpc;
+        KEVENT              Event;
+        KDPC                Dpc;
 
-        ASSERT(Cpu != NULL);
-        ASSERT3U(Cpu->Index, ==, Index);
+        ASSERT3U(Index, <, Context->ProcessorCount);
 
         KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeDpc(&Dpc, SystemCpuInformation, &Event);
+        KeInitializeDpc(&Dpc, SystemProcessorInformation, &Event);
         KeSetImportanceDpc(&Dpc, HighImportance);
-        KeSetTargetProcessorDpc(&Dpc, (CCHAR)Index);
+        KeSetTargetProcessorDpcEx(&Dpc, &ProcNumber);
 
         KeInsertQueueDpc(&Dpc, NULL, NULL);
 
@@ -437,20 +458,15 @@ SystemProcessorChangeCallback(
                                      NULL);
         break;
     }
-    case KeProcessorAddFailureNotify: {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-
-        ASSERT(Cpu != NULL);
-        ASSERT3U(Cpu->Index, ==, Index);
-
-        Context->Cpu[Index] = NULL;
-        __SystemFree(Cpu);
-
+    default:
+        ASSERT(FALSE);
         break;
     }
-    }
 
-    Trace("<==== (%u:%s)\n", Index, ProcessorChangeName(Change->State));
+    Trace("<==== (%u:%u:%s)\n",
+          ProcNumber.Group,
+          ProcNumber.Number,
+          ProcessorChangeName(Change->State));
 }
 
 static NTSTATUS
@@ -459,16 +475,19 @@ SystemRegisterProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
+    PVOID           Handle;
     NTSTATUS        status;
 
-    Context->ProcessorChangeHandle = KeRegisterProcessorChangeCallback(SystemProcessorChangeCallback,
-                                                                       NULL,
-                                                                       KE_PROCESSOR_CHANGE_ADD_EXISTING);
+    Handle = KeRegisterProcessorChangeCallback(SystemProcessorChangeCallback,
+                                               NULL,
+                                               KE_PROCESSOR_CHANGE_ADD_EXISTING);
 
     status = STATUS_UNSUCCESSFUL;
-    if (Context->ProcessorChangeHandle == NULL)
+    if (Handle == NULL)
         goto fail1;
 
+    Context->ProcessorChangeHandle = Handle;
+
     return STATUS_SUCCESS;
 
 fail1:
@@ -483,22 +502,12 @@ SystemDeregisterProcessorChangeCallback(
     )
 {
     PSYSTEM_CONTEXT Context = &SystemContext;
-    ULONG           Index;
 
     KeDeregisterProcessorChangeCallback(Context->ProcessorChangeHandle);
     Context->ProcessorChangeHandle = NULL;
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; Index++) {
-        PSYSTEM_CPU Cpu = Context->Cpu[Index];
-
-        if (Cpu == NULL)
-            continue;
-
-        Context->Cpu[Index] = NULL;
-        __SystemFree(Cpu);
-    }
-
-    ASSERT(IsZeroMemory(Context->Cpu, sizeof (SYSTEM_CPU) * MAXIMUM_PROCESSORS));
+    __SystemFree(Context->Processor);
+    Context->ProcessorCount = 0;
 }
 
 static NTSTATUS
@@ -732,11 +741,11 @@ SystemVirtualCpuIndex(
     )
 {
     PSYSTEM_CONTEXT     Context = &SystemContext;
-    PSYSTEM_CPU         Cpu = Context->Cpu[Index];
+    PSYSTEM_PROCESSOR   Processor = &Context->Processor[Index];
 
-    ASSERT(Cpu != NULL);
+    ASSERT3U(Index, <, Context->ProcessorCount);
 
-    return Cpu->ProcessorID;
+    return Processor->ProcessorID;
 }
 
 VOID
diff --git a/src/xenbus.inf b/src/xenbus.inf
index 5377fd0..90dcf64 100644
--- a/src/xenbus.inf
+++ b/src/xenbus.inf
@@ -96,6 +96,7 @@ HKR,"Interfaces",,0x00000010
 HKR,"Interrupt Management",,0x00000010
 HKR,"Interrupt Management\MessageSignaledInterruptProperties",,0x00000010
 HKR,"Interrupt Management\MessageSignaledInterruptProperties","MSISupported",0x00010001,1
+HKR,"Interrupt Management\GroupPolicy",0x00010001,1
 
 [XenFilt_Service] 
 DisplayName=%XenFiltDesc%
diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 3620f88..ba7dcdf 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 
@@ -79,8 +80,9 @@ struct _XENBUS_CACHE {
     PVOID                   Argument;
     LIST_ENTRY              GetList;
     PLIST_ENTRY             PutList;
-    LONG                    Count;
-    XENBUS_CACHE_MAGAZINE   Magazine[MAXIMUM_PROCESSORS];
+    LONG                    ObjectCount;
+    PXENBUS_CACHE_MAGAZINE  Magazine;
+    ULONG                   MagazineCount;
     XENBUS_CACHE_FIST       FIST;
 };
 
@@ -223,7 +225,7 @@ CacheGetObjectFromList(
     KIRQL                       Irql = PASSIVE_LEVEL;
     NTSTATUS                    status;
 
-    Count = InterlockedDecrement(&Cache->Count);
+    Count = InterlockedDecrement(&Cache->ObjectCount);
 
     status = STATUS_NO_MEMORY;
     if (Count < 0)
@@ -253,7 +255,7 @@ CacheGetObjectFromList(
     return Object;
 
 fail1:
-    (VOID) InterlockedIncrement(&Cache->Count);
+    (VOID) InterlockedIncrement(&Cache->ObjectCount);
 
     return NULL;    
 }
@@ -292,19 +294,18 @@ CachePutObjectToList(
 
     KeMemoryBarrier();
 
-    (VOID) InterlockedIncrement(&Cache->Count);
+    (VOID) InterlockedIncrement(&Cache->ObjectCount);
 }
 
 static PVOID
 CacheGetObjectFromMagazine(
     IN  PXENBUS_CACHE       Cache,
-    IN  ULONG               Cpu
+    IN  ULONG               Index
     )
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
-    ULONG                   Index;
 
-    Magazine = &Cache->Magazine[Cpu];
+    Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
         PVOID   Object;
@@ -323,14 +324,13 @@ CacheGetObjectFromMagazine(
 static BOOLEAN
 CachePutObjectToMagazine(
     IN  PXENBUS_CACHE       Cache,
-    IN  ULONG               Cpu,
+    IN  ULONG               Index,
     IN  PVOID               Object
     )
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
-    ULONG                   Index;
 
-    Magazine = &Cache->Magazine[Cpu];
+    Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
         if (Magazine->Slot[Index] == NULL) {
@@ -350,7 +350,7 @@ CacheGet(
     )
 {
     KIRQL               Irql;
-    ULONG               Cpu;
+    ULONG               Index;
     PVOID               Object;
 
     UNREFERENCED_PARAMETER(Interface);
@@ -370,9 +370,9 @@ CacheGet(
     }
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
-    Object = CacheGetObjectFromMagazine(Cache, Cpu);
+    Object = CacheGetObjectFromMagazine(Cache, Index);
     if (Object != NULL)
         goto done;
 
@@ -397,14 +397,14 @@ CachePut(
     )
 {
     KIRQL               Irql;
-    ULONG               Cpu;
+    ULONG               Index;
 
     UNREFERENCED_PARAMETER(Interface);
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
-    if (CachePutObjectToMagazine(Cache, Cpu, Object))
+    if (CachePutObjectToMagazine(Cache, Index, Object))
         goto done;
 
     CachePutObjectToList(Cache, Object, Locked);
@@ -418,12 +418,12 @@ CacheFlushMagazines(
     IN  PXENBUS_CACHE   Cache
     )
 {
-    ULONG               Cpu;
+    ULONG               Index;
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
+    for (Index = 0; Index < Cache->MagazineCount; Index++) {
         PVOID   Object;
 
-        while ((Object = CacheGetObjectFromMagazine(Cache, Cpu)) != NULL)
+        while ((Object = CacheGetObjectFromMagazine(Cache, Index)) != NULL)
             CachePutObjectToList(Cache, Object, TRUE);
     }
 }
@@ -609,6 +609,13 @@ CacheCreate(
     if (!NT_SUCCESS(status))
         goto fail4;
 
+    (*Cache)->MagazineCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    (*Cache)->Magazine = __CacheAllocate(sizeof (XENBUS_CACHE_MAGAZINE) * (*Cache)->MagazineCount);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Cache)->Magazine == NULL)
+        goto fail5;
+
     (*Cache)->Reservation = Reservation;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
@@ -619,6 +626,11 @@ CacheCreate(
 
     return STATUS_SUCCESS;
 
+fail5:
+    Error("fail5\n");
+
+    (*Cache)->MagazineCount = 0;
+
 fail4:
     Error("fail4\n");
 
@@ -669,9 +681,14 @@ CacheDestroy(
 
     Cache->Reservation = 0;
     CacheFlushMagazines(Cache);
-    CacheSpill(Cache, Cache->Count);
+    CacheSpill(Cache, Cache->ObjectCount);
+
+    ASSERT3U(Cache->ObjectCount, ==, 0);
 
-    ASSERT3U(Cache->Count, ==, 0);
+    ASSERT(IsZeroMemory(Cache->Magazine, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
+    __CacheFree(Cache->Magazine);
+    Cache->Magazine = NULL;
+    Cache->MagazineCount = 0;
 
     RtlZeroMemory(&Cache->GetList, sizeof (LIST_ENTRY));
 
@@ -720,7 +737,7 @@ CacheDebugCallback(
                          &Context->DebugInterface,
                          "- %s: Count = %d (Reservation = %d)\n",
                          Cache->Name,
-                         Cache->Count,
+                         Cache->ObjectCount,
                          Cache->Reservation);
         }
     }
@@ -776,7 +793,7 @@ CacheMonitor(
 
             Cache = CONTAINING_RECORD(ListEntry, XENBUS_CACHE, ListEntry);
 
-            Count = Cache->Count;
+            Count = Cache->ObjectCount;
 
             if (Count < Cache->Reservation)
                 CacheFill(Cache, Cache->Reservation - Count);
diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c
index e74d369..a1115a4 100644
--- a/src/xenbus/driver.c
+++ b/src/xenbus/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 
 #include "registry.h"
@@ -500,6 +501,7 @@ DriverEntry(
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index f44c3cf..889179c 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -84,17 +85,24 @@ struct _XENBUS_EVTCHN_CHANNEL {
     XENBUS_EVTCHN_PARAMETERS    Parameters;
     BOOLEAN                     Mask;
     ULONG                       LocalPort;
-    ULONG                       Cpu;
+    PROCESSOR_NUMBER            ProcNumber;
     BOOLEAN                     Closed;
 };
 
+typedef struct _XENBUS_EVTCHN_PROCESSOR {
+    PXENBUS_INTERRUPT   Interrupt;
+    LIST_ENTRY          PendingList;
+    KDPC                Dpc;
+    BOOLEAN             UpcallEnabled;
+} XENBUS_EVTCHN_PROCESSOR, *PXENBUS_EVTCHN_PROCESSOR;
+
 struct _XENBUS_EVTCHN_CONTEXT {
     PXENBUS_FDO                     Fdo;
     KSPIN_LOCK                      Lock;
     LONG                            References;
-    PXENBUS_INTERRUPT               LevelSensitiveInterrupt;
-    PXENBUS_INTERRUPT               LatchedInterrupt[MAXIMUM_PROCESSORS];
-    KAFFINITY                       Affinity;
+    PXENBUS_INTERRUPT               Interrupt;
+    PXENBUS_EVTCHN_PROCESSOR        Processor;
+    ULONG                           ProcessorCount;
     XENBUS_SUSPEND_INTERFACE        SuspendInterface;
     PXENBUS_SUSPEND_CALLBACK        SuspendCallbackEarly;
     PXENBUS_SUSPEND_CALLBACK        SuspendCallbackLate;
@@ -107,8 +115,6 @@ struct _XENBUS_EVTCHN_CONTEXT {
     BOOLEAN                         UseEvtchnFifoAbi;
     PXENBUS_HASH_TABLE              Table;
     LIST_ENTRY                      List;
-    LIST_ENTRY                      PendingList[MAXIMUM_PROCESSORS];
-    KDPC                            Dpc[MAXIMUM_PROCESSORS];
 };
 
 #define XENBUS_EVTCHN_TAG  'CTVE'
@@ -402,7 +408,7 @@ EvtchnReap(
     RemoveEntryList(&Channel->ListEntry);
     RtlZeroMemory(&Channel->ListEntry, sizeof (LIST_ENTRY));
 
-    Channel->Cpu = 0;
+    RtlZeroMemory(&Channel->ProcNumber, sizeof (PROCESSOR_NUMBER));
 
     ASSERT(IsListEmpty(&Channel->PendingListEntry));
     RtlZeroMemory(&Channel->PendingListEntry, sizeof (LIST_ENTRY));
@@ -428,18 +434,22 @@ EvtchnReap(
 
 static BOOLEAN
 EvtchnPollCallback(
-    IN  PVOID               Argument,
-    IN  ULONG               LocalPort
+    IN  PVOID                   Argument,
+    IN  ULONG                   LocalPort
     )
 {
-    PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    ULONG                   Cpu;
-    PXENBUS_EVTCHN_CHANNEL  Channel;
-    BOOLEAN                 Pending;
-    NTSTATUS                status;
+    PXENBUS_EVTCHN_CONTEXT      Context = Argument;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
+    PXENBUS_EVTCHN_CHANNEL      Channel;
+    BOOLEAN                     Pending;
+    NTSTATUS                    status;
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
 
     status = HashTableLookup(Context->Table,
                              LocalPort,
@@ -452,7 +462,7 @@ EvtchnPollCallback(
     Pending = !IsListEmpty(&Channel->PendingListEntry);
 
     if (!Pending)
-        InsertTailList(&Context->PendingList[Cpu],
+        InsertTailList(&Processor->PendingList,
                        &Channel->PendingListEntry);
 
 done:
@@ -462,23 +472,27 @@ done:
 static BOOLEAN
 EvtchnPoll(
     IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    IN  ULONG                   Cpu,
+    IN  ULONG                   Index,
     IN  PLIST_ENTRY             List
     )
 {
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     BOOLEAN                     DoneSomething;
     PLIST_ENTRY                 ListEntry;
 
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
     (VOID) XENBUS_EVTCHN_ABI(Poll,
                              &Context->EvtchnAbi,
-                             Cpu,
+                             Index,
                              EvtchnPollCallback,
                              Context);
 
     DoneSomething = FALSE;
 
-    ListEntry = Context->PendingList[Cpu].Flink;
-    while (ListEntry != &Context->PendingList[Cpu]) {
+    ListEntry = Processor->PendingList.Flink;
+    while (ListEntry != &Processor->PendingList) {
         PLIST_ENTRY             Next = ListEntry->Flink;
         PXENBUS_EVTCHN_CHANNEL  Channel;
 
@@ -518,23 +532,25 @@ EvtchnPoll(
 static VOID
 EvtchnFlush(
     IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    IN  ULONG                   Cpu
+    IN  ULONG                   Index
     )
 {
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     LIST_ENTRY                  List;
     PXENBUS_INTERRUPT           Interrupt;
     KIRQL                       Irql;
 
-    Interrupt = (Context->Affinity != 0) ? // Latched available
-                Context->LatchedInterrupt[Cpu] :
-                Context->LevelSensitiveInterrupt;
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
+    Interrupt = (Processor->UpcallEnabled) ?
+                Processor->Interrupt :
+                Context->Interrupt;
 
     InitializeListHead(&List);
 
     Irql = FdoAcquireInterruptLock(Context->Fdo, Interrupt);
-
-    (VOID) EvtchnPoll(Context, Cpu, &List);
-
+    (VOID) EvtchnPoll(Context, Index, &List);
     FdoReleaseInterruptLock(Context->Fdo, Interrupt, Irql);
 
     while (!IsListEmpty(&List)) {
@@ -571,21 +587,21 @@ EvtchnDpc(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = _Context;
-    ULONG                   Cpu;
+    ULONG                   Index;
 
     UNREFERENCED_PARAMETER(Dpc);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
     KeAcquireSpinLockAtDpcLevel(&Context->Lock);
 
     if (Context->References == 0)
         goto done;
 
-    EvtchnFlush(Context, Cpu);
+    EvtchnFlush(Context, Index);
 
 done:
     KeReleaseSpinLockFromDpcLevel(&Context->Lock);
@@ -598,28 +614,34 @@ EvtchnTrigger(
     )
 {
     PXENBUS_EVTCHN_CONTEXT      Context = Interface->Context;
-    PKDPC                       Dpc;
     KIRQL                       Irql;
-    ULONG                       Cpu;
+    PROCESSOR_NUMBER            ProcNumber;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     PXENBUS_INTERRUPT           Interrupt;
     BOOLEAN                     Pending;
 
     ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
 
     KeAcquireSpinLock(&Channel->Lock, &Irql);
-    Cpu = Channel->Cpu;
+    ProcNumber = Channel->ProcNumber;
     KeReleaseSpinLock(&Channel->Lock, Irql);
 
-    Interrupt = (Context->Affinity != 0) ? // Latched available
-                Context->LatchedInterrupt[Cpu] :
-                Context->LevelSensitiveInterrupt;
+    Index = KeGetProcessorIndexFromNumber(&ProcNumber);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
+    Interrupt = (Processor->UpcallEnabled) ?
+                Processor->Interrupt :
+                Context->Interrupt;
 
     Irql = FdoAcquireInterruptLock(Context->Fdo, Interrupt);
 
     Pending = !IsListEmpty(&Channel->PendingListEntry);
 
     if (!Pending)
-        InsertTailList(&Context->PendingList[Cpu],
+        InsertTailList(&Processor->PendingList,
                        &Channel->PendingListEntry);
 
     FdoReleaseInterruptLock(Context->Fdo, Interrupt, Irql);
@@ -627,18 +649,21 @@ EvtchnTrigger(
     if (Pending)
         return;
 
-    Dpc = &Context->Dpc[Cpu];
-    KeInsertQueueDpc(Dpc, NULL, NULL);
+    KeInsertQueueDpc(&Processor->Dpc, NULL, NULL);
 }
 
 static NTSTATUS
 EvtchnBind(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     )
 {
     PXENBUS_EVTCHN_CONTEXT      Context = Interface->Context;
+    PROCESSOR_NUMBER            ProcNumber;
+    ULONG                       Index;
+    PXENBUS_EVTCHN_PROCESSOR    Processor;
     ULONG                       LocalPort;
     unsigned int                vcpu_id;
     KIRQL                       Irql;
@@ -646,8 +671,16 @@ EvtchnBind(
 
     ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC);
 
+    ProcNumber.Group = Group;
+    ProcNumber.Number = Number;
+
+    Index = KeGetProcessorIndexFromNumber(&ProcNumber);
+
+    ASSERT3U(Index, <, Context->ProcessorCount);
+    Processor = &Context->Processor[Index];
+
     status = STATUS_NOT_SUPPORTED;
-    if (~Context->Affinity & ((KAFFINITY)1 << Cpu))
+    if (!Processor->UpcallEnabled)
         goto fail1;
 
     KeAcquireSpinLock(&Channel->Lock, &Irql);
@@ -655,19 +688,20 @@ EvtchnBind(
     if (!Channel->Active)
         goto done;
 
-    if (Channel->Cpu == Cpu)
+    if (Channel->ProcNumber.Group == Group &&
+        Channel->ProcNumber.Number == Number)
         goto done;
 
     LocalPort = Channel->LocalPort;
-    vcpu_id = SystemVirtualCpuIndex(Cpu);
+    vcpu_id = SystemVirtualCpuIndex(Index);
 
     status = EventChannelBindVirtualCpu(LocalPort, vcpu_id);
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    Channel->Cpu = Cpu;
+    Channel->ProcNumber = ProcNumber;
 
-    Info("[%u]: CPU %u\n", LocalPort, Cpu);
+    Info("[%u]: CPU %u:%u\n", LocalPort, Group, Number);
 
 done:
     KeReleaseSpinLock(&Channel->Lock, Irql);
@@ -685,6 +719,18 @@ fail1:
     return status;
 }
 
+static NTSTATUS
+EvtchnBindVersion2(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    )
+{
+    ASSERT3U(Cpu, <, MAXIMUM_PROCESSORS);
+
+    return EvtchnBind(Interface, Channel, 0, (CHAR)Cpu);
+}
+
 static VOID
 EvtchnUnmask(
     IN  PINTERFACE              Interface,
@@ -842,27 +888,26 @@ EvtchnInterruptCallback(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    ULONG                   Cpu;
+    ULONG                   Index;
     BOOLEAN                 DoneSomething;
 
     UNREFERENCED_PARAMETER(InterruptObject);
 
     ASSERT3U(KeGetCurrentIrql(), >=, DISPATCH_LEVEL);
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
 
     DoneSomething = FALSE;
     while (XENBUS_SHARED_INFO(UpcallPending,
                               &Context->SharedInfoInterface,
-                              Cpu))
-        DoneSomething |= EvtchnPoll(Context, Cpu, NULL);
+                              Index))
+        DoneSomething |= EvtchnPoll(Context, Index, NULL);
 
     return DoneSomething;
 }
 
 static NTSTATUS
 EvtchnAbiAcquire(
-    IN  PXENBUS_EVTCHN_CONTEXT  Context,
-    OUT PKAFFINITY              Affinity
+    IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
     NTSTATUS                    status;
@@ -872,8 +917,7 @@ EvtchnAbiAcquire(
                          &Context->EvtchnAbi);
 
         status = XENBUS_EVTCHN_ABI(Acquire,
-                                   &Context->EvtchnAbi,
-                                   Affinity);
+                                   &Context->EvtchnAbi);
         if (!NT_SUCCESS(status))
             goto use_two_level;
 
@@ -886,8 +930,7 @@ use_two_level:
                          &Context->EvtchnAbi);
 
     status = XENBUS_EVTCHN_ABI(Acquire,
-                               &Context->EvtchnAbi,
-                               Affinity);
+                               &Context->EvtchnAbi);
     if (!NT_SUCCESS(status))
         goto fail1;
 
@@ -917,32 +960,38 @@ EvtchnInterruptEnable(
     IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
-    LONG                        Cpu;
+    ULONG                       Index;
     ULONG                       Line;
     NTSTATUS                    status;
 
     Trace("====>\n");
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        unsigned int    vcpu_id;
-        UCHAR           Vector;
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+        unsigned int                vcpu_id;
+        UCHAR                       Vector;
+
+        Processor = &Context->Processor[Index];
 
-        if (Context->LatchedInterrupt[Cpu] == NULL)
+        if (Processor->Interrupt == NULL)
             continue;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
-        Vector = FdoGetInterruptVector(Context->Fdo,
-                                       Context->LatchedInterrupt[Cpu]);
+        vcpu_id = SystemVirtualCpuIndex(Index);
+        Vector = FdoGetInterruptVector(Context->Fdo, Processor->Interrupt);
 
         status = HvmSetEvtchnUpcallVector(vcpu_id, Vector);
         if (NT_SUCCESS(status)) {
-            Info("CPU %u\n", Cpu);
-            Context->Affinity |= (KAFFINITY)1 << Cpu;
+            PROCESSOR_NUMBER    ProcNumber;
+
+            status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+            ASSERT(NT_SUCCESS(status));
+
+            Info("CPU %u:%u\n", ProcNumber.Group, ProcNumber.Number);
+            Processor->UpcallEnabled = TRUE;
         }
     }
 
-    Line = FdoGetInterruptLine(Context->Fdo,
-                               Context->LevelSensitiveInterrupt);
+    Line = FdoGetInterruptLine(Context->Fdo, Context->Interrupt);
 
     status = HvmSetParam(HVM_PARAM_CALLBACK_IRQ, Line);
     ASSERT(NT_SUCCESS(status));
@@ -955,7 +1004,7 @@ EvtchnInterruptDisable(
     IN  PXENBUS_EVTCHN_CONTEXT  Context
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
     NTSTATUS                    status;
 
     UNREFERENCED_PARAMETER(Context);
@@ -965,20 +1014,21 @@ EvtchnInterruptDisable(
     status = HvmSetParam(HVM_PARAM_CALLBACK_IRQ, 0);
     ASSERT(NT_SUCCESS(status));
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        unsigned int    vcpu_id;
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+        unsigned int                vcpu_id;
+
+        Processor = &Context->Processor[Index];
 
-        if (~Context->Affinity & (KAFFINITY)1 << Cpu)
+        if (!Processor->UpcallEnabled)
             continue;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
 
         (VOID) HvmSetEvtchnUpcallVector(vcpu_id, 0);
-        Context->Affinity &= ~((KAFFINITY)1 << Cpu);
+        Processor->UpcallEnabled = FALSE;
     }
 
-    ASSERT3U(Context->Affinity, ==, 0);
-
     Trace("<====\n");
 }
 
@@ -1019,17 +1069,13 @@ EvtchnSuspendCallbackLate(
     )
 {
     PXENBUS_EVTCHN_CONTEXT  Context = Argument;
-    KAFFINITY               Affinity;
     NTSTATUS                status;
 
     EvtchnAbiRelease(Context);
 
-    status = EvtchnAbiAcquire(Context, &Affinity);
+    status = EvtchnAbiAcquire(Context);
     ASSERT(NT_SUCCESS(status));
 
-    // Affinity must be a superset of Context->Affinity
-    ASSERT3U(Affinity & Context->Affinity, ==, Context->Affinity);
-
     EvtchnInterruptDisable(Context);
     EvtchnInterruptEnable(Context);
 }
@@ -1127,8 +1173,8 @@ EvtchnAcquire(
     PXENBUS_EVTCHN_CONTEXT  Context = Interface->Context;
     PXENBUS_FDO             Fdo = Context->Fdo;
     KIRQL                   Irql;
-    ULONG                   Cpu;
-    KAFFINITY               Affinity;
+    PROCESSOR_NUMBER        ProcNumber;
+    ULONG                   Index;
     NTSTATUS                status;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
@@ -1177,29 +1223,56 @@ EvtchnAcquire(
     if (!NT_SUCCESS(status))
         goto fail6;
 
-    status = EvtchnAbiAcquire(Context, &Affinity);
+    status = EvtchnAbiAcquire(Context);
     if (!NT_SUCCESS(status))
         goto fail7;
 
-    Context->LevelSensitiveInterrupt = FdoAllocateInterrupt(Fdo,
-                                                            LevelSensitive,
-                                                            0,
-                                                            EvtchnInterruptCallback,
-                                                            Context);
+    status = KeGetProcessorNumberFromIndex(0, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
+
+    Context->Interrupt = FdoAllocateInterrupt(Fdo,
+                                              LevelSensitive,
+                                              ProcNumber.Group,
+                                              ProcNumber.Number,
+                                              EvtchnInterruptCallback,
+                                              Context);
 
     status = STATUS_UNSUCCESSFUL;
-    if (Context->LevelSensitiveInterrupt == NULL)
+    if (Context->Interrupt == NULL)
         goto fail8;
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        if (~Affinity & (KAFFINITY)1 << Cpu)
+    Context->ProcessorCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    Context->Processor = __EvtchnAllocate(sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount);
+
+    status = STATUS_NO_MEMORY;
+    if (Context->Processor == NULL)
+        goto fail9;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR    Processor;
+
+        if (!XENBUS_EVTCHN_ABI(IsProcessorEnabled,
+                               &Context->EvtchnAbi,
+                               Index))
             continue;
 
-        Context->LatchedInterrupt[Cpu] = FdoAllocateInterrupt(Fdo,
-                                                              Latched,
-                                                              Cpu,
-                                                              EvtchnInterruptCallback,
-                                                              Context);
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        Processor = &Context->Processor[Index];
+
+        Processor->Interrupt = FdoAllocateInterrupt(Fdo,
+                                                    Latched,
+                                                    ProcNumber.Group,
+                                                    ProcNumber.Number,
+                                                    EvtchnInterruptCallback,
+                                                    Context);
+        ASSERT(Processor->Interrupt != NULL);
+
+        InitializeListHead(&Processor->PendingList);
+
+        KeInitializeDpc(&Processor->Dpc, EvtchnDpc, Context);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
     }
 
     EvtchnInterruptEnable(Context);
@@ -1211,6 +1284,11 @@ done:
 
     return STATUS_SUCCESS;
 
+fail9:
+    Error("fail9\n");
+
+    Context->ProcessorCount = 0;
+
 fail8:
     Error("fail8\n");
 
@@ -1273,7 +1351,7 @@ EvtchnRelease(
     PXENBUS_EVTCHN_CONTEXT  Context = Interface->Context;
     PXENBUS_FDO             Fdo = Context->Fdo;
     KIRQL                   Irql;
-    ULONG                   Cpu;
+    ULONG                   Index;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
 
@@ -1284,18 +1362,30 @@ EvtchnRelease(
 
     EvtchnInterruptDisable(Context);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        if (Context->LatchedInterrupt[Cpu] == NULL)
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PXENBUS_EVTCHN_PROCESSOR Processor;
+
+        ASSERT(Context->Processor != NULL);
+        Processor = &Context->Processor[Index];
+
+        if (Processor->Interrupt == NULL)
             continue;
 
-        EvtchnFlush(Context, Cpu);
+        EvtchnFlush(Context, Index);
+
+        RtlZeroMemory(&Processor->Dpc, sizeof (KDPC));
+        RtlZeroMemory(&Processor->PendingList, sizeof (LIST_ENTRY));
 
-        FdoFreeInterrupt(Fdo, Context->LatchedInterrupt[Cpu]);
-        Context->LatchedInterrupt[Cpu] = NULL;
+        FdoFreeInterrupt(Fdo, Processor->Interrupt);
+        Processor->Interrupt = NULL;
     }
 
-    FdoFreeInterrupt(Fdo, Context->LevelSensitiveInterrupt);
-    Context->LevelSensitiveInterrupt = NULL;
+    ASSERT(IsZeroMemory(Context->Processor, sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount));
+    __EvtchnFree(Context->Processor);
+    Context->ProcessorCount = 0;
+
+    FdoFreeInterrupt(Fdo, Context->Interrupt);
+    Context->Interrupt = NULL;
 
     if (!IsListEmpty(&Context->List))
         BUG("OUTSTANDING EVENT CHANNELS");
@@ -1346,7 +1436,7 @@ static struct _XENBUS_EVTCHN_INTERFACE_V2 EvtchnInterfaceVersion2 = {
     EvtchnAcquire,
     EvtchnRelease,
     EvtchnOpen,
-    EvtchnBind,
+    EvtchnBindVersion2,
     EvtchnUnmaskVersion1,
     EvtchnSend,
     EvtchnTrigger,
@@ -1359,6 +1449,19 @@ static struct _XENBUS_EVTCHN_INTERFACE_V3 EvtchnInterfaceVersion3 = {
     EvtchnAcquire,
     EvtchnRelease,
     EvtchnOpen,
+    EvtchnBindVersion2,
+    EvtchnUnmask,
+    EvtchnSend,
+    EvtchnTrigger,
+    EvtchnGetPort,
+    EvtchnClose
+};
+
+static struct _XENBUS_EVTCHN_INTERFACE_V4 EvtchnInterfaceVersion4 = {
+    { sizeof (struct _XENBUS_EVTCHN_INTERFACE_V4), 4, NULL, NULL, NULL },
+    EvtchnAcquire,
+    EvtchnRelease,
+    EvtchnOpen,
     EvtchnBind,
     EvtchnUnmask,
     EvtchnSend,
@@ -1375,7 +1478,6 @@ EvtchnInitialize(
 {
     HANDLE                      ParametersKey;
     ULONG                       UseEvtchnFifoAbi;
-    ULONG                       Cpu;
     NTSTATUS                    status;
 
     Trace("====>\n");
@@ -1433,15 +1535,6 @@ EvtchnInitialize(
     InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        PKDPC   Dpc = &(*Context)->Dpc[Cpu];
-
-        InitializeListHead(&(*Context)->PendingList[Cpu]);
-
-        KeInitializeDpc(Dpc, EvtchnDpc, *Context);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Cpu);
-    }
-
     (*Context)->Fdo = Fdo;
 
     Trace("<====\n");
@@ -1536,6 +1629,23 @@ EvtchnGetInterface(
         status = STATUS_SUCCESS;
         break;
     }
+    case 4: {
+        struct _XENBUS_EVTCHN_INTERFACE_V4  *EvtchnInterface;
+
+        EvtchnInterface = (struct _XENBUS_EVTCHN_INTERFACE_V4 *)Interface;
+
+        status = STATUS_BUFFER_OVERFLOW;
+        if (Size < sizeof (struct _XENBUS_EVTCHN_INTERFACE_V4))
+            break;
+
+        *EvtchnInterface = EvtchnInterfaceVersion4;
+
+        ASSERT3U(Interface->Version, ==, Version);
+        Interface->Context = Context;
+
+        status = STATUS_SUCCESS;
+        break;
+    }
     default:
         status = STATUS_NOT_SUPPORTED;
         break;
@@ -1556,10 +1666,8 @@ EvtchnTeardown(
 
     Context->Fdo = NULL;
 
-    RtlZeroMemory(&Context->Dpc, sizeof (KDPC) * MAXIMUM_PROCESSORS);
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
     RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
-    RtlZeroMemory(&Context->PendingList, sizeof (LIST_ENTRY) * MAXIMUM_PROCESSORS);
 
     RtlZeroMemory(&Context->SharedInfoInterface,
                   sizeof (XENBUS_SHARED_INFO_INTERFACE));
diff --git a/src/xenbus/evtchn_2l.c b/src/xenbus/evtchn_2l.c
index fde520f..249543d 100644
--- a/src/xenbus/evtchn_2l.c
+++ b/src/xenbus/evtchn_2l.c
@@ -66,9 +66,20 @@ __EvtchnTwoLevelFree(
 }
 
 static BOOLEAN
+EvtchnTwoLevelIsProcessorEnabled(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
+    IN  ULONG                           Index
+    )
+{
+    UNREFERENCED_PARAMETER(_Context);
+
+    return (SystemVirtualCpuIndex(Index) == 0) ? TRUE : FALSE;
+}
+
+static BOOLEAN
 EvtchnTwoLevelPoll(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
-    IN  ULONG                           Cpu,
+    IN  ULONG                           Index,
     IN  XENBUS_EVTCHN_ABI_EVENT         Event,
     IN  PVOID                           Argument
     )
@@ -77,7 +88,7 @@ EvtchnTwoLevelPoll(
 
     return XENBUS_SHARED_INFO(EvtchnPoll,
                               &Context->SharedInfoInterface,
-                              Cpu,
+                              Index,
                               Event,
                               Argument);
 }
@@ -148,8 +159,7 @@ EvtchnTwoLevelPortUnmask(
 
 static NTSTATUS
 EvtchnTwoLevelAcquire(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context,
-    OUT PKAFFINITY                      Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT      _Context
     )
 {
     PXENBUS_EVTCHN_TWO_LEVEL_CONTEXT    Context = (PVOID)_Context;
@@ -167,8 +177,6 @@ EvtchnTwoLevelAcquire(
     if (!NT_SUCCESS(status))
         goto fail1;
 
-    *Affinity = (KAFFINITY)1;
-
     Trace("<====\n");
 
 done:
@@ -215,6 +223,7 @@ static XENBUS_EVTCHN_ABI EvtchnAbiTwoLevel = {
     NULL,
     EvtchnTwoLevelAcquire,
     EvtchnTwoLevelRelease,
+    EvtchnTwoLevelIsProcessorEnabled,
     EvtchnTwoLevelPoll,
     EvtchnTwoLevelPortEnable,
     EvtchnTwoLevelPortDisable,
diff --git a/src/xenbus/evtchn_abi.h b/src/xenbus/evtchn_abi.h
index 2e1bf43..404f85a 100644
--- a/src/xenbus/evtchn_abi.h
+++ b/src/xenbus/evtchn_abi.h
@@ -39,8 +39,7 @@ typedef PVOID *PXENBUS_EVTCHN_ABI_CONTEXT;
 
 typedef NTSTATUS
 (*XENBUS_EVTCHN_ABI_ACQUIRE)(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
-    OUT PKAFFINITY                  Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context
     );
 
 typedef VOID
@@ -49,6 +48,12 @@ typedef VOID
     );
 
 typedef BOOLEAN
+(*XENBUS_EVTCHN_ABI_IS_PROCESSOR_ENABLED)(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
+    IN  ULONG                       Index
+    );
+
+typedef BOOLEAN
 (*XENBUS_EVTCHN_ABI_EVENT)(
     IN  PVOID   Argument,
     IN  ULONG   Port
@@ -57,7 +62,7 @@ typedef BOOLEAN
 typedef BOOLEAN
 (*XENBUS_EVTCHN_ABI_POLL)(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT  Context,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_EVTCHN_ABI_EVENT     Event,
     IN  PVOID                       Argument
     );
@@ -93,15 +98,16 @@ typedef BOOLEAN
     );
 
 typedef struct _XENBUS_EVTCHN_ABI {
-    PXENBUS_EVTCHN_ABI_CONTEXT      Context;
-    XENBUS_EVTCHN_ABI_ACQUIRE       EvtchnAbiAcquire;
-    XENBUS_EVTCHN_ABI_RELEASE       EvtchnAbiRelease;
-    XENBUS_EVTCHN_ABI_POLL          EvtchnAbiPoll;
-    XENBUS_EVTCHN_ABI_PORT_ENABLE   EvtchnAbiPortEnable;
-    XENBUS_EVTCHN_ABI_PORT_DISABLE  EvtchnAbiPortDisable;
-    XENBUS_EVTCHN_ABI_PORT_ACK      EvtchnAbiPortAck;
-    XENBUS_EVTCHN_ABI_PORT_MASK     EvtchnAbiPortMask;
-    XENBUS_EVTCHN_ABI_PORT_UNMASK   EvtchnAbiPortUnmask;
+    PXENBUS_EVTCHN_ABI_CONTEXT              Context;
+    XENBUS_EVTCHN_ABI_ACQUIRE               EvtchnAbiAcquire;
+    XENBUS_EVTCHN_ABI_RELEASE               EvtchnAbiRelease;
+    XENBUS_EVTCHN_ABI_IS_PROCESSOR_ENABLED  EvtchnAbiIsProcessorEnabled;
+    XENBUS_EVTCHN_ABI_POLL                  EvtchnAbiPoll;
+    XENBUS_EVTCHN_ABI_PORT_ENABLE           EvtchnAbiPortEnable;
+    XENBUS_EVTCHN_ABI_PORT_DISABLE          EvtchnAbiPortDisable;
+    XENBUS_EVTCHN_ABI_PORT_ACK              EvtchnAbiPortAck;
+    XENBUS_EVTCHN_ABI_PORT_MASK             EvtchnAbiPortMask;
+    XENBUS_EVTCHN_ABI_PORT_UNMASK           EvtchnAbiPortUnmask;
 } XENBUS_EVTCHN_ABI, *PXENBUS_EVTCHN_ABI;
 
 #define XENBUS_EVTCHN_ABI(_Method, _Abi, ...)   \
diff --git a/src/xenbus/evtchn_fifo.c b/src/xenbus/evtchn_fifo.c
index 4268809..5996b82 100644
--- a/src/xenbus/evtchn_fifo.c
+++ b/src/xenbus/evtchn_fifo.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -40,16 +41,14 @@
 #include "assert.h"
 #include "util.h"
 
-#define MAX_HVM_VCPUS   128
-
 typedef struct _XENBUS_EVTCHN_FIFO_CONTEXT {
     PXENBUS_FDO                     Fdo;
     KSPIN_LOCK                      Lock;
     LONG                            References;
-    PMDL                            ControlBlockMdl[MAX_HVM_VCPUS];
+    PMDL                            ControlBlockMdl[HVM_MAX_VCPUS];
     PMDL                            *EventPageMdl;
     ULONG                           EventPageCount;
-    ULONG                           Head[MAX_HVM_VCPUS][EVTCHN_FIFO_MAX_QUEUES];
+    ULONG                           Head[HVM_MAX_VCPUS][EVTCHN_FIFO_MAX_QUEUES];
 } XENBUS_EVTCHN_FIFO_CONTEXT, *PXENBUS_EVTCHN_FIFO_CONTEXT;
 
 #define EVENT_WORDS_PER_PAGE    (PAGE_SIZE / sizeof (event_word_t))
@@ -280,6 +279,18 @@ EvtchnFifoContract(
 }
 
 static BOOLEAN
+EvtchnFifoIsProcessorEnabled(
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
+    IN  ULONG                       Index
+    )
+{
+    PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
+    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Index);
+
+    return (Context->ControlBlockMdl[vcpu_id] != NULL) ? TRUE : FALSE;
+}
+
+static BOOLEAN
 EvtchnFifoPollPriority(
     IN  PXENBUS_EVTCHN_FIFO_CONTEXT Context,
     IN  unsigned int                vcpu_id,
@@ -331,13 +342,13 @@ EvtchnFifoPollPriority(
 static BOOLEAN
 EvtchnFifoPoll(
     IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_EVTCHN_ABI_EVENT     Event,
     IN  PVOID                       Argument
     )
 {
     PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
-    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Cpu);
+    unsigned int                    vcpu_id = SystemVirtualCpuIndex(Index);
     PMDL                            Mdl;
     evtchn_fifo_control_block_t     *ControlBlock;
     ULONG                           Ready;
@@ -346,11 +357,14 @@ EvtchnFifoPoll(
 
     Mdl = Context->ControlBlockMdl[vcpu_id];
 
+    DoneSomething = FALSE;
+    if (Mdl == NULL)
+        goto done;
+
     ControlBlock = MmGetSystemAddressForMdlSafe(Mdl, NormalPagePriority);
     ASSERT(ControlBlock != NULL);
 
     Ready = InterlockedExchange((LONG *)&ControlBlock->ready, 0);
-    DoneSomething = FALSE;
 
     while (_BitScanReverse(&Priority, Ready)) {
         DoneSomething |= EvtchnFifoPollPriority(Context,
@@ -362,6 +376,7 @@ EvtchnFifoPoll(
         Ready |= InterlockedExchange((LONG *)&ControlBlock->ready, 0);
     }
 
+done:
     return DoneSomething;
 }
 
@@ -502,13 +517,12 @@ EvtchnFifoReset(
 
 static NTSTATUS
 EvtchnFifoAcquire(
-    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context,
-    OUT PKAFFINITY                  Affinity
+    IN  PXENBUS_EVTCHN_ABI_CONTEXT  _Context
     )
 {
     PXENBUS_EVTCHN_FIFO_CONTEXT     Context = (PVOID)_Context;
     KIRQL                           Irql;
-    LONG                            Cpu;
+    LONG                            Index;
     PMDL                            Mdl;
     NTSTATUS                        status;
 
@@ -519,10 +533,8 @@ EvtchnFifoAcquire(
 
     Trace("====>\n");
 
-    *Affinity = 0;
-    Cpu = 0;
-
-    while (Cpu < (LONG)KeQueryActiveProcessorCount(NULL)) {
+    Index = 0;
+    while (Index < (LONG)KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS)) {
         unsigned int        vcpu_id;
         PFN_NUMBER          Pfn;
         PHYSICAL_ADDRESS    Address;
@@ -533,7 +545,7 @@ EvtchnFifoAcquire(
         if (Mdl == NULL)
             goto fail1;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
         Pfn = MmGetMdlPfnArray(Mdl)[0];
 
         status = EventChannelInitControl(Pfn, vcpu_id);
@@ -550,8 +562,7 @@ EvtchnFifoAcquire(
 
         Context->ControlBlockMdl[vcpu_id] = Mdl;
 
-        *Affinity |= (KAFFINITY)1 << Cpu;
-        Cpu++;
+        Index++;
     }
 
     Trace("<====\n");
@@ -569,10 +580,10 @@ fail1:
 
     (VOID) EventChannelReset();
 
-    while (--Cpu >= 0) {
+    while (--Index >= 0) {
         unsigned int    vcpu_id;
 
-        vcpu_id = SystemVirtualCpuIndex(Cpu);
+        vcpu_id = SystemVirtualCpuIndex(Index);
 
         Mdl = Context->ControlBlockMdl[vcpu_id];
         Context->ControlBlockMdl[vcpu_id] = NULL;
@@ -607,7 +618,7 @@ EvtchnFifoRelease(
 
     EvtchnFifoContract(Context);
 
-    vcpu_id = MAX_HVM_VCPUS;
+    vcpu_id = HVM_MAX_VCPUS;
     while (--vcpu_id >= 0) {
         PMDL            Mdl;
 
@@ -630,6 +641,7 @@ static XENBUS_EVTCHN_ABI EvtchnAbiFifo = {
     NULL,
     EvtchnFifoAcquire,
     EvtchnFifoRelease,
+    EvtchnFifoIsProcessorEnabled,
     EvtchnFifoPoll,
     EvtchnFifoPortEnable,
     EvtchnFifoPortDisable,
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index b30c4bc..8d8b125 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -32,6 +32,7 @@
 #define INITGUID 1
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
@@ -70,7 +71,7 @@ struct _XENBUS_INTERRUPT {
     LIST_ENTRY          ListEntry;
     KINTERRUPT_MODE     InterruptMode;
     PKINTERRUPT         InterruptObject;
-    ULONG               Cpu;
+    PROCESSOR_NUMBER    ProcNumber;
     UCHAR               Vector;
     ULONG               Line;
     PKSERVICE_ROUTINE   Callback;
@@ -1205,12 +1206,15 @@ FdoSuspend(
     )
 {
     PXENBUS_FDO         Fdo = Context;
+    GROUP_AFFINITY      Affinity;
     PKEVENT             Event;
 
     Info("====>\n");
 
     // We really want to know what CPU this thread will run on
-    KeSetSystemAffinityThread((KAFFINITY)1);
+    Affinity.Group = 0;
+    Affinity.Mask = (KAFFINITY)1;
+    KeSetSystemGroupAffinityThread(&Affinity, NULL);
 
     Event = ThreadGetEvent(Self);
 
@@ -1521,7 +1525,7 @@ FdoDumpIoResourceDescriptor(
     else if (Descriptor->Option == (IO_RESOURCE_ALTERNATIVE | IO_RESOURCE_PREFERRED))
         Trace("Preferred Alternative\n");
 
-    Trace("ShareDisposition=%s Flags=%04x\n",
+    Trace("ShareDisposition = %s Flags = %04x\n",
           ResourceDescriptorShareDispositionName(Descriptor->ShareDisposition),
           Descriptor->Flags);
 
@@ -1537,11 +1541,12 @@ FdoDumpIoResourceDescriptor(
         break;
 
     case CmResourceTypeInterrupt:
-        Trace("MinimumVector=%08x MaximumVector=%08x AffinityPolicy=%s PriorityPolicy=%s TargettedProcessors = %p\n",
+        Trace("MinimumVector = %08x MaximumVector = %08x AffinityPolicy = %s PriorityPolicy = %s Group = %u TargettedProcessors = %p\n",
               Descriptor->u.Interrupt.MinimumVector,
               Descriptor->u.Interrupt.MaximumVector,
               IrqDevicePolicyName(Descriptor->u.Interrupt.AffinityPolicy),
               IrqPriorityName(Descriptor->u.Interrupt.PriorityPolicy),
+              Descriptor->u.Interrupt.Group,
               (PVOID)Descriptor->u.Interrupt.TargetedProcessors);
         break;
 
@@ -1594,7 +1599,7 @@ FdoFilterResourceRequirements(
     Old = (PIO_RESOURCE_REQUIREMENTS_LIST)Irp->IoStatus.Information;
     ASSERT3U(Old->AlternativeLists, ==, 1);
 
-    Count = KeQueryActiveProcessorCount(NULL);
+    Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
 
     Size = Old->ListSize +
         (sizeof (IO_RESOURCE_DESCRIPTOR) * Count);
@@ -1618,6 +1623,7 @@ FdoFilterResourceRequirements(
 
         Descriptor->Flags |= CM_RESOURCE_INTERRUPT_POLICY_INCLUDED;
         Descriptor->u.Interrupt.AffinityPolicy = IrqPolicySpecifiedProcessors;
+        Descriptor->u.Interrupt.Group = 0;
         Descriptor->u.Interrupt.TargetedProcessors = (KAFFINITY)1;
     }
 
@@ -1635,7 +1641,13 @@ FdoFilterResourceRequirements(
     Interrupt.u.Interrupt.PriorityPolicy = IrqPriorityUndefined;
 
     for (Index = 0; Index < Count; Index++) {
-        Interrupt.u.Interrupt.TargetedProcessors = (KAFFINITY)1 << Index;
+        PROCESSOR_NUMBER    ProcNumber;
+
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        Interrupt.u.Interrupt.Group = ProcNumber.Group;
+        Interrupt.u.Interrupt.TargetedProcessors = (KAFFINITY)1 << ProcNumber.Number;
         List->Descriptors[List->Count++] = Interrupt;
     }
 
@@ -1825,7 +1837,7 @@ FdoConnectInterrupt(
 {
     IO_CONNECT_INTERRUPT_PARAMETERS     Connect;
     BOOLEAN                             Found;
-    ULONG                               Cpu;
+    ULONG                               Number;
     NTSTATUS                            status;
 
     Trace("====>\n");
@@ -1845,7 +1857,7 @@ FdoConnectInterrupt(
         (*Interrupt)->Line = Raw->u.Interrupt.Vector;
 
     RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
-    Connect.Version = CONNECT_FULLY_SPECIFIED;
+    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
     Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
     Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
     Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
@@ -1857,11 +1869,13 @@ FdoConnectInterrupt(
         Connect.FullySpecified.Vector = Translated->u.MessageInterrupt.Translated.Vector;
         Connect.FullySpecified.Irql = (KIRQL)Translated->u.MessageInterrupt.Translated.Level;
         Connect.FullySpecified.SynchronizeIrql = (KIRQL)Translated->u.MessageInterrupt.Translated.Level;
+        Connect.FullySpecified.Group = Translated->u.MessageInterrupt.Translated.Group;
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.MessageInterrupt.Translated.Affinity;
     } else {
         Connect.FullySpecified.Vector = Translated->u.Interrupt.Vector;
         Connect.FullySpecified.Irql = (KIRQL)Translated->u.Interrupt.Level;
         Connect.FullySpecified.SynchronizeIrql = (KIRQL)Translated->u.Interrupt.Level;
+        Connect.FullySpecified.Group = Translated->u.Interrupt.Group;
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
     }
 
@@ -1871,22 +1885,25 @@ FdoConnectInterrupt(
 
     (*Interrupt)->Vector = (UCHAR)Connect.FullySpecified.Vector;
 
+    (*Interrupt)->ProcNumber.Group = Connect.FullySpecified.Group;
+
 #if defined(__i386__)
-    Found = _BitScanReverse(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse(&Number, Connect.FullySpecified.ProcessorEnableMask);
 #elif defined(__x86_64__)
-    Found = _BitScanReverse64(&Cpu, Connect.FullySpecified.ProcessorEnableMask);
+    Found = _BitScanReverse64(&Number, Connect.FullySpecified.ProcessorEnableMask);
 #else
 #error 'Unrecognised architecture'
 #endif
     ASSERT(Found);
 
-    (*Interrupt)->Cpu = Cpu;
+    (*Interrupt)->ProcNumber.Number = (UCHAR)Number;
 
-    Info("%p: %s %s CPU %u VECTOR %02x\n",
+    Info("%p: %s %s CPU %u:%u VECTOR %02x\n",
          (*Interrupt)->InterruptObject,
          ResourceDescriptorShareDispositionName(Translated->ShareDisposition),
          InterruptModeName((*Interrupt)->InterruptMode),
-         (*Interrupt)->Cpu,
+         (*Interrupt)->ProcNumber.Group,
+         (*Interrupt)->ProcNumber.Number,
          (*Interrupt)->Vector);
 
     Trace("<====\n");
@@ -1917,12 +1934,13 @@ FdoDisconnectInterrupt(
 
     Trace("====>\n");
 
-    Info("%p: CPU %u VECTOR %02x\n",
+    Info("%p: CPU %u:%u VECTOR %02x\n",
          Interrupt->InterruptObject,
-         Interrupt->Cpu,
+         Interrupt->ProcNumber.Group,
+         Interrupt->ProcNumber.Number,
          Interrupt->Vector);
 
-    Interrupt->Cpu = 0;
+    RtlZeroMemory(&Interrupt->ProcNumber, sizeof (PROCESSOR_NUMBER));
     Interrupt->Vector = 0;
 
     RtlZeroMemory(&Disconnect, sizeof (IO_DISCONNECT_INTERRUPT_PARAMETERS));
@@ -1994,7 +2012,8 @@ PXENBUS_INTERRUPT
 FdoAllocateInterrupt(
     IN  PXENBUS_FDO         Fdo,
     IN  KINTERRUPT_MODE     InterruptMode,
-    IN  ULONG               Cpu,
+    IN  USHORT              Group,
+    IN  UCHAR               Number,
     IN  KSERVICE_ROUTINE    Callback,
     IN  PVOID               Argument OPTIONAL
     )
@@ -2010,7 +2029,8 @@ FdoAllocateInterrupt(
 
         if (Interrupt->Callback == NULL &&
             Interrupt->InterruptMode == InterruptMode &&
-            Interrupt->Cpu == Cpu)
+            Interrupt->ProcNumber.Group == Group &&
+            Interrupt->ProcNumber.Number == Number)
             goto found;
     }
 
diff --git a/src/xenbus/fdo.h b/src/xenbus/fdo.h
index a07b55f..4b99ba0 100644
--- a/src/xenbus/fdo.h
+++ b/src/xenbus/fdo.h
@@ -169,7 +169,8 @@ extern PXENBUS_INTERRUPT
 FdoAllocateInterrupt(
     IN  PXENBUS_FDO         Fdo,
     IN  KINTERRUPT_MODE     InterruptMode,
-    IN  ULONG               Cpu,
+    IN  USHORT              Group,
+    IN  UCHAR               Number,
     IN  KSERVICE_ROUTINE    Callback,
     IN  PVOID               Argument OPTIONAL
     );
diff --git a/src/xenbus/pdo.c b/src/xenbus/pdo.c
index 58eeadd..7eb967c 100644
--- a/src/xenbus/pdo.c
+++ b/src/xenbus/pdo.c
@@ -821,100 +821,14 @@ PdoS3ToS4(
     Trace("(%s) <====\n", __PdoGetName(Pdo));
 }
 
-static VOID
-PdoParseResources(
-    IN  PXENBUS_PDO             Pdo,
-    IN  PCM_RESOURCE_LIST       RawResourceList,
-    IN  PCM_RESOURCE_LIST       TranslatedResourceList
-    )
-{
-    PCM_PARTIAL_RESOURCE_LIST   RawPartialList;
-    PCM_PARTIAL_RESOURCE_LIST   TranslatedPartialList;
-    ULONG                       Index;
-
-    UNREFERENCED_PARAMETER(Pdo);
-
-    ASSERT3U(RawResourceList->Count, ==, 1);
-    RawPartialList = &RawResourceList->List[0].PartialResourceList;
-
-    ASSERT3U(RawPartialList->Version, ==, 1);
-    ASSERT3U(RawPartialList->Revision, ==, 1);
-
-    ASSERT3U(TranslatedResourceList->Count, ==, 1);
-    TranslatedPartialList = &TranslatedResourceList->List[0].PartialResourceList;
-
-    ASSERT3U(TranslatedPartialList->Version, ==, 1);
-    ASSERT3U(TranslatedPartialList->Revision, ==, 1);
-
-    for (Index = 0; Index < TranslatedPartialList->Count; Index++) {
-        PCM_PARTIAL_RESOURCE_DESCRIPTOR RawPartialDescriptor;
-        PCM_PARTIAL_RESOURCE_DESCRIPTOR TranslatedPartialDescriptor;
-
-        RawPartialDescriptor = &RawPartialList->PartialDescriptors[Index];
-        TranslatedPartialDescriptor = &TranslatedPartialList->PartialDescriptors[Index];
-
-        Trace("%s: [%d] %02x:%s\n",
-              __PdoGetName(Pdo),
-              Index,
-              TranslatedPartialDescriptor->Type,
-              ResourceDescriptorTypeName(TranslatedPartialDescriptor->Type));
-
-        switch (TranslatedPartialDescriptor->Type) {
-        case CmResourceTypeMemory:
-            Trace("RAW: SharedDisposition=%02x Flags=%04x Start = %08x.%08x Length = %08x\n",
-                  RawPartialDescriptor->ShareDisposition,
-                  RawPartialDescriptor->Flags,
-                  RawPartialDescriptor->u.Memory.Start.HighPart,
-                  RawPartialDescriptor->u.Memory.Start.LowPart,
-                  RawPartialDescriptor->u.Memory.Length);
-
-            Trace("TRANSLATED: SharedDisposition=%02x Flags=%04x Start = %08x.%08x Length = %08x\n",
-                  TranslatedPartialDescriptor->ShareDisposition,
-                  TranslatedPartialDescriptor->Flags,
-                  TranslatedPartialDescriptor->u.Memory.Start.HighPart,
-                  TranslatedPartialDescriptor->u.Memory.Start.LowPart,
-                  TranslatedPartialDescriptor->u.Memory.Length);
-            break;
-
-        case CmResourceTypeInterrupt:
-            Trace("RAW: SharedDisposition=%02x Flags=%04x Level = %08x Vector = %08x Affinity = %p\n",
-                  RawPartialDescriptor->ShareDisposition,
-                  RawPartialDescriptor->Flags,
-                  RawPartialDescriptor->u.Interrupt.Level,
-                  RawPartialDescriptor->u.Interrupt.Vector,
-                  (PVOID)RawPartialDescriptor->u.Interrupt.Affinity);
-
-            Trace("TRANSLATED: SharedDisposition=%02x Flags=%04x Level = %08x Vector = %08x Affinity = %p\n",
-                  TranslatedPartialDescriptor->ShareDisposition,
-                  TranslatedPartialDescriptor->Flags,
-                  TranslatedPartialDescriptor->u.Interrupt.Level,
-                  TranslatedPartialDescriptor->u.Interrupt.Vector,
-                  (PVOID)TranslatedPartialDescriptor->u.Interrupt.Affinity);
-            break;
-
-        default:
-            break;
-        }
-    }
-
-    Trace("<====\n");
-}
-
 static NTSTATUS
 PdoStartDevice(
     IN  PXENBUS_PDO     Pdo,
     IN  PIRP            Irp
     )
 {
-    PIO_STACK_LOCATION  StackLocation;
     NTSTATUS            status;
 
-    StackLocation = IoGetCurrentIrpStackLocation(Irp);
-
-    PdoParseResources(Pdo,
-                      StackLocation->Parameters.StartDevice.AllocatedResources,
-                      StackLocation->Parameters.StartDevice.AllocatedResourcesTranslated);
-
     PdoD3ToD0(Pdo);
 
     __PdoSetDevicePnpState(Pdo, Started);
@@ -1375,6 +1289,7 @@ PdoQueryResourceRequirements(
     Interrupt.u.Interrupt.MaximumVector = (ULONG)-1;
     Interrupt.u.Interrupt.AffinityPolicy = IrqPolicyOneCloseProcessor;
     Interrupt.u.Interrupt.PriorityPolicy = IrqPriorityUndefined;
+    Interrupt.u.Interrupt.Group = ALL_PROCESSOR_GROUPS;
 
     Size = sizeof (IO_RESOURCE_DESCRIPTOR) * 2;
     Size += FIELD_OFFSET(IO_RESOURCE_LIST, Descriptors);
diff --git a/src/xenbus/shared_info.c b/src/xenbus/shared_info.c
index 09d035a..1b71ba1 100644
--- a/src/xenbus/shared_info.c
+++ b/src/xenbus/shared_info.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "shared_info.h"
@@ -155,12 +156,12 @@ SharedInfoEvtchnMaskAll(
 static BOOLEAN
 SharedInfoUpcallPending(
     IN  PINTERFACE              Interface,
-    IN  ULONG                   Cpu
+    IN  ULONG                   Index
     )
 {
     PXENBUS_SHARED_INFO_CONTEXT Context = Interface->Context;
     shared_info_t               *Shared = Context->Shared;
-    int                         vcpu_id = SystemVirtualCpuIndex(Cpu);
+    int                         vcpu_id = SystemVirtualCpuIndex(Index);
     UCHAR                       Pending;
 
     KeMemoryBarrier();
@@ -173,14 +174,14 @@ SharedInfoUpcallPending(
 static BOOLEAN
 SharedInfoEvtchnPoll(
     IN  PINTERFACE                  Interface,
-    IN  ULONG                       Cpu,
+    IN  ULONG                       Index,
     IN  XENBUS_SHARED_INFO_EVENT    Event,
     IN  PVOID                       Argument OPTIONAL
     )
 {
     PXENBUS_SHARED_INFO_CONTEXT     Context = Interface->Context;
     shared_info_t                   *Shared = Context->Shared;
-    int                             vcpu_id = SystemVirtualCpuIndex(Cpu);
+    int                             vcpu_id = SystemVirtualCpuIndex(Index);
     ULONG                           Port;
     ULONG_PTR                       SelectorMask;
     BOOLEAN                         DoneSomething;
@@ -457,28 +458,36 @@ SharedInfoDebugCallback(
 
     if (!Crashing) {
         shared_info_t   *Shared;
-        ULONG           Cpu;
+        ULONG           Index;
         ULONG           Selector;
 
         Shared = Context->Shared;
 
         KeMemoryBarrier();
 
-        for (Cpu = 0; Cpu < KeQueryActiveProcessorCount(NULL); Cpu++) {
-            int vcpu_id = SystemVirtualCpuIndex(Cpu);
+        for (Index = 0;
+             Index < KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+             Index++) {
+            PROCESSOR_NUMBER    ProcNumber;
+            int                 vcpu_id;
+
+            (VOID) KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+            vcpu_id = SystemVirtualCpuIndex(Index);
 
             XENBUS_DEBUG(Printf,
                          &Context->DebugInterface,
-                         "CPU %u: PENDING: %s\n",
-                         Cpu,
+                         "CPU %u:%u: PENDING: %s\n",
+                         ProcNumber.Group,
+                         ProcNumber.Number,
                          Shared->vcpu_info[vcpu_id].evtchn_upcall_pending ?
                          "TRUE" :
                          "FALSE");
 
             XENBUS_DEBUG(Printf,
                          &Context->DebugInterface,
-                         "CPU %u: SELECTOR MASK: %p\n",
-                         Cpu,
+                         "CPU %u:u: SELECTOR MASK: %p\n",
+                         ProcNumber.Group,
+                         ProcNumber.Number,
                          (PVOID)Shared->vcpu_info[vcpu_id].evtchn_pending_sel);
         }
 
diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index d4af525..835b46b 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <stdarg.h>
 #include <xen.h>
 
@@ -39,80 +40,83 @@
 #include "util.h"
 
 // Routines to capture all CPUs in a spinning state with interrupts
-// disabled (so that we remain in a known code context) and optionally
-// execute a function on each CPU.
+// disabled (so that we remain in a known code context).
 // These routines are used for suspend/resume and live snapshot.
 
 // The general sequence of steps is follows:
 //
-// - SyncCaptureAndCall() is called on an arbitrary CPU
+// - SyncCapture() is called on an arbitrary CPU. It must be called at
+//   DISPATCH_LEVEL so it cannot be pre-empted and moved to another CPU.
+//   It schedules a DPC on each of the other CPUs and spins until all
+//   CPUs are executing the DPC, which will in-turn spin awaiting
+//   further instruction.
 //
-// - It raises to DISPATCH_LEVEL to avoid pre-emption and schedules
-//   a DPC on each of the other CPUs.
+// - SyncDisableInterrputs() instructs the DPC routines to all raise
+//   to HIGH_LEVEL and disable interrupts for its CPU. It then raises
+//   to HIGH_LEVEL itself, spins waiting for confirmation from each
+//   DPC that it has disabled interrupts and then disables interrupts
+//   itself.
 //
-// - It, and the DPC routines, all raise to HIGH_LEVEL, clear a
-//   a bit corresponding to their CPU in a 'captured' mask, and then
-//   spin waiting for the mask to become zero (i.e. all CPUs captured).
+//   NOTE: There is a back-off in trying to disable interrupts. It is
+//         possible that CPU A is waiting for an IPI to CPU B to
+//         complete, but CPU B is spinning with interrupts disabled.
+//         Thus the DPC on CPU A will never make it to HIGH_LEVEL and
+//         hence never get to disable interrupts. Thus if, while
+//         spinning with interrupts disabled, one DPC notices that
+//         another DPC has not made it, it briefly enables interrupts
+//         and drops back down to DISPATCH_LEVEL before trying again.
+//         This should allow any pending IPI to complete.
 //
-//   NOTE: There is a back-off in this spin. It is possible that CPU A
-//         is waiting for an IPI to CPU B to complete, but CPU B is
-//         spinning at HIGH_LEVEL. Thus CPU A will never make it to
-//         HIGH_LEVEL. Thus if, while spinning at HIGH_LEVEL, we notice
-//         that another CPU has not made it, we set our bit in the
-//         'captured' mask again and briefly drop down to DISPATCH_LEVEL
-//         before trying again. This should allow any pending IPI to
-//         complete.
+// - SyncEnableInterrupts() instructs the DPC routines to all enable
+//   interrupts and drop back to DISPATCH_LEVEL before enabling
+//   interrupts and dropping back to DISPATCH_LEVEL itself.
 //
-// - Once all CPUs are captured, each disables interrupts, executes an
-//   optional function. All the DPC routined clear a bit corresponding
-//   to their CPU in a 'completed' mask and then spin waiting for the
-//   mask to become zero. The requesting CPU also executes the optional
-//   function bit it then waits for the mask to only contain the bit
-//   corresponding to its CPU and then returns from
-//   SyncCaptureAndCall() at HIGH_LEVEL.
-//
-// - A subsequent call to SyncRelease() will clear the last
-//   remaining bit (clearly it is necessarily executed on the same CPU
-//   as SyncCaptureAndCall()) and thus allow all the DPC
-//   routines to lower back to DISPATCH_LEVEL and complete.
-//
-// - SyncRelease() also lowers back to DISPATCH_LEVEL and then
-//   back to the IRQL is was originally entered at.
+// - SyncRelease() instructs the DPC routines to exit, thus allowing
+//   the scheduler to run on the other CPUs again. It spins until all
+//   DPCs have completed and then returns.
+
+#pragma data_seg("sync")
+__declspec(allocate("sync"))
+static UCHAR        __Section[PAGE_SIZE];
+
+typedef struct  _SYNC_PROCESSOR {
+    KDPC                Dpc;
+    BOOLEAN             DisableInterrupts;
+    BOOLEAN             Exit;
+} SYNC_PROCESSOR, *PSYNC_PROCESSOR;
 
 typedef struct  _SYNC_CONTEXT {
-    KDPC                Dpc[MAXIMUM_PROCESSORS];
     ULONG               Sequence;
-    LONG                CpuCount;
+    LONG                ProcessorCount;
     LONG                CompletionCount;
-    BOOLEAN             DisableInterrupts[MAXIMUM_PROCESSORS];
-    BOOLEAN             Exit[MAXIMUM_PROCESSORS];
+    SYNC_PROCESSOR      Processor[1];
 } SYNC_CONTEXT, *PSYNC_CONTEXT;
 
-static LONG SyncOwner = MAXIMUM_PROCESSORS;
+static PSYNC_CONTEXT    SyncContext = (PVOID)__Section;
+static LONG             SyncOwner = -1;
 
 static FORCEINLINE VOID
 __SyncAcquire(
-    IN  LONG    Cpu
+    IN  LONG    Index
     )
 {
     LONG        Old;
 
-    Old = InterlockedExchange(&SyncOwner, Cpu);
-    ASSERT3U(Old, ==, MAXIMUM_PROCESSORS);
+    Old = InterlockedExchange(&SyncOwner, Index);
+    ASSERT3U(Old, ==, -1);
 }
 
 static FORCEINLINE VOID
 __SyncRelease(
-    IN  LONG    Cpu
+    IN  LONG    Index
     )
 {
     LONG        Old;
 
-    Old = InterlockedExchange(&SyncOwner, MAXIMUM_PROCESSORS);
-    ASSERT3U(Old, ==, Cpu);
+    Old = InterlockedExchange(&SyncOwner, -1);
+    ASSERT3U(Old, ==, Index);
 }
 
-static SYNC_CONTEXT  SyncContext;
 
 KDEFERRED_ROUTINE   SyncWorker;
 
@@ -122,53 +126,57 @@ KDEFERRED_ROUTINE   SyncWorker;
 VOID
 #pragma prefast(suppress:28166) // Function does not restore IRQL
 SyncWorker(
-    IN  PKDPC   Dpc,
-    IN  PVOID   Context,
-    IN  PVOID   Argument1,
-    IN  PVOID   Argument2
+    IN  PKDPC           Dpc,
+    IN  PVOID           _Context,
+    IN  PVOID           Argument1,
+    IN  PVOID           Argument2
     )
 {
-    BOOLEAN     InterruptsDisabled;
-    ULONG       Cpu;
+    PSYNC_CONTEXT       Context = SyncContext;
+    BOOLEAN             InterruptsDisabled;
+    ULONG               Index;
+    PSYNC_PROCESSOR     Processor;
+    PROCESSOR_NUMBER    ProcNumber;
 
     UNREFERENCED_PARAMETER(Dpc);
-    UNREFERENCED_PARAMETER(Context);
+    UNREFERENCED_PARAMETER(_Context);
     UNREFERENCED_PARAMETER(Argument1);
     UNREFERENCED_PARAMETER(Argument2);
 
     InterruptsDisabled = FALSE;
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    Processor = &Context->Processor[Index];
 
-    Trace("====> (%u)\n", Cpu);
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    Trace("====> (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
+    InterlockedIncrement(&Context->CompletionCount);
 
     for (;;) {
         ULONG   Sequence;
 
-        if (SyncContext.Exit[Cpu])
+        if (Processor->Exit)
             break;
 
-        if (SyncContext.DisableInterrupts[Cpu] == InterruptsDisabled) {
+        if (Processor->DisableInterrupts == InterruptsDisabled) {
             _mm_pause();
             KeMemoryBarrier();
 
             continue;
         }
 
-        Sequence = SyncContext.Sequence;
+        Sequence = Context->Sequence;
 
-        if (SyncContext.DisableInterrupts[Cpu]) {
+        if (Processor->DisableInterrupts) {
             ULONG       Attempts;
             NTSTATUS    status;
 
             (VOID) KfRaiseIrql(HIGH_LEVEL);
             status = STATUS_SUCCESS;
 
-            InterlockedIncrement(&SyncContext.CompletionCount);
+            InterlockedIncrement(&Context->CompletionCount);
 
             Attempts = 0;
-            while (SyncContext.Sequence == Sequence &&
-                   SyncContext.CompletionCount < SyncContext.CpuCount) {
+            while (Context->Sequence == Sequence &&
+                   Context->CompletionCount < Context->ProcessorCount) {
                 _mm_pause();
                 KeMemoryBarrier();
 
@@ -177,14 +185,14 @@ SyncWorker(
                     LONG    New;
 
                     do {
-                        Old = SyncContext.CompletionCount;
+                        Old = Context->CompletionCount;
                         New = Old - 1;
 
-                        if (Old == SyncContext.CpuCount)
+                        if (Old == Context->ProcessorCount)
                             break;
-                    } while (InterlockedCompareExchange(&SyncContext.CompletionCount, New, Old) != Old);
+                    } while (InterlockedCompareExchange(&Context->CompletionCount, New, Old) != Old);
 
-                    if (Old < SyncContext.CpuCount) {
+                    if (Old < Context->ProcessorCount) {
 #pragma prefast(suppress:28138) // Use constant rather than variable
                         KeLowerIrql(DISPATCH_LEVEL);
                         status = STATUS_UNSUCCESSFUL;
@@ -207,10 +215,10 @@ SyncWorker(
 #pragma prefast(suppress:28138) // Use constant rather than variable
             KeLowerIrql(DISPATCH_LEVEL);
 
-            InterlockedIncrement(&SyncContext.CompletionCount);
+            InterlockedIncrement(&Context->CompletionCount);
 
-            while (SyncContext.Sequence == Sequence &&
-                   SyncContext.CompletionCount < SyncContext.CpuCount) {
+            while (Context->Sequence == Sequence &&
+                   Context->CompletionCount < Context->ProcessorCount) {
                 _mm_pause();
                 KeMemoryBarrier();
             }
@@ -218,8 +226,8 @@ SyncWorker(
         }
     }
 
-    Trace("<==== (%u)\n", Cpu);
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    Trace("<==== (%u:%u)\n", ProcNumber.Group, ProcNumber.Number);
+    InterlockedIncrement(&Context->CompletionCount);
 
     ASSERT(!InterruptsDisabled);
 }
@@ -231,44 +239,55 @@ SyncCapture(
     VOID
     )
 {
-    ULONG       Cpu;
-    ULONG       Index;
+    PSYNC_CONTEXT       Context = SyncContext;
+    LONG                Index;
+    PROCESSOR_NUMBER    ProcNumber;
+    USHORT              Group;
+    UCHAR               Number;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
-    Cpu = KeGetCurrentProcessorNumber();
-    __SyncAcquire(Cpu);
+    Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
+    __SyncAcquire(Index);
 
-    Trace("====> (%u)\n", Cpu);
+    Group = ProcNumber.Group;
+    Number = ProcNumber.Number;
 
-    ASSERT(IsZeroMemory(&SyncContext, sizeof (SYNC_CONTEXT)));
+    Trace("====> (%u:%u)\n", Group, Number);
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
-    SyncContext.CpuCount = KeQueryActiveProcessorCount(NULL);
+    ASSERT(IsZeroMemory(Context, sizeof (SYNC_CONTEXT)));
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++) {
-        PKDPC   Dpc = &SyncContext.Dpc[Index];
+    Context->Sequence++;
+    Context->CompletionCount = 0;
 
-        SyncContext.DisableInterrupts[Index] = FALSE;
-        SyncContext.Exit[Index] = FALSE;
+    Context->ProcessorCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
 
-        if (Index == Cpu)
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+        NTSTATUS        status;
+
+        ASSERT3U((ULONG_PTR)(Processor + 1), <, (ULONG_PTR)__Section + PAGE_SIZE);
+
+        status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
+
+        if (ProcNumber.Group == Group &&
+            ProcNumber.Number == Number)
             continue;
 
-        KeInitializeDpc(Dpc, SyncWorker, NULL);
-        KeSetTargetProcessorDpc(Dpc, (CCHAR)Index);
-        KeInsertQueueDpc(Dpc, NULL, NULL);
+        KeInitializeDpc(&Processor->Dpc, SyncWorker, NULL);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
+        KeInsertQueueDpc(&Processor->Dpc, NULL, NULL);
     }
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
 
-    Trace("<==== (%u)\n", Cpu);
+    Trace("<==== (%u:%u)\n", Group, Number);
 }
 
 __drv_requiresIRQL(DISPATCH_LEVEL)
@@ -278,26 +297,32 @@ SyncDisableInterrupts(
     VOID
     )
 {
-    ULONG       Index;
-    ULONG       Attempts;
-    NTSTATUS    status;
+    PSYNC_CONTEXT   Context = SyncContext;
+    LONG            Index;
+    ULONG           Attempts;
+    NTSTATUS        status;
 
     Trace("====>\n");
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.DisableInterrupts[Index] = TRUE;
+        Processor->DisableInterrupts = TRUE;
+    }
+
+    KeMemoryBarrier();
 
 again:
     (VOID) KfRaiseIrql(HIGH_LEVEL);
     status = STATUS_SUCCESS;
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
     Attempts = 0;
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
 
@@ -306,18 +331,18 @@ again:
             LONG    New;
 
             do {
-                Old = SyncContext.CompletionCount;
+                Old = Context->CompletionCount;
                 New = Old - 1;
 
-                if (Old == SyncContext.CpuCount)
+                if (Old == Context->ProcessorCount)
                     break;
-            } while (InterlockedCompareExchange(&SyncContext.CompletionCount, New, Old) != Old);
+            } while (InterlockedCompareExchange(&Context->CompletionCount, New, Old) != Old);
 
-            if (Old < SyncContext.CpuCount) {
+            if (Old < Context->ProcessorCount) {
                 LogPrintf(LOG_LEVEL_WARNING,
                           "SYNC: %d < %d\n",
                           Old,
-                          SyncContext.CpuCount);
+                          Context->ProcessorCount);
 
 #pragma prefast(suppress:28138) // Use constant rather than variable
                 KeLowerIrql(DISPATCH_LEVEL);
@@ -339,23 +364,29 @@ VOID
 SyncEnableInterrupts(
     )
 {
-    KIRQL   Irql;
-    ULONG   Index;
+    PSYNC_CONTEXT   Context = SyncContext;
+    KIRQL           Irql;
+    LONG            Index;
 
     _enable();
 
     Irql = KeGetCurrentIrql();
     ASSERT3U(Irql, ==, HIGH_LEVEL);
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+
+        Processor->DisableInterrupts = FALSE;
+    }
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.DisableInterrupts[Index] = FALSE;
+    KeMemoryBarrier();
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
@@ -373,28 +404,33 @@ SyncRelease(
     VOID
     )
 {
-    ULONG       Cpu;
-    ULONG       Index;
+    PSYNC_CONTEXT   Context = SyncContext;
+    LONG            Index;
 
     Trace("====>\n");
 
-    SyncContext.Sequence++;
-    SyncContext.CompletionCount = 0;
+    Context->Sequence++;
+    Context->CompletionCount = 0;
+
+    for (Index = 0; Index < Context->ProcessorCount; Index++) {
+        PSYNC_PROCESSOR Processor = &Context->Processor[Index];
+
+        Processor->Exit = TRUE;
+    }
 
-    for (Index = 0; Index < (ULONG)SyncContext.CpuCount; Index++)
-        SyncContext.Exit[Index] = TRUE;
+    KeMemoryBarrier();
 
-    InterlockedIncrement(&SyncContext.CompletionCount);
+    InterlockedIncrement(&Context->CompletionCount);
 
-    while (SyncContext.CompletionCount < SyncContext.CpuCount) {
+    while (Context->CompletionCount < Context->ProcessorCount) {
         _mm_pause();
         KeMemoryBarrier();
     }
 
-    RtlZeroMemory(&SyncContext, sizeof (SYNC_CONTEXT));
+    RtlZeroMemory(Context, sizeof (SYNC_CONTEXT));
 
-    Cpu = KeGetCurrentProcessorNumber();
-    __SyncRelease(Cpu);
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+    __SyncRelease(Index);
 
     Trace("<====\n");
 }
diff --git a/src/xenfilt/driver.c b/src/xenfilt/driver.c
index 420e827..16ed6f7 100644
--- a/src/xenfilt/driver.c
+++ b/src/xenfilt/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <xen.h>
 
 #include "registry.h"
@@ -775,6 +776,7 @@ DriverEntry(
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
diff --git a/vs2012/xen/xen.vcxproj b/vs2012/xen/xen.vcxproj
index 0d92eac..df966af 100644
--- a/vs2012/xen/xen.vcxproj
+++ b/vs2012/xen/xen.vcxproj
@@ -34,7 +34,7 @@
       <Inputs>..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -42,7 +42,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
diff --git a/vs2012/xenbus/xenbus.vcxproj b/vs2012/xenbus/xenbus.vcxproj
index 3319372..ab78a02 100644
--- a/vs2012/xenbus/xenbus.vcxproj
+++ b/vs2012/xenbus/xenbus.vcxproj
@@ -34,7 +34,7 @@
       <Inputs>..\..\src\xenbus.inf</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -42,7 +42,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2012/xenfilt/xenfilt.vcxproj b/vs2012/xenfilt/xenfilt.vcxproj
index 5dbb903..34efda4 100644
--- a/vs2012/xenfilt/xenfilt.vcxproj
+++ b/vs2012/xenfilt/xenfilt.vcxproj
@@ -26,7 +26,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -34,7 +34,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xen/xen.vcxproj b/vs2013/xen/xen.vcxproj
index a12f060..cd40452 100644
--- a/vs2013/xen/xen.vcxproj
+++ b/vs2013/xen/xen.vcxproj
@@ -34,7 +34,7 @@
       </CustomBuildStep>
     <ClCompile>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XEN";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -45,7 +45,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ModuleDefinitionFile>../../src/xen/xen.def</ModuleDefinitionFile>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
diff --git a/vs2013/xenbus/xenbus.vcxproj b/vs2013/xenbus/xenbus.vcxproj
index eb476a9..ca486c9 100644
--- a/vs2013/xenbus/xenbus.vcxproj
+++ b/vs2013/xenbus/xenbus.vcxproj
@@ -33,7 +33,7 @@
         <Inputs>..\..\src\xenbus.inf</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENBUS";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -45,7 +45,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xenfilt/xenfilt.vcxproj b/vs2013/xenfilt/xenfilt.vcxproj
index b7759a7..db4a437 100644
--- a/vs2013/xenfilt/xenfilt.vcxproj
+++ b/vs2013/xenfilt/xenfilt.vcxproj
@@ -25,7 +25,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENFILT";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;..\..\src\common;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -37,7 +37,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(ProjectDir)..\$(ConfigurationName)\$(Platform)\xen.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:38 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIU-0006m5-Cn; Thu, 19 Mar 2015 13:15:38 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIR-0006ls-Ja
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:36 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
	F1/2C-24916-6FBCA055; Thu, 19 Mar 2015 13:15:34 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426770921!11856148!1
X-Originating-IP: [74.125.82.171]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19379 invoked from network); 19 Mar 2015 13:15:21 -0000
Received: from mail-we0-f171.google.com (HELO mail-we0-f171.google.com)
	(74.125.82.171)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:21 -0000
Received: by wetk59 with SMTP id k59so56960044wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=lDTDx6tlmGH2vuy5V3tWgk8xhN5eION1wlAZlVpUBvY=;
	b=fmIbBs+Dv+YhRZWXJen+NzdLbpbJ2bjzukroTCPVKoU/pqptKnIS3JqJQzYeU4V+WX
	AjcwIP8bK8apUYdqXx/GPTQlQ0kmtQEBd/KQqrQXpuE1k1zMG9DKrIyq3ABzTFSYo4Mp
	iF9XXdpAdM8ldvnlm5hS3zoXa+P6d3hlgXYByFXZ4GSQ9Z01Fi+/7mFZf/YoAVZe0Ntj
	z4HjmKDKWSdz9YhOklyBI4rM9Mrr4zK90lhsPxN7PWGP6+GCB9OHWHvN8Kg7oSC6WSL+
	2vCtvm3WHZ0RrcvpBhHsT+a/gyBaMbnIPILu9SbRaZZKvFWCf8UoPy2eHQxaTkoHYegS
	XQJw==
X-Received: by 10.180.73.9 with SMTP id h9mr16098416wiv.63.1426770921128;
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:20 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:18 +0000
Message-Id: <1426770921-14080-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 547025
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/6] Update headers to
	xen.git:f919dbc0583797d1c5c09da815518084ce77eb81
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

VGhlIGNvZGUgcmVsaWVzIG9uIHBvc3QtNC41LjAgaGVhZGVyIGNoYW5nZXMgc28gd2UgbmVlZCBh
IG1vcmUgcmVjZW50CnJlcG9zaXRvcnkuIFRoZSBjb21taXQgaWQgaGVyZSBpcyBqdXN0IG1hc3Rl
ciBvbiB0aGUgZGF5IHRoaXMgdXBkYXRlIHdhcwpkb25lLiBUaGUgaGVhZGVycyB3aWxsIGJlIHVw
ZGF0ZWQgdG8gYSB0YWcgb25jZSBhIHN1aXRhYmxlIG9uZSBpcwphdmFpbGFibGUuCgpTaWduZWQt
b2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KIGdldF94
ZW5faGVhZGVycy5weSAgICAgICAgICAgICAgICAgICAgICAgfCAgNzIgKystCiBpbmNsdWRlL3hl
bi1lcnJuby5oICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGluY2x1ZGUveGVuLmggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKy0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hl
bi14ODZfMzIuaCAgICAgICAgfCAxNzEgLS0tLS0tCiBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4t
eDg2XzY0LmggICAgICAgIHwgMjAyIC0tLS0tLS0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5o
ICAgICAgICAgICAgICAgfCAyNzMgLS0tLS0tLS0tLQogaW5jbHVkZS94ZW4vZXJybm8uaCAgICAg
ICAgICAgICAgICAgICAgICB8IDEzNyAtLS0tLQogaW5jbHVkZS94ZW4vZXZlbnRfY2hhbm5lbC5o
ICAgICAgICAgICAgICB8IDM4NSAtLS0tLS0tLS0tLS0tCiBpbmNsdWRlL3hlbi9mZWF0dXJlcy5o
ICAgICAgICAgICAgICAgICAgIHwgMTE0IC0tLS0KIGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgg
ICAgICAgICAgICAgICAgfCA2ODIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVu
L2h2bS9odm1fb3AuaCAgICAgICAgICAgICAgICAgfCA0MDIgLS0tLS0tLS0tLS0tLS0KIGluY2x1
ZGUveGVuL2h2bS9wYXJhbXMuaCAgICAgICAgICAgICAgICAgfCAxOTQgLS0tLS0tLQogaW5jbHVk
ZS94ZW4vaW8veHNfd2lyZS5oICAgICAgICAgICAgICAgICB8IDE0OSAtLS0tLQogaW5jbHVkZS94
ZW4vbWVtb3J5LmggICAgICAgICAgICAgICAgICAgICB8IDU4OCAtLS0tLS0tLS0tLS0tLS0tLS0t
LQogaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCB8IDE3MiArKysrKysK
IGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggfCAyMDIgKysrKysrKwog
aW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oICAgICAgICB8IDMwNyArKysrKysrKysr
KwogaW5jbHVkZS94ZW4vcHVibGljL2Vycm5vLmggICAgICAgICAgICAgICB8ICA5MyArKysrCiBp
bmNsdWRlL3hlbi9wdWJsaWMvZXZlbnRfY2hhbm5lbC5oICAgICAgIHwgMzg1ICsrKysrKysrKysr
KysKIGluY2x1ZGUveGVuL3B1YmxpYy9mZWF0dXJlcy5oICAgICAgICAgICAgfCAxMTQgKysrKwog
aW5jbHVkZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmggICAgICAgICB8IDY4MiArKysrKysrKysr
KysrKysrKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2h2bS9odm1faW5mb190YWJsZS5oICB8
ICA3MiArKysKIGluY2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX29wLmggICAgICAgICAgfCA0MDIg
KysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9odm0vcGFyYW1zLmggICAgICAgICAg
fCAxOTkgKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dpcmUuaCAgICAgICAgICB8
IDE0OSArKysrKwogaW5jbHVkZS94ZW4vcHVibGljL21lbW9yeS5oICAgICAgICAgICAgICB8IDU4
NyArKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL3NjaGVkLmggICAgICAg
ICAgICAgICB8IDE3NSArKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy90cmFjZS5oICAgICAgICAg
ICAgICAgfCAzMzEgKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy92ZXJzaW9uLmggICAg
ICAgICAgICAgfCAgOTYgKysrKwogaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaCAgICAg
ICAgICB8ICA0NCArKwogaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oICAgICAgICAgICAgICAgICB8
IDkwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3hlbi9zY2hlZC5o
ICAgICAgICAgICAgICAgICAgICAgIHwgMTc1IC0tLS0tLQogaW5jbHVkZS94ZW4vdHJhY2UuaCAg
ICAgICAgICAgICAgICAgICAgICB8IDMzMSAtLS0tLS0tLS0tLQogaW5jbHVkZS94ZW4vdmVyc2lv
bi5oICAgICAgICAgICAgICAgICAgICB8ICA5NiAtLS0tCiBpbmNsdWRlL3hlbi94ZW4tY29tcGF0
LmggICAgICAgICAgICAgICAgIHwgIDQ0IC0tCiBpbmNsdWRlL3hlbi94ZW4uaCAgICAgICAgICAg
ICAgICAgICAgICAgIHwgODk5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVk
ZS94ZW4veGVuL2Vycm5vLmggICAgICAgICAgICAgICAgICB8ICAyMCArCiBzcmMveGVuL2RyaXZl
ci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMveGVuL2h2bS5jICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMveGVuL2h5cGVyY2FsbC5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMveGVuYnVzL2NhY2hlLmMgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyICstCiB2czIwMTIveGVuL3hlbi52Y3hwcm9qICAgICAgICAgICAgICAg
ICAgIHwgICAyICstCiB2czIwMTIveGVuYnVzL3hlbmJ1cy52Y3hwcm9qICAgICAgICAgICAgIHwg
ICAyICstCiB2czIwMTIveGVuZmlsdC94ZW5maWx0LnZjeHByb2ogICAgICAgICAgIHwgICAyICst
CiB2czIwMTMveGVuL3hlbi52Y3hwcm9qICAgICAgICAgICAgICAgICAgIHwgIDE3ICstCiB2czIw
MTMveGVuYnVzL3hlbmJ1cy52Y3hwcm9qICAgICAgICAgICAgIHwgIDE3ICstCiB2czIwMTMveGVu
ZmlsdC94ZW5maWx0LnZjeHByb2ogICAgICAgICAgIHwgIDE3ICstCiA0NyBmaWxlcyBjaGFuZ2Vk
LCA1MDI4IGluc2VydGlvbnMoKyksIDQ5MzAgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCiBkZWxldGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl82NC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5j
bHVkZS94ZW4vYXJjaC14ODYveGVuLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9l
cnJuby5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vZXZlbnRfY2hhbm5lbC5oCiBk
ZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vZmVhdHVyZXMuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3hlbi9odm0vaHZtX29wLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9odm0vcGFy
YW1zLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9pby94c193aXJlLmgKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9tZW1vcnkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGlu
Y2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl82NC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vcHVibGljL2Vycm5vLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3hlbi9wdWJsaWMvZXZlbnRfY2hhbm5lbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94
ZW4vcHVibGljL2ZlYXR1cmVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJs
aWMvZ3JhbnRfdGFibGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9o
dm0vaHZtX2luZm9fdGFibGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy9odm0vaHZtX29wLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvaHZt
L3BhcmFtcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dp
cmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9tZW1vcnkuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL3RyYWNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL3hlbi9wdWJsaWMvdmVyc2lvbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4v
cHVibGljL3hlbi1jb21wYXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy94ZW4uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3NjaGVkLmgKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi90cmFjZS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVk
ZS94ZW4vdmVyc2lvbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4veGVuLWNvbXBh
dC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4veGVuLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBpbmNsdWRlL3hlbi94ZW4vZXJybm8uaAoKZGlmZiAtLWdpdCBhL2dldF94ZW5faGVhZGVy
cy5weSBiL2dldF94ZW5faGVhZGVycy5weQppbmRleCAzYjcyNThlLi5jZWMwYjE0IDEwMDc1NQot
LS0gYS9nZXRfeGVuX2hlYWRlcnMucHkKKysrIGIvZ2V0X3hlbl9oZWFkZXJzLnB5CkBAIC01LDM0
ICs1LDM5IEBAIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcmUKIAot
ZGVmIHNoZWxsKGNvbW1hbmQpOgotICAgIHByaW50KGNvbW1hbmQpCitkZWYgc2hlbGwoY29tbWFu
ZCwgZGlyID0gJy4nKToKKyAgICBwcmludCgiaW4gJyVzJyBleGVjdXRlICclcyciICUgKGRpciwg
JyAnLmpvaW4oY29tbWFuZCkpKQogICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCi0gICAgcGlwZSA9
IG9zLnBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCAncicsIDEpCisgICAgc3ViID0gc3VicHJvY2Vz
cy5Qb3BlbignICcuam9pbihjb21tYW5kKSwgY3dkPWRpciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKLSAgICBmb3IgbGluZSBpbiBwaXBlOgotICAg
ICAgICBwcmludChsaW5lLnJzdHJpcCgpKQorICAgIGZvciBsaW5lIGluIHN1Yi5zdGRvdXQ6Cisg
ICAgICAgIHByaW50KGxpbmUuZGVjb2RlKHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKSkucnN0cmlw
KCkpCiAKLSAgICByZXR1cm4gcGlwZS5jbG9zZSgpCisgICAgc3ViLndhaXQoKQorCisgICAgcmV0
dXJuIHN1Yi5yZXR1cm5jb2RlCiAKIGRlZiBnZXRfcmVwbyh1cmwsIHdvcmtpbmcpOgogICAgIHNo
ZWxsKFsnZ2l0JywgJ2Nsb25lJywgJy0tbm8tY2hlY2tvdXQnLCB1cmwsIHdvcmtpbmddKQogCiBk
ZWYgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpOgotICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAg
b3MuY2hkaXIod29ya2luZykKLSAgICBzaGVsbChbJ2dpdCcsICdjaGVja291dCcsICctYicsIHRh
Z10pCi0gICAgb3MuY2hkaXIoY3dkKQorICAgIHNoZWxsKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1i
JywgJ3RtcCcsIHRhZ10sIHdvcmtpbmcpCisKK2RlZiBwdXRfYnJhbmNoKHdvcmtpbmcpOgorICAg
IHNoZWxsKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ21hc3RlciddLCB3b3JraW5nKQorICAgIHNoZWxs
KFsnZ2l0JywgJ2JyYW5jaCcsICctZCcsICd0bXAnXSwgd29ya2luZykKIAotZGVmIGNvcHlfZmls
ZSh3b3JraW5nLCBzcmNfZGlyLCBkc3RfZGlyLCBuYW1lKToKK2RlZiBjb3B5X2ZpbGUod29ya2lu
ZywgZGlyLCBuYW1lKToKICAgICB0cnk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKCdpbmNsdWRlXFx4
ZW5cXCVzJyAlIGRzdF9kaXIpCisgICAgICAgIG9zLm1ha2VkaXJzKCdpbmNsdWRlXFx4ZW5cXCVz
JyAlIGRpcikKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgTm9uZQogCi0gICAgc3JjID0g
b3BlbignJXNcXHhlblxcaW5jbHVkZVxcJXNcXCVzJyAlICh3b3JraW5nLCBzcmNfZGlyLCBuYW1l
KSwgJ3InKQotICAgIGRzdCA9IG9wZW4oJ2luY2x1ZGVcXHhlblxcJXNcXCVzJyAlIChkc3RfZGly
LCBuYW1lKSwgJ3cnLCBuZXdsaW5lPSdcbicpCisgICAgc3JjID0gb3BlbignJXNcXHhlblxcaW5j
bHVkZVxcJXNcXCVzJyAlICh3b3JraW5nLCBkaXIsIG5hbWUpLCAncicpCisgICAgZHN0ID0gb3Bl
bignaW5jbHVkZVxceGVuXFwlc1xcJXMnICUgKGRpciwgbmFtZSksICd3JywgbmV3bGluZT0nXG4n
KQogCiAgICAgcHJpbnQobmFtZSkKIApAQCAtNTMsMjQgKzU4LDMxIEBAIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CiAgICAgZ2V0X3JlcG8oJ2dpdDovL3hlbmJpdHMueGVuLm9yZy94ZW4uZ2l0
Jywgd29ya2luZykKICAgICBnZXRfYnJhbmNoKHRhZywgd29ya2luZykKIAotICAgIGNvcHlfZmls
ZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAneGVuLmgnKQorICAgIHNoZWxsKFsnZ2l0JywgJ3Jt
JywgJy1yJywgJy1mJywgJ3hlbiddLCAnaW5jbHVkZScpCisKKyAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpYycsICd4ZW4uaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAn
eGVuLWNvbXBhdC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICd0cmFjZS5o
JykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICdtZW1vcnkuaCcpCisgICAgY29w
eV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnc2NoZWQuaCcpCisgICAgY29weV9maWxlKHdvcmtp
bmcsICdwdWJsaWMnLCAnZXZlbnRfY2hhbm5lbC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpYycsICdncmFudF90YWJsZS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICd2ZXJzaW9uLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2ZlYXR1
cmVzLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2Vycm5vLmgnKQorCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnZXJybm8uaCcpCiAKLSAgICBjb3B5X2ZpbGUo
d29ya2luZywgJ3B1YmxpYycsICcuJywgJ3hlbi1jb21wYXQuaCcpCi0gICAgY29weV9maWxlKHdv
cmtpbmcsICdwdWJsaWMnLCAnLicsICd0cmFjZS5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpYycsICcuJywgJ21lbW9yeS5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3NjaGVkLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAnZXZlbnRfY2hhbm5lbC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcu
JywgJ2dyYW50X3RhYmxlLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAndmVyc2lvbi5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2Zl
YXR1cmVzLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4
ZW4uaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ3hlbi14
ODZfMzIuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ3hl
bi14ODZfNjQuaCcpCiAKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3hlbicsICcuJywgJ2Vycm5v
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAnaHZtX29wLmgnKQor
ICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAncGFyYW1zLmgnKQorICAgIGNv
cHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAnaHZtX2luZm9fdGFibGUuaCcpCiAKLSAg
ICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAnYXJjaC14ODYnLCAneGVu
LmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICdhcmNoLXg4
NicsICd4ZW4teDg2XzMyLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNo
LXg4NicsICdhcmNoLXg4NicsICd4ZW4teDg2XzY0LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5n
LCAncHVibGljXFxpbycsICd4c193aXJlLmgnKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGh2bScsICdodm0nLCAnaHZtX29wLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAn
cHVibGljXFxodm0nLCAnaHZtJywgJ3BhcmFtcy5oJykKKyAgICBwdXRfYnJhbmNoKHdvcmtpbmcp
CiAKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcaW8nLCAnaW8nLCAneHNfd2lyZS5o
JykKKyAgICBzaGVsbChbJ2dpdCcsICdhZGQnLCAneGVuJ10sICdpbmNsdWRlJykKZGlmZiAtLWdp
dCBhL2luY2x1ZGUveGVuLWVycm5vLmggYi9pbmNsdWRlL3hlbi1lcnJuby5oCmluZGV4IDEwNGZk
NjcuLjliODU4OGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuLWVycm5vLmgKKysrIGIvaW5jbHVk
ZS94ZW4tZXJybm8uaApAQCAtMzYsNiArMzYsMTAgQEAKIAogI2luY2x1ZGUgPHhlbi9lcnJuby5o
PgogCisjZGVmaW5lIEVJU0RJUiAgICAgIDIxCisjZGVmaW5lIEVST0ZTICAgICAgIDMwCisjZGVm
aW5lIEVOT1RFTVBUWSAgIDM5CisKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgLy8g
Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAogCiAjZGVmaW5lIEVSUk5PX1RPX1NU
QVRVUyhfZXJybm8sIF9zdGF0dXMpICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi5oIGIvaW5jbHVkZS94ZW4uaAppbmRleCBmYTk1ZWRkLi4wYzc2ZmU3IDEwMDY0
NAotLS0gYS9pbmNsdWRlL3hlbi5oCisrKyBiL2luY2x1ZGUveGVuLmgKQEAgLTM4LDEzICszOCwy
MyBAQAogI2luY2x1ZGUgPHhlbi10eXBlcy5oPgogI2luY2x1ZGUgPHhlbi13YXJuaW5ncy5oPgog
I2luY2x1ZGUgPHhlbi1lcnJuby5oPgotI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRl
IDx4ZW4vZXZlbnRfY2hhbm5lbC5oPgotI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgotI2lu
Y2x1ZGUgPHhlbi9zY2hlZC5oPgotI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Ci0jaW5jbHVk
ZSA8eGVuL2lvL3hzX3dpcmUuaD4KLSNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5oPgorCisjaW5jbHVk
ZSA8cHVibGljL3hlbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvZXZlbnRfY2hhbm5lbC5oPgorI2luY2x1ZGUgPHB1YmxpYy9ncmFudF90YWJsZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9zY2hlZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+
CisKKy8vIHhzX3dpcmUuaCBnYXRlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgeHNkX2Vycm9ycyBl
bnVtZXJhdGlvbgorLy8gb24gd2hldGhlciBFSU5WQUwgaXMgZGVmaW5lZC4gVW5mb3J0dW5hdGVs
eSBFSU5WQUwgaXMgYWN0dWFsbHkKKy8vIHBhcnQgb2YgYW4gZW51bWVyYXRpb24gYW5kIHRoZSAj
aWZkZWYgdGVzdCB0aHVzIGZhaWxzLgorLy8gT3ZlcnJpZGUgdGhlIGVudW1lcmF0aW9uIHZhbHVl
IGhlcmUgd2l0aCBhICNkZWZpbmUuCisKKyNkZWZpbmUgRUlOVkFMICBYRU5fRUlOVkFMCisKKyNp
bmNsdWRlIDxwdWJsaWMvaW8veHNfd2lyZS5oPgorI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+
CiAKICNpZm5kZWYgWEVOX0FQSQogI2RlZmluZSBYRU5fQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oIGIvaW5jbHVk
ZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMWVkZjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfMzIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4teDg2XzMyLmgKLSAqIAotICogR3Vlc3QgT1MgaW50ZXJmYWNlIHRvIHg4NiAzMi1i
aXQgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K
LSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIEsgQSBG
cmFzZXIKLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hf
XwotI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9IX18KLQotLyoKLSAq
IEh5cGVyY2FsbCBpbnRlcmZhY2U6Ci0gKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAlZXNp
LCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQotICogIE91dHB1dDogJWVheAotICogQWNjZXNz
IGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBY
ZW4gTVNSKToKLSAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMy
Ci0gKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxs
IGNsb2JiZXJzICVlYngsJWVjeCkKLSAqLwotCi0vKgotICogVGhlc2UgZmxhdCBzZWdtZW50cyBh
cmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0aGVzZQot
ICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxsIGJl
IGFibGUgdG8gYXZvaWQKLSAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KLSAqLwotI2RlZmlu
ZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICovCi0jZGVmaW5lIEZM
QVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KLSNkZWZpbmUgRkxBVF9S
SU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwotI2RlZmluZSBGTEFUX1JJTkcz
X0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCi0jZGVmaW5lIEZMQVRfUklORzNfRFMg
MHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19TUyAweGUw
MzMgICAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0NTIEZMQVRf
UklORzFfQ1MKLSNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9SSU5HMV9EUwotI2RlZmluZSBG
TEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCi0jZGVmaW5lIEZMQVRfVVNFUl9DUyAgICBGTEFU
X1JJTkczX0NTCi0jZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFUX1JJTkczX0RTCi0jZGVmaW5l
IEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX1ZJ
UlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFS
VF9QQUUgICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFICAg
ICAgIDB4RjY4MDAwMDAKLSNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAgIFwK
LSAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKLSNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25n
KF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQotI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRf
UEFFICAgICAgICAgXAotICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9FTkRf
UEFFKQotCi0vKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlT
X1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRf
RU5EX05PTlBBRSAgICAweEZDNDAwMDAwCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgICBcCi0gICAgbWtf
dW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKLSNkZWZpbmUgTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25nKF9fTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKLQotI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFS
VCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9T
VEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklS
VF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCi0KLSNpZm5kZWYgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25n
KF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQotI2VuZGlmCi0KLSNkZWZpbmUgTUFDSDJQSFlTX1ZJ
UlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKLSNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklS
VF9FTkQpCi0jZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VO
RC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCi0jaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19tYXBw
aW5nCi0jZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUxPTkdfUFRSICopTUFDSDJQ
SFlTX1ZJUlRfU1RBUlQpCi0jZW5kaWYKLQotLyogMzItLzY0LWJpdCBpbnZhcmlhYmlsaXR5IGZv
ciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAqLwotI2lmIGRlZmluZWQoX19Y
RU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQotI3VuZGVmIF9fX0RFRklORV9YRU5fR1VF
U1RfSEFORExFCi0jZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUp
ICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMj
IG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBzdHJ1
Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3QgcTsgfTsgfSAgXAotICAgICAg
ICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQotI3VuZGVmIHNldF94ZW5fZ3Vlc3RfaGFuZGxl
X3JhdwotI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9PSA4ICkgKih1aW50NjRfdCAq
KSYoaG5kKSA9IDA7ICAgXAotICAgICAgICAgKGhuZCkucCA9IHZhbDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKCAwICkKLSNkZWZpbmUgdWludDY0
X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSNkZWZpbmUg
X19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCi0j
ZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5fR1VFU1RfSEFORExFXzY0KG5h
bWUpCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3RydWN0IGNwdV91c2VyX3Jl
Z3MgewotICAgIHVpbnQzMl90IGVieDsKLSAgICB1aW50MzJfdCBlY3g7Ci0gICAgdWludDMyX3Qg
ZWR4OwotICAgIHVpbnQzMl90IGVzaTsKLSAgICB1aW50MzJfdCBlZGk7Ci0gICAgdWludDMyX3Qg
ZWJwOwotICAgIHVpbnQzMl90IGVheDsKLSAgICB1aW50MTZfdCBlcnJvcl9jb2RlOyAgICAvKiBw
cml2YXRlICovCi0gICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAg
IHVpbnQzMl90IGVpcDsKLSAgICB1aW50MTZfdCBjczsKLSAgICB1aW50OF90ICBzYXZlZF91cGNh
bGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMDsKLSAgICB1aW50MzJfdCBlZmxhZ3M7ICAgICAg
ICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgdWludDMyX3QgZXNw
OwotICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKLSAgICB1aW50MTZfdCBlcywgX3BhZDI7Ci0gICAg
dWludDE2X3QgZHMsIF9wYWQzOwotICAgIHVpbnQxNl90IGZzLCBfcGFkNDsKLSAgICB1aW50MTZf
dCBncywgX3BhZDU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBjcHVfdXNlcl9y
ZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3QpOwotCi0vKgot
ICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0IGludG8gYXJj
aGl0ZWN0dXJhbCAlY3IzLgotICogV2hlbiBhY2Nlc3NpbmcgJWNyMywgb3IgZXF1aXZhbGVudCBm
aWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cwotICogbXVzdCB1c2UgdGhlIGZvbGxv
d2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFsaWQgTUZOcy4KLSAqLwotI2Rl
ZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShwZm4pIDw8IDEyKSB8ICgodW5z
aWduZWQpKHBmbikgPj4gMjApKQotI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMpICgoKHVuc2ln
bmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwgMjApKQotCi1zdHJ1Y3QgYXJj
aF92Y3B1X2luZm8gewotICAgIFVMT05HX1BUUiBjcjI7Ci0gICAgVUxPTkdfUFRSIHBhZFs1XTsg
Lyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hf
dmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7Ci0KLXN0cnVjdCB4ZW5fY2FsbGJhY2sgewotICAg
IFVMT05HX1BUUiBjczsKLSAgICBVTE9OR19QVFIgZWlwOwotfTsKLXR5cGVkZWYgc3RydWN0IHhl
bl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKLQotI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8K
LQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hfXyAqLwotCi0v
KgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNE
IgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMt
bW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2FyY2gteDg2
L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfNjQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhNDMzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hl
bi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAot
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotICogeGVuLXg4Nl82NC5oCi0gKiAKLSAqIEd1ZXN0IE9T
IGludGVyZmFjZSB0byB4ODYgNjQtYml0IFhlbi4KLSAqIAotICogUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmlnaHRzIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICog
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENvcHlyaWdo
dCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJMSUNf
QVJDSF9YODZfWEVOX1g4Nl82NF9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hF
Tl9YODZfNjRfSF9fCi0KLS8qCi0gKiBIeXBlcmNhbGwgaW50ZXJmYWNlOgotICogIElucHV0OiAg
JXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkgKGFyZ3VtZW50cyAxLTYpCi0gKiAgT3V0
cHV0OiAlcmF4Ci0gKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vl
c3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgotICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBo
eXBlcmNhbGwtbnVtYmVyICogMzIKLSAqIENsb2JiZXJlZDogYXJndW1lbnQgcmVnaXN0ZXJzIChl
LmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJkaSwlcnNpKQotICovCi0KLS8qCi0gKiA2
NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKLSAqIFRoZXNlIGZsYXQgc2VnbWVudHMgYXJlIGluIHRo
ZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdEVC4gU2luY2UgdGhlc2UKLSAqIGFyZSBh
bHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBtYW55IE9TZXMgd2lsbCBiZSBhYmxlIHRv
IGF2b2lkCi0gKiBpbnN0YWxsaW5nIHRoZWlyIG93biBHRFQuCi0gKi8KLQotI2RlZmluZSBGTEFU
X1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXggMjYwICovCi0jZGVmaW5lIEZMQVRfUklO
RzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19E
UzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotI2RlZmluZSBGTEFUX1JJTkczX0RTNjQg
MHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCi0jZGVmaW5lIEZMQVRfUklORzNfU1MzMiAweGUw
MmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19TUzY0IDB4ZTAyYiAg
LyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTNjQgRkxBVF9SSU5H
M19EUzY0Ci0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIgRkxBVF9SSU5HM19EUzMyCi0jZGVmaW5l
IEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2NAotI2RlZmluZSBGTEFUX0tFUk5FTF9D
UzY0IEZMQVRfUklORzNfQ1M2NAotI2RlZmluZSBGTEFUX0tFUk5FTF9DUzMyIEZMQVRfUklORzNf
Q1MzMgotI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZMQVRfS0VSTkVMX0NTNjQKLSNkZWZpbmUg
RkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1Mz
MiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1MgICBGTEFUX0tFUk5FTF9T
UzY0Ci0KLSNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxBVF9SSU5HM19EUzY0Ci0jZGVmaW5lIEZM
QVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgotI2RlZmluZSBGTEFUX1VTRVJfRFMgICBGTEFU
X1VTRVJfRFM2NAotI2RlZmluZSBGTEFUX1VTRVJfQ1M2NCBGTEFUX1JJTkczX0NTNjQKLSNkZWZp
bmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMyCi0jZGVmaW5lIEZMQVRfVVNFUl9DUyAg
IEZMQVRfVVNFUl9DUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9TUzY0IEZMQVRfUklORzNfU1M2NAot
I2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9VU0VS
X1NTICAgRkxBVF9VU0VSX1NTNjQKLQotI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFSVCAw
eEZGRkY4MDAwMDAwMDAwMDAKLSNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfRU5EICAgMHhGRkZG
ODgwMDAwMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIDB4RkZGRjgwMDAw
MDAwMDAwMAotI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORCAgICAweEZGRkY4MDQwMDAwMDAw
MDAKLQotI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKLSNkZWZpbmUgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQpCi0jZGVm
aW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9W
SVJUX0VORCkKLSNlbmRpZgotCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUICBta191bnNp
Z25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJU
X0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EKQotI2RlZmluZSBN
QUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNfVklSVF9FTkQtTUFDSDJQSFlTX1ZJUlRf
U1RBUlQpPj4zKQotI2lmbmRlZiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZwotI2RlZmluZSBtYWNo
aW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAqKUhZUEVSVklTT1JfVklSVF9TVEFSVCkK
LSNlbmRpZgotCi0vKgotICogaW50IEhZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFzZSh1bnNpZ25l
ZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQotICogIEB3aGljaCA9PSBTRUdCQVNFXyogIDsg
IEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzLgot
ICovCi0jZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAgMAotI2RlZmluZSBTRUdCQVNFX0dTX1VT
RVIgICAgIDEKLSNkZWZpbmUgU0VHQkFTRV9HU19LRVJORUwgICAyCi0jZGVmaW5lIFNFR0JBU0Vf
R1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3BlY2lmaWVkIGluIGJhc2VbMTU6MF0gKi8K
LQotLyoKLSAqIGludCBIWVBFUlZJU09SX2lyZXQodm9pZCkKLSAqIEFsbCBhcmd1bWVudHMgYXJl
IG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0LgotICogTmV2ZXIg
cmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtlcm5lbCBjb250ZXh0IGlzIGxvc3QuCi0g
KiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxvd3M6Ci0gKiAgIFJJTkcwIC0+IFJJTkcz
IGtlcm5lbCBtb2RlLgotICogICBSSU5HMSAtPiBSSU5HMyBrZXJuZWwgbW9kZS4KLSAqICAgUklO
RzIgLT4gUklORzMga2VybmVsIG1vZGUuCi0gKiAgIFJJTkczIC0+IFJJTkczIHVzZXIgbW9kZS4K
LSAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQgdGhlIGd1ZXN0IGtlcm5lbCBzaG91bGQg
cmV0dXJuIHRvIGl0ZXNlbGYKLSAqIGRpcmVjdGx5IHdpdGgKLSAqICAgICAgb3JiICAgJDMsMSo4
KCVyc3ApCi0gKiAgICAgIGlyZXRxCi0gKiBJZiBmbGFncyBjb250YWlucyBWR0NGX2luX3N5c2Nh
bGw6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFHUywgUlNQLgotICogICBEaXNjYXJkIFIx
MSwgUkNYLCBDUywgU1MuCi0gKiBPdGhlcndpc2U6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSMTEsIFJD
WCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KLSAqIEFsbCBvdGhlciByZWdpc3RlcnMgYXJlIHNh
dmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9yZWQgdG8gdXNlci4KLSAqLwotLyogR3Vl
c3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0dXJuIHRvIGd1ZXN0IHdpdGggU1lTUkVU
PyAqLwotI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgKLSNkZWZpbmUgVkdDRl9pbl9zeXNjYWxs
ICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKLSNkZWZpbmUgVkdDRl9JTl9TWVNDQUxMICBWR0NGX2lu
X3N5c2NhbGwKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3RydWN0IGlyZXRfY29udGV4dCB7
Ci0gICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9mIGh5cGVyY2FsbCkuICovCi0g
ICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3MsIHJpcCwgY3MsIHJmbGFncywgcnNwLCBz
czsKLSAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBmcmFtZS4gKi8KLX07Ci0KLSNpZiBkZWZp
bmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0vKiBBbm9ueW1vdXMg
dW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJpdCBuYW1lcyAoZS5nLiwgZWF4L3JheCku
ICovCi0jZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5pb24geyBcCi0gICAgdWludDY0X3QgciAj
IyBuYW1lLCBlICMjIG5hbWU7IFwKLSAgICB1aW50MzJfdCBfZSAjIyBuYW1lOyBcCi19Ci0jZWxz
ZQotLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlzIHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBu
YW1lIChlLmcuLCByYXgpLiAqLwotI2RlZmluZSBfX0RFQ0xfUkVHKG5hbWUpIHVpbnQ2NF90IHIg
IyMgbmFtZQotI2VuZGlmCi0KLXN0cnVjdCBjcHVfdXNlcl9yZWdzIHsKLSAgICB1aW50NjRfdCBy
MTU7Ci0gICAgdWludDY0X3QgcjE0OwotICAgIHVpbnQ2NF90IHIxMzsKLSAgICB1aW50NjRfdCBy
MTI7Ci0gICAgX19ERUNMX1JFRyhicCk7Ci0gICAgX19ERUNMX1JFRyhieCk7Ci0gICAgdWludDY0
X3QgcjExOwotICAgIHVpbnQ2NF90IHIxMDsKLSAgICB1aW50NjRfdCByOTsKLSAgICB1aW50NjRf
dCByODsKLSAgICBfX0RFQ0xfUkVHKGF4KTsKLSAgICBfX0RFQ0xfUkVHKGN4KTsKLSAgICBfX0RF
Q0xfUkVHKGR4KTsKLSAgICBfX0RFQ0xfUkVHKHNpKTsKLSAgICBfX0RFQ0xfUkVHKGRpKTsKLSAg
ICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCi0gICAgdWludDMyX3QgZW50
cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAgIF9fREVDTF9SRUcoaXApOwotICAgIHVpbnQx
Nl90IGNzLCBfcGFkMFsxXTsKLSAgICB1aW50OF90ICBzYXZlZF91cGNhbGxfbWFzazsKLSAgICB1
aW50OF90ICBfcGFkMVszXTsKLSAgICBfX0RFQ0xfUkVHKGZsYWdzKTsgICAgICAvKiByZmxhZ3Mu
SUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgX19ERUNMX1JFRyhzcCk7Ci0gICAgdWlu
dDE2X3Qgc3MsIF9wYWQyWzNdOwotICAgIHVpbnQxNl90IGVzLCBfcGFkM1szXTsKLSAgICB1aW50
MTZfdCBkcywgX3BhZDRbM107Ci0gICAgdWludDE2X3QgZnMsIF9wYWQ1WzNdOyAvKiBOb24temVy
byA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFzZS4gICAgICovCi0gICAgdWludDE2X3Qg
Z3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZ3NfYmFz
ZV91c3IuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBjcHVfdXNlcl9yZWdz
X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3QpOwotCi0jdW5kZWYg
X19ERUNMX1JFRwotCi0jZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBmbikgKChVTE9OR19QVFIpKHBm
bikgPDwgMTIpCi0jZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykgKChVTE9OR19QVFIpKGNyMykg
Pj4gMTIpCi0KLXN0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7Ci0gICAgVUxPTkdfUFRSIGNyMjsKLSAg
ICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKLQotdHlwZWRlZiBV
TE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7Ci0KLSNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCi0K
LSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18gKi8KLQotLyoK
LSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIK
LSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1v
ZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9hcmNoLXg4Ni94
ZW4uaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxODgwZjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMjczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
LSAqIGFyY2gteDg2L3hlbi5oCi0gKiAKLSAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgWGVu
LgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIK
LSAqLwotCi0jaW5jbHVkZSAiLi4veGVuLmgiCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hf
WDg2X1hFTl9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KLQotLyog
U3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDEKLSNkZWZpbmUgX19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAgIHR5cGVkZWYgc3RydWN0IHsg
dHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQotI2Vsc2UKLSNkZWZpbmUgX19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAgIHR5cGVkZWYgdHlwZSAqIF9f
Z3Vlc3RfaGFuZGxlXyAjIyBuYW1lCi0jZW5kaWYKLQotLyoKLSAqIFhFTl9HVUVTVF9IQU5ETEUg
cmVwcmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKLSAqIGlu
IGEgc3RydWN0IGluIG1lbW9yeS4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50
IGEgZ3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KLSAqIGh5cGVyY2FsbCBhcmd1bWVu
dC4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRo
ZSBzYW1lIG9uIFg4NiBidXQKLSAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVj
dHVyZXMuCi0gKi8KLSNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBl
KSBcCi0gICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAotICAg
IF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKLSNk
ZWZpbmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKG5hbWUsIG5hbWUpCi0jZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAg
ICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKLSNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1l
KSAgICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKLSNkZWZpbmUgWEVOX0dVRVNUX0hB
TkRMRV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCi0jZGVmaW5lIHNldF94
ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGls
ZSAoMCkKLSNpZmRlZiBfX1hFTl9UT09MU19fCi0jZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxl
KHZhbCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQotI2VuZGlmCi0jZGVm
aW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9y
YXcoaG5kLCB2YWwpCi0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotI2luY2x1ZGUgInhlbi14ODZf
MzIuaCIKLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLSNpbmNsdWRlICJ4ZW4teDg2XzY0Lmgi
Ci0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl9w
Zm5fdDsKLSNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgotI2VuZGlmCi0KLSNkZWZpbmUgWEVOX0hB
VkVfUFZfR1VFU1RfRU5UUlkgMQotCi0jZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEK
LQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJs
ZXMKLSAqLwotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zZXRf
Z2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOwotICog
YAotICovCi0vKgotICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhl
bi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKLSAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVj
YXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcwot
ICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIg
dGhlIHN0YXJ0IG9mIHRoZSBHRFQsCi0gKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhl
IHdheSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KLSAqCi0gKiBOQiBUaGUgTERUIGlzIHNl
dCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKLSAq
LwotI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQKLSNkZWZpbmUgRklSU1RfUkVT
RVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCi0jZGVmaW5l
IEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQot
Ci0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rl
c2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7Ci0gKiBgCi0gKiBgIEBwYSAgIFRoZSBtYWNoaW5l
IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8KLSAqIGAgICAgICAgdXBkYXRl
LiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KLSAqIGAgQGRl
c2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMg
YQotICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KLSAqLwotCi0vKiBN
YXhpbXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBn
dWVzdHMuICovCi0jZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCi0KLSNpZm5kZWYgX19B
U1NFTUJMWV9fCi0KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OwotI2RlZmluZSBQUklf
eGVuX3Vsb25nICJseCIKLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJW
SVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKLSAqIGAKLSAq
IFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUu
Ci0gKi8KLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zZXRf
dHJhcF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOwotICogYAotICovCi0v
KgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxl
KCkuCi0gKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0
cmFwc1tdLmFkZHJlc3M9PTAuCi0gKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGlj
aCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJlCi0gKiBpbnRlcnJ1cHQuIE9u
IHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRl
Ci0gKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6Ci0gKiAgTGV2ZWwgPT0gMDogTm9vbmUg
bWF5IGVudGVyCi0gKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgotICogIExldmVsID09
IDI6IEtlcm5lbCBtYXkgZW50ZXIKLSAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIK
LSAqLwotI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKLSNk
ZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCi0jZGVmaW5lIFRJ
X1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQotI2RlZmluZSBUSV9T
RVRfSUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQotc3RydWN0
IHRyYXBfaW5mbyB7Ci0gICAgdWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVj
dG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1aW50OF90ICAgICAgIGZs
YWdzOyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAq
LwotICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUg
b2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotfTsKLXR5cGVkZWYg
c3RydWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHRy
YXBfaW5mb190KTsKLQotdHlwZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFND
IHRpbWVzdGFtcCAqLwotCi0vKgotICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQu
IE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVkIAotICogaW4gYnkgRlhTQVZF
IGlmIHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNlIEZTQVZFIGlzIHVzZWQuCi0g
KgotICogQWxzbyBub3RlIHRoYXQgd2hlbiBjYWxsaW5nIERPTUNUTF9zZXR2Y3B1Y29udGV4dCBh
bmQgVkNQVV9pbml0aWFsaXNlCi0gKiBmb3IgSFZNIGFuZCBQVkggZ3Vlc3RzLCBub3QgYWxsIGlu
Zm9ybWF0aW9uIGluIHRoaXMgc3RydWN0dXJlIGlzIHVwZGF0ZWQ6Ci0gKgotICogLSBGb3IgSFZN
IGd1ZXN0cywgdGhlIHN0cnVjdHVyZXMgcmVhZCBpbmNsdWRlOiBmcHVfY3R4dCAoaWYKLSAqIFZH
Q1RfSTM4N19WQUxJRCBpcyBzZXQpLCBmbGFncywgdXNlcl9yZWdzLCBkZWJ1Z3JlZ1sqXQotICoK
LSAqIC0gUFZIIGd1ZXN0cyBhcmUgdGhlIHNhbWUgYXMgSFZNIGd1ZXN0cywgYnV0IGFkZGl0aW9u
YWxseSB1c2UgY3RybHJlZ1szXSB0bwotICogc2V0IGNyMy4gQWxsIG90aGVyIGZpZWxkcyBub3Qg
dXNlZCBzaG91bGQgYmUgc2V0IHRvIDAuCi0gKi8KLXN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQg
ewotICAgIC8qIEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVk
IGZvciBGWFNBVkUvRlhSU1RPUi4gKi8KLSAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVf
Y3R4dDsgICAgICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLwotI2RlZmluZSBW
R0NGX0kzODdfVkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCi0jZGVmaW5lIFZHQ0ZfSU5fS0VS
TkVMICAgICAgICAgICAgICAgICAoMTw8MikKLSNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAg
ICAgICAgICAgIDAKLSNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxf
VkdDRl9pMzg3X3ZhbGlkKQotI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAg
MgotI2RlZmluZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tl
cm5lbCkKLSNkZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKLSNkZWZpbmUg
VkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxl
c19ldmVudHMpCi0jZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0Ci0jZGVm
aW5lIFZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNh
Ymxlc19ldmVudHMpCi0jZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1Ci0j
ZGVmaW5lIFZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQot
ICAgIFVMT05HX1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAg
ICAgICAgICAgICAgICAgKi8KLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAg
ICAgICAgLyogVXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLwotICAgIHN0cnVjdCB0cmFw
X2luZm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAg
ICAgICovCi0gICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChs
aW5lYXIgYWRkcmVzcywgIyBlbnRzKSAqLwotICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwg
Z2R0X2VudHM7IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KLSAgICBVTE9OR19Q
VFIga2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1Ax
KSAgICovCi0gICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4g
Y3RybHJlZ1sxXS4gKi8KLSAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAv
KiBDUjAtQ1I3IChjb250cm9sIHJlZ2lzdGVycykgICovCi0gICAgVUxPTkdfUFRSIGRlYnVncmVn
WzhdOyAgICAgICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLwotI2lm
ZGVmIF9faTM4Nl9fCi0gICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyog
Q1M6RUlQIG9mIGV2ZW50IGNhbGxiYWNrICAgICAqLwotICAgIFVMT05HX1BUUiBldmVudF9jYWxs
YmFja19laXA7Ci0gICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6
RUlQIG9mIGZhaWxzYWZlIGNhbGxiYWNrICAqLwotICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxs
YmFja19laXA7Ci0jZWxzZQotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7Ci0gICAg
VUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKLSNpZmRlZiBfX1hFTl9fCi0gICAgdW5p
b24gewotICAgICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7Ci0gICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8q
IGNvbXBhdCBDUyBvZiBldmVudCBjYiAgICAgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBm
YWlsc2FmZV9jYWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLwotICAg
ICAgICB9OwotICAgIH07Ci0jZWxzZQotICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2Vp
cDsKLSNlbmRpZgotI2VuZGlmCi0gICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAg
ICAgLyogVk1BU1NUX1RZUEVfKiBiaXRtYXAgKi8KLSNpZmRlZiBfX3g4Nl82NF9fCi0gICAgLyog
U2VnbWVudCBiYXNlIGFkZHJlc3Nlcy4gKi8KLSAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7Ci0g
ICAgdWludDY0X3QgICAgICBnc19iYXNlX2tlcm5lbDsKLSAgICB1aW50NjRfdCAgICAgIGdzX2Jh
c2VfdXNlcjsKLSNlbmRpZgotfTsKLXR5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2
Y3B1X2d1ZXN0X2NvbnRleHRfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3Rf
Y29udGV4dF90KTsKLQotc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gewotICAgIFVMT05HX1BUUiBt
YXhfcGZuOyAgICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRhYmxl
ICovCi0gICAgLyogRnJhbWUgY29udGFpbmluZyBsaXN0IG9mIG1mbnMgY29udGFpbmluZyBsaXN0
IG9mIG1mbnMgY29udGFpbmluZyBwMm0uICovCi0gICAgeGVuX3Bmbl90ICAgICBwZm5fdG9fbWZu
X2ZyYW1lX2xpc3RfbGlzdDsKLSAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsKLSAgICB1aW50NjRf
dCBwYWRbMzJdOwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaF9zaGFy
ZWRfaW5mb190OwotCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwotCi0vKgotICogYCBlbnVt
IG5lZ19lcnJub3ZhbAotICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOwot
ICogYAotICogU2V0cyAoaWYgc2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgot
ICovCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jfc2V0X2Rl
YnVncmVnKGludCByZWdubywgVUxPTkdfUFRSIHZhbHVlKTsKLSAqCi0gKiBgIFVMT05HX1BUUgot
ICogYCBIWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOwotICogRm9yIDA8PXJlZzw9
NywgcmV0dXJucyB0aGUgZGVidWcgcmVnaXN0ZXIgdmFsdWUuCi0gKiBGb3Igb3RoZXIgdmFsdWVz
IG9mIHJlZywgcmV0dXJucyAoKFVMT05HX1BUUiktRUlOVkFMKS4KLSAqIChVbmZvcnR1bmF0ZWx5
LCB0aGlzIGludGVyZmFjZSBpcyBkZWZlY3RpdmUuKQotICovCi0KLS8qCi0gKiBQcmVmaXggZm9y
Y2VzIGVtdWxhdGlvbiBvZiBzb21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCi0gKiBDdXJy
ZW50bHkgb25seSBDUFVJRC4KLSAqLwotI2lmZGVmIF9fQVNTRU1CTFlfXwotI2RlZmluZSBYRU5f
RU1VTEFURV9QUkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKLSNkZWZpbmUg
WEVOX0NQVUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAotI2Vsc2UKLSNkZWZp
bmUgWEVOX0VNVUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAi
Ci0jZGVmaW5lIFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgot
I2VuZGlmCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLwotCi0v
KgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNE
IgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMt
bW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2Vycm5vLmgg
Yi9pbmNsdWRlL3hlbi9lcnJuby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2M2
YzQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2Vycm5vLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzcgKzAsMCBAQAotI2lmbmRlZiBfSTM4Nl9FUlJOT19ICi0jZGVmaW5lIF9JMzg2X0VSUk5P
X0gKLQotLyogYCBlbnVtIG5lZ19lcnJub3ZhbCB7ICBbIC1FZm9vIGZvciBlYWNoIEVmb28gaW4g
dGhlIGxpc3QgYmVsb3cgXSAgfSAqLwotLyogYCBlbnVtIGVycm5vdmFsIHsgKi8KLQotI2RlZmlu
ZQlFUEVSTQkJIDEJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8KLSNkZWZpbmUJRU5PRU5U
CQkgMgkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovCi0jZGVmaW5lCUVTUkNICQkgMwkv
KiBObyBzdWNoIHByb2Nlc3MgKi8KLSNkZWZpbmUJRUlOVFIJCSA0CS8qIEludGVycnVwdGVkIHN5
c3RlbSBjYWxsICovCi0jZGVmaW5lCUVJTwkJIDUJLyogSS9PIGVycm9yICovCi0jZGVmaW5lCUVO
WElPCQkgNgkvKiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCi0jZGVmaW5lCUUyQklHCQkg
NwkvKiBBcmcgbGlzdCB0b28gTE9OR19QVFIgKi8KLSNkZWZpbmUJRU5PRVhFQwkJIDgJLyogRXhl
YyBmb3JtYXQgZXJyb3IgKi8KLSNkZWZpbmUJRUJBREYJCSA5CS8qIEJhZCBmaWxlIG51bWJlciAq
LwotI2RlZmluZQlFQ0hJTEQJCTEwCS8qIE5vIGNoaWxkIHByb2Nlc3NlcyAqLwotI2RlZmluZQlF
QUdBSU4JCTExCS8qIFRyeSBhZ2FpbiAqLwotI2RlZmluZQlFTk9NRU0JCTEyCS8qIE91dCBvZiBt
ZW1vcnkgKi8KLSNkZWZpbmUJRUFDQ0VTCQkxMwkvKiBQZXJtaXNzaW9uIGRlbmllZCAqLwotI2Rl
ZmluZQlFRkFVTFQJCTE0CS8qIEJhZCBhZGRyZXNzICovCi0jZGVmaW5lCUVOT1RCTEsJCTE1CS8q
IEJsb2NrIGRldmljZSByZXF1aXJlZCAqLwotI2RlZmluZQlFQlVTWQkJMTYJLyogRGV2aWNlIG9y
IHJlc291cmNlIGJ1c3kgKi8KLSNkZWZpbmUJRUVYSVNUCQkxNwkvKiBGaWxlIGV4aXN0cyAqLwot
I2RlZmluZQlFWERFVgkJMTgJLyogQ3Jvc3MtZGV2aWNlIGxpbmsgKi8KLSNkZWZpbmUJRU5PREVW
CQkxOQkvKiBObyBzdWNoIGRldmljZSAqLwotI2RlZmluZQlFTk9URElSCQkyMAkvKiBOb3QgYSBk
aXJlY3RvcnkgKi8KLSNkZWZpbmUJRUlTRElSCQkyMQkvKiBJcyBhIGRpcmVjdG9yeSAqLwotI2Rl
ZmluZQlFSU5WQUwJCTIyCS8qIEludmFsaWQgYXJndW1lbnQgKi8KLSNkZWZpbmUJRU5GSUxFCQky
MwkvKiBGaWxlIHRhYmxlIG92ZXJmbG93ICovCi0jZGVmaW5lCUVNRklMRQkJMjQJLyogVG9vIG1h
bnkgb3BlbiBmaWxlcyAqLwotI2RlZmluZQlFTk9UVFkJCTI1CS8qIE5vdCBhIHR5cGV3cml0ZXIg
Ki8KLSNkZWZpbmUJRVRYVEJTWQkJMjYJLyogVGV4dCBmaWxlIGJ1c3kgKi8KLSNkZWZpbmUJRUZC
SUcJCTI3CS8qIEZpbGUgdG9vIGxhcmdlICovCi0jZGVmaW5lCUVOT1NQQwkJMjgJLyogTm8gc3Bh
Y2UgbGVmdCBvbiBkZXZpY2UgKi8KLSNkZWZpbmUJRVNQSVBFCQkyOQkvKiBJbGxlZ2FsIHNlZWsg
Ki8KLSNkZWZpbmUJRVJPRlMJCTMwCS8qIFJlYWQtb25seSBmaWxlIHN5c3RlbSAqLwotI2RlZmlu
ZQlFTUxJTksJCTMxCS8qIFRvbyBtYW55IGxpbmtzICovCi0jZGVmaW5lCUVQSVBFCQkzMgkvKiBC
cm9rZW4gcGlwZSAqLwotI2RlZmluZQlFRE9NCQkzMwkvKiBNYXRoIGFyZ3VtZW50IG91dCBvZiBk
b21haW4gb2YgZnVuYyAqLwotI2RlZmluZQlFUkFOR0UJCTM0CS8qIE1hdGggcmVzdWx0IG5vdCBy
ZXByZXNlbnRhYmxlICovCi0jZGVmaW5lCUVERUFETEsJCTM1CS8qIFJlc291cmNlIGRlYWRsb2Nr
IHdvdWxkIG9jY3VyICovCi0jZGVmaW5lCUVOQU1FVE9PTE9ORwkzNgkvKiBGaWxlIG5hbWUgdG9v
IExPTkdfUFRSICovCi0jZGVmaW5lCUVOT0xDSwkJMzcJLyogTm8gcmVjb3JkIGxvY2tzIGF2YWls
YWJsZSAqLwotI2RlZmluZQlFTk9TWVMJCTM4CS8qIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCAq
LwotI2RlZmluZQlFTk9URU1QVFkJMzkJLyogRGlyZWN0b3J5IG5vdCBlbXB0eSAqLwotI2RlZmlu
ZQlFTE9PUAkJNDAJLyogVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgKi8KLSNk
ZWZpbmUJRVdPVUxEQkxPQ0sJRUFHQUlOCS8qIE9wZXJhdGlvbiB3b3VsZCBibG9jayAqLwotI2Rl
ZmluZQlFTk9NU0cJCTQyCS8qIE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlICovCi0jZGVmaW5l
CUVJRFJNCQk0MwkvKiBJZGVudGlmaWVyIHJlbW92ZWQgKi8KLSNkZWZpbmUJRUNIUk5HCQk0NAkv
KiBDaGFubmVsIG51bWJlciBvdXQgb2YgcmFuZ2UgKi8KLSNkZWZpbmUJRUwyTlNZTkMJNDUJLyog
TGV2ZWwgMiBub3Qgc3luY2hyb25pemVkICovCi0jZGVmaW5lCUVMM0hMVAkJNDYJLyogTGV2ZWwg
MyBoYWx0ZWQgKi8KLSNkZWZpbmUJRUwzUlNUCQk0NwkvKiBMZXZlbCAzIHJlc2V0ICovCi0jZGVm
aW5lCUVMTlJORwkJNDgJLyogTGluayBudW1iZXIgb3V0IG9mIHJhbmdlICovCi0jZGVmaW5lCUVV
TkFUQ0gJCTQ5CS8qIFByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQgKi8KLSNkZWZpbmUJRU5P
Q1NJCQk1MAkvKiBObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSAqLwotI2RlZmluZQlFTDJITFQJ
CTUxCS8qIExldmVsIDIgaGFsdGVkICovCi0jZGVmaW5lCUVCQURFCQk1MgkvKiBJbnZhbGlkIGV4
Y2hhbmdlICovCi0jZGVmaW5lCUVCQURSCQk1MwkvKiBJbnZhbGlkIHJlcXVlc3QgZGVzY3JpcHRv
ciAqLwotI2RlZmluZQlFWEZVTEwJCTU0CS8qIEV4Y2hhbmdlIGZ1bGwgKi8KLSNkZWZpbmUJRU5P
QU5PCQk1NQkvKiBObyBhbm9kZSAqLwotI2RlZmluZQlFQkFEUlFDCQk1NgkvKiBJbnZhbGlkIHJl
cXVlc3QgY29kZSAqLwotI2RlZmluZQlFQkFEU0xUCQk1NwkvKiBJbnZhbGlkIHNsb3QgKi8KLQot
I2RlZmluZQlFREVBRExPQ0sJRURFQURMSwotCi0jZGVmaW5lCUVCRk9OVAkJNTkJLyogQmFkIGZv
bnQgZmlsZSBmb3JtYXQgKi8KLSNkZWZpbmUJRU5PU1RSCQk2MAkvKiBEZXZpY2Ugbm90IGEgc3Ry
ZWFtICovCi0jZGVmaW5lCUVOT0RBVEEJCTYxCS8qIE5vIGRhdGEgYXZhaWxhYmxlICovCi0jZGVm
aW5lCUVUSU1FCQk2MgkvKiBUaW1lciBleHBpcmVkICovCi0jZGVmaW5lCUVOT1NSCQk2MwkvKiBP
dXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMgKi8KLSNkZWZpbmUJRU5PTkVUCQk2NAkvKiBNYWNoaW5l
IGlzIG5vdCBvbiB0aGUgbmV0d29yayAqLwotI2RlZmluZQlFTk9QS0cJCTY1CS8qIFBhY2thZ2Ug
bm90IGluc3RhbGxlZCAqLwotI2RlZmluZQlFUkVNT1RFCQk2NgkvKiBPYmplY3QgaXMgcmVtb3Rl
ICovCi0jZGVmaW5lCUVOT0xJTksJCTY3CS8qIExpbmsgaGFzIGJlZW4gc2V2ZXJlZCAqLwotI2Rl
ZmluZQlFQURWCQk2OAkvKiBBZHZlcnRpc2UgZXJyb3IgKi8KLSNkZWZpbmUJRVNSTU5UCQk2OQkv
KiBTcm1vdW50IGVycm9yICovCi0jZGVmaW5lCUVDT01NCQk3MAkvKiBDb21tdW5pY2F0aW9uIGVy
cm9yIG9uIHNlbmQgKi8KLSNkZWZpbmUJRVBST1RPCQk3MQkvKiBQcm90b2NvbCBlcnJvciAqLwot
I2RlZmluZQlFTVVMVElIT1AJNzIJLyogTXVsdGlob3AgYXR0ZW1wdGVkICovCi0jZGVmaW5lCUVE
T1RET1QJCTczCS8qIFJGUyBzcGVjaWZpYyBlcnJvciAqLwotI2RlZmluZQlFQkFETVNHCQk3NAkv
KiBOb3QgYSBkYXRhIG1lc3NhZ2UgKi8KLSNkZWZpbmUJRU9WRVJGTE9XCTc1CS8qIFZhbHVlIHRv
byBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUgKi8KLSNkZWZpbmUJRU5PVFVOSVEJNzYJLyog
TmFtZSBub3QgdW5pcXVlIG9uIG5ldHdvcmsgKi8KLSNkZWZpbmUJRUJBREZECQk3NwkvKiBGaWxl
IGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlICovCi0jZGVmaW5lCUVSRU1DSEcJCTc4CS8qIFJlbW90
ZSBhZGRyZXNzIGNoYW5nZWQgKi8KLSNkZWZpbmUJRUxJQkFDQwkJNzkJLyogQ2FuIG5vdCBhY2Nl
c3MgYSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkgKi8KLSNkZWZpbmUJRUxJQkJBRAkJODAJLyogQWNj
ZXNzaW5nIGEgY29ycnVwdGVkIHNoYXJlZCBsaWJyYXJ5ICovCi0jZGVmaW5lCUVMSUJTQ04JCTgx
CS8qIC5saWIgc2VjdGlvbiBpbiBhLm91dCBjb3JydXB0ZWQgKi8KLSNkZWZpbmUJRUxJQk1BWAkJ
ODIJLyogQXR0ZW1wdGluZyB0byBsaW5rIGluIHRvbyBtYW55IHNoYXJlZCBsaWJyYXJpZXMgKi8K
LSNkZWZpbmUJRUxJQkVYRUMJODMJLyogQ2Fubm90IGV4ZWMgYSBzaGFyZWQgbGlicmFyeSBkaXJl
Y3RseSAqLwotI2RlZmluZQlFSUxTRVEJCTg0CS8qIElsbGVnYWwgYnl0ZSBzZXF1ZW5jZSAqLwot
I2RlZmluZQlFUkVTVEFSVAk4NQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUg
cmVzdGFydGVkICovCi0jZGVmaW5lCUVTVFJQSVBFCTg2CS8qIFN0cmVhbXMgcGlwZSBlcnJvciAq
LwotI2RlZmluZQlFVVNFUlMJCTg3CS8qIFRvbyBtYW55IHVzZXJzICovCi0jZGVmaW5lCUVOT1RT
T0NLCTg4CS8qIFNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCAqLwotI2RlZmluZQlFREVT
VEFERFJSRVEJODkJLyogRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCAqLwotI2RlZmluZQlF
TVNHU0laRQk5MAkvKiBNZXNzYWdlIHRvbyBMT05HX1BUUiAqLwotI2RlZmluZQlFUFJPVE9UWVBF
CTkxCS8qIFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCAqLwotI2RlZmluZQlFTk9QUk9U
T09QVAk5MgkvKiBQcm90b2NvbCBub3QgYXZhaWxhYmxlICovCi0jZGVmaW5lCUVQUk9UT05PU1VQ
UE9SVAk5MwkvKiBQcm90b2NvbCBub3Qgc3VwcG9ydGVkICovCi0jZGVmaW5lCUVTT0NLVE5PU1VQ
UE9SVAk5NAkvKiBTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkICovCi0jZGVmaW5lCUVPUE5PVFNV
UFAJOTUJLyogT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdHJhbnNwb3J0IGVuZHBvaW50ICov
Ci0jZGVmaW5lCUVQRk5PU1VQUE9SVAk5NgkvKiBQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRl
ZCAqLwotI2RlZmluZQlFQUZOT1NVUFBPUlQJOTcJLyogQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBv
cnRlZCBieSBwcm90b2NvbCAqLwotI2RlZmluZQlFQUREUklOVVNFCTk4CS8qIEFkZHJlc3MgYWxy
ZWFkeSBpbiB1c2UgKi8KLSNkZWZpbmUJRUFERFJOT1RBVkFJTAk5OQkvKiBDYW5ub3QgYXNzaWdu
IHJlcXVlc3RlZCBhZGRyZXNzICovCi0jZGVmaW5lCUVORVRET1dOCTEwMAkvKiBOZXR3b3JrIGlz
IGRvd24gKi8KLSNkZWZpbmUJRU5FVFVOUkVBQ0gJMTAxCS8qIE5ldHdvcmsgaXMgdW5yZWFjaGFi
bGUgKi8KLSNkZWZpbmUJRU5FVFJFU0VUCTEwMgkvKiBOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlv
biBiZWNhdXNlIG9mIHJlc2V0ICovCi0jZGVmaW5lCUVDT05OQUJPUlRFRAkxMDMJLyogU29mdHdh
cmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQgKi8KLSNkZWZpbmUJRUNPTk5SRVNFVAkxMDQJLyog
Q29ubmVjdGlvbiByZXNldCBieSBwZWVyICovCi0jZGVmaW5lCUVOT0JVRlMJCTEwNQkvKiBObyBi
dWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCi0jZGVmaW5lCUVJU0NPTk4JCTEwNgkvKiBUcmFuc3Bv
cnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KLSNkZWZpbmUJRU5PVENPTk4JMTA3
CS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICovCi0jZGVmaW5lCUVTSFVU
RE9XTgkxMDgJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVuZHBvaW50IHNodXRkb3du
ICovCi0jZGVmaW5lCUVUT09NQU5ZUkVGUwkxMDkJLyogVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fu
bm90IHNwbGljZSAqLwotI2RlZmluZQlFVElNRURPVVQJMTEwCS8qIENvbm5lY3Rpb24gdGltZWQg
b3V0ICovCi0jZGVmaW5lCUVDT05OUkVGVVNFRAkxMTEJLyogQ29ubmVjdGlvbiByZWZ1c2VkICov
Ci0jZGVmaW5lCUVIT1NURE9XTgkxMTIJLyogSG9zdCBpcyBkb3duICovCi0jZGVmaW5lCUVIT1NU
VU5SRUFDSAkxMTMJLyogTm8gcm91dGUgdG8gaG9zdCAqLwotI2RlZmluZQlFQUxSRUFEWQkxMTQJ
LyogT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MgKi8KLSNkZWZpbmUJRUlOUFJPR1JFU1MJ
MTE1CS8qIE9wZXJhdGlvbiBub3cgaW4gcHJvZ3Jlc3MgKi8KLSNkZWZpbmUJRVNUQUxFCQkxMTYJ
LyogU3RhbGUgTkZTIGZpbGUgaGFuZGxlICovCi0jZGVmaW5lCUVVQ0xFQU4JCTExNwkvKiBTdHJ1
Y3R1cmUgbmVlZHMgY2xlYW5pbmcgKi8KLSNkZWZpbmUJRU5PVE5BTQkJMTE4CS8qIE5vdCBhIFhF
TklYIG5hbWVkIHR5cGUgZmlsZSAqLwotI2RlZmluZQlFTkFWQUlMCQkxMTkJLyogTm8gWEVOSVgg
c2VtYXBob3JlcyBhdmFpbGFibGUgKi8KLSNkZWZpbmUJRUlTTkFNCQkxMjAJLyogSXMgYSBuYW1l
ZCB0eXBlIGZpbGUgKi8KLSNkZWZpbmUJRVJFTU9URUlPCTEyMQkvKiBSZW1vdGUgSS9PIGVycm9y
ICovCi0jZGVmaW5lCUVEUVVPVAkJMTIyCS8qIFF1b3RhIGV4Y2VlZGVkICovCi0KLSNkZWZpbmUJ
RU5PTUVESVVNCTEyMwkvKiBObyBtZWRpdW0gZm91bmQgKi8KLSNkZWZpbmUJRU1FRElVTVRZUEUJ
MTI0CS8qIFdyb25nIG1lZGl1bSB0eXBlICovCi0KLS8qIGAgfSAqLwotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuL2V2ZW50X2NoYW5uZWwuaCBiL2luY2x1ZGUveGVuL2V2ZW50X2No
YW5uZWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlNTMxZC4uMDAwMDAwMAot
LS0gYS9pbmNsdWRlL3hlbi9ldmVudF9jaGFubmVsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzODUg
KzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogZXZlbnRfY2hhbm5lbC5oCi0gKgot
ICogRXZlbnQgY2hhbm5lbHMgYmV0d2VlbiBkb21haW5zLgotICoKLSAqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0
cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAq
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK
LSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMDMtMjAwNCwgSyBBIEZyYXNlci4KLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BV
QkxJQ19FVkVOVF9DSEFOTkVMX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfRVZFTlRfQ0hBTk5F
TF9IX18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogYGluY29udGVudHMgMTUwIGV2dGNo
biBFdmVudCBDaGFubmVscwotICoKLSAqIEV2ZW50IGNoYW5uZWxzIGFyZSB0aGUgYmFzaWMgcHJp
bWl0aXZlIHByb3ZpZGVkIGJ5IFhlbiBmb3IgZXZlbnQKLSAqIG5vdGlmaWNhdGlvbnMuIEFuIGV2
ZW50IGlzIHRoZSBYZW4gZXF1aXZhbGVudCBvZiBhIGhhcmR3YXJlCi0gKiBpbnRlcnJ1cHQuIFRo
ZXkgZXNzZW50aWFsbHkgc3RvcmUgb25lIGJpdCBvZiBpbmZvcm1hdGlvbiwgdGhlIGV2ZW50Ci0g
KiBvZiBpbnRlcmVzdCBpcyBzaWduYWxsZWQgYnkgdHJhbnNpdGlvbmluZyB0aGlzIGJpdCBmcm9t
IDAgdG8gMS4KLSAqCi0gKiBOb3RpZmljYXRpb25zIGFyZSByZWNlaXZlZCBieSBhIGd1ZXN0IHZp
YSBhbiB1cGNhbGwgZnJvbSBYZW4sCi0gKiBpbmRpY2F0aW5nIHdoZW4gYW4gZXZlbnQgYXJyaXZl
cyAoc2V0dGluZyB0aGUgYml0KS4gRnVydGhlcgotICogbm90aWZpY2F0aW9ucyBhcmUgbWFza2Vk
IHVudGlsIHRoZSBiaXQgaXMgY2xlYXJlZCBhZ2FpbiAodGhlcmVmb3JlLAotICogZ3Vlc3RzIG11
c3QgY2hlY2sgdGhlIHZhbHVlIG9mIHRoZSBiaXQgYWZ0ZXIgcmUtZW5hYmxpbmcgZXZlbnQKLSAq
IGRlbGl2ZXJ5IHRvIGVuc3VyZSBubyBtaXNzZWQgbm90aWZpY2F0aW9ucykuCi0gKgotICogRXZl
bnQgbm90aWZpY2F0aW9ucyBjYW4gYmUgbWFza2VkIGJ5IHNldHRpbmcgYSBmbGFnOyB0aGlzIGlz
Ci0gKiBlcXVpdmFsZW50IHRvIGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZCBjYW4gYmUgdXNlZCB0
byBlbnN1cmUKLSAqIGF0b21pY2l0eSBvZiBjZXJ0YWluIG9wZXJhdGlvbnMgaW4gdGhlIGd1ZXN0
IGtlcm5lbC4KLSAqCi0gKiBFdmVudCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGV2
dGNobl8qIGZpZWxkcyBpbgotICogc3RydWN0IHNoYXJlZF9pbmZvIGFuZCBzdHJ1Y3QgdmNwdV9p
bmZvLgotICovCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jf
ZXZlbnRfY2hhbm5lbF9vcChlbnVtIGV2ZW50X2NoYW5uZWxfb3AgY21kLCB2b2lkICphcmdzKQot
ICogYAotICogQGNtZCAgPT0gRVZUQ0hOT1BfKiAoZXZlbnQtY2hhbm5lbCBvcGVyYXRpb24pLgot
ICogQGFyZ3MgPT0gc3RydWN0IGV2dGNobl8qIE9wZXJhdGlvbi1zcGVjaWZpYyBleHRyYSBhcmd1
bWVudHMgKE5VTEwgaWYgbm9uZSkuCi0gKi8KLQotLyogYCBlbnVtIGV2ZW50X2NoYW5uZWxfb3Ag
eyAvLyBFVlRDSE5PUF8qID0+IHN0cnVjdCBldnRjaG5fKiAqLwotI2RlZmluZSBFVlRDSE5PUF9i
aW5kX2ludGVyZG9tYWluIDAKLSNkZWZpbmUgRVZUQ0hOT1BfYmluZF92aXJxICAgICAgICAxCi0j
ZGVmaW5lIEVWVENITk9QX2JpbmRfcGlycSAgICAgICAgMgotI2RlZmluZSBFVlRDSE5PUF9jbG9z
ZSAgICAgICAgICAgIDMKLSNkZWZpbmUgRVZUQ0hOT1Bfc2VuZCAgICAgICAgICAgICA0Ci0jZGVm
aW5lIEVWVENITk9QX3N0YXR1cyAgICAgICAgICAgNQotI2RlZmluZSBFVlRDSE5PUF9hbGxvY191
bmJvdW5kICAgIDYKLSNkZWZpbmUgRVZUQ0hOT1BfYmluZF9pcGkgICAgICAgICA3Ci0jZGVmaW5l
IEVWVENITk9QX2JpbmRfdmNwdSAgICAgICAgOAotI2RlZmluZSBFVlRDSE5PUF91bm1hc2sgICAg
ICAgICAgIDkKLSNkZWZpbmUgRVZUQ0hOT1BfcmVzZXQgICAgICAgICAgIDEwCi0jZGVmaW5lIEVW
VENITk9QX2luaXRfY29udHJvbCAgICAxMQotI2RlZmluZSBFVlRDSE5PUF9leHBhbmRfYXJyYXkg
ICAgMTIKLSNkZWZpbmUgRVZUQ0hOT1Bfc2V0X3ByaW9yaXR5ICAgIDEzCi0vKiBgIH0gKi8KLQot
dHlwZWRlZiB1aW50MzJfdCBldnRjaG5fcG9ydF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
ZXZ0Y2huX3BvcnRfdCk7Ci0KLS8qCi0gKiBFVlRDSE5PUF9hbGxvY191bmJvdW5kOiBBbGxvY2F0
ZSBhIHBvcnQgaW4gZG9tYWluIDxkb20+IGFuZCBtYXJrIGFzCi0gKiBhY2NlcHRpbmcgaW50ZXJk
b21haW4gYmluZGluZ3MgZnJvbSBkb21haW4gPHJlbW90ZV9kb20+LiBBIGZyZXNoIHBvcnQKLSAq
IGlzIGFsbG9jYXRlZCBpbiA8ZG9tPiBhbmQgcmV0dXJuZWQgYXMgPHBvcnQ+LgotICogTk9URVM6
Ci0gKiAgMS4gSWYgdGhlIGNhbGxlciBpcyB1bnByaXZpbGVnZWQgdGhlbiA8ZG9tPiBtdXN0IGJl
IERPTUlEX1NFTEYuCi0gKiAgMi4gPHJkb20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBs
b29wYmFjayBjb25uZWN0aW9ucy4KLSAqLwotc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIHsK
LSAgICAvKiBJTiBwYXJhbWV0ZXJzICovCi0gICAgZG9taWRfdCBkb20sIHJlbW90ZV9kb207Ci0g
ICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci19OwotdHlw
ZWRlZiBzdHJ1Y3QgZXZ0Y2huX2FsbG9jX3VuYm91bmQgZXZ0Y2huX2FsbG9jX3VuYm91bmRfdDsK
LQotLyoKLSAqIEVWVENITk9QX2JpbmRfaW50ZXJkb21haW46IENvbnN0cnVjdCBhbiBpbnRlcmRv
bWFpbiBldmVudCBjaGFubmVsIGJldHdlZW4KLSAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgPHJl
bW90ZV9kb20+LiA8cmVtb3RlX2RvbSxyZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQotICogYSBw
b3J0IHRoYXQgaXMgdW5ib3VuZCBhbmQgbWFya2VkIGFzIGFjY2VwdGluZyBiaW5kaW5ncyBmcm9t
IHRoZSBjYWxsaW5nCi0gKiBkb21haW4uIEEgZnJlc2ggcG9ydCBpcyBhbGxvY2F0ZWQgaW4gdGhl
IGNhbGxpbmcgZG9tYWluIGFuZCByZXR1cm5lZCBhcwotICogPGxvY2FsX3BvcnQ+LgotICoKLSAq
IEluIGNhc2UgdGhlIHBlZXIgZG9tYWluIGhhcyBhbHJlYWR5IHRyaWVkIHRvIHNldCBvdXIgZXZl
bnQgY2hhbm5lbAotICogcGVuZGluZywgYmVmb3JlIGl0IHdhcyBib3VuZCwgRVZUQ0hOT1BfYmlu
ZF9pbnRlcmRvbWFpbiBhbHdheXMgc2V0cwotICogdGhlIGxvY2FsIGV2ZW50IGNoYW5uZWwgcGVu
ZGluZy4KLSAqCi0gKiBUaGUgdXN1YWwgcGF0dGVybiBvZiB1c2UsIGluIHRoZSBndWVzdCdzIHVw
Y2FsbCAob3Igc3Vic2VxdWVudAotICogaGFuZGxlcikgaXMgYXMgZm9sbG93czogKFJlLWVuYWJs
ZSB0aGUgZXZlbnQgY2hhbm5lbCBmb3Igc3Vic2VxdWVudAotICogc2lnbmFsbGluZyBhbmQgdGhl
bikgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2Ygd2hhdGV2ZXIgY29uZGl0aW9uCi0gKiBpcyBi
ZWluZyB3YWl0ZWQgZm9yIGJ5IG90aGVyIG1lYW5zLCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24g
aXMKLSAqIG5lZWRlZCAoaWYgYW55KS4KLSAqCi0gKiBOT1RFUzoKLSAqICAxLiA8cmVtb3RlX2Rv
bT4gbWF5IGJlIERPTUlEX1NFTEYsIGFsbG93aW5nIGxvb3BiYWNrIGNvbm5lY3Rpb25zLgotICov
Ci1zdHJ1Y3QgZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gewotICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovCi0gICAgZG9taWRfdCByZW1vdGVfZG9tOwotICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3Bv
cnQ7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9w
b3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX2ludGVyZG9tYWluIGV2dGNobl9i
aW5kX2ludGVyZG9tYWluX3Q7Ci0KLS8qCi0gKiBFVlRDSE5PUF9iaW5kX3ZpcnE6IEJpbmQgYSBs
b2NhbCBldmVudCBjaGFubmVsIHRvIFZJUlEgPGlycT4gb24gc3BlY2lmaWVkCi0gKiB2Y3B1Lgot
ICogTk9URVM6Ci0gKiAgMS4gVmlydHVhbCBJUlFzIGFyZSBjbGFzc2lmaWVkIGFzIHBlci12Y3B1
IG9yIGdsb2JhbC4gU2VlIHRoZSBWSVJRIGxpc3QKLSAqICAgICBpbiB4ZW4uaCBmb3IgdGhlIGNs
YXNzaWZpY2F0aW9uIG9mIGVhY2ggVklSUS4KLSAqICAyLiBHbG9iYWwgVklSUXMgbXVzdCBiZSBh
bGxvY2F0ZWQgb24gVkNQVTAgYnV0IGNhbiBzdWJzZXF1ZW50bHkgYmUKLSAqICAgICByZS1ib3Vu
ZCB2aWEgRVZUQ0hOT1BfYmluZF92Y3B1LgotICogIDMuIFBlci12Y3B1IFZJUlFzIG1heSBiZSBi
b3VuZCB0byBhdCBtb3N0IG9uZSBldmVudCBjaGFubmVsIHBlciB2Y3B1LgotICogICAgIFRoZSBh
bGxvY2F0ZWQgZXZlbnQgY2hhbm5lbCBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUgYW5k
IHRoZQotICogICAgIGJpbmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCi0gKi8KLXN0cnVjdCBldnRj
aG5fYmluZF92aXJxIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIHVpbnQzMl90IHZp
cnE7IC8qIGVudW0gdmlycSAqLwotICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VUIHBhcmFt
ZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2
dGNobl9iaW5kX3ZpcnEgZXZ0Y2huX2JpbmRfdmlycV90OwotCi0vKgotICogRVZUQ0hOT1BfYmlu
ZF9waXJxOiBCaW5kIGEgbG9jYWwgZXZlbnQgY2hhbm5lbCB0byBhIHJlYWwgSVJRIChQSVJRIDxp
cnE+KS4KLSAqIE5PVEVTOgotICogIDEuIEEgcGh5c2ljYWwgSVJRIG1heSBiZSBib3VuZCB0byBh
dCBtb3N0IG9uZSBldmVudCBjaGFubmVsIHBlciBkb21haW4uCi0gKiAgMi4gT25seSBhIHN1ZmZp
Y2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgYmluZCB0byBhIHBoeXNpY2FsIElSUS4KLSAq
Lwotc3RydWN0IGV2dGNobl9iaW5kX3BpcnEgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0g
ICAgdWludDMyX3QgcGlycTsKLSNkZWZpbmUgQklORF9QSVJRX19XSUxMX1NIQVJFIDEKLSAgICB1
aW50MzJfdCBmbGFnczsgLyogQklORF9QSVJRX18qICovCi0gICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9i
aW5kX3BpcnEgZXZ0Y2huX2JpbmRfcGlycV90OwotCi0vKgotICogRVZUQ0hOT1BfYmluZF9pcGk6
IEJpbmQgYSBsb2NhbCBldmVudCBjaGFubmVsIHRvIHJlY2VpdmUgZXZlbnRzLgotICogTk9URVM6
Ci0gKiAgMS4gVGhlIGFsbG9jYXRlZCBldmVudCBjaGFubmVsIGlzIGJvdW5kIHRvIHRoZSBzcGVj
aWZpZWQgdmNwdS4gVGhlIGJpbmRpbmcKLSAqICAgICBtYXkgbm90IGJlIGNoYW5nZWQuCi0gKi8K
LXN0cnVjdCBldnRjaG5fYmluZF9pcGkgewotICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3Ry
dWN0IGV2dGNobl9iaW5kX2lwaSBldnRjaG5fYmluZF9pcGlfdDsKLQotLyoKLSAqIEVWVENITk9Q
X2Nsb3NlOiBDbG9zZSBhIGxvY2FsIGV2ZW50IGNoYW5uZWwgPHBvcnQ+LiBJZiB0aGUgY2hhbm5l
bCBpcwotICogaW50ZXJkb21haW4gdGhlbiB0aGUgcmVtb3RlIGVuZCBpcyBwbGFjZWQgaW4gdGhl
IHVuYm91bmQgc3RhdGUKLSAqIChFVlRDSE5TVEFUX3VuYm91bmQpLCBhd2FpdGluZyBhIG5ldyBj
b25uZWN0aW9uLgotICovCi1zdHJ1Y3QgZXZ0Y2huX2Nsb3NlIHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLX07Ci10eXBlZGVmIHN0cnVjdCBldnRj
aG5fY2xvc2UgZXZ0Y2huX2Nsb3NlX3Q7Ci0KLS8qCi0gKiBFVlRDSE5PUF9zZW5kOiBTZW5kIGFu
IGV2ZW50IHRvIHRoZSByZW1vdGUgZW5kIG9mIHRoZSBjaGFubmVsIHdob3NlIGxvY2FsCi0gKiBl
bmRwb2ludCBpcyA8cG9ydD4uCi0gKi8KLXN0cnVjdCBldnRjaG5fc2VuZCB7Ci0gICAgLyogSU4g
cGFyYW1ldGVycy4gKi8KLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgZXZ0Y2huX3NlbmQgZXZ0Y2huX3NlbmRfdDsKLQotLyoKLSAqIEVWVENITk9QX3N0YXR1czog
R2V0IHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdoaWNo
Ci0gKiBoYXMgYW4gZW5kcG9pbnQgYXQgPGRvbSwgcG9ydD4uCi0gKiBOT1RFUzoKLSAqICAxLiA8
ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCi0gKiAgMi4gT25seSBhIHN1ZmZp
Y2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgb2J0YWluIHRoZSBzdGF0dXMgb2YgYW4gZXZl
bnQKLSAqICAgICBjaGFubmVsIGZvciB3aGljaCA8ZG9tPiBpcyBub3QgRE9NSURfU0VMRi4KLSAq
Lwotc3RydWN0IGV2dGNobl9zdGF0dXMgewotICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KLSAgICBk
b21pZF90ICBkb207Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgIC8qIE9VVCBwYXJhbWV0
ZXJzICovCi0jZGVmaW5lIEVWVENITlNUQVRfY2xvc2VkICAgICAgIDAgIC8qIENoYW5uZWwgaXMg
bm90IGluIHVzZS4gICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEVWVENITlNUQVRfdW5ib3Vu
ZCAgICAgIDEgIC8qIENoYW5uZWwgaXMgd2FpdGluZyBpbnRlcmRvbSBjb25uZWN0aW9uLiovCi0j
ZGVmaW5lIEVWVENITlNUQVRfaW50ZXJkb21haW4gIDIgIC8qIENoYW5uZWwgaXMgY29ubmVjdGVk
IHRvIHJlbW90ZSBkb21haW4uICovCi0jZGVmaW5lIEVWVENITlNUQVRfcGlycSAgICAgICAgIDMg
IC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSBwaHlzIElSUSBsaW5lLiAgICovCi0jZGVmaW5lIEVW
VENITlNUQVRfdmlycSAgICAgICAgIDQgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFs
IElSUSBsaW5lICovCi0jZGVmaW5lIEVWVENITlNUQVRfaXBpICAgICAgICAgIDUgIC8qIENoYW5u
ZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFsIElQSSBsaW5lICovCi0gICAgdWludDMyX3Qgc3RhdHVz
OwotICAgIHVpbnQzMl90IHZjcHU7ICAgICAgICAgICAgICAgICAvKiBWQ1BVIHRvIHdoaWNoIHRo
aXMgY2hhbm5lbCBpcyBib3VuZC4gICAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIGRvbWlkX3QgZG9tOwotICAgICAgICB9IHVuYm91bmQ7ICAgICAgICAgICAg
ICAgICAvKiBFVlRDSE5TVEFUX3VuYm91bmQgKi8KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIGRvbWlkX3QgZG9tOwotICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgICAg
ICB9IGludGVyZG9tYWluOyAgICAgICAgICAgICAvKiBFVlRDSE5TVEFUX2ludGVyZG9tYWluICov
Ci0gICAgICAgIHVpbnQzMl90IHBpcnE7ICAgICAgICAgICAgIC8qIEVWVENITlNUQVRfcGlycSAg
ICAgICAgKi8KLSAgICAgICAgdWludDMyX3QgdmlycTsgICAgICAgICAgICAgLyogRVZUQ0hOU1RB
VF92aXJxICAgICAgICAqLwotICAgIH0gdTsKLX07Ci10eXBlZGVmIHN0cnVjdCBldnRjaG5fc3Rh
dHVzIGV2dGNobl9zdGF0dXNfdDsKLQotLyoKLSAqIEVWVENITk9QX2JpbmRfdmNwdTogU3BlY2lm
eSB3aGljaCB2Y3B1IGEgY2hhbm5lbCBzaG91bGQgbm90aWZ5IHdoZW4gYW4KLSAqIGV2ZW50IGlz
IHBlbmRpbmcuCi0gKiBOT1RFUzoKLSAqICAxLiBJUEktYm91bmQgY2hhbm5lbHMgYWx3YXlzIG5v
dGlmeSB0aGUgdmNwdSBzcGVjaWZpZWQgYXQgYmluZCB0aW1lLgotICogICAgIFRoaXMgYmluZGlu
ZyBjYW5ub3QgYmUgY2hhbmdlZC4KLSAqICAyLiBQZXItVkNQVSBWSVJRIGNoYW5uZWxzIGFsd2F5
cyBub3RpZnkgdGhlIHZjcHUgc3BlY2lmaWVkIGF0IGJpbmQgdGltZS4KLSAqICAgICBUaGlzIGJp
bmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCi0gKiAgMy4gQWxsIG90aGVyIGNoYW5uZWxzIG5vdGlm
eSB2Y3B1MCBieSBkZWZhdWx0LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdoZW4KLSAqICAgICB0aGUg
Y2hhbm5lbCBpcyBhbGxvY2F0ZWQgKGEgcG9ydCB0aGF0IGlzIGZyZWVkIGFuZCBzdWJzZXF1ZW50
bHkgcmV1c2VkCi0gKiAgICAgaGFzIGl0cyBiaW5kaW5nIHJlc2V0IHRvIHZjcHUwKS4KLSAqLwot
c3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAg
ZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgIHVpbnQzMl90IHZjcHU7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgZXZ0Y2huX2JpbmRfdmNwdSBldnRjaG5fYmluZF92Y3B1X3Q7Ci0KLS8qCi0gKiBFVlRDSE5P
UF91bm1hc2s6IFVubWFzayB0aGUgc3BlY2lmaWVkIGxvY2FsIGV2ZW50LWNoYW5uZWwgcG9ydCBh
bmQgZGVsaXZlcgotICogYSBub3RpZmljYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIFZDUFUgaWYg
YW4gZXZlbnQgaXMgcGVuZGluZy4KLSAqLwotc3RydWN0IGV2dGNobl91bm1hc2sgewotICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYg
c3RydWN0IGV2dGNobl91bm1hc2sgZXZ0Y2huX3VubWFza190OwotCi0vKgotICogRVZUQ0hOT1Bf
cmVzZXQ6IENsb3NlIGFsbCBldmVudCBjaGFubmVscyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWVk
IGRvbWFpbi4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9N
SURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1h
eSBzcGVjaWZ5IG90aGVyIHRoYW4gRE9NSURfU0VMRi4KLSAqICAzLiBEZXN0cm95cyBhbGwgY29u
dHJvbCBibG9ja3MgYW5kIGV2ZW50IGFycmF5LCByZXNldHMgZXZlbnQgY2hhbm5lbAotICogICAg
IG9wZXJhdGlvbnMgdG8gMi1sZXZlbCBBQkkgaWYgY2FsbGVkIHdpdGggPGRvbT4gPT0gRE9NSURf
U0VMRiBhbmQgRklGTwotICogICAgIEFCSSB3YXMgdXNlZC4gR3Vlc3RzIHNob3VsZCBub3QgYmlu
ZCBldmVudHMgZHVyaW5nIEVWVENITk9QX3Jlc2V0IGNhbGwKLSAqICAgICBhcyB0aGVzZSBldmVu
dHMgYXJlIGxpa2VseSB0byBiZSBsb3N0LgotICovCi1zdHJ1Y3QgZXZ0Y2huX3Jlc2V0IHsKLSAg
ICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIGRvbWlkX3QgZG9tOwotfTsKLXR5cGVkZWYgc3Ry
dWN0IGV2dGNobl9yZXNldCBldnRjaG5fcmVzZXRfdDsKLQotLyoKLSAqIEVWVENITk9QX2luaXRf
Y29udHJvbDogaW5pdGlhbGl6ZSB0aGUgY29udHJvbCBibG9jayBmb3IgdGhlIEZJRk8gQUJJLgot
ICoKLSAqIE5vdGU6IGFueSBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IHBlbmRpbmcgd2lsbCBu
b3QgYmUgcmVzZW50IGFuZAotICogd2lsbCBiZSBsb3N0LiAgR3Vlc3RzIHNob3VsZCBjYWxsIHRo
aXMgYmVmb3JlIGJpbmRpbmcgYW55IGV2ZW50IHRvCi0gKiBhdm9pZCBsb3NpbmcgYW55IGV2ZW50
cy4KLSAqLwotc3RydWN0IGV2dGNobl9pbml0X2NvbnRyb2wgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDY0X3QgY29udHJvbF9nZm47Ci0gICAgdWludDMyX3Qgb2Zmc2V0Owot
ICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgdWludDhf
dCBsaW5rX2JpdHM7Ci0gICAgdWludDhfdCBfcGFkWzddOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2
dGNobl9pbml0X2NvbnRyb2wgZXZ0Y2huX2luaXRfY29udHJvbF90OwotCi0vKgotICogRVZUQ0hO
T1BfZXhwYW5kX2FycmF5OiBhZGQgYW4gYWRkaXRpb25hbCBwYWdlIHRvIHRoZSBldmVudCBhcnJh
eS4KLSAqLwotc3RydWN0IGV2dGNobl9leHBhbmRfYXJyYXkgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDY0X3QgYXJyYXlfZ2ZuOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNo
bl9leHBhbmRfYXJyYXkgZXZ0Y2huX2V4cGFuZF9hcnJheV90OwotCi0vKgotICogRVZUQ0hOT1Bf
c2V0X3ByaW9yaXR5OiBzZXQgdGhlIHByaW9yaXR5IGZvciBhbiBldmVudCBjaGFubmVsLgotICov
Ci1zdHJ1Y3QgZXZ0Y2huX3NldF9wcmlvcml0eSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
LSAgICB1aW50MzJfdCBwb3J0OwotICAgIHVpbnQzMl90IHByaW9yaXR5OwotfTsKLXR5cGVkZWYg
c3RydWN0IGV2dGNobl9zZXRfcHJpb3JpdHkgZXZ0Y2huX3NldF9wcmlvcml0eV90OwotCi0vKgot
ICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3Bf
Y29tcGF0KHN0cnVjdCBldnRjaG5fb3AgKm9wKQotICogYAotICogU3VwZXJjZWRlZCBieSBuZXcg
ZXZlbnRfY2hhbm5lbF9vcCgpIGh5cGVyY2FsbCBzaW5jZSAweDAwMDMwMjAyLgotICovCi1zdHJ1
Y3QgZXZ0Y2huX29wIHsKLSAgICB1aW50MzJfdCBjbWQ7IC8qIGVudW0gZXZlbnRfY2hhbm5lbF9v
cCAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kICAg
IGFsbG9jX3VuYm91bmQ7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBi
aW5kX2ludGVyZG9tYWluOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSAgICAgICAg
YmluZF92aXJxOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfcGlycSAgICAgICAgYmluZF9w
aXJxOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpICAgICAgICAgYmluZF9pcGk7Ci0g
ICAgICAgIHN0cnVjdCBldnRjaG5fY2xvc2UgICAgICAgICAgICBjbG9zZTsKLSAgICAgICAgc3Ry
dWN0IGV2dGNobl9zZW5kICAgICAgICAgICAgIHNlbmQ7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5f
c3RhdHVzICAgICAgICAgICBzdGF0dXM7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92Y3B1
ICAgICAgICBiaW5kX3ZjcHU7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fdW5tYXNrICAgICAgICAg
ICB1bm1hc2s7Ci0gICAgfSB1OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9vcCBldnRjaG5f
b3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGV2dGNobl9vcF90KTsKLQotLyoKLSAqIDIt
bGV2ZWwgQUJJCi0gKi8KLQotI2RlZmluZSBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMgKHNpemVvZih4
ZW5fdWxvbmdfdCkgKiBzaXplb2YoeGVuX3Vsb25nX3QpICogNjQpCi0KLS8qCi0gKiBGSUZPIEFC
SQotICovCi0KLS8qIEV2ZW50cyBtYXkgaGF2ZSBwcmlvcml0aWVzIGZyb20gMCAoaGlnaGVzdCkg
dG8gMTUgKGxvd2VzdCkuICovCi0jZGVmaW5lIEVWVENITl9GSUZPX1BSSU9SSVRZX01BWCAgICAg
MAotI2RlZmluZSBFVlRDSE5fRklGT19QUklPUklUWV9ERUZBVUxUIDcKLSNkZWZpbmUgRVZUQ0hO
X0ZJRk9fUFJJT1JJVFlfTUlOICAgICAxNQotCi0jZGVmaW5lIEVWVENITl9GSUZPX01BWF9RVUVV
RVMgKEVWVENITl9GSUZPX1BSSU9SSVRZX01JTiArIDEpCi0KLXR5cGVkZWYgdWludDMyX3QgZXZl
bnRfd29yZF90OwotCi0jZGVmaW5lIEVWVENITl9GSUZPX1BFTkRJTkcgMzEKLSNkZWZpbmUgRVZU
Q0hOX0ZJRk9fTUFTS0VEICAzMAotI2RlZmluZSBFVlRDSE5fRklGT19MSU5LRUQgIDI5Ci0jZGVm
aW5lIEVWVENITl9GSUZPX0JVU1kgICAgMjgKLQotI2RlZmluZSBFVlRDSE5fRklGT19MSU5LX0JJ
VFMgMTcKLSNkZWZpbmUgRVZUQ0hOX0ZJRk9fTElOS19NQVNLICgoMSA8PCBFVlRDSE5fRklGT19M
SU5LX0JJVFMpIC0gMSkKLQotI2RlZmluZSBFVlRDSE5fRklGT19OUl9DSEFOTkVMUyAoMSA8PCBF
VlRDSE5fRklGT19MSU5LX0JJVFMpCi0KLXN0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2Nr
IHsKLSAgICB1aW50MzJfdCByZWFkeTsKLSAgICB1aW50MzJfdCBfcnN2ZDsKLSAgICB1aW50MzJf
dCBoZWFkW0VWVENITl9GSUZPX01BWF9RVUVVRVNdOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNo
bl9maWZvX2NvbnRyb2xfYmxvY2sgZXZ0Y2huX2ZpZm9fY29udHJvbF9ibG9ja190OwotCi0jZW5k
aWYgLyogX19YRU5fUFVCTElDX0VWRU5UX0NIQU5ORUxfSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vZmVhdHVyZXMuaCBiL2luY2x1ZGUv
eGVuL2ZlYXR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZDkyYWEuLjAw
MDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vZmVhdHVyZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEx
NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBmZWF0dXJlcy5oCi0gKiAKLSAq
IEZlYXR1cmUgZmxhZ3MsIHJlcG9ydGVkIGJ5IFhFTlZFUl9nZXRfZmVhdHVyZXMuCi0gKiAKLSAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUKLSAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0g
KgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS
RS4KLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJj
ZS5jb20+Ci0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJMSUNfRkVBVFVSRVNfSF9fCi0jZGVmaW5l
IF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18KLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBlbGZu
b3Rlc19mZWF0dXJlcyBYRU5fRUxGTk9URV9GRUFUVVJFUwotICoKLSAqIFRoZSBsaXN0IG9mIGFs
bCB0aGUgZmVhdHVyZXMgdGhlIGd1ZXN0IHN1cHBvcnRzLiBUaGV5IGFyZSBzZXQgYnkKLSAqIHBh
cnNpbmcgdGhlIFhFTl9FTEZOT1RFX0ZFQVRVUkVTIGFuZCBYRU5fRUxGTk9URV9TVVBQT1JURURf
RkVBVFVSRVMKLSAqIHN0cmluZy4gVGhlIGZvcm1hdCBpcyB0aGUgIGZlYXR1cmUgbmFtZXMgKGFz
IGdpdmVuIGhlcmUgd2l0aG91dCB0aGUKLSAqICJYRU5GRUFUXyIgcHJlZml4KSBzZXBhcmF0ZWQg
YnkgJ3wnIGNoYXJhY3RlcnMuCi0gKiBJZiBhIGZlYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBr
ZXJuZWwgdG8gZnVuY3Rpb24gdGhlbiB0aGUgZmVhdHVyZSBuYW1lCi0gKiBtdXN0IGJlIHByZWNl
ZGVkIGJ5IGEgJyEnIGNoYXJhY3Rlci4KLSAqCi0gKiBOb3RlIHRoYXQgaWYgWEVOX0VMRk5PVEVf
U1VQUE9SVEVEX0ZFQVRVUkVTIGlzIHVzZWQsIHRoZW4gaW4gdGhlCi0gKiBYRU5GRUFUX2RvbTAg
TVVTVCBiZSBzZXQgaWYgdGhlIGd1ZXN0IGlzIHRvIGJlIGJvb3RlZCBhcyBkb20wLAotICovCi0K
LS8qCi0gKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIHdyaXRlLXByb3RlY3Qg
aXRzIHBhZ2V0YWJsZXMsIGFuZCBjYW4KLSAqIHVwZGF0ZSB0aGVtIHZpYSBkaXJlY3Qgd3JpdGVz
LgotICovCi0jZGVmaW5lIFhFTkZFQVRfd3JpdGFibGVfcGFnZV90YWJsZXMgICAgICAgMAotCi0v
KgotICogSWYgc2V0LCB0aGUgZ3Vlc3QgZG9lcyBub3QgbmVlZCB0byB3cml0ZS1wcm90ZWN0IGl0
cyBzZWdtZW50IGRlc2NyaXB0b3IKLSAqIHRhYmxlcywgYW5kIGNhbiB1cGRhdGUgdGhlbSB2aWEg
ZGlyZWN0IHdyaXRlcy4KLSAqLwotI2RlZmluZSBYRU5GRUFUX3dyaXRhYmxlX2Rlc2NyaXB0b3Jf
dGFibGVzIDEKLQotLyoKLSAqIElmIHNldCwgdHJhbnNsYXRpb24gYmV0d2VlbiB0aGUgZ3Vlc3Qn
cyAncHNldWRvLXBoeXNpY2FsJyBhZGRyZXNzIHNwYWNlCi0gKiBhbmQgdGhlIGhvc3QncyBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UgYXJlIGhhbmRsZWQgYnkgdGhlIGh5cGVydmlzb3IuIEluIHRoaXMK
LSAqIG1vZGUgdGhlIGd1ZXN0IGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybSBwaHlzLXRvL2Zyb20t
bWFjaGluZSB0cmFuc2xhdGlvbnMKLSAqIHdoZW4gcGVyZm9ybWluZyBwYWdlIHRhYmxlIG9wZXJh
dGlvbnMuCi0gKi8KLSNkZWZpbmUgWEVORkVBVF9hdXRvX3RyYW5zbGF0ZWRfcGh5c21hcCAgICAy
Ci0KLS8qIElmIHNldCwgdGhlIGd1ZXN0IGlzIHJ1bm5pbmcgaW4gc3VwZXJ2aXNvciBtb2RlIChl
LmcuLCB4ODYgcmluZyAwKS4gKi8KLSNkZWZpbmUgWEVORkVBVF9zdXBlcnZpc29yX21vZGVfa2Vy
bmVsICAgICAzCi0KLS8qCi0gKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIGFs
bG9jYXRlIHg4NiBQQUUgcGFnZSBkaXJlY3RvcmllcwotICogYmVsb3cgNEdCLiBUaGlzIGZsYWcg
aXMgdXN1YWxseSBpbXBsaWVkIGJ5IGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwLgotICovCi0jZGVm
aW5lIFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRnYiAgICAgICAgNAotCi0vKiB4ODY6IERvZXMg
dGhpcyBYZW4gaG9zdCBzdXBwb3J0IHRoZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIGh5cGVy
Y2FsbD8gKi8KLSNkZWZpbmUgWEVORkVBVF9tbXVfcHRfdXBkYXRlX3ByZXNlcnZlX2FkICA1Ci0K
LS8qIHg4NjogRG9lcyB0aGlzIFhlbiBob3N0IHN1cHBvcnQgdGhlIE1NVV97Q0xFQVIsQ09QWX1f
UEFHRSBoeXBlcmNhbGw/ICovCi0jZGVmaW5lIFhFTkZFQVRfaGlnaG1lbV9hc3Npc3QgICAgICAg
ICAgICAgNgotCi0vKgotICogSWYgc2V0LCBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGhvbm9ycyBm
bGFncyB0byBiZSBwbGFjZWQgaW50byBndWVzdCBrZXJuZWwKLSAqIGF2YWlsYWJsZSBwdGUgYml0
cy4KLSAqLwotI2RlZmluZSBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyAgICAgIDcKLQot
LyogeDg2OiBEb2VzIHRoaXMgWGVuIGhvc3Qgc3VwcG9ydCB0aGUgSFZNIGNhbGxiYWNrIHZlY3Rv
ciB0eXBlPyAqLwotI2RlZmluZSBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IgICAgICAgIDgK
LQotLyogeDg2OiBwdmNsb2NrIGFsZ29yaXRobSBpcyBzYWZlIHRvIHVzZSBvbiBIVk0gKi8KLSNk
ZWZpbmUgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrICAgICAgICAgICA5Ci0KLS8qIHg4NjogcGly
cSBjYW4gYmUgdXNlZCBieSBIVk0gZ3Vlc3RzICovCi0jZGVmaW5lIFhFTkZFQVRfaHZtX3BpcnFz
ICAgICAgICAgICAgICAgICAxMAotCi0vKiBvcGVyYXRpb24gYXMgRG9tMCBpcyBzdXBwb3J0ZWQg
Ki8KLSNkZWZpbmUgWEVORkVBVF9kb20wICAgICAgICAgICAgICAgICAgICAgIDExCi0KLS8qIFhl
biBhbHNvIG1hcHMgZ3JhbnQgcmVmZXJlbmNlcyBhdCBwZm4gPSBtZm4uCi0gKiBUaGlzIGZlYXR1
cmUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCi0jZGVmaW5lIFhF
TkZFQVRfZ3JhbnRfbWFwX2lkZW50aXR5ICAgICAgICAxMgotICovCi0KLSNkZWZpbmUgWEVORkVB
VF9OUl9TVUJNQVBTIDEKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18gKi8K
LQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTog
IkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10
YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9ncmFu
dF90YWJsZS5oIGIvaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDViMjliYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi9ncmFudF90YWJs
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSAqIGdyYW50X3RhYmxlLmgKLSAqCi0gKiBJbnRlcmZhY2UgZm9yIGdyYW50aW5nIGZvcmVp
Z24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVjZWl2aW5nCi0gKiBwYWdlLW93bmVyc2hp
cCB0cmFuc2ZlcnMuCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCi0gKiBzZWxs
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0g
KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVB
TElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgSyBBIEZy
YXNlcgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXwotI2RlZmlu
ZSBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCi0KLSNpbmNsdWRlICJ4ZW4uaCIKLQotLyoK
LSAqIGBpbmNvbnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQgVGFibGVzCi0gKgotICogWGVuJ3MgZ3Jh
bnQgdGFibGVzIHByb3ZpZGUgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBtZW1vcnkgc2hhcmluZwot
ICogYmV0d2VlbiBkb21haW5zLiBUaGlzIHNoYXJlZCBtZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlu
cyB0aGUgc3BsaXQKLSAqIGRldmljZSBkcml2ZXJzIGZvciBibG9jayBhbmQgbmV0d29yayBJTy4K
LSAqCi0gKiBFYWNoIGRvbWFpbiBoYXMgaXRzIG93biBncmFudCB0YWJsZS4gVGhpcyBpcyBhIGRh
dGEgc3RydWN0dXJlIHRoYXQKLSAqIGlzIHNoYXJlZCB3aXRoIFhlbjsgaXQgYWxsb3dzIHRoZSBk
b21haW4gdG8gdGVsbCBYZW4gd2hhdCBraW5kIG9mCi0gKiBwZXJtaXNzaW9ucyBvdGhlciBkb21h
aW5zIGhhdmUgb24gaXRzIHBhZ2VzLiBFbnRyaWVzIGluIHRoZSBncmFudAotICogdGFibGUgYXJl
IGlkZW50aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4gQSBncmFudCByZWZlcmVuY2UgaXMgYW4K
LSAqIGludGVnZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMg
YXMgYQotICogY2FwYWJpbGl0eSB3aGljaCB0aGUgZ3JhbnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0g
b3BlcmF0aW9ucyBvbiB0aGUKLSAqIGdyYW50ZXLigJlzIG1lbW9yeS4KLSAqCi0gKiBUaGlzIGNh
cGFiaWxpdHktYmFzZWQgc3lzdGVtIGFsbG93cyBzaGFyZWQtbWVtb3J5IGNvbW11bmljYXRpb25z
Ci0gKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBkb21haW5zLiBBIGdyYW50IHJlZmVyZW5jZSBhbHNv
IGVuY2Fwc3VsYXRlcwotICogdGhlIGRldGFpbHMgb2YgYSBzaGFyZWQgcGFnZSwgcmVtb3Zpbmcg
dGhlIG5lZWQgZm9yIGEgZG9tYWluIHRvCi0gKiBrbm93IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVz
cyBvZiBhIHBhZ2UgaXQgaXMgc2hhcmluZy4gVGhpcyBtYWtlcwotICogaXQgcG9zc2libGUgdG8g
c2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRoIGRvbWFpbnMgcnVubmluZyBpbgotICogZnVsbHkg
dmlydHVhbGlzZWQgbWVtb3J5LgotICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICogR1JBTlQgVEFCTEUgUkVQUkVTRU5UQVRJT04KLSAqLwotCi0vKiBTb21lIHJv
dWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5nIGFuZCB1cGRhdGluZyBncmFudC10YWJsZSBlbnRy
aWVzCi0gKiBpbiBhIGNvbmN1cnJlbmN5LXNhZmUgbWFubmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgTGludXggY29udGFpbnMgYQotICogcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBndWVz
dCBPU2VzIChkcml2ZXJzL3hlbi9ncmFudF90YWJsZS5jLCBzZWUKLSAqIGh0dHA6Ly9naXQua2Vy
bmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1k
cml2ZXJzL3hlbi9ncmFudC10YWJsZS5jO2hiPUhFQUQKLSAqCi0gKiBOQi4gV01CIGlzIGEgbm8t
b3Agb24gY3VycmVudC1nZW5lcmF0aW9uIHg4NiBwcm9jZXNzb3JzLiBIb3dldmVyLCBhCi0gKiAg
ICAgY29tcGlsZXIgYmFycmllciB3aWxsIHN0aWxsIGJlIHJlcXVpcmVkLgotICoKLSAqIEludHJv
ZHVjaW5nIGEgdmFsaWQgZW50cnkgaW50byB0aGUgZ3JhbnQgdGFibGU6Ci0gKiAgMS4gV3JpdGUg
ZW50LT5kb21pZC4KLSAqICAyLiBXcml0ZSBlbnQtPmZyYW1lOgotICogICAgICBHVEZfcGVybWl0
X2FjY2VzczogICBGcmFtZSB0byB3aGljaCBhY2Nlc3MgaXMgcGVybWl0dGVkLgotICogICAgICBH
VEZfYWNjZXB0X3RyYW5zZmVyOiBQc2V1ZG8tcGh5cyBmcmFtZSBzbG90IGJlaW5nIGZpbGxlZCBi
eSBuZXcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIG9yIHplcm8gaWYgbm9u
ZS4KLSAqICAzLiBXcml0ZSBtZW1vcnkgYmFycmllciAoV01CKS4KLSAqICA0LiBXcml0ZSBlbnQt
PmZsYWdzLCBpbmMuIHZhbGlkIHR5cGUuCi0gKgotICogSW52YWxpZGF0aW5nIGFuIHVudXNlZCBH
VEZfcGVybWl0X2FjY2VzcyBlbnRyeToKLSAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCi0gKiAg
Mi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3JlYWRpbmd8R1RGX3dyaXRpbmcpKS4KLSAq
ICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNhZmUgQ01QWENIRygmZW50LT5mbGFncywgZmxhZ3Ms
IDApLgotICogIE5CLiBObyBuZWVkIGZvciBXTUIgYXMgcmV1c2Ugb2YgZW50cnkgaXMgY29udHJv
bC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgotICogICAgICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0
ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3RybC1kZXAgd3JpdGVzLgotICoKLSAqIElu
dmFsaWRhdGluZyBhbiBpbi11c2UgR1RGX3Blcm1pdF9hY2Nlc3MgZW50cnk6Ci0gKiAgVGhpcyBj
YW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBhc3Npc3RhbmNlIGZyb20gdGhlIGRvbWFp
biBjb250cm9sbGVyCi0gKiAgd2hpY2ggY2FuIHNldCBhIHRpbWVvdXQgb24gdGhlIHVzZSBvZiBh
IGdyYW50IGVudHJ5IGFuZCB0YWtlIG5lY2Vzc2FyeQotICogIGFjdGlvbi4gKE5CLiBUaGlzIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQhKS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdU
Rl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6Ci0gKiAgMS4gZmxhZ3MgPSBlbnQtPmZsYWdzLgotICog
IDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkuIFsqXQot
ICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFn
cywgMCkuCi0gKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250
cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCi0gKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNo
aXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCi0gKiAgWypd
IElmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQgaXMgc2V0IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlz
ICdjb21taXR0ZWQnLgotICogICAgICBUaGUgZ3Vlc3QgbXVzdCAvbm90LyBtb2RpZnkgdGhlIGdy
YW50IGVudHJ5IHVudGlsIHRoZSBhZGRyZXNzIG9mIHRoZQotICogICAgICB0cmFuc2ZlcnJlZCBm
cmFtZSBpcyB3cml0dGVuLiBJdCBpcyBzYWZlIGZvciB0aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5n
Ci0gKiAgICAgIGZvciB0aGlzIHRvIG9jY3VyIChkZXRlY3QgYnkgb2JzZXJ2aW5nIEdURl90cmFu
c2Zlcl9jb21wbGV0ZWQgaW4KLSAqICAgICAgZW50LT5mbGFncykuCi0gKgotICogSW52YWxpZGF0
aW5nIGEgY29tbWl0dGVkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6Ci0gKiAgMS4gV2FpdCBm
b3IgKGVudC0+ZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tcGxldGVkKS4KLSAqCi0gKiBDaGFuZ2lu
ZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gd3JpdGFibGUgdG8gcmVhZC1vbmx5OgotICogIFVz
ZSBTTVAtc2FmZSBDTVBYQ0hHIHRvIHNldCBHVEZfcmVhZG9ubHksIHdoaWxlIGNoZWNraW5nICFH
VEZfd3JpdGluZy4KLSAqCi0gKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gcmVh
ZC1vbmx5IHRvIHdyaXRhYmxlOgotICogIFVzZSBTTVAtc2FmZSBiaXQtc2V0dGluZyBpbnN0cnVj
dGlvbi4KLSAqLwotCi0vKgotICogUmVmZXJlbmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVj
aWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUuCi0gKi8KLXR5cGVkZWYgdWludDMyX3QgZ3JhbnRf
cmVmX3Q7Ci0KLS8qCi0gKiBBIGdyYW50IHRhYmxlIGNvbXByaXNlcyBhIHBhY2tlZCBhcnJheSBv
ZiBncmFudCBlbnRyaWVzIGluIG9uZSBvciBtb3JlCi0gKiBwYWdlIGZyYW1lcyBzaGFyZWQgYmV0
d2VlbiBYZW4gYW5kIGEgZ3Vlc3QuCi0gKiBbWEVOXTogVGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5
IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmluZyBndWVzdC4KLSAqIFtHU1RdOiBUaGlzIGZpZWxk
IGlzIHdyaXR0ZW4gYnkgdGhlIGd1ZXN0IGFuZCByZWFkIGJ5IFhlbi4KLSAqLwotCi0vKgotICog
VmVyc2lvbiAxIG9mIHRoZSBncmFudCB0YWJsZSBlbnRyeSBzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5l
ZCBwdXJlbHkKLSAqIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hv
dWxkIHVzZSB2ZXJzaW9uIDIuCi0gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDAzMDIwYQotI2RlZmluZSBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeQotI2RlZmluZSBn
cmFudF9lbnRyeV92MV90IGdyYW50X2VudHJ5X3QKLSNlbmRpZgotc3RydWN0IGdyYW50X2VudHJ5
X3YxIHsKLSAgICAvKiBHVEZfeHh4OiB2YXJpb3VzIHR5cGUgYW5kIGZsYWcgaW5mb3JtYXRpb24u
ICBbWEVOLEdTVF0gKi8KLSAgICB1aW50MTZfdCBmbGFnczsKLSAgICAvKiBUaGUgZG9tYWluIGJl
aW5nIGdyYW50ZWQgZm9yZWlnbiBwcml2aWxlZ2VzLiBbR1NUXSAqLwotICAgIGRvbWlkX3QgIGRv
bWlkOwotICAgIC8qCi0gICAgICogR1RGX3Blcm1pdF9hY2Nlc3M6IEZyYW1lIHRoYXQgQGRvbWlk
IGlzIGFsbG93ZWQgdG8gbWFwIGFuZCBhY2Nlc3MuIFtHU1RdCi0gICAgICogR1RGX2FjY2VwdF90
cmFuc2ZlcjogRnJhbWUgd2hvc2Ugb3duZXJzaGlwIHRyYW5zZmVycmVkIGJ5IEBkb21pZC4gW1hF
Tl0KLSAgICAgKi8KLSAgICB1aW50MzJfdCBmcmFtZTsKLX07Ci10eXBlZGVmIHN0cnVjdCBncmFu
dF9lbnRyeV92MSBncmFudF9lbnRyeV92MV90OwotCi0vKiBUaGUgZmlyc3QgZmV3IGdyYW50IHRh
YmxlIGVudHJpZXMgd2lsbCBiZSBwcmVzZXJ2ZWQgYWNyb3NzIGdyYW50IHRhYmxlCi0gKiB2ZXJz
aW9uIGNoYW5nZXMgYW5kIG1heSBiZSBwcmUtcG9wdWxhdGVkIGF0IGRvbWFpbiBjcmVhdGlvbiBi
eSB0b29scy4KLSAqLwotI2RlZmluZSBHTlRUQUJfTlJfUkVTRVJWRURfRU5UUklFUyAgICAgOAot
I2RlZmluZSBHTlRUQUJfUkVTRVJWRURfQ09OU09MRSAgICAgICAgMAotI2RlZmluZSBHTlRUQUJf
UkVTRVJWRURfWEVOU1RPUkUgICAgICAgMQotCi0vKgotICogVHlwZSBvZiBncmFudCBlbnRyeS4K
LSAqICBHVEZfaW52YWxpZDogVGhpcyBncmFudCBlbnRyeSBncmFudHMgbm8gcHJpdmlsZWdlcy4K
LSAqICBHVEZfcGVybWl0X2FjY2VzczogQWxsb3cgQGRvbWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1l
LgotICogIEdURl9hY2NlcHRfdHJhbnNmZXI6IEFsbG93IEBkb21pZCB0byB0cmFuc2ZlciBvd25l
cnNoaXAgb2Ygb25lIHBhZ2UgZnJhbWUKLSAqICAgICAgICAgICAgICAgICAgICAgICB0byB0aGlz
IGd1ZXN0LiBYZW4gd3JpdGVzIHRoZSBwYWdlIG51bWJlciB0byBAZnJhbWUuCi0gKiAgR1RGX3Ry
YW5zaXRpdmU6IEFsbG93IEBkb21pZCB0byB0cmFuc2l0aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ug
b2YKLSAqICAgICAgICAgICAgICAgICAgQHRyYW5zX2dyYW50IGluIEB0cmFuc19kb21pZC4gIE5v
IG1hcHBpbmdzIGFyZSBhbGxvd2VkLgotICovCi0jZGVmaW5lIEdURl9pbnZhbGlkICAgICAgICAg
KDBVPDwwKQotI2RlZmluZSBHVEZfcGVybWl0X2FjY2VzcyAgICgxVTw8MCkKLSNkZWZpbmUgR1RG
X2FjY2VwdF90cmFuc2ZlciAoMlU8PDApCi0jZGVmaW5lIEdURl90cmFuc2l0aXZlICAgICAgKDNV
PDwwKQotI2RlZmluZSBHVEZfdHlwZV9tYXNrICAgICAgICgzVTw8MCkKLQotLyoKLSAqIFN1YmZs
YWdzIGZvciBHVEZfcGVybWl0X2FjY2Vzcy4KLSAqICBHVEZfcmVhZG9ubHk6IFJlc3RyaWN0IEBk
b21pZCB0byByZWFkLW9ubHkgbWFwcGluZ3MgYW5kIGFjY2Vzc2VzLiBbR1NUXQotICogIEdURl9y
ZWFkaW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciByZWFkaW5nIGJ5IEBk
b21pZC4gW1hFTl0KLSAqICBHVEZfd3JpdGluZzogR3JhbnQgZW50cnkgaXMgY3VycmVudGx5IG1h
cHBlZCBmb3Igd3JpdGluZyBieSBAZG9taWQuIFtYRU5dCi0gKiAgR1RGX1BBVCwgR1RGX1BXVCwg
R1RGX1BDRDogKHg4NikgY2FjaGUgYXR0cmlidXRlIGZsYWdzIGZvciB0aGUgZ3JhbnQgW0dTVF0K
LSAqICBHVEZfc3ViX3BhZ2U6IEdyYW50IGFjY2VzcyB0byBvbmx5IGEgc3VicmFuZ2Ugb2YgdGhl
IHBhZ2UuICBAZG9taWQKLSAqICAgICAgICAgICAgICAgIHdpbGwgb25seSBiZSBhbGxvd2VkIHRv
IGNvcHkgZnJvbSB0aGUgZ3JhbnQsIGFuZCBub3QKLSAqICAgICAgICAgICAgICAgIG1hcCBpdC4g
W0dTVF0KLSAqLwotI2RlZmluZSBfR1RGX3JlYWRvbmx5ICAgICAgICgyKQotI2RlZmluZSBHVEZf
cmVhZG9ubHkgICAgICAgICgxVTw8X0dURl9yZWFkb25seSkKLSNkZWZpbmUgX0dURl9yZWFkaW5n
ICAgICAgICAoMykKLSNkZWZpbmUgR1RGX3JlYWRpbmcgICAgICAgICAoMVU8PF9HVEZfcmVhZGlu
ZykKLSNkZWZpbmUgX0dURl93cml0aW5nICAgICAgICAoNCkKLSNkZWZpbmUgR1RGX3dyaXRpbmcg
ICAgICAgICAoMVU8PF9HVEZfd3JpdGluZykKLSNkZWZpbmUgX0dURl9QV1QgICAgICAgICAgICAo
NSkKLSNkZWZpbmUgR1RGX1BXVCAgICAgICAgICAgICAoMVU8PF9HVEZfUFdUKQotI2RlZmluZSBf
R1RGX1BDRCAgICAgICAgICAgICg2KQotI2RlZmluZSBHVEZfUENEICAgICAgICAgICAgICgxVTw8
X0dURl9QQ0QpCi0jZGVmaW5lIF9HVEZfUEFUICAgICAgICAgICAgKDcpCi0jZGVmaW5lIEdURl9Q
QVQgICAgICAgICAgICAgKDFVPDxfR1RGX1BBVCkKLSNkZWZpbmUgX0dURl9zdWJfcGFnZSAgICAg
ICAoOCkKLSNkZWZpbmUgR1RGX3N1Yl9wYWdlICAgICAgICAoMVU8PF9HVEZfc3ViX3BhZ2UpCi0K
LS8qCi0gKiBTdWJmbGFncyBmb3IgR1RGX2FjY2VwdF90cmFuc2ZlcjoKLSAqICBHVEZfdHJhbnNm
ZXJfY29tbWl0dGVkOiBYZW4gc2V0cyB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBj
b21taXR0ZWQKLSAqICAgICAgdG8gdHJhbnNmZXJyaW5nIG93bmVyc2hpcCBvZiBhIHBhZ2UgZnJh
bWUuIFdoZW4gYSBndWVzdCBzZWVzIHRoaXMgZmxhZwotICogICAgICBpdCBtdXN0IC9ub3QvIG1v
ZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpcwotICog
ICAgICBzZXQgYnkgWGVuLgotICogIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQ6IEl0IGlzIHNhZmUg
Zm9yIHRoZSBndWVzdCB0byBzcGluLXdhaXQgb24gdGhpcyBmbGFnCi0gKiAgICAgIGFmdGVyIHJl
YWRpbmcgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZC4gWGVuIHdpbGwgYWx3YXlzIHdyaXRlIHRoZSBm
cmFtZQotICogICAgICBhZGRyZXNzLCBmb2xsb3dlZCBieSBPUmluZyB0aGlzIGZsYWcsIGluIGEg
dGltZWx5IG1hbm5lci4KLSAqLwotI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAoMikK
LSNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbW1p
dHRlZCkKLSNkZWZpbmUgX0dURl90cmFuc2Zlcl9jb21wbGV0ZWQgKDMpCi0jZGVmaW5lIEdURl90
cmFuc2Zlcl9jb21wbGV0ZWQgICgxVTw8X0dURl90cmFuc2Zlcl9jb21wbGV0ZWQpCi0KLS8qCi0g
KiBWZXJzaW9uIDIgZ3JhbnQgdGFibGUgZW50cmllcy4gIFRoZXNlIGZ1bGZpbCB0aGUgc2FtZSBy
b2xlIGFzCi0gKiB2ZXJzaW9uIDEgZW50cmllcywgYnV0IGNhbiByZXByZXNlbnQgbW9yZSBjb21w
bGljYXRlZCBvcGVyYXRpb25zLgotICogQW55IGdpdmVuIGRvbWFpbiB3aWxsIGhhdmUgZWl0aGVy
IGEgdmVyc2lvbiAxIG9yIGEgdmVyc2lvbiAyIHRhYmxlLAotICogYW5kIGV2ZXJ5IGVudHJ5IGlu
IHRoZSB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIHZlcnNpb24uCi0gKgotICogVGhlIGludGVyZmFj
ZSBieSB3aGljaCBkb21haW5zIHVzZSBncmFudCByZWZlcmVuY2VzIGRvZXMgbm90IGRlcGVuZAot
ICogb24gdGhlIGdyYW50IHRhYmxlIHZlcnNpb24gaW4gdXNlIGJ5IHRoZSBvdGhlciBkb21haW4u
Ci0gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKLS8qCi0g
KiBWZXJzaW9uIDEgYW5kIHZlcnNpb24gMiBncmFudCBlbnRyaWVzIHNoYXJlIGEgY29tbW9uIHBy
ZWZpeC4gIFRoZQotICogZmllbGRzIG9mIHRoZSBwcmVmaXggYXJlIGRvY3VtZW50ZWQgYXMgcGFy
dCBvZiBzdHJ1Y3QKLSAqIGdyYW50X2VudHJ5X3YxLgotICovCi1zdHJ1Y3QgZ3JhbnRfZW50cnlf
aGVhZGVyIHsKLSAgICB1aW50MTZfdCBmbGFnczsKLSAgICBkb21pZF90ICBkb21pZDsKLX07Ci10
eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgZ3JhbnRfZW50cnlfaGVhZGVyX3Q7Ci0K
LS8qCi0gKiBWZXJzaW9uIDIgb2YgdGhlIGdyYW50IGVudHJ5IHN0cnVjdHVyZS4KLSAqLwotdW5p
b24gZ3JhbnRfZW50cnlfdjIgewotICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKLQotICAg
IC8qCi0gICAgICogVGhpcyBtZW1iZXIgaXMgdXNlZCBmb3IgVjEtc3R5bGUgZnVsbCBwYWdlIGdy
YW50cywgd2hlcmUgZWl0aGVyOgotICAgICAqCi0gICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX2Fj
Y2VwdF90cmFuc2Zlciwgb3IKLSAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfcGVybWl0X2FjY2Vz
cyBhbmQgR1RGX3N1Yl9wYWdlIGlzIG5vdCBzZXQuCi0gICAgICoKLSAgICAgKiBJbiB0aGF0IGNh
c2UsIHRoZSBmcmFtZSBmaWVsZCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZQotICAgICAq
IGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIFYxIGVudHJ5IHN0cnVjdHVyZS4KLSAgICAg
Ki8KLSAgICBzdHJ1Y3QgewotICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7Ci0gICAg
ICAgIHVpbnQzMl90IHBhZDA7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lOwotICAgIH0gZnVsbF9w
YWdlOwotCi0gICAgLyoKLSAgICAgKiBJZiB0aGUgZ3JhbnQgdHlwZSBpcyBHVEZfZ3JhbnRfYWNj
ZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgc2V0LAotICAgICAqIEBkb21pZCBpcyBhbGxvd2VkIHRv
IGFjY2VzcyBieXRlcyBbQHBhZ2Vfb2ZmLEBwYWdlX29mZitAbGVuZ3RoKQotICAgICAqIGluIGZy
YW1lIEBmcmFtZS4KLSAgICAgKi8KLSAgICBzdHJ1Y3QgewotICAgICAgICBncmFudF9lbnRyeV9o
ZWFkZXJfdCBoZHI7Ci0gICAgICAgIHVpbnQxNl90IHBhZ2Vfb2ZmOwotICAgICAgICB1aW50MTZf
dCBsZW5ndGg7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lOwotICAgIH0gc3ViX3BhZ2U7Ci0KLSAg
ICAvKgotICAgICAqIElmIHRoZSBncmFudCBpcyBHVEZfdHJhbnNpdGl2ZSwgQGRvbWlkIGlzIGFs
bG93ZWQgdG8gdXNlIHRoZQotICAgICAqIGdyYW50IEBncmVmIGluIGRvbWFpbiBAdHJhbnNfZG9t
aWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKLSAgICAgKiBkb21haW4uICBPYnZpb3VzbHksIHRo
ZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJlIGNvbXBhdGlibGUKLSAgICAgKiB3aXRoIHRoZSBv
cmlnaW5hbCBncmFudC4KLSAgICAgKgotICAgICAqIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgWGVu
IGRvZXMgbm90IGFsbG93IHRyYW5zaXRpdmUgZ3JhbnRzCi0gICAgICogdG8gYmUgbWFwcGVkLgot
ICAgICAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsK
LSAgICAgICAgZG9taWRfdCB0cmFuc19kb21pZDsKLSAgICAgICAgdWludDE2X3QgcGFkMDsKLSAg
ICAgICAgZ3JhbnRfcmVmX3QgZ3JlZjsKLSAgICB9IHRyYW5zaXRpdmU7Ci0KLSAgICB1aW50MzJf
dCBfX3NwYWNlcls0XTsgLyogUGFkIHRvIGEgcG93ZXIgb2YgdHdvICovCi19OwotdHlwZWRlZiB1
bmlvbiBncmFudF9lbnRyeV92MiBncmFudF9lbnRyeV92Ml90OwotCi10eXBlZGVmIHVpbnQxNl90
IGdyYW50X3N0YXR1c190OwotCi0jZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAq
LwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdSQU5UIFRBQkxF
IFFVRVJJRVMgQU5EIFVTRVMKLSAqLwotCi0vKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZ
UEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFudF90YWJsZV9vcCBjbWQsCi0gKiBgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJncywKLSAqIGAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCi0gKiBgCi0gKgotICogQGFyZ3MgcG9pbnRz
IHRvIGFuIGFycmF5IG9mIGEgcGVyLWNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBhcnJheQot
ICogaGFzIEBjb3VudCBtZW1iZXJzCi0gKi8KLQotLyogYCBlbnVtIGdyYW50X3RhYmxlX29wIHsg
Ly8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyogKi8KLSNkZWZpbmUgR05UVEFCT1BfbWFw
X2dyYW50X3JlZiAgICAgICAgMAotI2RlZmluZSBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYgICAg
ICAxCi0jZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxlICAgICAgICAgIDIKLSNkZWZpbmUgR05U
VEFCT1BfZHVtcF90YWJsZSAgICAgICAgICAgMwotI2RlZmluZSBHTlRUQUJPUF90cmFuc2ZlciAg
ICAgICAgICAgICA0Ci0jZGVmaW5lIEdOVFRBQk9QX2NvcHkgICAgICAgICAgICAgICAgIDUKLSNk
ZWZpbmUgR05UVEFCT1BfcXVlcnlfc2l6ZSAgICAgICAgICAgNgotI2RlZmluZSBHTlRUQUJPUF91
bm1hcF9hbmRfcmVwbGFjZSAgICA3Ci0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAw
eDAwMDMwMjBhCi0jZGVmaW5lIEdOVFRBQk9QX3NldF92ZXJzaW9uICAgICAgICAgIDgKLSNkZWZp
bmUgR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXMgICAgOQotI2RlZmluZSBHTlRUQUJPUF9nZXRf
dmVyc2lvbiAgICAgICAgICAxMAotI2RlZmluZSBHTlRUQUJPUF9zd2FwX2dyYW50X3JlZgkgICAg
ICAxMQotI2RlZmluZSBHTlRUQUJPUF9jYWNoZV9mbHVzaAkgICAgICAxMgotI2VuZGlmIC8qIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KLS8qIGAgfSAqLwotCi0vKgotICogSGFuZGxlIHRv
IHRyYWNrIGEgbWFwcGluZyBjcmVhdGVkIHZpYSBhIGdyYW50IHJlZmVyZW5jZS4KLSAqLwotdHlw
ZWRlZiB1aW50MzJfdCBncmFudF9oYW5kbGVfdDsKLQotLyoKLSAqIEdOVFRBQk9QX21hcF9ncmFu
dF9yZWY6IE1hcCB0aGUgZ3JhbnQgZW50cnkgKDxkb20+LDxyZWY+KSBmb3IgYWNjZXNzCi0gKiBi
eSBkZXZpY2VzIGFuZC9vciBob3N0IENQVXMuIElmIHN1Y2Nlc3NmdWwsIDxoYW5kbGU+IGlzIGEg
dHJhY2tpbmcgbnVtYmVyCi0gKiB0aGF0IG11c3QgYmUgcHJlc2VudGVkIGxhdGVyIHRvIGRlc3Ry
b3kgdGhlIG1hcHBpbmcocykuIE9uIGVycm9yLCA8aGFuZGxlPgotICogaXMgYSBuZWdhdGl2ZSBz
dGF0dXMgY29kZS4KLSAqIE5PVEVTOgotICogIDEuIElmIEdOVE1BUF9kZXZpY2VfbWFwIGlzIHNw
ZWNpZmllZCB0aGVuIDxkZXZfYnVzX2FkZHI+IGlzIHRoZSBhZGRyZXNzCi0gKiAgICAgdmlhIHdo
aWNoIEkvTyBkZXZpY2VzIG1heSBhY2Nlc3MgdGhlIGdyYW50ZWQgZnJhbWUuCi0gKiAgMi4gSWYg
R05UTUFQX2hvc3RfbWFwIGlzIHNwZWNpZmllZCB0aGVuIGEgbWFwcGluZyB3aWxsIGJlIGFkZGVk
IGF0Ci0gKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQg
YWRkcmVzcyBzcGFjZSwgb3IgYXQKLSAqICAgICBhIFBURSBhdCB0aGUgc3BlY2lmaWVkIG1hY2hp
bmUgYWRkcmVzcy4gIFRoZSB0eXBlIG9mIG1hcHBpbmcgdG8KLSAqICAgICBwZXJmb3JtIGlzIHNl
bGVjdGVkIHRocm91Z2ggdGhlIEdOVE1BUF9jb250YWluc19wdGUgZmxhZywgYW5kIHRoZQotICog
ICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+LgotICogIDMuIE1hcHBpbmdz
IHNob3VsZCBvbmx5IGJlIGRlc3Ryb3llZCB2aWEgR05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmLiBJ
ZiBhCi0gKiAgICAgaG9zdCBtYXBwaW5nIGlzIGRlc3Ryb3llZCBieSBvdGhlciBtZWFucyB0aGVu
IGl0IGlzICpOT1QqIGd1YXJhbnRlZWQKLSAqICAgICB0byBiZSBhY2NvdW50ZWQgdG8gdGhlIGNv
cnJlY3QgZ3JhbnQgcmVmZXJlbmNlIQotICovCi1zdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYg
ewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAgdWludDY0X3QgaG9zdF9hZGRyOwotICAg
IHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAgIC8qIEdOVE1BUF8qICovCi0gICAgZ3JhbnRf
cmVmX3QgcmVmOwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8K
LSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1
cyAqLwotICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsKLSAgICB1aW50NjRfdCBkZXZfYnVzX2Fk
ZHI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgZ250dGFiX21hcF9n
cmFudF9yZWZfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9tYXBfZ3JhbnRfcmVm
X3QpOwotCi0vKgotICogR05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmOiBEZXN0cm95IG9uZSBvciBt
b3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncwotICogdHJhY2tlZCBieSA8aGFuZGxlPi4gSWYg
PGhvc3RfYWRkcj4gb3IgPGRldl9idXNfYWRkcj4gaXMgemVybywgdGhhdAotICogZmllbGQgaXMg
aWdub3JlZC4gSWYgbm9uLXplcm8sIHRoZXkgbXVzdCByZWZlciB0byBhIGRldmljZS9ob3N0IG1h
cHBpbmcKLSAqIHRoYXQgaXMgdHJhY2tlZCBieSA8aGFuZGxlPgotICogTk9URVM6Ci0gKiAgMS4g
VGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4gdW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGlu
ZyBpcyBub3QKLSAqICAgICB0cmFja2VkIGJ5IDxoYW5kbGU+LgotICogIDMuIEFmdGVyIGV4ZWN1
dGluZyBhIGJhdGNoIG9mIHVubWFwcywgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIHN0YWxlCi0g
KiAgICAgbWFwcGluZ3Mgd2lsbCByZW1haW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCi0g
Ki8KLXN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLwotICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKLSAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7
Ci0gICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwot
ICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVz
ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiBnbnR0YWJfdW5t
YXBfZ3JhbnRfcmVmX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdW5tYXBfZ3Jh
bnRfcmVmX3QpOwotCi0vKgotICogR05UVEFCT1Bfc2V0dXBfdGFibGU6IFNldCB1cCBhIGdyYW50
IHRhYmxlIGZvciA8ZG9tPiBjb21wcmlzaW5nIGF0IGxlYXN0Ci0gKiA8bnJfZnJhbWVzPiBwYWdl
cy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRlbiB0byB0aGUgPGZyYW1lX2xpc3Q+Lgot
ICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHdyaXR0ZW4sIGV2ZW4gaWYgdGhlIHRh
YmxlIGlzIGxhcmdlci4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQg
YXMgRE9NSURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9t
YWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCi0gKiAgMy4gWGVuIG1heSBub3Qg
c3VwcG9ydCBtb3JlIHRoYW4gYSBzaW5nbGUgZ3JhbnQtdGFibGUgcGFnZSBwZXIgZG9tYWluLgot
ICovCi1zdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAq
LwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCi0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4g
ZW51bSBncmFudF9zdGF0dXMgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgw
MDA0MDMwMAotICAgIFhFTl9HVUVTVF9IQU5ETEUodWxvbmcpIGZyYW1lX2xpc3Q7Ci0jZWxzZQot
ICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Bmbl90KSBmcmFtZV9saXN0OwotI2VuZGlmCi19Owot
dHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIGdudHRhYl9zZXR1cF90YWJsZV90Owot
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldHVwX3RhYmxlX3QpOwotCi0vKgotICog
R05UVEFCT1BfZHVtcF90YWJsZTogRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGdyYW50IHRhYmxl
IHRvIHRoZQotICogeGVuIGNvbnNvbGUuIERlYnVnZ2luZyB1c2Ugb25seS4KLSAqLwotc3RydWN0
IGdudHRhYl9kdW1wX3RhYmxlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIGRvbWlk
X3QgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2X3Qgc3RhdHVzOyAg
ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19OwotdHlwZWRlZiBzdHJ1
Y3QgZ250dGFiX2R1bXBfdGFibGUgZ250dGFiX2R1bXBfdGFibGVfdDsKLURFRklORV9YRU5fR1VF
U1RfSEFORExFKGdudHRhYl9kdW1wX3RhYmxlX3QpOwotCi0vKgotICogR05UVEFCT1BfdHJhbnNm
ZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRvIGEgZm9yZWlnbiBkb21haW4uIFRoZQot
ICogZm9yZWlnbiBkb21haW4gaGFzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBpdHMgaW50ZXJlc3Qg
aW4gdGhlIHRyYW5zZmVyIHZpYQotICogPGRvbWlkLCByZWY+LgotICoKLSAqIE5vdGUgdGhhdCwg
ZXZlbiBpZiB0aGUgdHJhbnNmZXIgZmFpbHMsIHRoZSBzcGVjaWZpZWQgcGFnZSBubyBMT05HX1BU
UmVyIGJlbG9uZ3MKLSAqIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiAqdW5sZXNzKiB0aGUgZXJyb3Ig
aXMgR05UU1RfYmFkX3BhZ2UuCi0gKi8KLXN0cnVjdCBnbnR0YWJfdHJhbnNmZXIgewotICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCi0gICAgeGVuX3Bmbl90ICAgICBtZm47Ci0gICAgZG9taWRfdCAg
ICAgICBkb21pZDsKLSAgICBncmFudF9yZWZfdCAgIHJlZjsKLSAgICAvKiBPVVQgcGFyYW1ldGVy
cy4gKi8KLSAgICBpbnQxNl90ICAgICAgIHN0YXR1czsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0
YWJfdHJhbnNmZXIgZ250dGFiX3RyYW5zZmVyX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfdHJhbnNmZXJfdCk7Ci0KLQotLyoKLSAqIEdOVFRBQk9QX2NvcHk6IEh5cGVydmlzb3Ig
YmFzZWQgY29weQotICogc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgY2FuIGJlIGVpdGhlcnMgTUZO
cyBvciwgZm9yIGZvcmVpZ24gZG9tYWlucywKLSAqIGdyYW50IHJlZmVyZW5jZXMuIHRoZSBmb3Jl
aWduIGRvbWFpbiBoYXMgdG8gZ3JhbnQgcmVhZC93cml0ZSBhY2Nlc3MKLSAqIGluIGl0cyBncmFu
dCB0YWJsZS4KLSAqCi0gKiBUaGUgZmxhZ3Mgc3BlY2lmeSB3aGF0IHR5cGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbnMgYXJlIChlaXRoZXIgTUZOCi0gKiBvciBncmFudCByZWZlcmVuY2UpLgotICoK
LSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgdG8gY29weSBkYXRhIGJldHdlZW4g
dHdvIGRvbWFpbnMKLSAqIHZpYSBhIHRoaXJkIHBhcnR5IGlmIHRoZSBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIGRvbWFpbnMgaGFkIHByZXZpb3VzbHkKLSAqIGdyYW50IGFwcHJvcHJpYXRlIGFjY2Vz
cyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFydHkuCi0gKgotICogc291cmNlX29mZnNl
dCBzcGVjaWZpZXMgYW4gb2Zmc2V0IGluIHRoZSBzb3VyY2UgZnJhbWUsIGRlc3Rfb2Zmc2V0Ci0g
KiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUgYW5kICBsZW4gc3BlY2lmaWVzIHRoZSBu
dW1iZXIgb2YKLSAqIGJ5dGVzIHRvIGJlIGNvcGllZC4KLSAqLwotCi0jZGVmaW5lIF9HTlRDT1BZ
X3NvdXJjZV9ncmVmICAgICAgKDApCi0jZGVmaW5lIEdOVENPUFlfc291cmNlX2dyZWYgICAgICAg
KDE8PF9HTlRDT1BZX3NvdXJjZV9ncmVmKQotI2RlZmluZSBfR05UQ09QWV9kZXN0X2dyZWYgICAg
ICAgICgxKQotI2RlZmluZSBHTlRDT1BZX2Rlc3RfZ3JlZiAgICAgICAgICgxPDxfR05UQ09QWV9k
ZXN0X2dyZWYpCi0KLXN0cnVjdCBnbnR0YWJfY29weSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4g
Ki8KLSAgICBzdHJ1Y3QgewotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBncmFudF9yZWZf
dCByZWY7Ci0gICAgICAgICAgICB4ZW5fcGZuX3QgICBnbWZuOwotICAgICAgICB9IHU7Ci0gICAg
ICAgIGRvbWlkX3QgIGRvbWlkOwotICAgICAgICB1aW50MTZfdCBvZmZzZXQ7Ci0gICAgfSBzb3Vy
Y2UsIGRlc3Q7Ci0gICAgdWludDE2X3QgICAgICBsZW47Ci0gICAgdWludDE2X3QgICAgICBmbGFn
czsgICAgICAgICAgLyogR05UQ09QWV8qICovCi0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0g
ICAgaW50MTZfdCAgICAgICBzdGF0dXM7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NvcHkg
IGdudHRhYl9jb3B5X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsK
LQotLyoKLSAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhp
bXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKLSAqIGdyYW50IHRhYmxlLgotICogTk9URVM6Ci0gKiAg
MS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBz
dWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURf
U0VMRi4KLSAqLwotc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KLSAg
ICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgdWludDMyX3QgbWF4X25yX2ZyYW1lczsKLSAgICBp
bnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwot
fTsKLXR5cGVkZWYgc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIGdudHRhYl9xdWVyeV9zaXplX3Q7
Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfcXVlcnlfc2l6ZV90KTsKLQotLyoKLSAq
IEdOVFRBQk9QX3VubWFwX2FuZF9yZXBsYWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJl
ZmVyZW5jZSBtYXBwaW5ncwotICogdHJhY2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSBy
ZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVudHJ5IHdpdGggb25lCi0gKiBwb2ludGluZyB0byB0aGUg
bWFjaGluZSBhZGRyZXNzIHVuZGVyIDxuZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKLSAq
IHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwgZW50cnkuCi0gKiBOT1RFUzoKLSAqICAxLiBUaGUgY2Fs
bCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5v
dAotICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCi0gKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEg
YmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKLSAqICAgICBt
YXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KLSAqLwotc3Ry
dWN0IGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
LSAgICB1aW50NjRfdCBob3N0X2FkZHI7Ci0gICAgdWludDY0X3QgbmV3X2FkZHI7Ci0gICAgZ3Jh
bnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2
X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19Owot
dHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIGdudHRhYl91bm1hcF9hbmRf
cmVwbGFjZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2FuZF9yZXBs
YWNlX3QpOwotCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCi0v
KgotICogR05UVEFCT1Bfc2V0X3ZlcnNpb246IFJlcXVlc3QgYSBwYXJ0aWN1bGFyIHZlcnNpb24g
b2YgdGhlIGdyYW50Ci0gKiB0YWJsZSBzaGFyZWQgdGFibGUgc3RydWN0dXJlLiAgVGhpcyBvcGVy
YXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkCi0gKiBvbmNlIGluIGFueSBnaXZlbiBkb21haW4u
ICBJdCBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgYW55IGdyYW50cwotICogYXJlIGFjdGl2YXRl
ZDsgb3RoZXJ3aXNlLCB0aGUgZG9tYWluIHdpbGwgYmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDEuCi0g
KiBUaGUgb25seSBkZWZpbmVkIHZlcnNpb25zIGFyZSAxIGFuZCAyLgotICovCi1zdHJ1Y3QgZ250
dGFiX3NldF92ZXJzaW9uIHsKLSAgICAvKiBJTi9PVVQgcGFyYW1ldGVycyAqLwotICAgIHVpbnQz
Ml90IHZlcnNpb247Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIGdudHRh
Yl9zZXRfdmVyc2lvbl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldF92ZXJz
aW9uX3QpOwotCi0KLS8qCi0gKiBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lczogR2V0IHRoZSBs
aXN0IG9mIGZyYW1lcyB1c2VkIHRvIHN0b3JlIGdyYW50Ci0gKiBzdGF0dXMgZm9yIDxkb20+LiBJ
biBncmFudCBmb3JtYXQgdmVyc2lvbiAyLCB0aGUgc3RhdHVzIGlzIHNlcGFyYXRlZAotICogZnJv
bSB0aGUgb3RoZXIgc2hhcmVkIGdyYW50IGZpZWxkcyB0byBhbGxvdyBtb3JlIGVmZmljaWVudCBz
eW5jaHJvbml6YXRpb24KLSAqIHVzaW5nIGJhcnJpZXJzIGluc3RlYWQgb2YgYXRvbWljIGNtcGV4
Y2ggb3BlcmF0aW9ucy4KLSAqIDxucl9mcmFtZXM+IHNwZWNpZnkgdGhlIHNpemUgb2YgdmVjdG9y
IDxmcmFtZV9saXN0Pi4KLSAqIFRoZSBmcmFtZSBhZGRyZXNzZXMgYXJlIHJldHVybmVkIGluIHRo
ZSA8ZnJhbWVfbGlzdD4uCi0gKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgcmV0dXJu
ZWQsIGV2ZW4gaWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+
IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVu
dGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCi0g
Ki8KLXN0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDMyX3QgbnJfZnJhbWVzOwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAv
KiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwotICAgIFhFTl9HVUVTVF9IQU5ETEUodWludDY0X3Qp
IGZyYW1lX2xpc3Q7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVz
IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250
dGFiX2dldF9zdGF0dXNfZnJhbWVzX3QpOwotCi0vKgotICogR05UVEFCT1BfZ2V0X3ZlcnNpb246
IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiB3aGljaCBpcyBpbgotICogZWZmZWN0IGZvciBk
b21haW4gPGRvbT4uCi0gKi8KLXN0cnVjdCBnbnR0YWJfZ2V0X3ZlcnNpb24gewotICAgIC8qIElO
IHBhcmFtZXRlcnMgKi8KLSAgICBkb21pZF90IGRvbTsKLSAgICB1aW50MTZfdCBwYWQ7Ci0gICAg
LyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICB1aW50MzJfdCB2ZXJzaW9uOwotfTsKLXR5cGVkZWYg
c3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiBnbnR0YWJfZ2V0X3ZlcnNpb25fdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfdmVyc2lvbl90KTsKLQotLyoKLSAqIEdOVFRBQk9Q
X3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRoZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4K
LSAqLwotc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiB7Ci0gICAgLyogSU4gcGFyYW1ldGVy
cyAqLwotICAgIGdyYW50X3JlZl90IHJlZl9hOwotICAgIGdyYW50X3JlZl90IHJlZl9iOwotICAg
IC8qIE9VVCBwYXJhbWV0ZXJzICovCi0gICAgaW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgIC8q
ID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3N3YXBf
Z3JhbnRfcmVmIGdudHRhYl9zd2FwX2dyYW50X3JlZl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3QpOwotCi0vKgotICogSXNzdWUgb25lIG9yIG1vcmUg
Y2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBvbiBhIHBvcnRpb24gb2YgYQotICogcGFnZSBn
cmFudGVkIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiBieSBhIGZvcmVpZ24gZG9tYWluLgotICovCi1z
dHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNoIHsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHVpbnQ2NF90
IGRldl9idXNfYWRkcjsKLSAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOwotICAgIH0gYTsKLSAgICB1
aW50MTZfdCBvZmZzZXQ7IC8qIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGdyYW50ICovCi0gICAgdWlu
dDE2X3QgbGVuZ3RoOyAvKiBzaXplIHdpdGhpbiB0aGUgZ3JhbnQgKi8KLSNkZWZpbmUgR05UVEFC
X0NBQ0hFX0NMRUFOICAgICAgICAgICgxPDwwKQotI2RlZmluZSBHTlRUQUJfQ0FDSEVfSU5WQUwg
ICAgICAgICAgKDE8PDEpCi0jZGVmaW5lIEdOVFRBQl9DQUNIRV9TT1VSQ0VfR1JFRiAgICAoMTw8
MzEpCi0gICAgdWludDMyX3Qgb3A7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NhY2hlX2Zs
dXNoIGdudHRhYl9jYWNoZV9mbHVzaF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFi
X2NhY2hlX2ZsdXNoX3QpOwotCi0jZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAq
LwotCi0vKgotICogQml0ZmllbGQgdmFsdWVzIGZvciBnbnR0YWJfbWFwX2dyYW50X3JlZi5mbGFn
cy4KLSAqLwotIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFjY2VzcyBieSBJL08gZGV2aWNl
cy4gKi8KLSNkZWZpbmUgX0dOVE1BUF9kZXZpY2VfbWFwICAgICAgKDApCi0jZGVmaW5lIEdOVE1B
UF9kZXZpY2VfbWFwICAgICAgICgxPDxfR05UTUFQX2RldmljZV9tYXApCi0gLyogTWFwIHRoZSBn
cmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5IGhvc3QgQ1BVcy4gKi8KLSNkZWZpbmUgX0dOVE1BUF9o
b3N0X21hcCAgICAgICAgKDEpCi0jZGVmaW5lIEdOVE1BUF9ob3N0X21hcCAgICAgICAgICgxPDxf
R05UTUFQX2hvc3RfbWFwKQotIC8qIEFjY2Vzc2VzIHRvIHRoZSBncmFudGVkIGZyYW1lIHdpbGwg
YmUgcmVzdHJpY3RlZCB0byByZWFkLW9ubHkgYWNjZXNzLiAqLwotI2RlZmluZSBfR05UTUFQX3Jl
YWRvbmx5ICAgICAgICAoMikKLSNkZWZpbmUgR05UTUFQX3JlYWRvbmx5ICAgICAgICAgKDE8PF9H
TlRNQVBfcmVhZG9ubHkpCi0gLyoKLSAgKiBHTlRNQVBfaG9zdF9tYXAgc3ViZmxhZzoKLSAgKiAg
MCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBvbmx5IGJ5IHRoZSBndWVzdCBPUy4KLSAg
KiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBieSBndWVzdCBPUyArIGN1cnJlbnQg
YXBwbGljYXRpb24uCi0gICovCi0jZGVmaW5lIF9HTlRNQVBfYXBwbGljYXRpb25fbWFwICgzKQot
I2RlZmluZSBHTlRNQVBfYXBwbGljYXRpb25fbWFwICAoMTw8X0dOVE1BUF9hcHBsaWNhdGlvbl9t
YXApCi0KLSAvKgotICAqIEdOVE1BUF9jb250YWluc19wdGUgc3ViZmxhZzoKLSAgKiAgMCA9PiBU
aGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuCi0gICogIDEg
PT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyB0aGUgbWFjaGluZSBhZGRlc3Mgb2YgdGhlIFBU
RSB0byB1cGRhdGUuCi0gICovCi0jZGVmaW5lIF9HTlRNQVBfY29udGFpbnNfcHRlICAgICg0KQot
I2RlZmluZSBHTlRNQVBfY29udGFpbnNfcHRlICAgICAoMTw8X0dOVE1BUF9jb250YWluc19wdGUp
Ci0KLSNkZWZpbmUgX0dOVE1BUF9jYW5fZmFpbCAgICAgICAgKDUpCi0jZGVmaW5lIEdOVE1BUF9j
YW5fZmFpbCAgICAgICAgICgxPDxfR05UTUFQX2Nhbl9mYWlsKQotCi0vKgotICogQml0cyB0byBi
ZSBwbGFjZWQgaW4gZ3Vlc3Qga2VybmVsIGF2YWlsYWJsZSBQVEUgYml0cyAoYXJjaGl0ZWN0dXJl
Ci0gKiBkZXBlbmRlbnQ7IG9ubHkgc3VwcG9ydGVkIHdoZW4gWEVORkVBVF9nbnR0YWJfbWFwX2F2
YWlsX2JpdHMgaXMgc2V0KS4KLSAqLwotI2RlZmluZSBfR05UTUFQX2d1ZXN0X2F2YWlsMCAgICAo
MTYpCi0jZGVmaW5lIEdOVE1BUF9ndWVzdF9hdmFpbF9tYXNrICgodWludDMyX3QpfjAgPDwgX0dO
VE1BUF9ndWVzdF9hdmFpbDApCi0KLS8qCi0gKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1
cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUuCi0gKi8KLS8qIGAgZW51bSBncmFudF9zdGF0dXMgeyAq
LwotI2RlZmluZSBHTlRTVF9va2F5ICAgICAgICAgICAgICgwKSAgLyogTm9ybWFsIHJldHVybi4g
ICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9nZW5lcmFsX2Vycm9yICAg
ICgtMSkgLyogR2VuZXJhbCB1bmRlZmluZWQgZXJyb3IuICAgICAgICAgICAgICAqLwotI2RlZmlu
ZSBHTlRTVF9iYWRfZG9tYWluICAgICAgICgtMikgLyogVW5yZWNvZ25zZWQgZG9tYWluIGlkLiAg
ICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9iYWRfZ250cmVmICAgICAgICgtMykgLyog
VW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgZ250cmVmLiAqLwotI2RlZmluZSBHTlRTVF9i
YWRfaGFuZGxlICAgICAgICgtNCkgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgaGFu
ZGxlLiAqLwotI2RlZmluZSBHTlRTVF9iYWRfdmlydF9hZGRyICAgICgtNSkgLyogSW5hcHByb3By
aWF0ZSB2aXJ0dWFsIGFkZHJlc3MgdG8gbWFwLiAqLwotI2RlZmluZSBHTlRTVF9iYWRfZGV2X2Fk
ZHIgICAgICgtNikgLyogSW5hcHByb3ByaWF0ZSBkZXZpY2UgYWRkcmVzcyB0byB1bm1hcC4qLwot
I2RlZmluZSBHTlRTVF9ub19kZXZpY2Vfc3BhY2UgICgtNykgLyogT3V0IG9mIHNwYWNlIGluIEkv
TyBNTVUuICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9wZXJtaXNzaW9uX2RlbmllZCAo
LTgpIC8qIE5vdCBlbm91Z2ggcHJpdmlsZWdlIGZvciBvcGVyYXRpb24uICAqLwotI2RlZmluZSBH
TlRTVF9iYWRfcGFnZSAgICAgICAgICgtOSkgLyogU3BlY2lmaWVkIHBhZ2Ugd2FzIGludmFsaWQg
Zm9yIG9wLiAgICAqLwotI2RlZmluZSBHTlRTVF9iYWRfY29weV9hcmcgICAgKC0xMCkgLyogY29w
eSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeS4gICAqLwotI2RlZmluZSBHTlRTVF9hZGRy
ZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJhbnNmZXIgcGFnZSBhZGRyZXNzIHRvbyBsYXJnZS4gICAg
ICAqLwotI2RlZmluZSBHTlRTVF9lYWdhaW4gICAgICAgICAgKC0xMikgLyogT3BlcmF0aW9uIG5v
dCBkb25lOyB0cnkgYWdhaW4uICAgICAgICAqLwotLyogYCB9ICovCi0KLSNkZWZpbmUgR05UVEFC
T1BfZXJyb3JfbXNncyB7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAib2theSIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAidW5kZWZpbmVkIGVycm9yIiwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAidW5yZWNvZ25pc2VkIGRvbWFpbiBpZCIsICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAiaW52YWxpZCBncmFudCByZWZlcmVuY2UiLCAgICAgICAg
ICAgICAgICAgIFwKLSAgICAiaW52YWxpZCBtYXBwaW5nIGhhbmRsZSIsICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAiaW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgIFwK
LSAgICAiaW52YWxpZCBkZXZpY2UgYWRkcmVzcyIsICAgICAgICAgICAgICAgICAgIFwKLSAgICAi
bm8gc3BhcmUgdHJhbnNsYXRpb24gc2xvdCBpbiB0aGUgSS9PIE1NVSIsIFwKLSAgICAicGVybWlz
c2lvbiBkZW5pZWQiLCAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAiYmFkIHBhZ2UiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAiY29weSBhcmd1bWVudHMgY3Jv
c3MgcGFnZSBib3VuZGFyeSIsICAgICAgIFwKLSAgICAicGFnZSBhZGRyZXNzIHNpemUgdG9vIGxh
cmdlIiwgICAgICAgICAgICAgIFwKLSAgICAib3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4i
ICAgICAgICAgICAgIFwKLX0KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9I
X18gKi8KLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1z
dHlsZTogIkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGlu
ZGVudC10YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hl
bi9odm0vaHZtX29wLmggYi9pbmNsdWRlL3hlbi9odm0vaHZtX29wLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNmYmY4NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vaHZtL2h2
bV9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAyICswLDAgQEAKLS8qCi0gKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKi8KLQot
I2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElD
X0hWTV9IVk1fT1BfSF9fCi0KLSNpbmNsdWRlICIuLi94ZW4uaCIKLSNpbmNsdWRlICIuLi90cmFj
ZS5oIgotI2luY2x1ZGUgIi4uL2V2ZW50X2NoYW5uZWwuaCIKLQotLyogR2V0L3NldCBzdWJjb21t
YW5kczogZXh0cmEgYXJndW1lbnQgPT0gcG9pbnRlciB0byB4ZW5faHZtX3BhcmFtIHN0cnVjdC4g
Ki8KLSNkZWZpbmUgSFZNT1Bfc2V0X3BhcmFtICAgICAgICAgICAwCi0jZGVmaW5lIEhWTU9QX2dl
dF9wYXJhbSAgICAgICAgICAgMQotc3RydWN0IHhlbl9odm1fcGFyYW0gewotICAgIGRvbWlkX3Qg
IGRvbWlkOyAgICAvKiBJTiAqLwotICAgIHVpbnQzMl90IGluZGV4OyAgICAvKiBJTiAqLwotICAg
IHVpbnQ2NF90IHZhbHVlOyAgICAvKiBJTi9PVVQgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5f
aHZtX3BhcmFtIHhlbl9odm1fcGFyYW1fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fcGFyYW1fdCk7Ci0KLS8qIFNldCB0aGUgbG9naWNhbCBsZXZlbCBvZiBvbmUgb2YgYSBkb21h
aW4ncyBQQ0kgSU5UeCB3aXJlcy4gKi8KLSNkZWZpbmUgSFZNT1Bfc2V0X3BjaV9pbnR4X2xldmVs
ICAyCi1zdHJ1Y3QgeGVuX2h2bV9zZXRfcGNpX2ludHhfbGV2ZWwgewotICAgIC8qIERvbWFpbiB0
byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIC8qIFBDSSBJTlR4IGlk
ZW50aWZpY2F0aW9uIGluIFBDSSB0b3BvbG9neSAoZG9tYWluOmJ1czpkZXZpY2U6aW50eCkuICov
Ci0gICAgdWludDhfdCAgZG9tYWluLCBidXMsIGRldmljZSwgaW50eDsKLSAgICAvKiBBc3NlcnRp
b24gbGV2ZWwgKDAgPSB1bmFzc2VydGVkLCAxID0gYXNzZXJ0ZWQpLiAqLwotICAgIHVpbnQ4X3Qg
IGxldmVsOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X3BjaV9pbnR4X2xldmVsIHhl
bl9odm1fc2V0X3BjaV9pbnR4X2xldmVsX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
aHZtX3NldF9wY2lfaW50eF9sZXZlbF90KTsKLQotLyogU2V0IHRoZSBsb2dpY2FsIGxldmVsIG9m
IG9uZSBvZiBhIGRvbWFpbidzIElTQSBJUlEgd2lyZXMuICovCi0jZGVmaW5lIEhWTU9QX3NldF9p
c2FfaXJxX2xldmVsICAgMwotc3RydWN0IHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWwgewotICAg
IC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIC8q
IElTQSBkZXZpY2UgaWRlbnRpZmljYXRpb24sIGJ5IElTQSBJUlEgKDAtMTUpLiAqLwotICAgIHVp
bnQ4X3QgIGlzYV9pcnE7Ci0gICAgLyogQXNzZXJ0aW9uIGxldmVsICgwID0gdW5hc3NlcnRlZCwg
MSA9IGFzc2VydGVkKS4gKi8KLSAgICB1aW50OF90ICBsZXZlbDsKLX07Ci10eXBlZGVmIHN0cnVj
dCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsIHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWxfdDsK
LURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWxfdCk7Ci0K
LSNkZWZpbmUgSFZNT1Bfc2V0X3BjaV9saW5rX3JvdXRlICA0Ci1zdHJ1Y3QgeGVuX2h2bV9zZXRf
cGNpX2xpbmtfcm91dGUgewotICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRv
bWlkX3QgIGRvbWlkOwotICAgIC8qIFBDSSBsaW5rIGlkZW50aWZpZXIgKDAtMykuICovCi0gICAg
dWludDhfdCAgbGluazsKLSAgICAvKiBJU0EgSVJRICgxLTE1KSwgb3IgMCAoZGlzYWJsZSBsaW5r
KS4gKi8KLSAgICB1aW50OF90ICBpc2FfaXJxOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1f
c2V0X3BjaV9saW5rX3JvdXRlIHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlX3Q7Ci1ERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0ZV90KTsKLQotLyogRmx1
c2hlcyBhbGwgVkNQVSBUTEJzOiBAYXJnIG11c3QgYmUgTlVMTC4gKi8KLSNkZWZpbmUgSFZNT1Bf
Zmx1c2hfdGxicyAgICAgICAgICA1Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgSFZNTUVNX3JhbV9y
dywgICAgICAgICAgICAgLyogTm9ybWFsIHJlYWQvd3JpdGUgZ3Vlc3QgUkFNICovCi0gICAgSFZN
TUVNX3JhbV9ybywgICAgICAgICAgICAgLyogUmVhZC1vbmx5OyB3cml0ZXMgYXJlIGRpc2NhcmRl
ZCAqLwotICAgIEhWTU1FTV9tbWlvX2RtLCAgICAgICAgICAgIC8qIFJlYWRzIGFuZCB3cml0ZSBn
byB0byB0aGUgZGV2aWNlIG1vZGVsICovCi19IGh2bW1lbV90eXBlX3Q7Ci0KLS8qIEZvbGxvd2lu
ZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCi0jaWYgZGVm
aW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCi0KLS8qIFRyYWNrIGRpcnR5
IFZSQU0uICovCi0jZGVmaW5lIEhWTU9QX3RyYWNrX2RpcnR5X3ZyYW0gICAgNgotc3RydWN0IHhl
bl9odm1fdHJhY2tfZGlydHlfdnJhbSB7Ci0gICAgLyogRG9tYWluIHRvIGJlIHRyYWNrZWQuICov
Ci0gICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgLyogTnVtYmVyIG9mIHBhZ2VzIHRvIHRyYWNrLiAq
LwotICAgIHVpbnQzMl90IG5yOwotICAgIC8qIEZpcnN0IHBmbiB0byB0cmFjay4gKi8KLSAgICB1
aW50NjRfYWxpZ25lZF90IGZpcnN0X3BmbjsKLSAgICAvKiBPVVQgdmFyaWFibGUuICovCi0gICAg
LyogRGlydHkgYml0bWFwIGJ1ZmZlci4gKi8KLSAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4
KSBkaXJ0eV9iaXRtYXA7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV90cmFja19kaXJ0eV92
cmFtIHhlbl9odm1fdHJhY2tfZGlydHlfdnJhbV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX2h2bV90cmFja19kaXJ0eV92cmFtX3QpOwotCi0vKiBOb3RpZnkgdGhhdCBzb21lIHBhZ2Vz
IGdvdCBtb2RpZmllZCBieSB0aGUgRGV2aWNlIE1vZGVsLiAqLwotI2RlZmluZSBIVk1PUF9tb2Rp
ZmllZF9tZW1vcnkgICAgNwotc3RydWN0IHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5IHsKLSAgICAv
KiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8KLSAgICBkb21pZF90ICBkb21pZDsKLSAgICAvKiBO
dW1iZXIgb2YgcGFnZXMuICovCi0gICAgdWludDMyX3QgbnI7Ci0gICAgLyogRmlyc3QgcGZuLiAq
LwotICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwotfTsKLXR5cGVkZWYgc3RydWN0IHhl
bl9odm1fbW9kaWZpZWRfbWVtb3J5IHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5X3Q7Ci1ERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX21vZGlmaWVkX21lbW9yeV90KTsKLQotI2RlZmluZSBI
Vk1PUF9zZXRfbWVtX3R5cGUgICAgOAotLyogTm90aWZ5IHRoYXQgYSByZWdpb24gb2YgbWVtb3J5
IGlzIHRvIGJlIHRyZWF0ZWQgaW4gYSBzcGVjaWZpYyB3YXkuICovCi1zdHJ1Y3QgeGVuX2h2bV9z
ZXRfbWVtX3R5cGUgewotICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlk
X3QgZG9taWQ7Ci0gICAgLyogTWVtb3J5IHR5cGUgKi8KLSAgICB1aW50MTZfdCBodm1tZW1fdHlw
ZTsKLSAgICAvKiBOdW1iZXIgb2YgcGFnZXMuICovCi0gICAgdWludDMyX3QgbnI7Ci0gICAgLyog
Rmlyc3QgcGZuLiAqLwotICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwotfTsKLXR5cGVk
ZWYgc3RydWN0IHhlbl9odm1fc2V0X21lbV90eXBlIHhlbl9odm1fc2V0X21lbV90eXBlX3Q7Ci1E
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9tZW1fdHlwZV90KTsKLQotI2VuZGlm
IC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLwotCi0vKiBI
aW50IGZyb20gUFYgZHJpdmVycyBmb3IgcGFnZXRhYmxlIGRlc3RydWN0aW9uLiAqLwotI2RlZmlu
ZSBIVk1PUF9wYWdldGFibGVfZHlpbmcgICAgICAgIDkKLXN0cnVjdCB4ZW5faHZtX3BhZ2V0YWJs
ZV9keWluZyB7Ci0gICAgLyogRG9tYWluIHdpdGggYSBwYWdldGFibGUgYWJvdXQgdG8gYmUgZGVz
dHJveWVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIHVpbnQxNl90IHBhZFszXTsgLyog
YWxpZ24gbmV4dCBmaWVsZCBvbiA4LWJ5dGUgYm91bmRhcnkgKi8KLSAgICAvKiBndWVzdCBwaHlz
aWNhbCBhZGRyZXNzIG9mIHRoZSB0b3BsZXZlbCBwYWdldGFibGUgZHlpbmcgKi8KLSAgICB1aW50
NjRfdCBncGE7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9wYWdldGFibGVfZHlpbmcgeGVu
X2h2bV9wYWdldGFibGVfZHlpbmdfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1f
cGFnZXRhYmxlX2R5aW5nX3QpOwotCi0vKiBHZXQgdGhlIGN1cnJlbnQgWGVuIHRpbWUsIGluIG5h
bm9zZWNvbmRzIHNpbmNlIHN5c3RlbSBib290LiAqLwotI2RlZmluZSBIVk1PUF9nZXRfdGltZSAg
ICAgICAgICAgICAgMTAKLXN0cnVjdCB4ZW5faHZtX2dldF90aW1lIHsKLSAgICB1aW50NjRfdCBu
b3c7ICAgICAgLyogT1VUICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfdGltZSB4
ZW5faHZtX2dldF90aW1lX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF90
aW1lX3QpOwotCi0jZGVmaW5lIEhWTU9QX3hlbnRyYWNlICAgICAgICAgICAgICAxMQotc3RydWN0
IHhlbl9odm1feGVudHJhY2UgewotICAgIHVpbnQxNl90IGV2ZW50LCBleHRyYV9ieXRlczsKLSAg
ICB1aW50OF90IGV4dHJhW1RSQUNFX0VYVFJBX01BWCAqIHNpemVvZih1aW50MzJfdCldOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9odm1feGVudHJhY2UgeGVuX2h2bV94ZW50cmFjZV90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV94ZW50cmFjZV90KTsKLQotLyogRm9sbG93aW5n
IHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KLSNpZiBkZWZp
bmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQotLyogRGVwcmVjYXRlZCBi
eSBYRU5NRU1fYWNjZXNzX29wX3NldF9hY2Nlc3MgKi8KLSNkZWZpbmUgSFZNT1Bfc2V0X21lbV9h
Y2Nlc3MgICAgICAgIDEyCi0KLS8qIERlcHJlY2F0ZWQgYnkgWEVOTUVNX2FjY2Vzc19vcF9nZXRf
YWNjZXNzICovCi0jZGVmaW5lIEhWTU9QX2dldF9tZW1fYWNjZXNzICAgICAgICAxMwotCi0jZGVm
aW5lIEhWTU9QX2luamVjdF90cmFwICAgICAgICAgICAgMTQKLS8qIEluamVjdCBhIHRyYXAgaW50
byBhIFZDUFUsIHdoaWNoIHdpbGwgZ2V0IHRha2VuIHVwIG9uIHRoZSBuZXh0Ci0gKiBzY2hlZHVs
aW5nIG9mIGl0LiBOb3RlIHRoYXQgdGhlIGNhbGxlciBzaG91bGQga25vdyBlbm91Z2ggb2YgdGhl
Ci0gKiBzdGF0ZSBvZiB0aGUgQ1BVIGJlZm9yZSBpbmplY3RpbmcsIHRvIGtub3cgd2hhdCB0aGUg
ZWZmZWN0IG9mCi0gKiBpbmplY3RpbmcgdGhlIHRyYXAgd2lsbCBiZS4KLSAqLwotc3RydWN0IHhl
bl9odm1faW5qZWN0X3RyYXAgewotICAgIC8qIERvbWFpbiB0byBiZSBxdWVyaWVkLiAqLwotICAg
IGRvbWlkX3QgZG9taWQ7Ci0gICAgLyogVkNQVSAqLwotICAgIHVpbnQzMl90IHZjcHVpZDsKLSAg
ICAvKiBWZWN0b3IgbnVtYmVyICovCi0gICAgdWludDMyX3QgdmVjdG9yOwotICAgIC8qIFRyYXAg
dHlwZSAoSFZNT1BfVFJBUF8qKSAqLwotICAgIHVpbnQzMl90IHR5cGU7Ci0vKiBOQi4gVGhpcyBl
bnVtZXJhdGlvbiBwcmVjaXNlbHkgbWF0Y2hlcyBodm0uaDpYODZfRVZFTlRUWVBFXyogKi8KLSMg
ZGVmaW5lIEhWTU9QX1RSQVBfZXh0X2ludCAgICAwIC8qIGV4dGVybmFsIGludGVycnVwdCAqLwot
IyBkZWZpbmUgSFZNT1BfVFJBUF9ubWkgICAgICAgIDIgLyogbm1pICovCi0jIGRlZmluZSBIVk1P
UF9UUkFQX2h3X2V4YyAgICAgMyAvKiBoYXJkd2FyZSBleGNlcHRpb24gKi8KLSMgZGVmaW5lIEhW
TU9QX1RSQVBfc3dfaW50ICAgICA0IC8qIHNvZnR3YXJlIGludGVycnVwdCAoQ0Qgbm4pICovCi0j
IGRlZmluZSBIVk1PUF9UUkFQX3ByaV9zd19leGMgNSAvKiBJQ0VCUCAoRjEpICovCi0jIGRlZmlu
ZSBIVk1PUF9UUkFQX3N3X2V4YyAgICAgNiAvKiBJTlQzIChDQyksIElOVE8gKENFKSAqLwotICAg
IC8qIEVycm9yIGNvZGUsIG9yIH4wdSB0byBza2lwICovCi0gICAgdWludDMyX3QgZXJyb3JfY29k
ZTsKLSAgICAvKiBJbnRydWN0aW9uIGxlbmd0aCAqLwotICAgIHVpbnQzMl90IGluc25fbGVuOwot
ICAgIC8qIENSMiBmb3IgcGFnZSBmYXVsdHMgKi8KLSAgICB1aW50NjRfYWxpZ25lZF90IGNyMjsK
LX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2luamVjdF90cmFwIHhlbl9odm1faW5qZWN0X3Ry
YXBfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1faW5qZWN0X3RyYXBfdCk7Ci0K
LSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8K
LQotI2RlZmluZSBIVk1PUF9nZXRfbWVtX3R5cGUgICAgMTUKLS8qIFJldHVybiBodm1tZW1fdHlw
ZV90IGZvciB0aGUgc3BlY2lmaWVkIHBmbi4gKi8KLXN0cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlw
ZSB7Ci0gICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICovCi0gICAgZG9taWRfdCBkb21pZDsK
LSAgICAvKiBPVVQgdmFyaWFibGUuICovCi0gICAgdWludDE2X3QgbWVtX3R5cGU7Ci0gICAgdWlu
dDE2X3QgcGFkWzJdOyAvKiBhbGlnbiBuZXh0IGZpZWxkIG9uIDgtYnl0ZSBib3VuZGFyeSAqLwot
ICAgIC8qIElOIHZhcmlhYmxlLiAqLwotICAgIHVpbnQ2NF90IHBmbjsKLX07Ci10eXBlZGVmIHN0
cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlwZSB4ZW5faHZtX2dldF9tZW1fdHlwZV90OwotREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9nZXRfbWVtX3R5cGVfdCk7Ci0KLS8qIEZvbGxvd2lu
ZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCi0jaWYgZGVm
aW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCi0KLS8qIE1TSSBpbmplY3Rp
b24gZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KLSNkZWZpbmUgSFZNT1BfaW5qZWN0X21zaSAgICAg
ICAgIDE2Ci1zdHJ1Y3QgeGVuX2h2bV9pbmplY3RfbXNpIHsKLSAgICAvKiBEb21haW4gdG8gYmUg
aW5qZWN0ZWQgKi8KLSAgICBkb21pZF90ICAgZG9taWQ7Ci0gICAgLyogRGF0YSAtLSBsb3dlciAz
MiBiaXRzICovCi0gICAgdWludDMyX3QgIGRhdGE7Ci0gICAgLyogQWRkcmVzcyAoMHhmZWV4eHh4
eCkgKi8KLSAgICB1aW50NjRfdCAgYWRkcjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2lu
amVjdF9tc2kgeGVuX2h2bV9pbmplY3RfbXNpX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5faHZtX2luamVjdF9tc2lfdCk7Ci0KLS8qCi0gKiBJT1JFUSBTZXJ2ZXJzCi0gKgotICogVGhl
IGludGVyZmFjZSBiZXR3ZWVuIGFuIEkvTyBlbXVsYXRvciBhbiBYZW4gaXMgY2FsbGVkIGFuIElP
UkVRIFNlcnZlci4KLSAqIEEgZG9tYWluIHN1cHBvcnRzIGEgc2luZ2xlICdsZWdhY3knIElPUkVR
IFNlcnZlciB3aGljaCBpcyBpbnN0YW50aWF0ZWQgaWYKLSAqIHBhcmFtZXRlci4uLgotICoKLSAq
IEhWTV9QQVJBTV9JT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcg
dGhlIHN5bmNocm9ub3VzCi0gKiBpb3JlcSBzdHJ1Y3R1cmVzKSwgb3IuLi4KLSAqIEhWTV9QQVJB
TV9CVUZJT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcgdGhlIGJ1
ZmZlcmVkCi0gKiBpb3JlcSByaW5nKSwgb3IuLi4KLSAqIEhWTV9QQVJBTV9CVUZJT1JFUV9FVlRD
SE4gaXMgcmVhZCAodG8gZ2V0IHRoZSBldmVudCBjaGFubmVsIHRoYXQgWGVuIHVzZXMKLSAqIHRv
IHJlcXVlc3QgYnVmZmVyZWQgSS9PIGVtdWxhdGlvbikuCi0gKiAKLSAqIFRoZSBmb2xsb3dpbmcg
aHlwZXJjYWxscyBmYWNpbGl0YXRlIHRoZSBjcmVhdGlvbiBvZiBJT1JFUSBTZXJ2ZXJzIGZvcgot
ICogJ3NlY29uZGFyeScgZW11bGF0b3JzIHdoaWNoIGFyZSBpbnZva2VkIHRvIGltcGxlbWVudCBw
b3J0IEkvTywgbWVtb3J5LCBvcgotICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgd2hpY2ggdGhl
eSBleHBsaWNpdGx5IHJlZ2lzdGVyLgotICovCi0KLXR5cGVkZWYgdWludDE2X3QgaW9zZXJ2aWRf
dDsKLQotLyoKLSAqIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3
IElPUkVRIFNlcnZlciBmb3IgYSBzZWNvbmRhcnkKLSAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVtdWxhdG9yIHNlcnZpY2luZyBkb21haW4gPGRvbWlkPi4KLSAqCi0gKiBUaGUgPGlkPiBo
YW5kZWQgYmFjayBpcyB1bmlxdWUgZm9yIDxkb21pZD4uIElmIDxoYW5kbGVfYnVmaW9yZXE+IGlz
IHplcm8KLSAqIHRoZSBidWZmZXJlZCBpb3JlcSByaW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBh
bmQgaGVuY2UgYWxsIGVtdWxhdGlvbgotICogcmVxdWVzdGVzIHRvIHRoaXMgc2VydmVyIHdpbGwg
YmUgc3luY2hyb25vdXMuCi0gKi8KLSNkZWZpbmUgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlciAx
Nwotc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21p
ZDsgICAgICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgdWludDhf
dCBoYW5kbGVfYnVmaW9yZXE7IC8qIElOIC0gc2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQg
aW9yZXFzICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAgICAgICAgIC8qIE9VVCAtIHNlcnZlciBp
ZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB4ZW5f
aHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX2dldF9pb3JlcV9zZXJ2
ZXJfaW5mbzogR2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGFjY2VzcwotICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPi4gCi0gKgotICog
VGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJl
cyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNl
cyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCi0gKiBob3N0ZWQgaW4gZG9tYWluIDxk
b21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KLSAqIHJlc3BlY3Rp
dmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVy
ZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8g
ZXZlbnQgY2hhbm5lbAotICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRo
ZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgotICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVl
c3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVyZXMgaW4g
PGlvcmVxX3Bmbj4pLgotICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVm
ZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVkIGJhY2sg
aW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KLSAq
LwotI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMTgKLXN0cnVjdCB4ZW5faHZt
X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgICAg
ICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsg
ICAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCi0gICAgZXZ0Y2huX3BvcnRfdCBi
dWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KLSAgICB1aW50
NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8KLSAg
ICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9yZXEg
cGZuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8g
eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpOwotCi0vKgotICogSFZNX21hcF9pb19y
YW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4gPGRv
bWlkPgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbXVsYXRpb24g
YnkgdGhlIGNsaWVudCBvZiBJT1JFUQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcnZlciA8aWQ+Ci0gKiBIVk1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6
IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIDxkb21pZD4KLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElPUkVR
Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+Ci0g
KgotICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRlZDog
cG9ydCBJL08sIG1lbW9yeSBhY2Nlc3NlcwotICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNjZXNz
ZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3RlcyB3aGljaCB0eXBlIG9mIHJhbmdlCi0gKiB0aGUg
PHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgotICog
UENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJlIHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9kZXZp
Y2UvZnVuY3Rpb24gdmFsdWVzCi0gKiB3aGljaCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0aGUg
SFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3JvIGJlbG93LgotICoKLSAqIE5PVEU6IHVubGVzcyBh
biBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBwZWQK
LSAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gdGhh
dCBlbXVsYXRvci4KLSAqLwotI2RlZmluZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2Vy
dmVyIDE5Ci0jZGVmaW5lIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDIw
Ci1zdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAg
ICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7
ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KLSAgICB1aW50MzJfdCB0eXBlOyAg
ICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9f
UkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JB
TkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX1BD
SSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLwotICAgIHVpbnQ2NF9h
bGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBvZiBy
YW5nZSAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9pb19y
YW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsKLQot
I2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIsZCxmKSAgICAgICAgICAgICAgICAgXAotCSgoKChz
KSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgXAotCSAoKChiKSAmIDB4ZmYp
IDw8IDgpIHwgICAgICAgICAgICAgICAgICAgICAgXAotCSAoKChkKSAmIDB4MWYpIDw8IDMpIHwg
ICAgICAgICAgICAgICAgICAgICAgXAotCSAoKGYpICYgMHgwNykpCi0KLS8qCi0gKiBIVk1PUF9k
ZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2Vydmlj
aW5nIGRvbWFpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb21pZD4uCi0gKgot
ICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVyZWdp
c3RlcmVkLgotICovCi0jZGVmaW5lIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCi1zdHJ1
Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsgLyog
SU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAvKiBJTiAt
IHNlcnZlciBpZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3JlcV9z
ZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90OwotREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX3Nl
dF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2ZXIg
PGlkPiBzZXJ2aWNpbmcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiA8
ZG9taWQ+LgotICoKLSAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFueSBl
bXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMgaW4gdGhlCi0gKiBlbmFibGVkIHN0YXRlLgot
ICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3JlcV9m
biAoc2VlCi0gKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmluZ2Z1
bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlzIGluCi0gKiB0aGUgZW5hYmxlZCBzdGF0ZS4KLSAq
LwotI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDIyCi1zdHJ1Y3QgeGVuX2h2
bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKLSAgICBkb21pZF90IGRvbWlkOyAgIC8qIElOIC0g
ZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAtIHNl
cnZlciBpZCAqLwotICAgIHVpbnQ4X3QgZW5hYmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLyAgICAK
LX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeGVuX2h2
bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
aHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCk7Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVO
X18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KLQotI2lmIGRlZmluZWQoX19pMzg2X18p
IHx8IGRlZmluZWQoX194ODZfNjRfXykKLQotLyoKLSAqIEhWTU9QX3NldF9ldnRjaG5fdXBjYWxs
X3ZlY3RvcjogU2V0IGEgPHZlY3Rvcj4gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgZXZlbnQKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCB1cGNhbGxzIG9uIHRoZSBz
cGVjaWZpZWQgPHZjcHU+LiBJZiBzZXQsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMgdmVjdG9yIHdpbGwgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZQotICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gY2FsbGJhY2sgdmlhIChzZWUgSFZN
X1BBUkFNX0NBTExCQUNLX0lSUSkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5kIGhlbmNlIGFsbG93cyBIVk0gZ3Vlc3RzIHRvIGJpbmQgZXZlbnQKLSAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnQgY2hhbm5lbHMgdG8gYSB2Y3B1IG90aGVyIHRoYW4g
MC4KLSAqLwotI2RlZmluZSBIVk1PUF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3IgMjMKLXN0cnVj
dCB4ZW5faHZtX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3RvciB7Ci0gICAgdWludDMyX3QgdmNwdTsK
LSAgICB1aW50OF90IHZlY3RvcjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9ldnRj
aG5fdXBjYWxsX3ZlY3RvciB4ZW5faHZtX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3Rvcl90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdCk7
Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICov
Ci0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18gKi8KLQotLyoKLSAqIExv
Y2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIKLSAqIGMt
YmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6IG5p
bAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9odm0vcGFyYW1zLmggYi9p
bmNsdWRlL3hlbi9odm0vcGFyYW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNj
NTEwNzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vaHZtL3BhcmFtcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
LSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0g
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
Ci0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSFZNX1BBUkFNU19IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fCi0K
LSNpbmNsdWRlICJodm1fb3AuaCIKLQotLyoKLSAqIFBhcmFtZXRlciBzcGFjZSBmb3IgSFZNT1Bf
e3NldCxnZXR9X3BhcmFtLgotICovCi0KLS8qCi0gKiBIb3cgc2hvdWxkIENQVTAgZXZlbnQtY2hh
bm5lbCBub3RpZmljYXRpb25zIGJlIGRlbGl2ZXJlZD8KLSAqIHZhbFs2Mzo1Nl0gPT0gMDogdmFs
WzU1OjBdIGlzIGEgZGVsaXZlcnkgR1NJIChHbG9iYWwgU3lzdGVtIEludGVycnVwdCkuCi0gKiB2
YWxbNjM6NTZdID09IDE6IHZhbFs1NTowXSBpcyBhIGRlbGl2ZXJ5IFBDSSBJTlR4IGxpbmUsIGFz
IGZvbGxvd3M6Ci0gKiAgICAgICAgICAgICAgICAgIERvbWFpbiA9IHZhbFs0NzozMl0sIEJ1cyAg
PSB2YWxbMzE6MTZdLAotICogICAgICAgICAgICAgICAgICBEZXZGbiAgPSB2YWxbMTU6IDhdLCBJ
bnRYID0gdmFsWyAxOiAwXQotICogdmFsWzYzOjU2XSA9PSAyOiB2YWxbNzowXSBpcyBhIHZlY3Rv
ciBudW1iZXIsIGNoZWNrIGZvcgotICogICAgICAgICAgICAgICAgICBYRU5GRUFUX2h2bV9jYWxs
YmFja192ZWN0b3IgdG8ga25vdyBpZiB0aGlzIGRlbGl2ZXJ5Ci0gKiAgICAgICAgICAgICAgICAg
IG1ldGhvZCBpcyBhdmFpbGFibGUuCi0gKiBJZiB2YWwgPT0gMCB0aGVuIENQVTAgZXZlbnQtY2hh
bm5lbCBub3RpZmljYXRpb25zIGFyZSBub3QgZGVsaXZlcmVkLgotICovCi0jZGVmaW5lIEhWTV9Q
QVJBTV9DQUxMQkFDS19JUlEgMAotCi0vKgotICogVGhlc2UgYXJlIG5vdCB1c2VkIGJ5IFhlbi4g
VGhleSBhcmUgaGVyZSBmb3IgY29udmVuaWVuY2Ugb2YgSFZNLWd1ZXN0Ci0gKiB4ZW5idXMgaW1w
bGVtZW50YXRpb25zLgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9QRk4gICAgMQotI2Rl
ZmluZSBIVk1fUEFSQU1fU1RPUkVfRVZUQ0hOIDIKLQotI2RlZmluZSBIVk1fUEFSQU1fUEFFX0VO
QUJMRUQgIDQKLQotI2RlZmluZSBIVk1fUEFSQU1fSU9SRVFfUEZOICAgIDUKLQotI2RlZmluZSBI
Vk1fUEFSQU1fQlVGSU9SRVFfUEZOIDYKLSNkZWZpbmUgSFZNX1BBUkFNX0JVRklPUkVRX0VWVENI
TiAyNgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotCi0v
KgotICogVmlyaWRpYW4gZW5saWdodGVubWVudHMKLSAqCi0gKiAoU2VlIGh0dHA6Ly9kb3dubG9h
ZC5taWNyb3NvZnQuY29tL2Rvd25sb2FkL0EvQi80L0FCNDNBMzRFLUJERDAtNEZBNi1CREVGLTc5
RUVGMTZFODgwQi9IeXBlcnZpc29yJTIwVG9wJTIwTGV2ZWwlMjBGdW5jdGlvbmFsJTIwU3BlY2lm
aWNhdGlvbiUyMHY0LjAuZG9jeCkKLSAqCi0gKiBUbyBleHBvc2UgdmlyaWRpYW4gZW5saWdodGVu
bWVudHMgdG8gdGhlIGd1ZXN0IHNldCB0aGlzIHBhcmFtZXRlcgotICogdG8gdGhlIGRlc2lyZWQg
ZmVhdHVyZSBtYXNrLiBUaGUgYmFzZSBmZWF0dXJlIHNldCBtdXN0IGJlIHByZXNlbnQKLSAqIGlu
IGFueSB2YWxpZCBmZWF0dXJlIG1hc2suCi0gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX1ZJUklESUFO
ICAgICA5Ci0KLS8qIEJhc2UrRnJlcSB2aXJpZGlhbiBmZWF0dXJlIHNldHM6Ci0gKgotICogLSBI
eXBlcmNhbGwgTVNScyAoSFZfWDY0X01TUl9HVUVTVF9PU19JRCBhbmQgSFZfWDY0X01TUl9IWVBF
UkNBTEwpCi0gKiAtIEFQSUMgYWNjZXNzIE1TUnMgKEhWX1g2NF9NU1JfRU9JLCBIVl9YNjRfTVNS
X0lDUiBhbmQgSFZfWDY0X01TUl9UUFIpCi0gKiAtIFZpcnR1YWwgUHJvY2Vzc29yIGluZGV4IE1T
UiAoSFZfWDY0X01TUl9WUF9JTkRFWCkKLSAqIC0gVGltZXIgZnJlcXVlbmN5IE1TUnMgKEhWX1g2
NF9NU1JfVFNDX0ZSRVFVRU5DWSBhbmQKLSAqICAgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWSkK
LSAqLwotI2RlZmluZSBfSFZNUFZfYmFzZV9mcmVxIDAKLSNkZWZpbmUgSFZNUFZfYmFzZV9mcmVx
ICAoMSA8PCBfSFZNUFZfYmFzZV9mcmVxKQotCi0vKiBGZWF0dXJlIHNldCBtb2RpZmljYXRpb25z
ICovCi0KLS8qIERpc2FibGUgdGltZXIgZnJlcXVlbmN5IE1TUnMgKEhWX1g2NF9NU1JfVFNDX0ZS
RVFVRU5DWSBhbmQKLSAqIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1kpLgotICogVGhpcyBtb2Rp
ZmljYXRpb24gcmVzdG9yZXMgdGhlIHZpcmlkaWFuIGZlYXR1cmUgc2V0IHRvIHRoZQotICogb3Jp
Z2luYWwgJ2Jhc2UnIHNldCBleHBvc2VkIGluIHJlbGVhc2VzIHByaW9yIHRvIFhlbiA0LjQuCi0g
Ki8KLSNkZWZpbmUgX0hWTVBWX25vX2ZyZXEgMQotI2RlZmluZSBIVk1QVl9ub19mcmVxICAoMSA8
PCBfSFZNUFZfbm9fZnJlcSkKLQotLyogRW5hYmxlIFBhcnRpdGlvbiBUaW1lIFJlZmVyZW5jZSBD
b3VudGVyIChIVl9YNjRfTVNSX1RJTUVfUkVGX0NPVU5UKSAqLwotI2RlZmluZSBfSFZNUFZfdGlt
ZV9yZWZfY291bnQgMgotI2RlZmluZSBIVk1QVl90aW1lX3JlZl9jb3VudCAgKDEgPDwgX0hWTVBW
X3RpbWVfcmVmX2NvdW50KQotCi0jZGVmaW5lIEhWTVBWX2ZlYXR1cmVfbWFzayBcCi0JKEhWTVBW
X2Jhc2VfZnJlcSB8IFwKLQkgSFZNUFZfbm9fZnJlcSB8IFwKLQkgSFZNUFZfdGltZV9yZWZfY291
bnQpCi0KLSNlbmRpZgotCi0vKgotICogU2V0IG1vZGUgZm9yIHZpcnR1YWwgdGltZXJzIChjdXJy
ZW50bHkgeDg2IG9ubHkpOgotICogIGRlbGF5X2Zvcl9taXNzZWRfdGlja3MgKGRlZmF1bHQpOgot
ICogICBEbyBub3QgYWR2YW5jZSBhIHZjcHUncyB0aW1lIGJleW9uZCB0aGUgY29ycmVjdCBkZWxp
dmVyeSB0aW1lIGZvcgotICogICBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUg
dG8gcHJlZW1wdGlvbi4gRGVsaXZlciBtaXNzZWQKLSAqICAgaW50ZXJydXB0cyB3aGVuIHRoZSB2
Y3B1IGlzIHJlc2NoZWR1bGVkIGFuZCBhZHZhbmNlIHRoZSB2Y3B1J3MgdmlydHVhbAotICogICB0
aW1lIHN0ZXB3aXNlIGZvciBlYWNoIG9uZS4KLSAqICBub19kZWxheV9mb3JfbWlzc2VkX3RpY2tz
OgotICogICBBcyBhYm92ZSwgbWlzc2VkIGludGVycnVwdHMgYXJlIGRlbGl2ZXJlZCwgYnV0IGd1
ZXN0IHRpbWUgYWx3YXlzIHRyYWNrcwotICogICB3YWxsY2xvY2sgKGkuZS4sIHJlYWwpIHRpbWUg
d2hpbGUgZG9pbmcgc28uCi0gKiAgbm9fbWlzc2VkX3RpY2tzX3BlbmRpbmc6Ci0gKiAgIE5vIG1p
c3NlZCBpbnRlcnJ1cHRzIGFyZSBoZWxkIHBlbmRpbmcuIEluc3RlYWQsIHRvIGVuc3VyZSB0aWNr
cyBhcmUKLSAqICAgZGVsaXZlcmVkIGF0IHNvbWUgbm9uLXplcm8gcmF0ZSwgaWYgd2UgZGV0ZWN0
IG1pc3NlZCB0aWNrcyB0aGVuIHRoZQotICogICBpbnRlcm5hbCB0aWNrIGFsYXJtIGlzIG5vdCBk
aXNhYmxlZCBpZiB0aGUgVkNQVSBpcyBwcmVlbXB0ZWQgZHVyaW5nIHRoZQotICogICBuZXh0IHRp
Y2sgcGVyaW9kLgotICogIG9uZV9taXNzZWRfdGlja19wZW5kaW5nOgotICogICBNaXNzZWQgaW50
ZXJydXB0cyBhcmUgY29sbGFwc2VkIHRvZ2V0aGVyIGFuZCBkZWxpdmVyZWQgYXMgb25lICdsYXRl
IHRpY2snLgotICogICBHdWVzdCB0aW1lIGFsd2F5cyB0cmFja3Mgd2FsbGNsb2NrIChpLmUuLCBy
ZWFsKSB0aW1lLgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9USU1FUl9NT0RFICAgMTAKLSNkZWZp
bmUgSFZNUFRNX2RlbGF5X2Zvcl9taXNzZWRfdGlja3MgICAgMAotI2RlZmluZSBIVk1QVE1fbm9f
ZGVsYXlfZm9yX21pc3NlZF90aWNrcyAxCi0jZGVmaW5lIEhWTVBUTV9ub19taXNzZWRfdGlja3Nf
cGVuZGluZyAgIDIKLSNkZWZpbmUgSFZNUFRNX29uZV9taXNzZWRfdGlja19wZW5kaW5nICAgMwot
Ci0vKiBCb29sZWFuOiBFbmFibGUgdmlydHVhbCBIUEVUIChoaWdoLXByZWNpc2lvbiBldmVudCB0
aW1lcik/ICh4ODYtb25seSkgKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0hQRVRfRU5BQkxFRCAxMQot
Ci0vKiBJZGVudGl0eS1tYXAgcGFnZSBkaXJlY3RvcnkgdXNlZCBieSBJbnRlbCBFUFQgd2hlbiBD
UjAuUEc9MC4gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0lERU5UX1BUICAgICAxMgotCi0vKiBEZXZp
Y2UgTW9kZWwgZG9tYWluLCBkZWZhdWx0cyB0byAwLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fRE1f
RE9NQUlOICAgIDEzCi0KLS8qIEFDUEkgUyBzdGF0ZTogY3VycmVudGx5IHN1cHBvcnQgUzAgYW5k
IFMzIG9uIHg4Ni4gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0FDUElfU19TVEFURSAxNAotCi0vKiBU
U1MgdXNlZCBvbiBJbnRlbCB3aGVuIENSMC5QRT0wLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fVk04
Nl9UU1MgICAgIDE1Ci0KLS8qIEJvb2xlYW46IEVuYWJsZSBhbGlnbmluZyBhbGwgcGVyaW9kaWMg
dnB0cyB0byByZWR1Y2UgaW50ZXJydXB0cyAqLwotI2RlZmluZSBIVk1fUEFSQU1fVlBUX0FMSUdO
ICAgIDE2Ci0KLS8qIENvbnNvbGUgZGVidWcgc2hhcmVkIG1lbW9yeSByaW5nIGFuZCBldmVudCBj
aGFubmVsICovCi0jZGVmaW5lIEhWTV9QQVJBTV9DT05TT0xFX1BGTiAgICAxNwotI2RlZmluZSBI
Vk1fUEFSQU1fQ09OU09MRV9FVlRDSE4gMTgKLQotLyoKLSAqIFNlbGVjdCBsb2NhdGlvbiBvZiBB
Q1BJIFBNMWEgYW5kIFRNUiBjb250cm9sIGJsb2Nrcy4gQ3VycmVudGx5IHR3byBsb2NhdGlvbnMK
LSAqIGFyZSBzdXBwb3J0ZWQsIHNwZWNpZmllZCBieSB2ZXJzaW9uIDAgb3IgMSBpbiB0aGlzIHBh
cmFtZXRlcjoKLSAqICAgLSAwOiBkZWZhdWx0LCB1c2UgdGhlIG9sZCBhZGRyZXNzZXMKLSAqICAg
ICAgICBQTTFBX0VWVCA9PSAweDFmNDA7IFBNMUFfQ05UID09IDB4MWY0NDsgUE1fVE1SID09IDB4
MWY0OAotICogICAtIDE6IHVzZSB0aGUgbmV3IGRlZmF1bHQgcWVtdSBhZGRyZXNzZXMKLSAqICAg
ICAgICBQTTFBX0VWVCA9PSAweGIwMDA7IFBNMUFfQ05UID09IDB4YjAwNDsgUE1fVE1SID09IDB4
YjAwOAotICogWW91IGNhbiBmaW5kIHRoZXNlIGFkZHJlc3MgZGVmaW5pdGlvbnMgaW4gPGh2bS9p
b3JlcS5oPgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9BQ1BJX0lPUE9SVFNfTE9DQVRJT04gMTkK
LQotLyogRW5hYmxlIGJsb2NraW5nIG1lbW9yeSBldmVudHMsIGFzeW5jIG9yIHN5bmMgKHBhdXNl
IHZjcHUgdW50aWwgcmVzcG9uc2UpIAotICogb25jaGFuZ2Vvbmx5IGluZGljYXRlcyBtZXNzYWdl
cyBvbmx5IG9uIGEgY2hhbmdlIG9mIHZhbHVlICovCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllf
RVZFTlRfQ1IwICAgICAgICAgIDIwCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1Iz
ICAgICAgICAgIDIxCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1I0ICAgICAgICAg
IDIyCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfSU5UMyAgICAgICAgIDIzCi0jZGVm
aW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfU0lOR0xFX1NURVAgIDI1Ci0jZGVmaW5lIEhWTV9Q
QVJBTV9NRU1PUllfRVZFTlRfTVNSICAgICAgICAgIDMwCi0KLSNkZWZpbmUgSFZNUE1FX01PREVf
TUFTSyAgICAgICAoMyA8PCAwKQotI2RlZmluZSBIVk1QTUVfbW9kZV9kaXNhYmxlZCAgIDAKLSNk
ZWZpbmUgSFZNUE1FX21vZGVfYXN5bmMgICAgICAxCi0jZGVmaW5lIEhWTVBNRV9tb2RlX3N5bmMg
ICAgICAgMgotI2RlZmluZSBIVk1QTUVfb25jaGFuZ2Vvbmx5ICAgICgxIDw8IDIpCi0KLS8qIEJv
b2xlYW46IEVuYWJsZSBuZXN0ZWRodm0gKGh2bSBvbmx5KSAqLwotI2RlZmluZSBIVk1fUEFSQU1f
TkVTVEVESFZNICAgIDI0Ci0KLS8qIFBhcmFtcyBmb3IgdGhlIG1lbSBldmVudCByaW5ncyAqLwot
I2RlZmluZSBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOICAgMjcKLSNkZWZpbmUgSFZNX1BBUkFN
X0FDQ0VTU19SSU5HX1BGTiAgIDI4Ci0jZGVmaW5lIEhWTV9QQVJBTV9TSEFSSU5HX1JJTkdfUEZO
ICAyOQotCi0vKiBTSFVURE9XTl8qIGFjdGlvbiBpbiBjYXNlIG9mIGEgdHJpcGxlIGZhdWx0ICov
Ci0jZGVmaW5lIEhWTV9QQVJBTV9UUklQTEVfRkFVTFRfUkVBU09OIDMxCi0KLSNkZWZpbmUgSFZN
X1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4gMzIKLSNkZWZpbmUgSFZNX1BBUkFNX05SX0lPUkVRX1NF
UlZFUl9QQUdFUyAzMwotCi0vKiBMb2NhdGlvbiBvZiB0aGUgVk0gR2VuZXJhdGlvbiBJRCBpbiBn
dWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fVk1fR0VO
RVJBVElPTl9JRF9BRERSIDM0Ci0KLSNkZWZpbmUgSFZNX05SX1BBUkFNUyAgICAgICAgICAzNQot
Ci0jZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fICovCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi9pby94c193aXJlLmggYi9pbmNsdWRlL3hlbi9pby94c193aXJlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMGNkYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94
ZW4vaW8veHNfd2lyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBE
ZXRhaWxzIG9mIHRoZSAid2lyZSIgcHJvdG9jb2wgYmV0d2VlbiBYZW4gU3RvcmUgRGFlbW9uIGFu
ZCBjbGllbnQKLSAqIGxpYnJhcnkgb3IgZ3Vlc3Qga2VybmVsLgotICoKLSAqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJp
Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
LSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgUnVzdHkgUnVzc2VsbCBJQk0gQ29ycG9yYXRpb24KLSAqLwotCi0j
aWZuZGVmIF9YU19XSVJFX0gKLSNkZWZpbmUgX1hTX1dJUkVfSAotCi1lbnVtIHhzZF9zb2NrbXNn
X3R5cGUKLXsKLSAgICBYU19ERUJVRywKLSAgICBYU19ESVJFQ1RPUlksCi0gICAgWFNfUkVBRCwK
LSAgICBYU19HRVRfUEVSTVMsCi0gICAgWFNfV0FUQ0gsCi0gICAgWFNfVU5XQVRDSCwKLSAgICBY
U19UUkFOU0FDVElPTl9TVEFSVCwKLSAgICBYU19UUkFOU0FDVElPTl9FTkQsCi0gICAgWFNfSU5U
Uk9EVUNFLAotICAgIFhTX1JFTEVBU0UsCi0gICAgWFNfR0VUX0RPTUFJTl9QQVRILAotICAgIFhT
X1dSSVRFLAotICAgIFhTX01LRElSLAotICAgIFhTX1JNLAotICAgIFhTX1NFVF9QRVJNUywKLSAg
ICBYU19XQVRDSF9FVkVOVCwKLSAgICBYU19FUlJPUiwKLSAgICBYU19JU19ET01BSU5fSU5UUk9E
VUNFRCwKLSAgICBYU19SRVNVTUUsCi0gICAgWFNfU0VUX1RBUkdFVCwKLSAgICBYU19SRVNUUklD
VCwKLSAgICBYU19SRVNFVF9XQVRDSEVTLAotCi0gICAgWFNfSU5WQUxJRCA9IDB4ZmZmZiAvKiBH
dWFyYW50ZWVkIHRvIHJlbWFpbiBhbiBpbnZhbGlkIHR5cGUgKi8KLX07Ci0KLSNkZWZpbmUgWFNf
V1JJVEVfTk9ORSAiTk9ORSIKLSNkZWZpbmUgWFNfV1JJVEVfQ1JFQVRFICJDUkVBVEUiCi0jZGVm
aW5lIFhTX1dSSVRFX0NSRUFURV9FWENMICJDUkVBVEV8RVhDTCIKLQotLyogV2UgaGFuZCBlcnJv
cnMgYXMgc3RyaW5ncywgZm9yIHBvcnRhYmlsaXR5LiAqLwotc3RydWN0IHhzZF9lcnJvcnMKLXsK
LSAgICBpbnQgZXJybnVtOwotICAgIGNvbnN0IGNoYXIgKmVycnN0cmluZzsKLX07Ci0jaWZkZWYg
RUlOVkFMCi0jZGVmaW5lIFhTRF9FUlJPUih4KSB7IHgsICN4IH0KLS8qIExJTlRFRDogc3RhdGlj
IHVudXNlZCAqLwotc3RhdGljIHN0cnVjdCB4c2RfZXJyb3JzIHhzZF9lcnJvcnNbXQotI2lmIGRl
ZmluZWQoX19HTlVDX18pCi1fX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQotI2VuZGlmCi0gICAgPSB7
Ci0gICAgWFNEX0VSUk9SKEVJTlZBTCksCi0gICAgWFNEX0VSUk9SKEVBQ0NFUyksCi0gICAgWFNE
X0VSUk9SKEVFWElTVCksCi0gICAgWFNEX0VSUk9SKEVJU0RJUiksCi0gICAgWFNEX0VSUk9SKEVO
T0VOVCksCi0gICAgWFNEX0VSUk9SKEVOT01FTSksCi0gICAgWFNEX0VSUk9SKEVOT1NQQyksCi0g
ICAgWFNEX0VSUk9SKEVJTyksCi0gICAgWFNEX0VSUk9SKEVOT1RFTVBUWSksCi0gICAgWFNEX0VS
Uk9SKEVOT1NZUyksCi0gICAgWFNEX0VSUk9SKEVST0ZTKSwKLSAgICBYU0RfRVJST1IoRUJVU1kp
LAotICAgIFhTRF9FUlJPUihFQUdBSU4pLAotICAgIFhTRF9FUlJPUihFSVNDT05OKSwKLSAgICBY
U0RfRVJST1IoRTJCSUcpCi19OwotI2VuZGlmCi0KLXN0cnVjdCB4c2Rfc29ja21zZwotewotICAg
IHVpbnQzMl90IHR5cGU7ICAvKiBYU18/Pz8gKi8KLSAgICB1aW50MzJfdCByZXFfaWQ7LyogUmVx
dWVzdCBpZGVudGlmaWVyLCBlY2hvZWQgaW4gZGFlbW9uJ3MgcmVzcG9uc2UuICAqLwotICAgIHVp
bnQzMl90IHR4X2lkOyAvKiBUcmFuc2FjdGlvbiBpZCAoMCBpZiBub3QgcmVsYXRlZCB0byBhIHRy
YW5zYWN0aW9uKS4gKi8KLSAgICB1aW50MzJfdCBsZW47ICAgLyogTGVuZ3RoIG9mIGRhdGEgZm9s
bG93aW5nIHRoaXMuICovCi0KLSAgICAvKiBHZW5lcmFsbHkgZm9sbG93ZWQgYnkgbnVsLXRlcm1p
bmF0ZWQgc3RyaW5nKHMpLiAqLwotfTsKLQotZW51bSB4c193YXRjaF90eXBlCi17Ci0gICAgWFNf
V0FUQ0hfUEFUSCA9IDAsCi0gICAgWFNfV0FUQ0hfVE9LRU4KLX07Ci0KLS8qCi0gKiBgaW5jb250
ZW50cyAxNTAgeGVuc3RvcmVfc3RydWN0IFhlblN0b3JlIHdpcmUgcHJvdG9jb2wuCi0gKgotICog
SW50ZXItZG9tYWluIHNoYXJlZCBtZW1vcnkgY29tbXVuaWNhdGlvbnMuICovCi0jZGVmaW5lIFhF
TlNUT1JFX1JJTkdfU0laRSAxMDI0Ci10eXBlZGVmIHVpbnQzMl90IFhFTlNUT1JFX1JJTkdfSURY
OwotI2RlZmluZSBNQVNLX1hFTlNUT1JFX0lEWChpZHgpICgoaWR4KSAmIChYRU5TVE9SRV9SSU5H
X1NJWkUtMSkpCi1zdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVyZmFjZSB7Ci0gICAgY2hhciBy
ZXFbWEVOU1RPUkVfUklOR19TSVpFXTsgLyogUmVxdWVzdHMgdG8geGVuc3RvcmUgZGFlbW9uLiAq
LwotICAgIGNoYXIgcnNwW1hFTlNUT1JFX1JJTkdfU0laRV07IC8qIFJlcGxpZXMgYW5kIGFzeW5j
IHdhdGNoIGV2ZW50cy4gKi8KLSAgICBYRU5TVE9SRV9SSU5HX0lEWCByZXFfY29ucywgcmVxX3By
b2Q7Ci0gICAgWEVOU1RPUkVfUklOR19JRFggcnNwX2NvbnMsIHJzcF9wcm9kOwotICAgIHVpbnQz
Ml90IHNlcnZlcl9mZWF0dXJlczsgLyogQml0bWFwIG9mIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0
aGUgc2VydmVyICovCi0gICAgdWludDMyX3QgY29ubmVjdGlvbjsKLX07Ci0KLS8qIFZpb2xhdGlu
ZyB0aGlzIGlzIHZlcnkgYmFkLiAgU2VlIGRvY3MvbWlzYy94ZW5zdG9yZS50eHQuICovCi0jZGVm
aW5lIFhFTlNUT1JFX1BBWUxPQURfTUFYIDQwOTYKLQotLyogVmlvbGF0aW5nIHRoZXNlIGp1c3Qg
Z2V0cyB5b3UgYW4gZXJyb3IgYmFjayAqLwotI2RlZmluZSBYRU5TVE9SRV9BQlNfUEFUSF9NQVgg
MzA3MgotI2RlZmluZSBYRU5TVE9SRV9SRUxfUEFUSF9NQVggMjA0OAotCi0vKiBUaGUgYWJpbGl0
eSB0byByZWNvbm5lY3QgYSByaW5nICovCi0jZGVmaW5lIFhFTlNUT1JFX1NFUlZFUl9GRUFUVVJF
X1JFQ09OTkVDVElPTiAxCi0KLS8qIFZhbGlkIHZhbHVlcyBmb3IgdGhlIGNvbm5lY3Rpb24gZmll
bGQgKi8KLSNkZWZpbmUgWEVOU1RPUkVfQ09OTkVDVEVEIDAgLyogdGhlIHN0ZWFkeS1zdGF0ZSAq
LwotI2RlZmluZSBYRU5TVE9SRV9SRUNPTk5FQ1QgMSAvKiBndWVzdCBoYXMgaW5pdGlhdGVkIGEg
cmVjb25uZWN0ICovCi0KLSNlbmRpZiAvKiBfWFNfV0lSRV9IICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vbWVtb3J5LmggYi9pbmNsdWRlL3hl
bi9tZW1vcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAyMTk1OC4uMDAwMDAw
MAotLS0gYS9pbmNsdWRlL3hlbi9tZW1vcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4OCArMCww
IEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBtZW1vcnkuaAotICogCi0gKiBNZW1vcnkg
cmVzZXJ2YXRpb24gYW5kIGluZm9ybWF0aW9uLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0
IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29tPgotICovCi0KLSNpZm5k
ZWYgX19YRU5fUFVCTElDX01FTU9SWV9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX01FTU9SWV9I
X18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogSW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhl
IHNwZWNpZmllZCBkb21haW4ncyBtZW1vcnkgcmVzZXJ2YXRpb24uIFJldHVybnMgdGhlCi0gKiBu
dW1iZXIgb2YgZXh0ZW50cyBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIG9yIGZyZWVkLgotICogYXJn
ID09IGFkZHIgb2Ygc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24uCi0gKi8KLSNkZWZpbmUg
WEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIDAKLSNkZWZpbmUgWEVOTUVNX2RlY3JlYXNlX3Jl
c2VydmF0aW9uIDEKLSNkZWZpbmUgWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAgICAgIDYKLQotI2lm
IF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwOQotLyoKLSAqIE1heGltdW0g
IyBiaXRzIGFkZHJlc3NhYmxlIGJ5IHRoZSB1c2VyIG9mIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIChl
LmcuLCBJL08gCi0gKiBkZXZpY2VzIG9mdGVuIGhhdmUgYSAzMi1iaXQgbGltaXRhdGlvbiBldmVu
IGluIDY0LWJpdCBzeXN0ZW1zKS4gSWYgemVybyAKLSAqIHRoZW4gdGhlIHVzZXIgaGFzIG5vIGFk
ZHJlc3NpbmcgcmVzdHJpY3Rpb24uIFRoaXMgZmllbGQgaXMgbm90IHVzZWQgYnkgCi0gKiBYRU5N
RU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24uCi0gKi8KLSNkZWZpbmUgWEVOTUVNRl9hZGRyZXNzX2Jp
dHMoeCkgICAgICh4KQotI2RlZmluZSBYRU5NRU1GX2dldF9hZGRyZXNzX2JpdHMoeCkgKCh4KSAm
IDB4ZmZ1KQotLyogTlVNQSBub2RlIHRvIGFsbG9jYXRlIGZyb20uICovCi0jZGVmaW5lIFhFTk1F
TUZfbm9kZSh4KSAgICAgKCgoeCkgKyAxKSA8PCA4KQotI2RlZmluZSBYRU5NRU1GX2dldF9ub2Rl
KHgpICgoKCh4KSA+PiA4KSAtIDEpICYgMHhmZnUpCi0vKiBGbGFnIHRvIHBvcHVsYXRlIHBoeXNt
YXAgd2l0aCBwb3B1bGF0ZS1vbi1kZW1hbmQgZW50cmllcyAqLwotI2RlZmluZSBYRU5NRU1GX3Bv
cHVsYXRlX29uX2RlbWFuZCAoMTw8MTYpCi0vKiBGbGFnIHRvIHJlcXVlc3QgYWxsb2NhdGlvbiBv
bmx5IGZyb20gdGhlIG5vZGUgc3BlY2lmaWVkICovCi0jZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9k
ZV9yZXF1ZXN0ICAoMTw8MTcpCi0jZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9kZShuKSAoWEVOTUVN
Rl9ub2RlKG4pIHwgWEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QpCi0jZW5kaWYKLQotc3RydWN0
IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gewotCi0gICAgLyoKLSAgICAgKiBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb246Ci0gICAgICogICBPVVQ6IE1GTiAoKm5vdCogR01GTikgYmFzZXMgb2Yg
ZXh0ZW50cyB0aGF0IHdlcmUgYWxsb2NhdGVkCi0gICAgICogWEVOTUVNX2RlY3JlYXNlX3Jlc2Vy
dmF0aW9uOgotICAgICAqICAgSU46ICBHTUZOIGJhc2VzIG9mIGV4dGVudHMgdG8gZnJlZQotICAg
ICAqIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwOgotICAgICAqICAgSU46ICBHUEZOIGJhc2VzIG9m
IGV4dGVudHMgdG8gcG9wdWxhdGUgd2l0aCBtZW1vcnkKLSAgICAgKiAgIE9VVDogR01GTiBiYXNl
cyBvZiBleHRlbnRzIHRoYXQgd2VyZSBhbGxvY2F0ZWQKLSAgICAgKiAgIChOQi4gVGhpcyBjb21t
YW5kIGFsc28gdXBkYXRlcyB0aGUgbWFjaF90b19waHlzIHRyYW5zbGF0aW9uIHRhYmxlKQotICAg
ICAqIFhFTk1FTV9jbGFpbV9wYWdlczoKLSAgICAgKiAgIElOOiBtdXN0IGJlIHplcm8KLSAgICAg
Ki8KLSAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0YXJ0OwotCi0gICAg
LyogTnVtYmVyIG9mIGV4dGVudHMsIGFuZCBzaXplL2FsaWdubWVudCBvZiBlYWNoICgyXmV4dGVu
dF9vcmRlciBwYWdlcykuICovCi0gICAgeGVuX3Vsb25nX3QgICAgbnJfZXh0ZW50czsKLSAgICB1
bnNpZ25lZCBpbnQgICBleHRlbnRfb3JkZXI7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lP
Tl9fID49IDB4MDAwMzAyMDkKLSAgICAvKiBYRU5NRU1GIGZsYWdzLiAqLwotICAgIHVuc2lnbmVk
IGludCAgIG1lbV9mbGFnczsKLSNlbHNlCi0gICAgdW5zaWduZWQgaW50ICAgYWRkcmVzc19iaXRz
OwotI2VuZGlmCi0KLSAgICAvKgotICAgICAqIERvbWFpbiB3aG9zZSByZXNlcnZhdGlvbiBpcyBi
ZWluZyBjaGFuZ2VkLgotICAgICAqIFVucHJpdmlsZWdlZCBkb21haW5zIGNhbiBzcGVjaWZ5IG9u
bHkgRE9NSURfU0VMRi4KLSAgICAgKi8KLSAgICBkb21pZF90ICAgICAgICBkb21pZDsKLX07Ci10
eXBlZGVmIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHhlbl9tZW1vcnlfcmVzZXJ2YXRp
b25fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1vcnlfcmVzZXJ2YXRpb25fdCk7
Ci0KLS8qCi0gKiBBbiBhdG9taWMgZXhjaGFuZ2Ugb2YgbWVtb3J5IHBhZ2VzLiBJZiByZXR1cm4g
Y29kZSBpcyB6ZXJvIHRoZW4KLSAqIEBvdXQuZXh0ZW50X2xpc3QgcHJvdmlkZXMgR01GTnMgb2Yg
dGhlIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuCi0gKiBSZXR1cm5zIHplcm8gb24gY29tcGxldGUg
c3VjY2Vzcywgb3RoZXJ3aXNlIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KLSAqIE9uIGNvbXBsZXRl
IHN1Y2Nlc3MgdGhlbiBhbHdheXMgQG5yX2V4Y2hhbmdlZCA9PSBAaW4ubnJfZXh0ZW50cy4KLSAq
IE9uIHBhcnRpYWwgc3VjY2VzcyBAbnJfZXhjaGFuZ2VkIGluZGljYXRlcyBob3cgbXVjaCB3b3Jr
IHdhcyBkb25lLgotICovCi0jZGVmaW5lIFhFTk1FTV9leGNoYW5nZSAgICAgICAgICAgICAxMQot
c3RydWN0IHhlbl9tZW1vcnlfZXhjaGFuZ2UgewotICAgIC8qCi0gICAgICogW0lOXSBEZXRhaWxz
IG9mIG1lbW9yeSBleHRlbnRzIHRvIGJlIGV4Y2hhbmdlZCAoR01GTiBiYXNlcykuCi0gICAgICog
Tm90ZSB0aGF0IEBpbi5hZGRyZXNzX2JpdHMgaXMgaWdub3JlZCBhbmQgdW51c2VkLgotICAgICAq
LwotICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIGluOwotCi0gICAgLyoKLSAgICAg
KiBbSU4vT1VUXSBEZXRhaWxzIG9mIG5ldyBtZW1vcnkgZXh0ZW50cy4KLSAgICAgKiBXZSByZXF1
aXJlIHRoYXQ6Ci0gICAgICogIDEuIEBpbi5kb21pZCA9PSBAb3V0LmRvbWlkCi0gICAgICogIDIu
IEBpbi5ucl9leHRlbnRzICA8PCBAaW4uZXh0ZW50X29yZGVyID09IAotICAgICAqICAgICBAb3V0
Lm5yX2V4dGVudHMgPDwgQG91dC5leHRlbnRfb3JkZXIKLSAgICAgKiAgMy4gQGluLmV4dGVudF9z
dGFydCBhbmQgQG91dC5leHRlbnRfc3RhcnQgbGlzdHMgbXVzdCBub3Qgb3ZlcmxhcAotICAgICAq
ICA0LiBAb3V0LmV4dGVudF9zdGFydCBsaXN0cyBHUEZOIGJhc2VzIHRvIGJlIHBvcHVsYXRlZAot
ICAgICAqICA1LiBAb3V0LmV4dGVudF9zdGFydCBpcyBvdmVyd3JpdHRlbiB3aXRoIGFsbG9jYXRl
ZCBHTUZOIGJhc2VzCi0gICAgICovCi0gICAgc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24g
b3V0OwotCi0gICAgLyoKLSAgICAgKiBbT1VUXSBOdW1iZXIgb2YgaW5wdXQgZXh0ZW50cyB0aGF0
IHdlcmUgc3VjY2Vzc2Z1bGx5IGV4Y2hhbmdlZDoKLSAgICAgKiAgMS4gVGhlIGZpcnN0IEBucl9l
eGNoYW5nZWQgaW5wdXQgZXh0ZW50cyB3ZXJlIHN1Y2Nlc3NmdWxseQotICAgICAqICAgICBkZWFs
bG9jYXRlZC4KLSAgICAgKiAgMi4gVGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgZW50cmllcyBpbiB0
aGUgb3V0cHV0IGV4dGVudCBsaXN0IGNvcnJlY3RseQotICAgICAqICAgICBpbmRpY2F0ZSB0aGUg
R01GTnMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBleGNoYW5nZWQuCi0gICAgICogIDMuIEFsbCBv
dGhlciBpbnB1dCBhbmQgb3V0cHV0IGV4dGVudHMgYXJlIHVudG91Y2hlZC4KLSAgICAgKiAgNC4g
SWYgbm90IGFsbCBpbnB1dCBleGVudHMgYXJlIGV4Y2hhbmdlZCB0aGVuIHRoZSByZXR1cm4gY29k
ZSBvZiB0aGlzCi0gICAgICogICAgIGNvbW1hbmQgd2lsbCBiZSBub24temVyby4KLSAgICAgKiAg
NS4gVEhJUyBGSUVMRCBNVVNUIEJFIElOSVRJQUxJU0VEIFRPIFpFUk8gQlkgVEhFIENBTExFUiEK
LSAgICAgKi8KLSAgICB4ZW5fdWxvbmdfdCBucl9leGNoYW5nZWQ7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgeGVuX21lbW9yeV9leGNoYW5nZSB4ZW5fbWVtb3J5X2V4Y2hhbmdlX3Q7Ci1ERUZJTkVfWEVO
X0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X2V4Y2hhbmdlX3QpOwotCi0vKgotICogUmV0dXJucyB0
aGUgbWF4aW11bSBtYWNoaW5lIGZyYW1lIG51bWJlciBvZiBtYXBwZWQgUkFNIGluIHRoaXMgc3lz
dGVtLgotICogVGhpcyBjb21tYW5kIGFsd2F5cyBzdWNjZWVkcyAoaXQgbmV2ZXIgcmV0dXJucyBh
biBlcnJvciBjb2RlKS4KLSAqIGFyZyA9PSBOVUxMLgotICovCi0jZGVmaW5lIFhFTk1FTV9tYXhp
bXVtX3JhbV9wYWdlICAgICAyCi0KLS8qCi0gKiBSZXR1cm5zIHRoZSBjdXJyZW50IG9yIG1heGlt
dW0gbWVtb3J5IHJlc2VydmF0aW9uLCBpbiBwYWdlcywgb2YgdGhlCi0gKiBzcGVjaWZpZWQgZG9t
YWluIChtYXkgYmUgRE9NSURfU0VMRikuIFJldHVybnMgLXZlIGVycmNvZGUgb24gZmFpbHVyZS4K
LSAqIGFyZyA9PSBhZGRyIG9mIGRvbWlkX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX2N1cnJlbnRf
cmVzZXJ2YXRpb24gIDMKLSNkZWZpbmUgWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24gIDQKLQot
LyoKLSAqIFJldHVybnMgdGhlIG1heGltdW0gR1BGTiBpbiB1c2UgYnkgdGhlIGd1ZXN0LCBvciAt
dmUgZXJyY29kZSBvbiBmYWlsdXJlLgotICovCi0jZGVmaW5lIFhFTk1FTV9tYXhpbXVtX2dwZm4g
ICAgICAgICAxNAotCi0vKgotICogUmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzIG9mIDJNQiBl
eHRlbnRzIGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cwotICogbWFwcGluZyB0YWJsZS4g
QXJjaGl0ZWN0dXJlcyB3aGljaCBkbyBub3QgaGF2ZSBhIG0ycCB0YWJsZSBkbyBub3QgaW1wbGVt
ZW50Ci0gKiB0aGlzIGNvbW1hbmQuCi0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWZu
X2xpc3RfdC4KLSAqLwotI2RlZmluZSBYRU5NRU1fbWFjaHBoeXNfbWZuX2xpc3QgICAgNQotc3Ry
dWN0IHhlbl9tYWNocGh5c19tZm5fbGlzdCB7Ci0gICAgLyoKLSAgICAgKiBTaXplIG9mIHRoZSAn
ZXh0ZW50X3N0YXJ0JyBhcnJheS4gRmV3ZXIgZW50cmllcyB3aWxsIGJlIGZpbGxlZCBpZiB0aGUK
LSAgICAgKiBtYWNocGh5cyB0YWJsZSBpcyBzbWFsbGVyIHRoYW4gbWF4X2V4dGVudHMgKiAyTUIu
Ci0gICAgICovCi0gICAgdW5zaWduZWQgaW50IG1heF9leHRlbnRzOwotCi0gICAgLyoKLSAgICAg
KiBQb2ludGVyIHRvIGJ1ZmZlciB0byBmaWxsIHdpdGggbGlzdCBvZiBleHRlbnQgc3RhcnRzLiBJ
ZiB0aGVyZSBhcmUKLSAgICAgKiBhbnkgbGFyZ2UgZGlzY29udGlndWl0aWVzIGluIHRoZSBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UsIDJNQiBnYXBzIGluCi0gICAgICogdGhlIG1hY2hwaHlzIHRhYmxl
IHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgYW4gTUZOIGJhc2Ugb2YgemVyby4KLSAgICAgKi8KLSAg
ICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0YXJ0OwotCi0gICAgLyoKLSAg
ICAgKiBOdW1iZXIgb2YgZXh0ZW50cyB3cml0dGVuIHRvIHRoZSBhYm92ZSBhcnJheS4gVGhpcyB3
aWxsIGJlIHNtYWxsZXIKLSAgICAgKiB0aGFuICdtYXhfZXh0ZW50cycgaWYgdGhlIG1hY2hwaHlz
IHRhYmxlIGlzIHNtYWxsZXIgdGhhbiBtYXhfZSAqIDJNQi4KLSAgICAgKi8KLSAgICB1bnNpZ25l
ZCBpbnQgbnJfZXh0ZW50czsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fbWFjaHBoeXNfbWZuX2xp
c3QgeGVuX21hY2hwaHlzX21mbl9saXN0X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
bWFjaHBoeXNfbWZuX2xpc3RfdCk7Ci0KLS8qCi0gKiBGb3IgYSBjb21wYXQgY2FsbGVyLCB0aGlz
IGlzIGlkZW50aWNhbCB0byBYRU5NRU1fbWFjaHBoeXNfbWZuX2xpc3QuCi0gKgotICogRm9yIGEg
bm9uIGNvbXBhdCBjYWxsZXIsIHRoaXMgZnVuY3Rpb25zIHNpbWlsYXJseSB0bwotICogWEVOTUVN
X21hY2hwaHlzX21mbl9saXN0LCBidXQgcmV0dXJucyB0aGUgbWZucyBtYWtpbmcgdXAgdGhlIGNv
bXBhdGliaWxpdHkKLSAqIG0ycCB0YWJsZS4KLSAqLwotI2RlZmluZSBYRU5NRU1fbWFjaHBoeXNf
Y29tcGF0X21mbl9saXN0ICAgICAyNQotCi0vKgotICogUmV0dXJucyB0aGUgbG9jYXRpb24gaW4g
dmlydHVhbCBhZGRyZXNzIHNwYWNlIG9mIHRoZSBtYWNoaW5lX3RvX3BoeXMKLSAqIG1hcHBpbmcg
dGFibGUuIEFyY2hpdGVjdHVyZXMgd2hpY2ggZG8gbm90IGhhdmUgYSBtMnAgdGFibGUsIG9yIHdo
aWNoIGRvIG5vdAotICogbWFwIGl0IGJ5IGRlZmF1bHQgaW50byBndWVzdCBhZGRyZXNzIHNwYWNl
LCBkbyBub3QgaW1wbGVtZW50IHRoaXMgY29tbWFuZC4KLSAqIGFyZyA9PSBhZGRyIG9mIHhlbl9t
YWNocGh5c19tYXBwaW5nX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX21hcHBpbmcg
ICAgIDEyCi1zdHJ1Y3QgeGVuX21hY2hwaHlzX21hcHBpbmcgewotICAgIHhlbl91bG9uZ190IHZf
c3RhcnQsIHZfZW5kOyAvKiBTdGFydCBhbmQgZW5kIHZpcnR1YWwgYWRkcmVzc2VzLiAgICovCi0g
ICAgeGVuX3Vsb25nX3QgbWF4X21mbjsgICAgICAgIC8qIE1heGltdW0gTUZOIHRoYXQgY2FuIGJl
IGxvb2tlZCB1cC4gKi8KLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fbWFjaHBoeXNfbWFwcGluZyB4
ZW5fbWFjaHBoeXNfbWFwcGluZ190OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21hY2hw
aHlzX21hcHBpbmdfdCk7Ci0KLS8qIFNvdXJjZSBtYXBwaW5nIHNwYWNlLiAqLwotLyogYCBlbnVt
IHBoeXNfbWFwX3NwYWNlIHsgKi8KLSNkZWZpbmUgWEVOTUFQU1BBQ0Vfc2hhcmVkX2luZm8gIDAg
Lyogc2hhcmVkIGluZm8gcGFnZSAqLwotI2RlZmluZSBYRU5NQVBTUEFDRV9ncmFudF90YWJsZSAg
MSAvKiBncmFudCB0YWJsZSBwYWdlICovCi0jZGVmaW5lIFhFTk1BUFNQQUNFX2dtZm4gICAgICAg
ICAyIC8qIEdNRk4gKi8KLSNkZWZpbmUgWEVOTUFQU1BBQ0VfZ21mbl9yYW5nZSAgIDMgLyogR01G
TiByYW5nZSwgWEVOTUVNX2FkZF90b19waHlzbWFwIG9ubHkuICovCi0jZGVmaW5lIFhFTk1BUFNQ
QUNFX2dtZm5fZm9yZWlnbiA0IC8qIEdNRk4gZnJvbSBhbm90aGVyIGRvbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogWEVOTUVNX2FkZF90b19waHlzbWFwX2JhdGNoIG9u
bHkuICovCi0vKiBgIH0gKi8KLQotLyoKLSAqIFNldHMgdGhlIEdQRk4gYXQgd2hpY2ggYSBwYXJ0
aWN1bGFyIHBhZ2UgYXBwZWFycyBpbiB0aGUgc3BlY2lmaWVkIGd1ZXN0J3MKLSAqIHBzZXVkb3Bo
eXNpY2FsIGFkZHJlc3Mgc3BhY2UuCi0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fYWRkX3RvX3BoeXNt
YXBfdC4KLSAqLwotI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXAgICAgICA3Ci1zdHJ1Y3Qg
eGVuX2FkZF90b19waHlzbWFwIHsKLSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBt
YXBwaW5nIGZvci4gKi8KLSAgICBkb21pZF90IGRvbWlkOwotCi0gICAgLyogTnVtYmVyIG9mIHBh
Z2VzIHRvIGdvIHRocm91Z2ggZm9yIGdtZm5fcmFuZ2UgKi8KLSAgICB1aW50MTZfdCAgICBzaXpl
OwotCi0gICAgdW5zaWduZWQgaW50IHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFwX3NwYWNlICov
Ci0KLSNkZWZpbmUgWEVOTUFQSURYX2dyYW50X3RhYmxlX3N0YXR1cyAweDgwMDAwMDAwCi0KLSAg
ICAvKiBJbmRleCBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KLSAgICB4ZW5fdWxvbmdfdCBp
ZHg7Ci0KLSAgICAvKiBHUEZOIGluIGRvbWlkIHdoZXJlIHRoZSBzb3VyY2UgbWFwcGluZyBwYWdl
IHNob3VsZCBhcHBlYXIuICovCi0gICAgeGVuX3Bmbl90ICAgICBncGZuOwotfTsKLXR5cGVkZWYg
c3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcCB4ZW5fYWRkX3RvX3BoeXNtYXBfdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9hZGRfdG9fcGh5c21hcF90KTsKLQotLyogQSBiYXRjaGVkIHZl
cnNpb24gb2YgYWRkX3RvX3BoeXNtYXAuICovCi0jZGVmaW5lIFhFTk1FTV9hZGRfdG9fcGh5c21h
cF9iYXRjaCAyMwotc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9iYXRjaCB7Ci0gICAgLyogSU4g
Ki8KLSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGZvci4gKi8KLSAg
ICBkb21pZF90IGRvbWlkOwotICAgIHVpbnQxNl90IHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFw
X3NwYWNlICovCi0KLSAgICAvKiBOdW1iZXIgb2YgcGFnZXMgdG8gZ28gdGhyb3VnaCAqLwotICAg
IHVpbnQxNl90IHNpemU7Ci0gICAgZG9taWRfdCBmb3JlaWduX2RvbWlkOyAvKiBJRkYgZ21mbl9m
b3JlaWduICovCi0KLSAgICAvKiBJbmRleGVzIGludG8gc3BhY2UgYmVpbmcgbWFwcGVkLiAqLwot
ICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3QpIGlkeHM7Ci0KLSAgICAvKiBHUEZOIGlu
IGRvbWlkIHdoZXJlIHRoZSBzb3VyY2UgbWFwcGluZyBwYWdlIHNob3VsZCBhcHBlYXIuICovCi0g
ICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGdwZm5zOwotCi0gICAgLyogT1VUICovCi0K
LSAgICAvKiBQZXIgaW5kZXggZXJyb3IgY29kZS4gKi8KLSAgICBYRU5fR1VFU1RfSEFORExFKGlu
dCkgZXJyczsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeGVu
X2FkZF90b19waHlzbWFwX2JhdGNoX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRk
X3RvX3BoeXNtYXBfYmF0Y2hfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDA0MDQwMAotI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXBfcmFuZ2UgWEVOTUVNX2Fk
ZF90b19waHlzbWFwX2JhdGNoCi0jZGVmaW5lIHhlbl9hZGRfdG9fcGh5c21hcF9yYW5nZSB4ZW5f
YWRkX3RvX3BoeXNtYXBfYmF0Y2gKLXR5cGVkZWYgc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9i
YXRjaCB4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2VfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9hZGRfdG9fcGh5c21hcF9yYW5nZV90KTsKLSNlbmRpZgotCi0vKgotICogVW5tYXBzIHRo
ZSBwYWdlIGFwcGVhcmluZyBhdCBhIHBhcnRpY3VsYXIgR1BGTiBmcm9tIHRoZSBzcGVjaWZpZWQg
Z3Vlc3QncwotICogcHNldWRvcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KLSAqIGFyZyA9PSBhZGRy
IG9mIHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX3JlbW92
ZV9mcm9tX3BoeXNtYXAgICAgICAxNQotc3RydWN0IHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwIHsK
LSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGZvci4gKi8KLSAgICBk
b21pZF90IGRvbWlkOwotCi0gICAgLyogR1BGTiBvZiB0aGUgY3VycmVudCBtYXBwaW5nIG9mIHRo
ZSBwYWdlLiAqLwotICAgIHhlbl9wZm5fdCAgICAgZ3BmbjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4
ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcCB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcF90OwotREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXBfdCk7Ci0KLS8qKiogUkVN
T1ZFRCAqKiovCi0vKiNkZWZpbmUgWEVOTUVNX3RyYW5zbGF0ZV9ncGZuX2xpc3QgIDgqLwotCi0v
KgotICogUmV0dXJucyB0aGUgcHNldWRvLXBoeXNpY2FsIG1lbW9yeSBtYXAgYXMgaXQgd2FzIHdo
ZW4gdGhlIGRvbWFpbgotICogd2FzIHN0YXJ0ZWQgKHNwZWNpZmllZCBieSBYRU5NRU1fc2V0X21l
bW9yeV9tYXApLgotICogYXJnID09IGFkZHIgb2YgeGVuX21lbW9yeV9tYXBfdC4KLSAqLwotI2Rl
ZmluZSBYRU5NRU1fbWVtb3J5X21hcCAgICAgICAgICAgOQotc3RydWN0IHhlbl9tZW1vcnlfbWFw
IHsKLSAgICAvKgotICAgICAqIE9uIGNhbGwgdGhlIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIGNh
biBiZSBzdG9yZWQgaW4gYnVmZmVyLiBPbgotICAgICAqIHJldHVybiB0aGUgbnVtYmVyIG9mIGVu
dHJpZXMgd2hpY2ggaGF2ZSBiZWVuIHN0b3JlZCBpbgotICAgICAqIGJ1ZmZlci4KLSAgICAgKi8K
LSAgICB1bnNpZ25lZCBpbnQgbnJfZW50cmllczsKLQotICAgIC8qCi0gICAgICogRW50cmllcyBp
biB0aGUgYnVmZmVyIGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgcmV0dXJuZWQgYnkgdGhlCi0g
ICAgICogQklPUyBJTlQgMHgxNSBFQVg9MHhFODIwIGNhbGwuCi0gICAgICovCi0gICAgWEVOX0dV
RVNUX0hBTkRMRSh2b2lkKSBidWZmZXI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbW9yeV9t
YXAgeGVuX21lbW9yeV9tYXBfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1vcnlf
bWFwX3QpOwotCi0vKgotICogUmV0dXJucyB0aGUgcmVhbCBwaHlzaWNhbCBtZW1vcnkgbWFwLiBQ
YXNzZXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzCi0gKiBYRU5NRU1fbWVtb3J5X21hcC4KLSAqIGFy
ZyA9PSBhZGRyIG9mIHhlbl9tZW1vcnlfbWFwX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX21hY2hp
bmVfbWVtb3J5X21hcCAgIDEwCi0KLS8qCi0gKiBTZXQgdGhlIHBzZXVkby1waHlzaWNhbCBtZW1v
cnkgbWFwIG9mIGEgZG9tYWluLCBhcyByZXR1cm5lZCBieQotICogWEVOTUVNX21lbW9yeV9tYXAu
Ci0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fZm9yZWlnbl9tZW1vcnlfbWFwX3QuCi0gKi8KLSNkZWZp
bmUgWEVOTUVNX3NldF9tZW1vcnlfbWFwICAgICAgIDEzCi1zdHJ1Y3QgeGVuX2ZvcmVpZ25fbWVt
b3J5X21hcCB7Ci0gICAgZG9taWRfdCBkb21pZDsKLSAgICBzdHJ1Y3QgeGVuX21lbW9yeV9tYXAg
bWFwOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9mb3JlaWduX21lbW9yeV9tYXAgeGVuX2ZvcmVp
Z25fbWVtb3J5X21hcF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2ZvcmVpZ25fbWVt
b3J5X21hcF90KTsKLQotI2RlZmluZSBYRU5NRU1fc2V0X3BvZF90YXJnZXQgICAgICAgMTYKLSNk
ZWZpbmUgWEVOTUVNX2dldF9wb2RfdGFyZ2V0ICAgICAgIDE3Ci1zdHJ1Y3QgeGVuX3BvZF90YXJn
ZXQgewotICAgIC8qIElOICovCi0gICAgdWludDY0X3QgdGFyZ2V0X3BhZ2VzOwotICAgIC8qIE9V
VCAqLwotICAgIHVpbnQ2NF90IHRvdF9wYWdlczsKLSAgICB1aW50NjRfdCBwb2RfY2FjaGVfcGFn
ZXM7Ci0gICAgdWludDY0X3QgcG9kX2VudHJpZXM7Ci0gICAgLyogSU4gKi8KLSAgICBkb21pZF90
IGRvbWlkOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9wb2RfdGFyZ2V0IHhlbl9wb2RfdGFyZ2V0
X3Q7Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQot
I2lmbmRlZiB1aW50NjRfYWxpZ25lZF90Ci0jZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0
X3QKLSNlbmRpZgotCi0vKgotICogR2V0IHRoZSBudW1iZXIgb2YgTUZOcyBzYXZlZCB0aHJvdWdo
IG1lbW9yeSBzaGFyaW5nLgotICogVGhlIGNhbGwgbmV2ZXIgZmFpbHMuIAotICovCi0jZGVmaW5l
IFhFTk1FTV9nZXRfc2hhcmluZ19mcmVlZF9wYWdlcyAgICAxOAotI2RlZmluZSBYRU5NRU1fZ2V0
X3NoYXJpbmdfc2hhcmVkX3BhZ2VzICAgMTkKLQotI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wICAg
ICAgICAgICAgICAgICAgICAyMAotI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX25vbWluYXRlICAg
ICAgICAgICAwCi0jZGVmaW5lIFhFTk1FTV9wYWdpbmdfb3BfZXZpY3QgICAgICAgICAgICAgIDEK
LSNkZWZpbmUgWEVOTUVNX3BhZ2luZ19vcF9wcmVwICAgICAgICAgICAgICAgMgotCi1zdHJ1Y3Qg
eGVuX21lbV9ldmVudF9vcCB7Ci0gICAgdWludDhfdCAgICAgb3A7ICAgICAgICAgLyogWEVOTUVN
Xypfb3BfKiAqLwotICAgIGRvbWlkX3QgICAgIGRvbWFpbjsKLSAgICAKLQotICAgIC8qIFBBR0lO
R19QUkVQIElOOiBidWZmZXIgdG8gaW1tZWRpYXRlbHkgZmlsbCBwYWdlIGluICovCi0gICAgdWlu
dDY0X2FsaWduZWRfdCAgICBidWZmZXI7Ci0gICAgLyogT3RoZXIgT1BzICovCi0gICAgdWludDY0
X2FsaWduZWRfdCAgICBnZm47ICAgICAgICAgICAvKiBJTjogIGdmbiBvZiBwYWdlIGJlaW5nIG9w
ZXJhdGVkIG9uICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbV9ldmVudF9vcCB4ZW5fbWVt
X2V2ZW50X29wX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtX2V2ZW50X29wX3Qp
OwotCi0jZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3AgICAgICAgICAgICAgICAgICAgIDIxCi0jZGVm
aW5lIFhFTk1FTV9hY2Nlc3Nfb3BfcmVzdW1lICAgICAgICAgICAgIDAKLSNkZWZpbmUgWEVOTUVN
X2FjY2Vzc19vcF9zZXRfYWNjZXNzICAgICAgICAgMQotI2RlZmluZSBYRU5NRU1fYWNjZXNzX29w
X2dldF9hY2Nlc3MgICAgICAgICAyCi0KLXR5cGVkZWYgZW51bSB7Ci0gICAgWEVOTUVNX2FjY2Vz
c19uLAotICAgIFhFTk1FTV9hY2Nlc3NfciwKLSAgICBYRU5NRU1fYWNjZXNzX3csCi0gICAgWEVO
TUVNX2FjY2Vzc19ydywKLSAgICBYRU5NRU1fYWNjZXNzX3gsCi0gICAgWEVOTUVNX2FjY2Vzc19y
eCwKLSAgICBYRU5NRU1fYWNjZXNzX3d4LAotICAgIFhFTk1FTV9hY2Nlc3Nfcnd4LAotICAgIC8q
Ci0gICAgICogUGFnZSBzdGFydHMgb2ZmIGFzIHIteCwgYnV0IGF1dG9tYXRpY2FsbHkKLSAgICAg
KiBjaGFuZ2UgdG8gci13IG9uIGEgd3JpdGUKLSAgICAgKi8KLSAgICBYRU5NRU1fYWNjZXNzX3J4
MnJ3LAotICAgIC8qCi0gICAgICogTG9nIGFjY2Vzczogc3RhcnRzIG9mZiBhcyBuLCBhdXRvbWF0
aWNhbGx5Ci0gICAgICogZ29lcyB0byByd3gsIGdlbmVyYXRpbmcgYW4gZXZlbnQgd2l0aG91dAot
ICAgICAqIHBhdXNpbmcgdGhlIHZjcHUKLSAgICAgKi8KLSAgICBYRU5NRU1fYWNjZXNzX24ycnd4
LAotICAgIC8qIFRha2UgdGhlIGRvbWFpbiBkZWZhdWx0ICovCi0gICAgWEVOTUVNX2FjY2Vzc19k
ZWZhdWx0Ci19IHhlbm1lbV9hY2Nlc3NfdDsKLQotc3RydWN0IHhlbl9tZW1fYWNjZXNzX29wIHsK
LSAgICAvKiBYRU5NRU1fYWNjZXNzX29wXyogKi8KLSAgICB1aW50OF90IG9wOwotICAgIC8qIHhl
bm1lbV9hY2Nlc3NfdCAqLwotICAgIHVpbnQ4X3QgYWNjZXNzOwotICAgIGRvbWlkX3QgZG9taWQ7
Ci0gICAgLyoKLSAgICAgKiBOdW1iZXIgb2YgcGFnZXMgZm9yIHNldCBvcAotICAgICAqIElnbm9y
ZWQgb24gc2V0dGluZyBkZWZhdWx0IGFjY2VzcyBhbmQgb3RoZXIgb3BzCi0gICAgICovCi0gICAg
dWludDMyX3QgbnI7Ci0gICAgLyoKLSAgICAgKiBGaXJzdCBwZm4gZm9yIHNldCBvcAotICAgICAq
IHBmbiBmb3IgZ2V0IG9wCi0gICAgICogfjB1bGwgaXMgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUg
ZGVmYXVsdCBhY2Nlc3MgZm9yIHBhZ2VzCi0gICAgICovCi0gICAgdWludDY0X2FsaWduZWRfdCBw
Zm47Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbV9hY2Nlc3Nfb3AgeGVuX21lbV9hY2Nlc3Nf
b3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1fYWNjZXNzX29wX3QpOwotCi0j
ZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wICAgICAgICAgICAgICAgICAgIDIyCi0jZGVmaW5lIFhF
Tk1FTV9zaGFyaW5nX29wX25vbWluYXRlX2dmbiAgICAgIDAKLSNkZWZpbmUgWEVOTUVNX3NoYXJp
bmdfb3Bfbm9taW5hdGVfZ3JlZiAgICAgMQotI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9zaGFy
ZSAgICAgICAgICAgICAyCi0jZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3Jlc3VtZSAgICAgICAg
ICAgIDMKLSNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ2ZuICAgICAgICAgNAotI2Rl
ZmluZSBYRU5NRU1fc2hhcmluZ19vcF9kZWJ1Z19tZm4gICAgICAgICA1Ci0jZGVmaW5lIFhFTk1F
TV9zaGFyaW5nX29wX2RlYnVnX2dyZWYgICAgICAgIDYKLSNkZWZpbmUgWEVOTUVNX3NoYXJpbmdf
b3BfYWRkX3BoeXNtYXAgICAgICAgNwotI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9hdWRpdCAg
ICAgICAgICAgICA4Ci0KLSNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfU19IQU5ETEVfSU5WQUxJ
RCAgKC0xMCkKLSNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfQ19IQU5ETEVfSU5WQUxJRCAgKC05
KQotCi0vKiBUaGUgZm9sbG93aW5nIGFsbG93cyBzaGFyaW5nIG9mIGdyYW50IHJlZnMuIFRoaXMg
aXMgdXNlZnVsCi0gKiBmb3Igc2hhcmluZyB1dGlsaXRpZXMgc2l0dGluZyBhcyAiZmlsdGVycyIg
aW4gSU8gYmFja2VuZHMKLSAqIChlLmcuIG1lbXNociArIGJsa3RhcCgyKSkuIFRoZSBJTyBiYWNr
ZW5kIGlzIG9ubHkgZXhwb3NlZCAKLSAqIHRvIGdyYW50IHJlZmVyZW5jZXMsIGFuZCB0aGlzIGFs
bG93cyBzaGFyaW5nIG9mIHRoZSBncmVmcyAqLwotI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9G
SUVMRF9JU19HUkVGX0ZMQUcgICAoMVVMTCA8PCA2MikKLQotI2RlZmluZSBYRU5NRU1fU0hBUklO
R19PUF9GSUVMRF9NQUtFX0dSRUYoZmllbGQsIHZhbCkgIFwKLSAgICAoZmllbGQpID0gKFhFTk1F
TV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUZfRkxBRyB8IHZhbCkKLSNkZWZpbmUgWEVOTUVNX1NI
QVJJTkdfT1BfRklFTERfSVNfR1JFRihmaWVsZCkgICAgICAgICBcCi0gICAgKChmaWVsZCkgJiBY
RU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVGX0ZMQUcpCi0jZGVmaW5lIFhFTk1FTV9TSEFS
SU5HX09QX0ZJRUxEX0dFVF9HUkVGKGZpZWxkKSAgICAgICAgXAotICAgICgoZmllbGQpICYgKH5Y
RU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVGX0ZMQUcpKQotCi1zdHJ1Y3QgeGVuX21lbV9z
aGFyaW5nX29wIHsKLSAgICB1aW50OF90ICAgICBvcDsgICAgIC8qIFhFTk1FTV9zaGFyaW5nX29w
XyogKi8KLSAgICBkb21pZF90ICAgICBkb21haW47Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0
cnVjdCBtZW1fc2hhcmluZ19vcF9ub21pbmF0ZSB7ICAvKiBPUF9OT01JTkFURV94eHggICAgICAg
ICAgICovCi0gICAgICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAgICAgdWludDY0X2FsaWdu
ZWRfdCBnZm47ICAgICAvKiBJTjogZ2ZuIHRvIG5vbWluYXRlICAgICAgICovCi0gICAgICAgICAg
ICAgICAgdWludDMyX3QgICAgICBncmFudF9yZWY7ICAvKiBJTjogZ3JhbnQgcmVmIHRvIG5vbWlu
YXRlICovCi0gICAgICAgICAgICB9IHU7Ci0gICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90ICBo
YW5kbGU7ICAgICAvKiBPVVQ6IHRoZSBoYW5kbGUgICAgICAgICAgICovCi0gICAgICAgIH0gbm9t
aW5hdGU7Ci0gICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9zaGFyZSB7ICAgICAvKiBPUF9T
SEFSRS9BRERfUEhZU01BUCAqLwotICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBzb3VyY2Vf
Z2ZuOyAgICAvKiBJTjogdGhlIGdmbiBvZiB0aGUgc291cmNlIHBhZ2UgKi8KLSAgICAgICAgICAg
IHVpbnQ2NF9hbGlnbmVkX3Qgc291cmNlX2hhbmRsZTsgLyogSU46IGhhbmRsZSB0byB0aGUgc291
cmNlIHBhZ2UgKi8KLSAgICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3QgY2xpZW50X2dmbjsgICAg
LyogSU46IHRoZSBjbGllbnQgZ2ZuICovCi0gICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IGNs
aWVudF9oYW5kbGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIGNsaWVudCBwYWdlICovCi0gICAgICAg
ICAgICBkb21pZF90ICBjbGllbnRfZG9tYWluOyAvKiBJTjogdGhlIGNsaWVudCBkb21haW4gaWQg
Ki8KLSAgICAgICAgfSBzaGFyZTsgCi0gICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9kZWJ1
ZyB7ICAgICAvKiBPUF9ERUJVR194eHggKi8KLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAg
ICAgICAgICB1aW50NjRfYWxpZ25lZF90IGdmbjsgICAgICAvKiBJTjogZ2ZuIHRvIGRlYnVnICAg
ICAgICAgICovCi0gICAgICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBtZm47ICAgICAgLyog
SU46IG1mbiB0byBkZWJ1ZyAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHVpbnQzMl90IGdy
ZWY7ICAgICAvKiBJTjogZ3JlZiB0byBkZWJ1ZyAgICAgICAgICovCi0gICAgICAgICAgICB9IHU7
Ci0gICAgICAgIH0gZGVidWc7Ci0gICAgfSB1OwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9tZW1f
c2hhcmluZ19vcCB4ZW5fbWVtX3NoYXJpbmdfb3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9tZW1fc2hhcmluZ19vcF90KTsKLQotLyoKLSAqIEF0dGVtcHQgdG8gc3Rha2UgYSBjbGFp
bSBmb3IgYSBkb21haW4gb24gYSBxdWFudGl0eSBvZiBwYWdlcwotICogb2Ygc3lzdGVtIFJBTSwg
YnV0IF9ub3RfIGFzc2lnbiBzcGVjaWZpYyBwYWdlZnJhbWVzLiAgT25seQotICogYXJpdGhtZXRp
YyBpcyBwZXJmb3JtZWQgc28gdGhlIGh5cGVyY2FsbCBpcyB2ZXJ5IGZhc3QgYW5kIG5lZWQKLSAq
IG5vdCBiZSBwcmVlbXB0aWJsZSwgdGh1cyBzaWRlc3RlcHBpbmcgdGltZS1vZi1jaGVjay10aW1l
LW9mLXVzZQotICogcmFjZXMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uLiAgUmV0dXJucyAwIGlmIHRo
ZSBoeXBlcnZpc29yIHBhZ2UKLSAqIGFsbG9jYXRvciBoYXMgYXRvbWljYWxseSBhbmQgc3VjY2Vz
c2Z1bGx5IGNsYWltZWQgdGhlIHJlcXVlc3RlZAotICogbnVtYmVyIG9mIHBhZ2VzLCBlbHNlIG5v
bi16ZXJvLgotICoKLSAqIEFueSBkb21haW4gbWF5IGhhdmUgb25seSBvbmUgYWN0aXZlIGNsYWlt
LiAgV2hlbiBzdWZmaWNpZW50IG1lbW9yeQotICogaGFzIGJlZW4gYWxsb2NhdGVkIHRvIHJlc29s
dmUgdGhlIGNsYWltLCB0aGUgY2xhaW0gc2lsZW50bHkgZXhwaXJlcy4KLSAqIENsYWltaW5nIHpl
cm8gcGFnZXMgZWZmZWN0aXZlbHkgcmVzZXRzIGFueSBvdXRzdGFuZGluZyBjbGFpbSBhbmQKLSAq
IGlzIGFsd2F5cyBzdWNjZXNzZnVsLgotICoKLSAqIE5vdGUgdGhhdCBhIHZhbGlkIGNsYWltIG1h
eSBiZSBzdGFrZWQgZXZlbiBhZnRlciBtZW1vcnkgaGFzIGJlZW4KLSAqIGFsbG9jYXRlZCBmb3Ig
YSBkb21haW4uICBJbiB0aGlzIGNhc2UsIHRoZSBjbGFpbSBpcyBub3QgaW5jcmVtZW50YWwsCi0g
KiBpLmUuIGlmIHRoZSBkb21haW4ncyB0b3RfcGFnZXMgaXMgMywgYW5kIGEgY2xhaW0gaXMgc3Rh
a2VkIGZvciAxMCwKLSAqIG9ubHkgNyBhZGRpdGlvbmFsIHBhZ2VzIGFyZSBjbGFpbWVkLgotICoK
LSAqIENhbGxlciBtdXN0IGJlIHByaXZpbGVnZWQgb3IgdGhlIGh5cGVyY2FsbCBmYWlscy4KLSAq
LwotI2RlZmluZSBYRU5NRU1fY2xhaW1fcGFnZXMgICAgICAgICAgICAgICAgICAyNAotCi0vKgot
ICogWEVOTUVNX2NsYWltX3BhZ2VzIGZsYWdzIC0gdGhlIGFyZSBubyBmbGFncyBhdCB0aGlzIHRp
bWUuCi0gKiBUaGUgemVybyB2YWx1ZSBpcyBhcHByb3BpYXRlLgotICovCi0KLSNlbmRpZiAvKiBk
ZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KLQotLyoKLSAqIFhF
Tk1FTV9nZXRfdm51bWFpbmZvIHVzZWQgYnkgZ3Vlc3QgdG8gZ2V0Ci0gKiB2TlVNQSB0b3BvbG9n
eSBmcm9tIGh5cGVydmlzb3IuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX2dldF92bnVtYWluZm8gICAg
ICAgICAgICAgICAgMjYKLQotLyogdk5VTUEgbm9kZSBtZW1vcnkgcmFuZ2VzICovCi1zdHJ1Y3Qg
dm1lbXJhbmdlIHsKLSAgICB1aW50NjRfdCBzdGFydCwgZW5kOwotICAgIHVuc2lnbmVkIGludCBm
bGFnczsKLSAgICB1bnNpZ25lZCBpbnQgbmlkOwotfTsKLQotdHlwZWRlZiBzdHJ1Y3Qgdm1lbXJh
bmdlIHZtZW1yYW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm1lbXJhbmdlX3QpOwot
Ci0vKgotICogdk5VTUEgdG9wb2xvZ3kgc3BlY2lmaWVzIHZOVU1BIG5vZGUgbnVtYmVyLCBkaXN0
YW5jZSB0YWJsZSwKLSAqIG1lbW9yeSByYW5nZXMgYW5kIHZjcHUgbWFwcGluZyBwcm92aWRlZCBm
b3IgZ3Vlc3RzLgotICogWEVOTUVNX2dldF92bnVtYWluZm8gaHlwZXJjYWxsIGV4cGVjdHMgdG8g
c2VlIGZyb20gZ3Vlc3QKLSAqIG5yX3Zub2RlcywgbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMg
dG8gaW5kaWNhdGUgYXZhaWxhYmxlIG1lbW9yeS4KLSAqIEFmdGVyIGZpbGxpbmcgZ3Vlc3RzIHN0
cnVjdHVyZXMsIG5yX3Zub2RlcywgbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMKLSAqIGNvcGll
ZCBiYWNrIHRvIGd1ZXN0LiBEb21haW4gcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgb2YgbnJfdm5v
ZGVzLAotICogbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMgdG8gZ3Vlc3QgaWYgdGhlIHZhbHVl
cyB3aGVyZSBpbmNvcnJlY3QuCi0gKi8KLXN0cnVjdCB2bnVtYV90b3BvbG9neV9pbmZvIHsKLSAg
ICAvKiBJTiAqLwotICAgIGRvbWlkX3QgZG9taWQ7Ci0gICAgdWludDE2X3QgcGFkOwotICAgIC8q
IElOL09VVCAqLwotICAgIHVuc2lnbmVkIGludCBucl92bm9kZXM7Ci0gICAgdW5zaWduZWQgaW50
IG5yX3ZjcHVzOwotICAgIHVuc2lnbmVkIGludCBucl92bWVtcmFuZ2VzOwotICAgIC8qIE9VVCAq
LwotICAgIHVuaW9uIHsKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBoOwotICAgICAg
ICB1aW50NjRfdCBwYWQ7Ci0gICAgfSB2ZGlzdGFuY2U7Ci0gICAgdW5pb24gewotICAgICAgICBY
RU5fR1VFU1RfSEFORExFKHVpbnQpIGg7Ci0gICAgICAgIHVpbnQ2NF90IHBhZDsKLSAgICB9IHZj
cHVfdG9fdm5vZGU7Ci0gICAgdW5pb24gewotICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZtZW1y
YW5nZV90KSBoOwotICAgICAgICB1aW50NjRfdCBwYWQ7Ci0gICAgfSB2bWVtcmFuZ2U7Ci19Owot
dHlwZWRlZiBzdHJ1Y3Qgdm51bWFfdG9wb2xvZ3lfaW5mbyB2bnVtYV90b3BvbG9neV9pbmZvX3Q7
Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2bnVtYV90b3BvbG9neV9pbmZvX3QpOwotCi0vKiBO
ZXh0IGF2YWlsYWJsZSBzdWJvcCBudW1iZXIgaXMgMjcgKi8KLQotI2VuZGlmIC8qIF9fWEVOX1BV
QkxJQ19NRU1PUllfSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBD
Ci0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdp
ZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCBiL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzM2ODhiOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9h
cmNoLXg4Ni94ZW4teDg2XzMyLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKyAqIHhlbi14ODZfMzIuaAorICoKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYg
MzItYml0IFhlbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3
YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwg
dG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwg
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFM
SU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIEsg
QSBGcmFzZXIKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMy
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9IX18KKworLyoK
KyAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6CisgKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAl
ZXNpLCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQorICogIE91dHB1dDogJWVheAorICogQWNj
ZXNzIGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEg
YSBYZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAq
IDMyCisgKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJj
YWxsIGNsb2JiZXJzICVlYngsJWVjeCkKKyAqLworCisvKgorICogVGhlc2UgZmxhdCBzZWdtZW50
cyBhcmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0aGVz
ZQorICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxs
IGJlIGFibGUgdG8gYXZvaWQKKyAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KKyAqLworI2Rl
ZmluZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICovCisjZGVmaW5l
IEZMQVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KKyNkZWZpbmUgRkxB
VF9SSU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJ
TkczX0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRfUklORzNf
RFMgMHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19TUyAw
eGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLworCisjZGVmaW5lIEZMQVRfS0VSTkVMX0NTIEZM
QVRfUklORzFfQ1MKKyNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9SSU5HMV9EUworI2RlZmlu
ZSBGTEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCisjZGVmaW5lIEZMQVRfVVNFUl9DUyAgICBG
TEFUX1JJTkczX0NTCisjZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFUX1JJTkczX0RTCisjZGVm
aW5lIEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCisKKyNkZWZpbmUgX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9T
VEFSVF9QQUUgICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFF
ICAgICAgIDB4RjY4MDAwMDAKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAg
IFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKKyNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKKyAgICBta191bnNpZ25lZF9s
b25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9F
TkRfUEFFICAgICAgICAgXAorICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9F
TkRfUEFFKQorCisvKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQ
SFlTX1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJ
UlRfRU5EX05PTlBBRSAgICAweEZDNDAwMDAwCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFS
VF9OT05QQUUgICBcCisgICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFS
VF9OT05QQUUpCisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgICBcCisgICAg
bWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKKyNkZWZpbmUg
TUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9f
TUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKKworI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9T
VEFSVCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklS
VF9TVEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNf
VklSVF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCisKKyNpZm5kZWYgSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9s
b25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKKyNkZWZpbmUgTUFDSDJQSFlT
X1ZJUlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNf
VklSVF9FTkQpCisjZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJU
X0VORC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCisjaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19t
YXBwaW5nCisjZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUxPTkdfUFRSICopTUFD
SDJQSFlTX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworLyogMzItLzY0LWJpdCBpbnZhcmlhYmlsaXR5
IGZvciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAqLworI2lmIGRlZmluZWQo
X19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorI3VuZGVmIF9fX0RFRklORV9YRU5f
R1VFU1RfSEFORExFCisjZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5
cGUpICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ndWVzdF9oYW5kbGVf
ICMjIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBz
dHJ1Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3QgcTsgfTsgfSAgXAorICAg
ICAgICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQorI3VuZGVmIHNldF94ZW5fZ3Vlc3RfaGFu
ZGxlX3JhdworI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9PSA4ICkgKih1aW50NjRf
dCAqKSYoaG5kKSA9IDA7ICAgXAorICAgICAgICAgKGhuZCkucCA9IHZhbDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKKyNkZWZpbmUgIGlu
dDY0X2FsaWduZWRfdCAgaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKKyNkZWZp
bmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkK
KyNkZWZpbmUgX19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFuZGxlXzY0XyAj
IyBuYW1lCisjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5fR1VFU1RfSEFO
RExFXzY0KG5hbWUpCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworc3RydWN0IGNw
dV91c2VyX3JlZ3MgeworICAgIHVpbnQzMl90IGVieDsKKyAgICB1aW50MzJfdCBlY3g7CisgICAg
dWludDMyX3QgZWR4OworICAgIHVpbnQzMl90IGVzaTsKKyAgICB1aW50MzJfdCBlZGk7CisgICAg
dWludDMyX3QgZWJwOworICAgIHVpbnQzMl90IGVheDsKKyAgICB1aW50MTZfdCBlcnJvcl9jb2Rl
OyAgICAvKiBwcml2YXRlICovCisgICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0
ZSAqLworICAgIHVpbnQzMl90IGVpcDsKKyAgICB1aW50MTZfdCBjczsKKyAgICB1aW50OF90ICBz
YXZlZF91cGNhbGxfbWFzazsKKyAgICB1aW50OF90ICBfcGFkMDsKKyAgICB1aW50MzJfdCBlZmxh
Z3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCisgICAgdWlu
dDMyX3QgZXNwOworICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKKyAgICB1aW50MTZfdCBlcywgX3Bh
ZDI7CisgICAgdWludDE2X3QgZHMsIF9wYWQzOworICAgIHVpbnQxNl90IGZzLCBfcGFkNDsKKyAg
ICB1aW50MTZfdCBncywgX3BhZDU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBj
cHVfdXNlcl9yZWdzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3Qp
OworCisvKgorICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0
IGludG8gYXJjaGl0ZWN0dXJhbCAlY3IzLgorICogV2hlbiBhY2Nlc3NpbmcgJWNyMywgb3IgZXF1
aXZhbGVudCBmaWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cworICogbXVzdCB1c2Ug
dGhlIGZvbGxvd2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFsaWQgTUZOcy4K
KyAqLworI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShwZm4pIDw8IDEy
KSB8ICgodW5zaWduZWQpKHBmbikgPj4gMjApKQorI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMp
ICgoKHVuc2lnbmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwgMjApKQorCitz
dHJ1Y3QgYXJjaF92Y3B1X2luZm8geworICAgIFVMT05HX1BUUiBjcjI7CisgICAgVUxPTkdfUFRS
IHBhZFs1XTsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IGFyY2hfdmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7CisKK3N0cnVjdCB4ZW5fY2FsbGJh
Y2sgeworICAgIFVMT05HX1BUUiBjczsKKyAgICBVTE9OR19QVFIgZWlwOworfTsKK3R5cGVkZWYg
c3RydWN0IHhlbl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKKworI2VuZGlmIC8qICFfX0FTU0VN
QkxZX18gKi8KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hf
XyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0
eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k
ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14
ODYveGVuLXg4Nl82NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OWVh
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4
Nl82NC5oCkBAIC0wLDAgKzEsMjAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiB4ZW4t
eDg2XzY0LmgKKyAqCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IDY0LWJpdCBYZW4uCisg
KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCisgKi8K
KworI2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18KKyNkZWZpbmUg
X19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fCisKKy8qCisgKiBIeXBlcmNhbGwg
aW50ZXJmYWNlOgorICogIElucHV0OiAgJXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkg
KGFyZ3VtZW50cyAxLTYpCisgKiAgT3V0cHV0OiAlcmF4CisgKiBBY2Nlc3MgaXMgdmlhIGh5cGVy
Y2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgorICog
IGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNhbGwtbnVtYmVyICogMzIKKyAqIENsb2JiZXJl
ZDogYXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJk
aSwlcnNpKQorICovCisKKy8qCisgKiA2NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKKyAqIFRoZXNl
IGZsYXQgc2VnbWVudHMgYXJlIGluIHRoZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdE
VC4gU2luY2UgdGhlc2UKKyAqIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBt
YW55IE9TZXMgd2lsbCBiZSBhYmxlIHRvIGF2b2lkCisgKiBpbnN0YWxsaW5nIHRoZWlyIG93biBH
RFQuCisgKi8KKworI2RlZmluZSBGTEFUX1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXgg
MjYwICovCisjZGVmaW5lIEZMQVRfUklORzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEg
Ki8KKyNkZWZpbmUgRkxBVF9SSU5HM19EUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwor
I2RlZmluZSBGTEFUX1JJTkczX0RTNjQgMHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCisjZGVm
aW5lIEZMQVRfUklORzNfU1MzMiAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUg
RkxBVF9SSU5HM19TUzY0IDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLworCisjZGVmaW5lIEZM
QVRfS0VSTkVMX0RTNjQgRkxBVF9SSU5HM19EUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIg
RkxBVF9SSU5HM19EUzMyCisjZGVmaW5lIEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2
NAorI2RlZmluZSBGTEFUX0tFUk5FTF9DUzY0IEZMQVRfUklORzNfQ1M2NAorI2RlZmluZSBGTEFU
X0tFUk5FTF9DUzMyIEZMQVRfUklORzNfQ1MzMgorI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZM
QVRfS0VSTkVMX0NTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQK
KyNkZWZpbmUgRkxBVF9LRVJORUxfU1MzMiBGTEFUX1JJTkczX1NTMzIKKyNkZWZpbmUgRkxBVF9L
RVJORUxfU1MgICBGTEFUX0tFUk5FTF9TUzY0CisKKyNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxB
VF9SSU5HM19EUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgorI2Rl
ZmluZSBGTEFUX1VTRVJfRFMgICBGTEFUX1VTRVJfRFM2NAorI2RlZmluZSBGTEFUX1VTRVJfQ1M2
NCBGTEFUX1JJTkczX0NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMy
CisjZGVmaW5lIEZMQVRfVVNFUl9DUyAgIEZMQVRfVVNFUl9DUzY0CisjZGVmaW5lIEZMQVRfVVNF
Ul9TUzY0IEZMQVRfUklORzNfU1M2NAorI2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkcz
X1NTMzIKKyNkZWZpbmUgRkxBVF9VU0VSX1NTICAgRkxBVF9VU0VSX1NTNjQKKworI2RlZmluZSBf
X0hZUEVSVklTT1JfVklSVF9TVEFSVCAweEZGRkY4MDAwMDAwMDAwMDAKKyNkZWZpbmUgX19IWVBF
UlZJU09SX1ZJUlRfRU5EICAgMHhGRkZGODgwMDAwMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlT
X1ZJUlRfU1RBUlQgIDB4RkZGRjgwMDAwMDAwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19WSVJU
X0VORCAgICAweEZGRkY4MDQwMDAwMDAwMDAKKworI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RB
UlQKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBF
UlZJU09SX1ZJUlRfU1RBUlQpCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNp
Z25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX0VORCkKKyNlbmRpZgorCisjZGVmaW5lIE1BQ0gy
UEhZU19WSVJUX1NUQVJUICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQp
CisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQ
SFlTX1ZJUlRfRU5EKQorI2RlZmluZSBNQUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNf
VklSVF9FTkQtTUFDSDJQSFlTX1ZJUlRfU1RBUlQpPj4zKQorI2lmbmRlZiBtYWNoaW5lX3RvX3Bo
eXNfbWFwcGluZworI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAq
KUhZUEVSVklTT1JfVklSVF9TVEFSVCkKKyNlbmRpZgorCisvKgorICogaW50IEhZUEVSVklTT1Jf
c2V0X3NlZ21lbnRfYmFzZSh1bnNpZ25lZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQorICog
IEB3aGljaCA9PSBTRUdCQVNFXyogIDsgIEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKKyAq
IFJldHVybnMgMCBvbiBzdWNjZXNzLgorICovCisjZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAg
MAorI2RlZmluZSBTRUdCQVNFX0dTX1VTRVIgICAgIDEKKyNkZWZpbmUgU0VHQkFTRV9HU19LRVJO
RUwgICAyCisjZGVmaW5lIFNFR0JBU0VfR1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3Bl
Y2lmaWVkIGluIGJhc2VbMTU6MF0gKi8KKworLyoKKyAqIGludCBIWVBFUlZJU09SX2lyZXQodm9p
ZCkKKyAqIEFsbCBhcmd1bWVudHMgYXJlIG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xs
b3dpbmcgZm9ybWF0LgorICogTmV2ZXIgcmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtl
cm5lbCBjb250ZXh0IGlzIGxvc3QuCisgKiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxv
d3M6CisgKiAgIFJJTkcwIC0+IFJJTkczIGtlcm5lbCBtb2RlLgorICogICBSSU5HMSAtPiBSSU5H
MyBrZXJuZWwgbW9kZS4KKyAqICAgUklORzIgLT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJ
TkczIC0+IFJJTkczIHVzZXIgbW9kZS4KKyAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQg
dGhlIGd1ZXN0IGtlcm5lbCBzaG91bGQgcmV0dXJuIHRvIGl0ZXNlbGYKKyAqIGRpcmVjdGx5IHdp
dGgKKyAqICAgICAgb3JiICAgJDMsMSo4KCVyc3ApCisgKiAgICAgIGlyZXRxCisgKiBJZiBmbGFn
cyBjb250YWlucyBWR0NGX2luX3N5c2NhbGw6CisgKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFH
UywgUlNQLgorICogICBEaXNjYXJkIFIxMSwgUkNYLCBDUywgU1MuCisgKiBPdGhlcndpc2U6Cisg
KiAgIFJlc3RvcmUgUkFYLCBSMTEsIFJDWCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KKyAqIEFs
bCBvdGhlciByZWdpc3RlcnMgYXJlIHNhdmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9y
ZWQgdG8gdXNlci4KKyAqLworLyogR3Vlc3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0
dXJuIHRvIGd1ZXN0IHdpdGggU1lTUkVUPyAqLworI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgK
KyNkZWZpbmUgVkdDRl9pbl9zeXNjYWxsICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKKyNkZWZpbmUg
VkdDRl9JTl9TWVNDQUxMICBWR0NGX2luX3N5c2NhbGwKKworI2lmbmRlZiBfX0FTU0VNQkxZX18K
Kworc3RydWN0IGlyZXRfY29udGV4dCB7CisgICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBv
aW50IG9mIGh5cGVyY2FsbCkuICovCisgICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3Ms
IHJpcCwgY3MsIHJmbGFncywgcnNwLCBzczsKKyAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBm
cmFtZS4gKi8KK307CisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklD
VF9BTlNJX18pCisvKiBBbm9ueW1vdXMgdW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJp
dCBuYW1lcyAoZS5nLiwgZWF4L3JheCkuICovCisjZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5p
b24geyBcCisgICAgdWludDY0X3QgciAjIyBuYW1lLCBlICMjIG5hbWU7IFwKKyAgICB1aW50MzJf
dCBfZSAjIyBuYW1lOyBcCit9CisjZWxzZQorLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlz
IHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcuLCByYXgpLiAqLworI2RlZmluZSBfX0RF
Q0xfUkVHKG5hbWUpIHVpbnQ2NF90IHIgIyMgbmFtZQorI2VuZGlmCisKK3N0cnVjdCBjcHVfdXNl
cl9yZWdzIHsKKyAgICB1aW50NjRfdCByMTU7CisgICAgdWludDY0X3QgcjE0OworICAgIHVpbnQ2
NF90IHIxMzsKKyAgICB1aW50NjRfdCByMTI7CisgICAgX19ERUNMX1JFRyhicCk7CisgICAgX19E
RUNMX1JFRyhieCk7CisgICAgdWludDY0X3QgcjExOworICAgIHVpbnQ2NF90IHIxMDsKKyAgICB1
aW50NjRfdCByOTsKKyAgICB1aW50NjRfdCByODsKKyAgICBfX0RFQ0xfUkVHKGF4KTsKKyAgICBf
X0RFQ0xfUkVHKGN4KTsKKyAgICBfX0RFQ0xfUkVHKGR4KTsKKyAgICBfX0RFQ0xfUkVHKHNpKTsK
KyAgICBfX0RFQ0xfUkVHKGRpKTsKKyAgICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2
YXRlICovCisgICAgdWludDMyX3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLworICAgIF9f
REVDTF9SRUcoaXApOworICAgIHVpbnQxNl90IGNzLCBfcGFkMFsxXTsKKyAgICB1aW50OF90ICBz
YXZlZF91cGNhbGxfbWFzazsKKyAgICB1aW50OF90ICBfcGFkMVszXTsKKyAgICBfX0RFQ0xfUkVH
KGZsYWdzKTsgICAgICAvKiByZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCisgICAg
X19ERUNMX1JFRyhzcCk7CisgICAgdWludDE2X3Qgc3MsIF9wYWQyWzNdOworICAgIHVpbnQxNl90
IGVzLCBfcGFkM1szXTsKKyAgICB1aW50MTZfdCBkcywgX3BhZDRbM107CisgICAgdWludDE2X3Qg
ZnMsIF9wYWQ1WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFz
ZS4gICAgICovCisgICAgdWludDE2X3QgZ3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtl
cyBwcmVjZWRlbmNlIG92ZXIgZ3NfYmFzZV91c3IuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgY3B1
X3VzZXJfcmVncyBjcHVfdXNlcl9yZWdzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVf
dXNlcl9yZWdzX3QpOworCisjdW5kZWYgX19ERUNMX1JFRworCisjZGVmaW5lIHhlbl9wZm5fdG9f
Y3IzKHBmbikgKChVTE9OR19QVFIpKHBmbikgPDwgMTIpCisjZGVmaW5lIHhlbl9jcjNfdG9fcGZu
KGNyMykgKChVTE9OR19QVFIpKGNyMykgPj4gMTIpCisKK3N0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7
CisgICAgVUxPTkdfUFRSIGNyMjsKKyAgICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9p
bmZvX3QpID09IDY0ICovCit9OwordHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92
Y3B1X2luZm9fdDsKKwordHlwZWRlZiBVTE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7CisKKyNlbmRp
ZiAvKiAhX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZf
WEVOX1g4Nl82NF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK
KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk
dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMv
YXJjaC14ODYveGVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjNjE3
ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4uaApA
QCAtMCwwICsxLDMwNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogYXJjaC14ODYveGVu
LmgKKyAqCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IFhlbi4KKyAqCisgKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisg
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB
UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor
ICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIKKyAqLworCisjaW5jbHVkZSAi
Li4veGVuLmgiCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKyNkZWZp
bmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKworLyogU3RydWN0dXJhbCBndWVzdCBo
YW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0Vf
VkVSU0lPTl9fID49IDB4MDAwMzAyMDEKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0
X2hhbmRsZV8gIyMgbmFtZQorI2Vsc2UKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lCisjZW5kaWYKKworLyoKKyAqIFhFTl9HVUVTVF9IQU5ETEUgcmVwcmVzZW50cyBhIGd1ZXN0
IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKKyAqIGluIGEgc3RydWN0IGluIG1lbW9y
eS4KKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50IGEgZ3Vlc3QgcG9pbnRlciwg
d2hlbiBwYXNzZWQgYXMgYW4KKyAqIGh5cGVyY2FsbCBhcmd1bWVudC4KKyAqIFhFTl9HVUVTVF9I
QU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRoZSBzYW1lIG9uIFg4NiBidXQK
KyAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMuCisgKi8KKyNkZWZp
bmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBcCisgICAgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAorICAgIF9fX0RFRklORV9YRU5fR1VF
U1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKKyNkZWZpbmUgREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIG5hbWUp
CisjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVf
ICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgICBfX1hFTl9H
VUVTVF9IQU5ETEUobmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShuYW1lKSAg
ICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3Jh
dyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGlsZSAoMCkKKyNpZmRlZiBfX1hF
Tl9UT09MU19fCisjZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxlKHZhbCwgaG5kKSAgZG8geyB2
YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQorI2VuZGlmCisjZGVmaW5lIHNldF94ZW5fZ3Vlc3Rf
aGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpCisKKyNp
ZiBkZWZpbmVkKF9faTM4Nl9fKQorI2luY2x1ZGUgInhlbi14ODZfMzIuaCIKKyNlbGlmIGRlZmlu
ZWQoX194ODZfNjRfXykKKyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCisjZW5kaWYKKworI2lmbmRl
ZiBfX0FTU0VNQkxZX18KK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsKKyNkZWZpbmUgUFJJ
X3hlbl9wZm4gImx4IgorI2VuZGlmCisKKyNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkg
MQorCisjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEKKworLyoKKyAqIGBpbmNvbnRl
bnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJsZXMKKyAqLworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5f
dCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOworICogYAorICovCisvKgorICogQSBu
dW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBz
aXR1YXRlZCBhdCB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBP
U2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICogaW4gdGhlaXIgQUJJLiBU
aGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBH
RFQsCisgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZhciBl
bmQgb2YgdGhlIEdEVC4KKyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhU
X1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLworI2RlZmluZSBGSVJTVF9S
RVNFUlZFRF9HRFRfUEFHRSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChG
SVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dE
VF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisKKy8qCisgKiBgIGVudW0g
bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1
NjQgZGVzYyk7CisgKiBgCisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mg
b2YgdGhlIGRlc2NyaXB0b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBh
IGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3Ig
dmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQorICogYCAgICAgICBuYXRp
dmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhpbXVtIG51bWJlciBvZiB2
aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovCisjZGVmaW5l
IFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVk
ZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OworI2RlZmluZSBQUklfeGVuX3Vsb25nICJseCIKKwor
LyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2go
VUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKKyAqIGAKKyAqIFNldHMgdGhlIHN0YWNrIHNl
Z21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisgKi8KKworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBz
dHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOworICogYAorICovCisvKgorICogU2VuZCBhbiBhcnJh
eSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCkuCisgKiBUZXJtaW5hdGUg
dGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAu
CisgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIg
YSB0cmFwIHZpYSBhIHNvZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2Ugcmlu
Z3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisgKiBwcml2aWxlZ2UgbGV2
ZWxzIGFzIGZvbGxvd3M6CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCisgKiAgTGV2
ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgorICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50
ZXIKKyAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAqLworI2RlZmluZSBUSV9H
RVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZpbmUgVElfR0VUX0lGKF90
aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwp
ICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAo
KF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRyYXBfaW5mbyB7CisgICAg
dWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzogcHJp
dmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAqLworICAgIHVpbnQxNl90ICAg
ICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisgICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworfTsKK3R5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB0
cmFwX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KTsKKwordHlw
ZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLworCisv
KgorICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1
X2N0eHQgYmxvY2sgaXMgZmlsbGVkCisgKiBpbiBieSBGWFNBVkUgaWYgdGhlIENQVSBoYXMgZmVh
dHVyZSBGWFNSOyBvdGhlcndpc2UgRlNBVkUgaXMgdXNlZC4KKyAqCisgKiBBbHNvIG5vdGUgdGhh
dCB3aGVuIGNhbGxpbmcgRE9NQ1RMX3NldHZjcHVjb250ZXh0IGFuZCBWQ1BVX2luaXRpYWxpc2UK
KyAqIGZvciBIVk0gYW5kIFBWSCBndWVzdHMsIG5vdCBhbGwgaW5mb3JtYXRpb24gaW4gdGhpcyBz
dHJ1Y3R1cmUgaXMgdXBkYXRlZDoKKyAqCisgKiAtIEZvciBIVk0gZ3Vlc3RzLCB0aGUgc3RydWN0
dXJlcyByZWFkIGluY2x1ZGU6IGZwdV9jdHh0IChpZgorICogVkdDVF9JMzg3X1ZBTElEIGlzIHNl
dCksIGZsYWdzLCB1c2VyX3JlZ3MsIGRlYnVncmVnWypdCisgKgorICogLSBQVkggZ3Vlc3RzIGFy
ZSB0aGUgc2FtZSBhcyBIVk0gZ3Vlc3RzLCBidXQgYWRkaXRpb25hbGx5IHVzZSBjdHJscmVnWzNd
IHRvCisgKiBzZXQgY3IzLiBBbGwgb3RoZXIgZmllbGRzIG5vdCB1c2VkIHNob3VsZCBiZSBzZXQg
dG8gMC4KKyAqLworc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB7CisgICAgLyogRlBVIHJlZ2lz
dGVycyBjb21lIGZpcnN0IHNvIHRoZXkgY2FuIGJlIGFsaWduZWQgZm9yIEZYU0FWRS9GWFJTVE9S
LiAqLworICAgIHN0cnVjdCB7IGNoYXIgeFs1MTJdOyB9IGZwdV9jdHh0OyAgICAgICAvKiBVc2Vy
LWxldmVsIEZQVSByZWdpc3RlcnMgICAgICovCisjZGVmaW5lIFZHQ0ZfSTM4N19WQUxJRCAgICAg
ICAgICAgICAgICAoMTw8MCkKKyNkZWZpbmUgVkdDRl9JTl9LRVJORUwgICAgICAgICAgICAgICAg
ICgxPDwyKQorI2RlZmluZSBfVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgMAorI2RlZmlu
ZSBWR0NGX2kzODdfdmFsaWQgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2kzODdfdmFsaWQpCisj
ZGVmaW5lIF9WR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFZHQ0ZfaW5f
a2VybmVsICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0ZfaW5fa2VybmVsKQorI2RlZmluZSBfVkdD
Rl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgMworI2RlZmluZSBWR0NGX2ZhaWxzYWZlX2Rpc2Fi
bGVzX2V2ZW50cyAgKDE8PF9WR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZpbmUg
X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgIDQKKyNkZWZpbmUgVkdDRl9zeXNjYWxsX2Rp
c2FibGVzX2V2ZW50cyAgICgxPDxfVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZp
bmUgX1ZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgVkdDRl9vbmxpbmUg
ICAgICAgICAgICAgICAgICAgICgxPDxfVkdDRl9vbmxpbmUpCisgICAgVUxPTkdfUFRSIGZsYWdz
OyAgICAgICAgICAgICAgICAgICAgLyogVkdDRl8qIGZsYWdzICAgICAgICAgICAgICAgICAqLwor
ICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzIHVzZXJfcmVnczsgICAgICAgICAvKiBVc2VyLWxldmVs
IENQVSByZWdpc3RlcnMgICAgICovCisgICAgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2N0eHRbMjU2
XTsgICAgICAgIC8qIFZpcnR1YWwgSURUICAgICAgICAgICAgICAgICAgKi8KKyAgICBVTE9OR19Q
VFIgbGR0X2Jhc2UsIGxkdF9lbnRzOyAgICAgICAvKiBMRFQgKGxpbmVhciBhZGRyZXNzLCAjIGVu
dHMpICovCisgICAgVUxPTkdfUFRSIGdkdF9mcmFtZXNbMTZdLCBnZHRfZW50czsgLyogR0RUICht
YWNoaW5lIGZyYW1lcywgIyBlbnRzKSAqLworICAgIFVMT05HX1BUUiBrZXJuZWxfc3MsIGtlcm5l
bF9zcDsgICAgIC8qIFZpcnR1YWwgVFNTIChvbmx5IFNTMS9TUDEpICAgKi8KKyAgICAvKiBOQi4g
VXNlciBwYWdldGFibGUgb24geDg2LzY0IGlzIHBsYWNlZCBpbiBjdHJscmVnWzFdLiAqLworICAg
IFVMT05HX1BUUiBjdHJscmVnWzhdOyAgICAgICAgICAgICAgIC8qIENSMC1DUjcgKGNvbnRyb2wg
cmVnaXN0ZXJzKSAgKi8KKyAgICBVTE9OR19QVFIgZGVidWdyZWdbOF07ICAgICAgICAgICAgICAv
KiBEQjAtREI3IChkZWJ1ZyByZWdpc3RlcnMpICAgICovCisjaWZkZWYgX19pMzg2X18KKyAgICBV
TE9OR19QVFIgZXZlbnRfY2FsbGJhY2tfY3M7ICAgICAgICAvKiBDUzpFSVAgb2YgZXZlbnQgY2Fs
bGJhY2sgICAgICovCisgICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9O
R19QVFIgZmFpbHNhZmVfY2FsbGJhY2tfY3M7ICAgICAvKiBDUzpFSVAgb2YgZmFpbHNhZmUgY2Fs
bGJhY2sgICovCisgICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKKyNlbHNlCisg
ICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9OR19QVFIgZmFpbHNhZmVf
Y2FsbGJhY2tfZWlwOworI2lmZGVmIF9fWEVOX18KKyAgICB1bmlvbiB7CisgICAgICAgIFVMT05H
X1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGludCBldmVudF9jYWxsYmFja19jczsgICAgLyogY29tcGF0IENTIG9mIGV2ZW50
IGNiICAgICAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50IGZhaWxzYWZlX2NhbGxiYWNrX2Nz
OyAvKiBjb21wYXQgQ1Mgb2YgZmFpbHNhZmUgY2IgICovCisgICAgICAgIH07CisgICAgfTsKKyNl
bHNlCisgICAgVUxPTkdfUFRSIHN5c2NhbGxfY2FsbGJhY2tfZWlwOworI2VuZGlmCisjZW5kaWYK
KyAgICBVTE9OR19QVFIgdm1fYXNzaXN0OyAgICAgICAgICAgICAgICAvKiBWTUFTU1RfVFlQRV8q
IGJpdG1hcCAqLworI2lmZGVmIF9feDg2XzY0X18KKyAgICAvKiBTZWdtZW50IGJhc2UgYWRkcmVz
c2VzLiAqLworICAgIHVpbnQ2NF90ICAgICAgZnNfYmFzZTsKKyAgICB1aW50NjRfdCAgICAgIGdz
X2Jhc2Vfa2VybmVsOworICAgIHVpbnQ2NF90ICAgICAgZ3NfYmFzZV91c2VyOworI2VuZGlmCit9
OwordHlwZWRlZiBzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0IHZjcHVfZ3Vlc3RfY29udGV4dF90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodmNwdV9ndWVzdF9jb250ZXh0X3QpOworCitzdHJ1
Y3QgYXJjaF9zaGFyZWRfaW5mbyB7CisgICAgLyoKKyAgICAgKiBOdW1iZXIgb2YgdmFsaWQgZW50
cmllcyBpbiB0aGUgcDJtIHRhYmxlKHMpIGFuY2hvcmVkIGF0CisgICAgICogcGZuX3RvX21mbl9m
cmFtZV9saXN0X2xpc3QgYW5kL29yIHAybV92YWRkci4KKyAgICAgKi8KKyAgICBVTE9OR19QVFIg
bWF4X3BmbjsKKyAgICAvKgorICAgICAqIEZyYW1lIGNvbnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNv
bnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNvbnRhaW5pbmcgcDJtLgorICAgICAqIEEgdmFsdWUgb2Yg
MCBpbmRpY2F0ZXMgaXQgaGFzIG5vdCB5ZXQgYmVlbiBzZXQgdXAsIH4wIGluZGljYXRlcyBpdCBo
YXMKKyAgICAgKiBiZWVuIHNldCB0byBpbnZhbGlkIGUuZy4gZHVlIHRvIHRoZSBwMm0gYmVpbmcg
dG9vIGxhcmdlIGZvciB0aGUgMy1sZXZlbAorICAgICAqIHAybSB0cmVlLiBJbiB0aGlzIGNhc2Ug
dGhlIGxpbmVhciBtYXBwZXIgcDJtIGxpc3QgYW5jaG9yZWQgYXQgcDJtX3ZhZGRyCisgICAgICog
aXMgdG8gYmUgdXNlZC4KKyAgICAgKi8KKyAgICB4ZW5fcGZuX3QgICAgIHBmbl90b19tZm5fZnJh
bWVfbGlzdF9saXN0OworICAgIFVMT05HX1BUUiBubWlfcmVhc29uOworICAgIC8qCisgICAgICog
Rm9sbG93aW5nIHRocmVlIGZpZWxkcyBhcmUgdmFsaWQgaWYgcDJtX2NyMyBjb250YWlucyBhIHZh
bHVlIGRpZmZlcmVudAorICAgICAqIGZyb20gMC4KKyAgICAgKiBwMm1fY3IzIGlzIHRoZSByb290
IG9mIHRoZSBhZGRyZXNzIHNwYWNlIHdoZXJlIHAybV92YWRkciBpcyB2YWxpZC4KKyAgICAgKiBw
Mm1fY3IzIGlzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBhIGNyMyB2YWx1ZSBpbiB0aGUgdmNwdSBy
ZWdpc3RlciBzdGF0ZQorICAgICAqIGFuZCBob2xkcyB0aGUgZm9sZGVkIG1hY2hpbmUgZnJhbWUg
bnVtYmVyICh2aWEgeGVuX3Bmbl90b19jcjMpIG9mIGEKKyAgICAgKiBMMyBvciBMNCBwYWdlIHRh
YmxlLgorICAgICAqIHAybV92YWRkciBob2xkcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBs
aW5lYXIgcDJtIGxpc3QuIEFsbCBlbnRyaWVzCisgICAgICogaW4gdGhlIHJhbmdlIFswLi4ubWF4
X3BmblsgYXJlIGFjY2Vzc2libGUgdmlhIHRoaXMgcG9pbnRlci4KKyAgICAgKiBwMm1fZ2VuZXJh
dGlvbiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IHRoZSBndWVzdCBiZWZvcmUgYW5kIGFmdGVyIGVh
Y2gKKyAgICAgKiBjaGFuZ2Ugb2YgdGhlIG1hcHBpbmdzIG9mIHRoZSBwMm0gbGlzdC4gcDJtX2dl
bmVyYXRpb24gc3RhcnRzIGF0IDAgYW5kCisgICAgICogYSB2YWx1ZSB3aXRoIHRoZSBsZWFzdCBz
aWduaWZpY2FudCBiaXQgc2V0IGluZGljYXRlcyB0aGF0IGEgbWFwcGluZworICAgICAqIHVwZGF0
ZSBpcyBpbiBwcm9ncmVzcy4gVGhpcyBhbGxvd3MgZ3Vlc3QgZXh0ZXJuYWwgc29mdHdhcmUgKGUu
Zy4gaW4gRG9tMCkKKyAgICAgKiB0byB2ZXJpZnkgdGhhdCByZWFkIG1hcHBpbmdzIGFyZSBjb25z
aXN0ZW50IGFuZCB3aGV0aGVyIHRoZXkgaGF2ZSBjaGFuZ2VkCisgICAgICogc2luY2UgdGhlIGxh
c3QgY2hlY2suCisgICAgICogTW9kaWZ5aW5nIGEgcDJtIGVsZW1lbnQgaW4gdGhlIGxpbmVhciBw
Mm0gbGlzdCBpcyBhbGxvd2VkIHZpYSBhbiBhdG9taWMKKyAgICAgKiB3cml0ZSBvbmx5LgorICAg
ICAqLworICAgIFVMT05HX1BUUiBwMm1fY3IzOyAgICAgICAgIC8qIGNyMyB2YWx1ZSBvZiB0aGUg
cDJtIGFkZHJlc3Mgc3BhY2UgKi8KKyAgICBVTE9OR19QVFIgcDJtX3ZhZGRyOyAgICAgICAvKiB2
aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHAybSBsaXN0ICovCisgICAgVUxPTkdfUFRSIHAybV9nZW5l
cmF0aW9uOyAgLyogZ2VuZXJhdGlvbiBjb3VudCBvZiBwMm0gbWFwcGluZyAqLworI2lmZGVmIF9f
aTM4Nl9fCisgICAgLyogVGhlcmUncyBubyByb29tIGZvciB0aGlzIGZpZWxkIGluIHRoZSBnZW5l
cmljIHN0cnVjdHVyZS4gKi8KKyAgICB1aW50MzJfdCB3Y19zZWNfaGk7CisjZW5kaWYKK307Cit0
eXBlZGVmIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIGFyY2hfc2hhcmVkX2luZm9fdDsKKworI2Vu
ZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAq
IGAgSFlQRVJWSVNPUl9mcHVfdGFza3N3aXRjaChpbnQgc2V0KTsKKyAqIGAKKyAqIFNldHMgKGlm
IHNldCE9MCkgb3IgY2xlYXJzIChpZiBzZXQ9PTApIENSMC5UUy4KKyAqLworCisvKgorICogYCBl
bnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyhpbnQgcmVnbm8s
IFVMT05HX1BUUiB2YWx1ZSk7CisgKgorICogYCBVTE9OR19QVFIKKyAqIGAgSFlQRVJWSVNPUl9n
ZXRfZGVidWdyZWcoaW50IHJlZ25vKTsKKyAqIEZvciAwPD1yZWc8PTcsIHJldHVybnMgdGhlIGRl
YnVnIHJlZ2lzdGVyIHZhbHVlLgorICogRm9yIG90aGVyIHZhbHVlcyBvZiByZWcsIHJldHVybnMg
KChVTE9OR19QVFIpLUVJTlZBTCkuCisgKiAoVW5mb3J0dW5hdGVseSwgdGhpcyBpbnRlcmZhY2Ug
aXMgZGVmZWN0aXZlLikKKyAqLworCisvKgorICogUHJlZml4IGZvcmNlcyBlbXVsYXRpb24gb2Yg
c29tZSBub24tdHJhcHBpbmcgaW5zdHJ1Y3Rpb25zLgorICogQ3VycmVudGx5IG9ubHkgQ1BVSUQu
CisgKi8KKyNpZmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgWEVOX0VNVUxBVEVfUFJFRklYIC5i
eXRlIDB4MGYsMHgwYiwweDc4LDB4NjUsMHg2ZSA7CisjZGVmaW5lIFhFTl9DUFVJRCAgICAgICAg
ICBYRU5fRU1VTEFURV9QUkVGSVggY3B1aWQKKyNlbHNlCisjZGVmaW5lIFhFTl9FTVVMQVRFX1BS
RUZJWCAiLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsgIgorI2RlZmluZSBYRU5fQ1BV
SUQgICAgICAgICAgWEVOX0VNVUxBVEVfUFJFRklYICJjcHVpZCIKKyNlbmRpZgorCisjZW5kaWYg
LyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlh
YmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zm
c2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5k
OgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaCBiL2luY2x1ZGUv
eGVuL3B1YmxpYy9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2
NDQ2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaApAQCAt
MCwwICsxLDkzIEBACisjaWZuZGVmIF9fWEVOX1BVQkxJQ19FUlJOT19IX18KKworI2lmbmRlZiBf
X0FTU0VNQkxZX18KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIFhFTl8jI25hbWUg
PSB2YWx1ZSwKK2VudW0geGVuX2Vycm5vIHsKKworI2Vsc2UgLyogIV9fQVNTRU1CTFlfXyAqLwor
CisjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1ZSkgLmVxdSBYRU5fIyNuYW1lLCB2YWx1ZQor
CisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwgeyAg
WyAtRWZvbyBmb3IgZWFjaCBFZm9vIGluIHRoZSBsaXN0IGJlbG93IF0gIH0gKi8KKy8qIGAgZW51
bSBlcnJub3ZhbCB7ICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fICovCisK
KyNpZmRlZiBYRU5fRVJSTk8KKworLyoKKyAqIFZhbHVlcyBvcmlnaW5hdGluZyBmcm9tIHg4NiBM
aW51eC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHJlc3BlY3RpdmUKKyAqIHZhbHVlcyB3aGVuIGFk
ZGluZyBuZXcgZGVmaW5pdGlvbnMgaGVyZS4KKyAqLworCitYRU5fRVJSTk8oRVBFUk0sCSAxKQkv
KiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZCAqLworWEVOX0VSUk5PKEVOT0VOVCwJIDIpCS8qIE5v
IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgKi8KK1hFTl9FUlJOTyhFU1JDSCwJIDMpCS8qIE5vIHN1
Y2ggcHJvY2VzcyAqLworI2lmZGVmIF9fWEVOX18gLyogSW50ZXJuYWwgb25seSwgc2hvdWxkIG5l
dmVyIGJlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqLworWEVOX0VSUk5PKEVJTlRSLAkgNCkJLyog
SW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwgKi8KKyNlbmRpZgorWEVOX0VSUk5PKEVJTywJCSA1KQkv
KiBJL08gZXJyb3IgKi8KK1hFTl9FUlJOTyhFTlhJTywJIDYpCS8qIE5vIHN1Y2ggZGV2aWNlIG9y
IGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFMkJJRywJIDcpCS8qIEFyZyBsaXN0IHRvbyBMT05HX1BU
UiAqLworWEVOX0VSUk5PKEVOT0VYRUMsCSA4KQkvKiBFeGVjIGZvcm1hdCBlcnJvciAqLworWEVO
X0VSUk5PKEVCQURGLAkgOSkJLyogQmFkIGZpbGUgbnVtYmVyICovCitYRU5fRVJSTk8oRUNISUxE
LAkxMCkJLyogTm8gY2hpbGQgcHJvY2Vzc2VzICovCitYRU5fRVJSTk8oRUFHQUlOLAkxMSkJLyog
VHJ5IGFnYWluICovCitYRU5fRVJSTk8oRU5PTUVNLAkxMikJLyogT3V0IG9mIG1lbW9yeSAqLwor
WEVOX0VSUk5PKEVBQ0NFUywJMTMpCS8qIFBlcm1pc3Npb24gZGVuaWVkICovCitYRU5fRVJSTk8o
RUZBVUxULAkxNCkJLyogQmFkIGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFQlVTWSwJMTYpCS8qIERl
dmljZSBvciByZXNvdXJjZSBidXN5ICovCitYRU5fRVJSTk8oRUVYSVNULAkxNykJLyogRmlsZSBl
eGlzdHMgKi8KK1hFTl9FUlJOTyhFWERFViwJMTgpCS8qIENyb3NzLWRldmljZSBsaW5rICovCitY
RU5fRVJSTk8oRU5PREVWLAkxOSkJLyogTm8gc3VjaCBkZXZpY2UgKi8KK1hFTl9FUlJOTyhFSU5W
QUwsCTIyKQkvKiBJbnZhbGlkIGFyZ3VtZW50ICovCitYRU5fRVJSTk8oRU5GSUxFLAkyMykJLyog
RmlsZSB0YWJsZSBvdmVyZmxvdyAqLworWEVOX0VSUk5PKEVNRklMRSwJMjQpCS8qIFRvbyBtYW55
IG9wZW4gZmlsZXMgKi8KK1hFTl9FUlJOTyhFTk9TUEMsCTI4KQkvKiBObyBzcGFjZSBsZWZ0IG9u
IGRldmljZSAqLworWEVOX0VSUk5PKEVNTElOSywJMzEpCS8qIFRvbyBtYW55IGxpbmtzICovCitY
RU5fRVJSTk8oRURPTSwJCTMzKQkvKiBNYXRoIGFyZ3VtZW50IG91dCBvZiBkb21haW4gb2YgZnVu
YyAqLworWEVOX0VSUk5PKEVSQU5HRSwJMzQpCS8qIE1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRh
YmxlICovCitYRU5fRVJSTk8oRURFQURMSywJMzUpCS8qIFJlc291cmNlIGRlYWRsb2NrIHdvdWxk
IG9jY3VyICovCitYRU5fRVJSTk8oRU5BTUVUT09MT05HLAkzNikJLyogRmlsZSBuYW1lIHRvbyBM
T05HX1BUUiAqLworWEVOX0VSUk5PKEVOT0xDSywJMzcpCS8qIE5vIHJlY29yZCBsb2NrcyBhdmFp
bGFibGUgKi8KK1hFTl9FUlJOTyhFTk9TWVMsCTM4KQkvKiBGdW5jdGlvbiBub3QgaW1wbGVtZW50
ZWQgKi8KK1hFTl9FUlJOTyhFQkFEUlFDLAk1NikJLyogSW52YWxpZCByZXF1ZXN0IGNvZGUgKi8K
K1hFTl9FUlJOTyhFQkFEU0xULAk1NykJLyogSW52YWxpZCBzbG90ICovCitYRU5fRVJSTk8oRU5P
REFUQSwJNjEpCS8qIE5vIGRhdGEgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRVRJTUUsCTYyKQkv
KiBUaW1lciBleHBpcmVkICovCitYRU5fRVJSTk8oRUJBRE1TRywJNzQpCS8qIE5vdCBhIGRhdGEg
bWVzc2FnZSAqLworWEVOX0VSUk5PKEVPVkVSRkxPVywJNzUpCS8qIFZhbHVlIHRvbyBsYXJnZSBm
b3IgZGVmaW5lZCBkYXRhIHR5cGUgKi8KK1hFTl9FUlJOTyhFSUxTRVEsCTg0KQkvKiBJbGxlZ2Fs
IGJ5dGUgc2VxdWVuY2UgKi8KKyNpZmRlZiBfX1hFTl9fIC8qIEludGVybmFsIG9ubHksIHNob3Vs
ZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8KK1hFTl9FUlJOTyhFUkVTVEFSVCwJ
ODUpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsIHNob3VsZCBiZSByZXN0YXJ0ZWQgKi8KKyNl
bmRpZgorWEVOX0VSUk5PKEVVU0VSUywJODcpCS8qIFRvbyBtYW55IHVzZXJzICovCitYRU5fRVJS
Tk8oRU9QTk9UU1VQUCwJOTUpCS8qIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRyYW5zcG9y
dCBlbmRwb2ludCAqLworWEVOX0VSUk5PKEVBRERSSU5VU0UsCTk4KQkvKiBBZGRyZXNzIGFscmVh
ZHkgaW4gdXNlICovCitYRU5fRVJSTk8oRUFERFJOT1RBVkFJTCwgOTkpCS8qIENhbm5vdCBhc3Np
Z24gcmVxdWVzdGVkIGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFTk9CVUZTLAkxMDUpCS8qIE5vIGJ1
ZmZlciBzcGFjZSBhdmFpbGFibGUgKi8KK1hFTl9FUlJOTyhFSVNDT05OLAkxMDYpCS8qIFRyYW5z
cG9ydCBlbmRwb2ludCBpcyBhbHJlYWR5IGNvbm5lY3RlZCAqLworWEVOX0VSUk5PKEVOT1RDT05O
LAkxMDcpCS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICovCitYRU5fRVJS
Tk8oRVNIVVRET1dOLAkxMDgpCS8qIENhbm5vdCBzZW5kIGFmdGVyIHRyYW5zcG9ydCBlbmRwb2lu
dCBzaHV0ZG93biAqLworWEVOX0VSUk5PKEVUT09NQU5ZUkVGUywJMTA5KQkvKiBUb28gbWFueSBy
ZWZlcmVuY2VzOiBjYW5ub3Qgc3BsaWNlICovCitYRU5fRVJSTk8oRVRJTUVET1VULAkxMTApCS8q
IENvbm5lY3Rpb24gdGltZWQgb3V0ICovCisKKyN1bmRlZiBYRU5fRVJSTk8KKyNlbmRpZiAvKiBY
RU5fRVJSTk8gKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fCisjZGVmaW5lIF9f
WEVOX1BVQkxJQ19FUlJOT19IX18KKworLyogYCB9ICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9f
Cit9OworI2VuZGlmCisKKyNkZWZpbmUJWEVOX0VXT1VMREJMT0NLCVhFTl9FQUdBSU4JLyogT3Bl
cmF0aW9uIHdvdWxkIGJsb2NrICovCisjZGVmaW5lCVhFTl9FREVBRExPQ0sJWEVOX0VERUFETEsJ
LyogUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIgKi8KKworI2VuZGlmIC8qICBfX1hFTl9Q
VUJMSUNfRVJSTk9fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvZXZlbnRf
Y2hhbm5lbC5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2V2ZW50X2NoYW5uZWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWU1MzFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5j
bHVkZS94ZW4vcHVibGljL2V2ZW50X2NoYW5uZWwuaApAQCAtMCwwICsxLDM4NSBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorICogZXZlbnRfY2hhbm5lbC5oCisgKgorICogRXZlbnQgY2hhbm5l
bHMgYmV0d2VlbiBkb21haW5zLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgor
ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK
KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMt
MjAwNCwgSyBBIEZyYXNlci4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19FVkVOVF9DSEFO
TkVMX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfRVZFTlRfQ0hBTk5FTF9IX18KKworI2luY2x1
ZGUgInhlbi5oIgorCisvKgorICogYGluY29udGVudHMgMTUwIGV2dGNobiBFdmVudCBDaGFubmVs
cworICoKKyAqIEV2ZW50IGNoYW5uZWxzIGFyZSB0aGUgYmFzaWMgcHJpbWl0aXZlIHByb3ZpZGVk
IGJ5IFhlbiBmb3IgZXZlbnQKKyAqIG5vdGlmaWNhdGlvbnMuIEFuIGV2ZW50IGlzIHRoZSBYZW4g
ZXF1aXZhbGVudCBvZiBhIGhhcmR3YXJlCisgKiBpbnRlcnJ1cHQuIFRoZXkgZXNzZW50aWFsbHkg
c3RvcmUgb25lIGJpdCBvZiBpbmZvcm1hdGlvbiwgdGhlIGV2ZW50CisgKiBvZiBpbnRlcmVzdCBp
cyBzaWduYWxsZWQgYnkgdHJhbnNpdGlvbmluZyB0aGlzIGJpdCBmcm9tIDAgdG8gMS4KKyAqCisg
KiBOb3RpZmljYXRpb25zIGFyZSByZWNlaXZlZCBieSBhIGd1ZXN0IHZpYSBhbiB1cGNhbGwgZnJv
bSBYZW4sCisgKiBpbmRpY2F0aW5nIHdoZW4gYW4gZXZlbnQgYXJyaXZlcyAoc2V0dGluZyB0aGUg
Yml0KS4gRnVydGhlcgorICogbm90aWZpY2F0aW9ucyBhcmUgbWFza2VkIHVudGlsIHRoZSBiaXQg
aXMgY2xlYXJlZCBhZ2FpbiAodGhlcmVmb3JlLAorICogZ3Vlc3RzIG11c3QgY2hlY2sgdGhlIHZh
bHVlIG9mIHRoZSBiaXQgYWZ0ZXIgcmUtZW5hYmxpbmcgZXZlbnQKKyAqIGRlbGl2ZXJ5IHRvIGVu
c3VyZSBubyBtaXNzZWQgbm90aWZpY2F0aW9ucykuCisgKgorICogRXZlbnQgbm90aWZpY2F0aW9u
cyBjYW4gYmUgbWFza2VkIGJ5IHNldHRpbmcgYSBmbGFnOyB0aGlzIGlzCisgKiBlcXVpdmFsZW50
IHRvIGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZCBjYW4gYmUgdXNlZCB0byBlbnN1cmUKKyAqIGF0
b21pY2l0eSBvZiBjZXJ0YWluIG9wZXJhdGlvbnMgaW4gdGhlIGd1ZXN0IGtlcm5lbC4KKyAqCisg
KiBFdmVudCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGV2dGNobl8qIGZpZWxkcyBp
bgorICogc3RydWN0IHNoYXJlZF9pbmZvIGFuZCBzdHJ1Y3QgdmNwdV9pbmZvLgorICovCisKKy8q
CisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9v
cChlbnVtIGV2ZW50X2NoYW5uZWxfb3AgY21kLCB2b2lkICphcmdzKQorICogYAorICogQGNtZCAg
PT0gRVZUQ0hOT1BfKiAoZXZlbnQtY2hhbm5lbCBvcGVyYXRpb24pLgorICogQGFyZ3MgPT0gc3Ry
dWN0IGV2dGNobl8qIE9wZXJhdGlvbi1zcGVjaWZpYyBleHRyYSBhcmd1bWVudHMgKE5VTEwgaWYg
bm9uZSkuCisgKi8KKworLyogYCBlbnVtIGV2ZW50X2NoYW5uZWxfb3AgeyAvLyBFVlRDSE5PUF8q
ID0+IHN0cnVjdCBldnRjaG5fKiAqLworI2RlZmluZSBFVlRDSE5PUF9iaW5kX2ludGVyZG9tYWlu
IDAKKyNkZWZpbmUgRVZUQ0hOT1BfYmluZF92aXJxICAgICAgICAxCisjZGVmaW5lIEVWVENITk9Q
X2JpbmRfcGlycSAgICAgICAgMgorI2RlZmluZSBFVlRDSE5PUF9jbG9zZSAgICAgICAgICAgIDMK
KyNkZWZpbmUgRVZUQ0hOT1Bfc2VuZCAgICAgICAgICAgICA0CisjZGVmaW5lIEVWVENITk9QX3N0
YXR1cyAgICAgICAgICAgNQorI2RlZmluZSBFVlRDSE5PUF9hbGxvY191bmJvdW5kICAgIDYKKyNk
ZWZpbmUgRVZUQ0hOT1BfYmluZF9pcGkgICAgICAgICA3CisjZGVmaW5lIEVWVENITk9QX2JpbmRf
dmNwdSAgICAgICAgOAorI2RlZmluZSBFVlRDSE5PUF91bm1hc2sgICAgICAgICAgIDkKKyNkZWZp
bmUgRVZUQ0hOT1BfcmVzZXQgICAgICAgICAgIDEwCisjZGVmaW5lIEVWVENITk9QX2luaXRfY29u
dHJvbCAgICAxMQorI2RlZmluZSBFVlRDSE5PUF9leHBhbmRfYXJyYXkgICAgMTIKKyNkZWZpbmUg
RVZUQ0hOT1Bfc2V0X3ByaW9yaXR5ICAgIDEzCisvKiBgIH0gKi8KKwordHlwZWRlZiB1aW50MzJf
dCBldnRjaG5fcG9ydF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZXZ0Y2huX3BvcnRfdCk7
CisKKy8qCisgKiBFVlRDSE5PUF9hbGxvY191bmJvdW5kOiBBbGxvY2F0ZSBhIHBvcnQgaW4gZG9t
YWluIDxkb20+IGFuZCBtYXJrIGFzCisgKiBhY2NlcHRpbmcgaW50ZXJkb21haW4gYmluZGluZ3Mg
ZnJvbSBkb21haW4gPHJlbW90ZV9kb20+LiBBIGZyZXNoIHBvcnQKKyAqIGlzIGFsbG9jYXRlZCBp
biA8ZG9tPiBhbmQgcmV0dXJuZWQgYXMgPHBvcnQ+LgorICogTk9URVM6CisgKiAgMS4gSWYgdGhl
IGNhbGxlciBpcyB1bnByaXZpbGVnZWQgdGhlbiA8ZG9tPiBtdXN0IGJlIERPTUlEX1NFTEYuCisg
KiAgMi4gPHJkb20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBsb29wYmFjayBjb25uZWN0
aW9ucy4KKyAqLworc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIHsKKyAgICAvKiBJTiBwYXJh
bWV0ZXJzICovCisgICAgZG9taWRfdCBkb20sIHJlbW90ZV9kb207CisgICAgLyogT1VUIHBhcmFt
ZXRlcnMgKi8KKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0
Y2huX2FsbG9jX3VuYm91bmQgZXZ0Y2huX2FsbG9jX3VuYm91bmRfdDsKKworLyoKKyAqIEVWVENI
Tk9QX2JpbmRfaW50ZXJkb21haW46IENvbnN0cnVjdCBhbiBpbnRlcmRvbWFpbiBldmVudCBjaGFu
bmVsIGJldHdlZW4KKyAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgPHJlbW90ZV9kb20+LiA8cmVt
b3RlX2RvbSxyZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQorICogYSBwb3J0IHRoYXQgaXMgdW5i
b3VuZCBhbmQgbWFya2VkIGFzIGFjY2VwdGluZyBiaW5kaW5ncyBmcm9tIHRoZSBjYWxsaW5nCisg
KiBkb21haW4uIEEgZnJlc2ggcG9ydCBpcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxpbmcgZG9tYWlu
IGFuZCByZXR1cm5lZCBhcworICogPGxvY2FsX3BvcnQ+LgorICoKKyAqIEluIGNhc2UgdGhlIHBl
ZXIgZG9tYWluIGhhcyBhbHJlYWR5IHRyaWVkIHRvIHNldCBvdXIgZXZlbnQgY2hhbm5lbAorICog
cGVuZGluZywgYmVmb3JlIGl0IHdhcyBib3VuZCwgRVZUQ0hOT1BfYmluZF9pbnRlcmRvbWFpbiBh
bHdheXMgc2V0cworICogdGhlIGxvY2FsIGV2ZW50IGNoYW5uZWwgcGVuZGluZy4KKyAqCisgKiBU
aGUgdXN1YWwgcGF0dGVybiBvZiB1c2UsIGluIHRoZSBndWVzdCdzIHVwY2FsbCAob3Igc3Vic2Vx
dWVudAorICogaGFuZGxlcikgaXMgYXMgZm9sbG93czogKFJlLWVuYWJsZSB0aGUgZXZlbnQgY2hh
bm5lbCBmb3Igc3Vic2VxdWVudAorICogc2lnbmFsbGluZyBhbmQgdGhlbikgY2hlY2sgZm9yIHRo
ZSBleGlzdGVuY2Ugb2Ygd2hhdGV2ZXIgY29uZGl0aW9uCisgKiBpcyBiZWluZyB3YWl0ZWQgZm9y
IGJ5IG90aGVyIG1lYW5zLCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24gaXMKKyAqIG5lZWRlZCAo
aWYgYW55KS4KKyAqCisgKiBOT1RFUzoKKyAqICAxLiA8cmVtb3RlX2RvbT4gbWF5IGJlIERPTUlE
X1NFTEYsIGFsbG93aW5nIGxvb3BiYWNrIGNvbm5lY3Rpb25zLgorICovCitzdHJ1Y3QgZXZ0Y2hu
X2JpbmRfaW50ZXJkb21haW4geworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRf
dCByZW1vdGVfZG9tOworICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQ7CisgICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0OworfTsKK3R5cGVk
ZWYgc3RydWN0IGV2dGNobl9iaW5kX2ludGVyZG9tYWluIGV2dGNobl9iaW5kX2ludGVyZG9tYWlu
X3Q7CisKKy8qCisgKiBFVlRDSE5PUF9iaW5kX3ZpcnE6IEJpbmQgYSBsb2NhbCBldmVudCBjaGFu
bmVsIHRvIFZJUlEgPGlycT4gb24gc3BlY2lmaWVkCisgKiB2Y3B1LgorICogTk9URVM6CisgKiAg
MS4gVmlydHVhbCBJUlFzIGFyZSBjbGFzc2lmaWVkIGFzIHBlci12Y3B1IG9yIGdsb2JhbC4gU2Vl
IHRoZSBWSVJRIGxpc3QKKyAqICAgICBpbiB4ZW4uaCBmb3IgdGhlIGNsYXNzaWZpY2F0aW9uIG9m
IGVhY2ggVklSUS4KKyAqICAyLiBHbG9iYWwgVklSUXMgbXVzdCBiZSBhbGxvY2F0ZWQgb24gVkNQ
VTAgYnV0IGNhbiBzdWJzZXF1ZW50bHkgYmUKKyAqICAgICByZS1ib3VuZCB2aWEgRVZUQ0hOT1Bf
YmluZF92Y3B1LgorICogIDMuIFBlci12Y3B1IFZJUlFzIG1heSBiZSBib3VuZCB0byBhdCBtb3N0
IG9uZSBldmVudCBjaGFubmVsIHBlciB2Y3B1LgorICogICAgIFRoZSBhbGxvY2F0ZWQgZXZlbnQg
Y2hhbm5lbCBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUgYW5kIHRoZQorICogICAgIGJp
bmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCisgKi8KK3N0cnVjdCBldnRjaG5fYmluZF92aXJxIHsK
KyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQzMl90IHZpcnE7IC8qIGVudW0gdmly
cSAqLworICAgIHVpbnQzMl90IHZjcHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAg
ZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX3ZpcnEg
ZXZ0Y2huX2JpbmRfdmlycV90OworCisvKgorICogRVZUQ0hOT1BfYmluZF9waXJxOiBCaW5kIGEg
bG9jYWwgZXZlbnQgY2hhbm5lbCB0byBhIHJlYWwgSVJRIChQSVJRIDxpcnE+KS4KKyAqIE5PVEVT
OgorICogIDEuIEEgcGh5c2ljYWwgSVJRIG1heSBiZSBib3VuZCB0byBhdCBtb3N0IG9uZSBldmVu
dCBjaGFubmVsIHBlciBkb21haW4uCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxl
Z2VkIGRvbWFpbiBtYXkgYmluZCB0byBhIHBoeXNpY2FsIElSUS4KKyAqLworc3RydWN0IGV2dGNo
bl9iaW5kX3BpcnEgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgcGly
cTsKKyNkZWZpbmUgQklORF9QSVJRX19XSUxMX1NIQVJFIDEKKyAgICB1aW50MzJfdCBmbGFnczsg
LyogQklORF9QSVJRX18qICovCisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2hu
X3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX3BpcnEgZXZ0Y2hu
X2JpbmRfcGlycV90OworCisvKgorICogRVZUQ0hOT1BfYmluZF9pcGk6IEJpbmQgYSBsb2NhbCBl
dmVudCBjaGFubmVsIHRvIHJlY2VpdmUgZXZlbnRzLgorICogTk9URVM6CisgKiAgMS4gVGhlIGFs
bG9jYXRlZCBldmVudCBjaGFubmVsIGlzIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgdmNwdS4gVGhl
IGJpbmRpbmcKKyAqICAgICBtYXkgbm90IGJlIGNoYW5nZWQuCisgKi8KK3N0cnVjdCBldnRjaG5f
YmluZF9pcGkgeworICAgIHVpbnQzMl90IHZjcHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICov
CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5k
X2lwaSBldnRjaG5fYmluZF9pcGlfdDsKKworLyoKKyAqIEVWVENITk9QX2Nsb3NlOiBDbG9zZSBh
IGxvY2FsIGV2ZW50IGNoYW5uZWwgPHBvcnQ+LiBJZiB0aGUgY2hhbm5lbCBpcworICogaW50ZXJk
b21haW4gdGhlbiB0aGUgcmVtb3RlIGVuZCBpcyBwbGFjZWQgaW4gdGhlIHVuYm91bmQgc3RhdGUK
KyAqIChFVlRDSE5TVEFUX3VuYm91bmQpLCBhd2FpdGluZyBhIG5ldyBjb25uZWN0aW9uLgorICov
CitzdHJ1Y3QgZXZ0Y2huX2Nsb3NlIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGV2
dGNobl9wb3J0X3QgcG9ydDsKK307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fY2xvc2UgZXZ0Y2hu
X2Nsb3NlX3Q7CisKKy8qCisgKiBFVlRDSE5PUF9zZW5kOiBTZW5kIGFuIGV2ZW50IHRvIHRoZSBy
ZW1vdGUgZW5kIG9mIHRoZSBjaGFubmVsIHdob3NlIGxvY2FsCisgKiBlbmRwb2ludCBpcyA8cG9y
dD4uCisgKi8KK3N0cnVjdCBldnRjaG5fc2VuZCB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
KyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX3NlbmQg
ZXZ0Y2huX3NlbmRfdDsKKworLyoKKyAqIEVWVENITk9QX3N0YXR1czogR2V0IHRoZSBjdXJyZW50
IHN0YXR1cyBvZiB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdoaWNoCisgKiBoYXMgYW4gZW5k
cG9pbnQgYXQgPGRvbSwgcG9ydD4uCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3Bl
Y2lmaWVkIGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxl
Z2VkIGRvbWFpbiBtYXkgb2J0YWluIHRoZSBzdGF0dXMgb2YgYW4gZXZlbnQKKyAqICAgICBjaGFu
bmVsIGZvciB3aGljaCA8ZG9tPiBpcyBub3QgRE9NSURfU0VMRi4KKyAqLworc3RydWN0IGV2dGNo
bl9zdGF0dXMgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBkb21pZF90ICBkb207Cisg
ICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisjZGVmaW5l
IEVWVENITlNUQVRfY2xvc2VkICAgICAgIDAgIC8qIENoYW5uZWwgaXMgbm90IGluIHVzZS4gICAg
ICAgICAgICAgICAgICovCisjZGVmaW5lIEVWVENITlNUQVRfdW5ib3VuZCAgICAgIDEgIC8qIENo
YW5uZWwgaXMgd2FpdGluZyBpbnRlcmRvbSBjb25uZWN0aW9uLiovCisjZGVmaW5lIEVWVENITlNU
QVRfaW50ZXJkb21haW4gIDIgIC8qIENoYW5uZWwgaXMgY29ubmVjdGVkIHRvIHJlbW90ZSBkb21h
aW4uICovCisjZGVmaW5lIEVWVENITlNUQVRfcGlycSAgICAgICAgIDMgIC8qIENoYW5uZWwgaXMg
Ym91bmQgdG8gYSBwaHlzIElSUSBsaW5lLiAgICovCisjZGVmaW5lIEVWVENITlNUQVRfdmlycSAg
ICAgICAgIDQgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFsIElSUSBsaW5lICovCisj
ZGVmaW5lIEVWVENITlNUQVRfaXBpICAgICAgICAgIDUgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8g
YSB2aXJ0dWFsIElQSSBsaW5lICovCisgICAgdWludDMyX3Qgc3RhdHVzOworICAgIHVpbnQzMl90
IHZjcHU7ICAgICAgICAgICAgICAgICAvKiBWQ1BVIHRvIHdoaWNoIHRoaXMgY2hhbm5lbCBpcyBi
b3VuZC4gICAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGRv
bWlkX3QgZG9tOworICAgICAgICB9IHVuYm91bmQ7ICAgICAgICAgICAgICAgICAvKiBFVlRDSE5T
VEFUX3VuYm91bmQgKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGRvbWlkX3QgZG9t
OworICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgICAgICB9IGludGVyZG9tYWlu
OyAgICAgICAgICAgICAvKiBFVlRDSE5TVEFUX2ludGVyZG9tYWluICovCisgICAgICAgIHVpbnQz
Ml90IHBpcnE7ICAgICAgICAgICAgIC8qIEVWVENITlNUQVRfcGlycSAgICAgICAgKi8KKyAgICAg
ICAgdWludDMyX3QgdmlycTsgICAgICAgICAgICAgLyogRVZUQ0hOU1RBVF92aXJxICAgICAgICAq
LworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fc3RhdHVzIGV2dGNobl9zdGF0
dXNfdDsKKworLyoKKyAqIEVWVENITk9QX2JpbmRfdmNwdTogU3BlY2lmeSB3aGljaCB2Y3B1IGEg
Y2hhbm5lbCBzaG91bGQgbm90aWZ5IHdoZW4gYW4KKyAqIGV2ZW50IGlzIHBlbmRpbmcuCisgKiBO
T1RFUzoKKyAqICAxLiBJUEktYm91bmQgY2hhbm5lbHMgYWx3YXlzIG5vdGlmeSB0aGUgdmNwdSBz
cGVjaWZpZWQgYXQgYmluZCB0aW1lLgorICogICAgIFRoaXMgYmluZGluZyBjYW5ub3QgYmUgY2hh
bmdlZC4KKyAqICAyLiBQZXItVkNQVSBWSVJRIGNoYW5uZWxzIGFsd2F5cyBub3RpZnkgdGhlIHZj
cHUgc3BlY2lmaWVkIGF0IGJpbmQgdGltZS4KKyAqICAgICBUaGlzIGJpbmRpbmcgY2Fubm90IGJl
IGNoYW5nZWQuCisgKiAgMy4gQWxsIG90aGVyIGNoYW5uZWxzIG5vdGlmeSB2Y3B1MCBieSBkZWZh
dWx0LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdoZW4KKyAqICAgICB0aGUgY2hhbm5lbCBpcyBhbGxv
Y2F0ZWQgKGEgcG9ydCB0aGF0IGlzIGZyZWVkIGFuZCBzdWJzZXF1ZW50bHkgcmV1c2VkCisgKiAg
ICAgaGFzIGl0cyBiaW5kaW5nIHJlc2V0IHRvIHZjcHUwKS4KKyAqLworc3RydWN0IGV2dGNobl9i
aW5kX3ZjcHUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBw
b3J0OworICAgIHVpbnQzMl90IHZjcHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRf
dmNwdSBldnRjaG5fYmluZF92Y3B1X3Q7CisKKy8qCisgKiBFVlRDSE5PUF91bm1hc2s6IFVubWFz
ayB0aGUgc3BlY2lmaWVkIGxvY2FsIGV2ZW50LWNoYW5uZWwgcG9ydCBhbmQgZGVsaXZlcgorICog
YSBub3RpZmljYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIFZDUFUgaWYgYW4gZXZlbnQgaXMgcGVu
ZGluZy4KKyAqLworc3RydWN0IGV2dGNobl91bm1hc2sgeworICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovCisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl91
bm1hc2sgZXZ0Y2huX3VubWFza190OworCisvKgorICogRVZUQ0hOT1BfcmVzZXQ6IENsb3NlIGFs
bCBldmVudCBjaGFubmVscyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWVkIGRvbWFpbi4KKyAqIE5P
VEVTOgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAy
LiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IG90aGVy
IHRoYW4gRE9NSURfU0VMRi4KKyAqICAzLiBEZXN0cm95cyBhbGwgY29udHJvbCBibG9ja3MgYW5k
IGV2ZW50IGFycmF5LCByZXNldHMgZXZlbnQgY2hhbm5lbAorICogICAgIG9wZXJhdGlvbnMgdG8g
Mi1sZXZlbCBBQkkgaWYgY2FsbGVkIHdpdGggPGRvbT4gPT0gRE9NSURfU0VMRiBhbmQgRklGTwor
ICogICAgIEFCSSB3YXMgdXNlZC4gR3Vlc3RzIHNob3VsZCBub3QgYmluZCBldmVudHMgZHVyaW5n
IEVWVENITk9QX3Jlc2V0IGNhbGwKKyAqICAgICBhcyB0aGVzZSBldmVudHMgYXJlIGxpa2VseSB0
byBiZSBsb3N0LgorICovCitzdHJ1Y3QgZXZ0Y2huX3Jlc2V0IHsKKyAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLworICAgIGRvbWlkX3QgZG9tOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9yZXNl
dCBldnRjaG5fcmVzZXRfdDsKKworLyoKKyAqIEVWVENITk9QX2luaXRfY29udHJvbDogaW5pdGlh
bGl6ZSB0aGUgY29udHJvbCBibG9jayBmb3IgdGhlIEZJRk8gQUJJLgorICoKKyAqIE5vdGU6IGFu
eSBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IHBlbmRpbmcgd2lsbCBub3QgYmUgcmVzZW50IGFu
ZAorICogd2lsbCBiZSBsb3N0LiAgR3Vlc3RzIHNob3VsZCBjYWxsIHRoaXMgYmVmb3JlIGJpbmRp
bmcgYW55IGV2ZW50IHRvCisgKiBhdm9pZCBsb3NpbmcgYW55IGV2ZW50cy4KKyAqLworc3RydWN0
IGV2dGNobl9pbml0X2NvbnRyb2wgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWlu
dDY0X3QgY29udHJvbF9nZm47CisgICAgdWludDMyX3Qgb2Zmc2V0OworICAgIHVpbnQzMl90IHZj
cHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgdWludDhfdCBsaW5rX2JpdHM7Cisg
ICAgdWludDhfdCBfcGFkWzddOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9pbml0X2NvbnRy
b2wgZXZ0Y2huX2luaXRfY29udHJvbF90OworCisvKgorICogRVZUQ0hOT1BfZXhwYW5kX2FycmF5
OiBhZGQgYW4gYWRkaXRpb25hbCBwYWdlIHRvIHRoZSBldmVudCBhcnJheS4KKyAqLworc3RydWN0
IGV2dGNobl9leHBhbmRfYXJyYXkgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWlu
dDY0X3QgYXJyYXlfZ2ZuOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9leHBhbmRfYXJyYXkg
ZXZ0Y2huX2V4cGFuZF9hcnJheV90OworCisvKgorICogRVZUQ0hOT1Bfc2V0X3ByaW9yaXR5OiBz
ZXQgdGhlIHByaW9yaXR5IGZvciBhbiBldmVudCBjaGFubmVsLgorICovCitzdHJ1Y3QgZXZ0Y2hu
X3NldF9wcmlvcml0eSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBw
b3J0OworICAgIHVpbnQzMl90IHByaW9yaXR5OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9z
ZXRfcHJpb3JpdHkgZXZ0Y2huX3NldF9wcmlvcml0eV90OworCisvKgorICogYCBlbnVtIG5lZ19l
cnJub3ZhbAorICogYCBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0KHN0cnVjdCBl
dnRjaG5fb3AgKm9wKQorICogYAorICogU3VwZXJjZWRlZCBieSBuZXcgZXZlbnRfY2hhbm5lbF9v
cCgpIGh5cGVyY2FsbCBzaW5jZSAweDAwMDMwMjAyLgorICovCitzdHJ1Y3QgZXZ0Y2huX29wIHsK
KyAgICB1aW50MzJfdCBjbWQ7IC8qIGVudW0gZXZlbnRfY2hhbm5lbF9vcCAqLworICAgIHVuaW9u
IHsKKyAgICAgICAgc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kICAgIGFsbG9jX3VuYm91bmQ7
CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kX2ludGVyZG9tYWlu
OworICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSAgICAgICAgYmluZF92aXJxOworICAg
ICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfcGlycSAgICAgICAgYmluZF9waXJxOworICAgICAgICBz
dHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpICAgICAgICAgYmluZF9pcGk7CisgICAgICAgIHN0cnVjdCBl
dnRjaG5fY2xvc2UgICAgICAgICAgICBjbG9zZTsKKyAgICAgICAgc3RydWN0IGV2dGNobl9zZW5k
ICAgICAgICAgICAgIHNlbmQ7CisgICAgICAgIHN0cnVjdCBldnRjaG5fc3RhdHVzICAgICAgICAg
ICBzdGF0dXM7CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92Y3B1ICAgICAgICBiaW5kX3Zj
cHU7CisgICAgICAgIHN0cnVjdCBldnRjaG5fdW5tYXNrICAgICAgICAgICB1bm1hc2s7CisgICAg
fSB1OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9vcCBldnRjaG5fb3BfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKGV2dGNobl9vcF90KTsKKworLyoKKyAqIDItbGV2ZWwgQUJJCisgKi8K
KworI2RlZmluZSBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMgKHNpemVvZih4ZW5fdWxvbmdfdCkgKiBz
aXplb2YoeGVuX3Vsb25nX3QpICogNjQpCisKKy8qCisgKiBGSUZPIEFCSQorICovCisKKy8qIEV2
ZW50cyBtYXkgaGF2ZSBwcmlvcml0aWVzIGZyb20gMCAoaGlnaGVzdCkgdG8gMTUgKGxvd2VzdCku
ICovCisjZGVmaW5lIEVWVENITl9GSUZPX1BSSU9SSVRZX01BWCAgICAgMAorI2RlZmluZSBFVlRD
SE5fRklGT19QUklPUklUWV9ERUZBVUxUIDcKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlf
TUlOICAgICAxNQorCisjZGVmaW5lIEVWVENITl9GSUZPX01BWF9RVUVVRVMgKEVWVENITl9GSUZP
X1BSSU9SSVRZX01JTiArIDEpCisKK3R5cGVkZWYgdWludDMyX3QgZXZlbnRfd29yZF90OworCisj
ZGVmaW5lIEVWVENITl9GSUZPX1BFTkRJTkcgMzEKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fTUFTS0VE
ICAzMAorI2RlZmluZSBFVlRDSE5fRklGT19MSU5LRUQgIDI5CisjZGVmaW5lIEVWVENITl9GSUZP
X0JVU1kgICAgMjgKKworI2RlZmluZSBFVlRDSE5fRklGT19MSU5LX0JJVFMgMTcKKyNkZWZpbmUg
RVZUQ0hOX0ZJRk9fTElOS19NQVNLICgoMSA8PCBFVlRDSE5fRklGT19MSU5LX0JJVFMpIC0gMSkK
KworI2RlZmluZSBFVlRDSE5fRklGT19OUl9DSEFOTkVMUyAoMSA8PCBFVlRDSE5fRklGT19MSU5L
X0JJVFMpCisKK3N0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2NrIHsKKyAgICB1aW50MzJf
dCByZWFkeTsKKyAgICB1aW50MzJfdCBfcnN2ZDsKKyAgICB1aW50MzJfdCBoZWFkW0VWVENITl9G
SUZPX01BWF9RVUVVRVNdOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9maWZvX2NvbnRyb2xf
YmxvY2sgZXZ0Y2huX2ZpZm9fY29udHJvbF9ibG9ja190OworCisjZW5kaWYgLyogX19YRU5fUFVC
TElDX0VWRU5UX0NIQU5ORUxfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt
b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog
dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm
IC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2ZlYXR1cmVzLmggYi9pbmNsdWRlL3hlbi9wdWJs
aWMvZmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ5ZmY1
Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2ZlYXR1cmVzLmgKQEAgLTAs
MCArMSwxMTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGZlYXR1cmVzLmgKKyAqCisg
KiBGZWF0dXJlIGZsYWdzLCByZXBvcnRlZCBieSBYRU5WRVJfZ2V0X2ZlYXR1cmVzLgorICoKKyAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg
KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS
RS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJj
ZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfRkVBVFVSRVNfSF9fCisjZGVmaW5l
IF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18KKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBlbGZu
b3Rlc19mZWF0dXJlcyBYRU5fRUxGTk9URV9GRUFUVVJFUworICoKKyAqIFRoZSBsaXN0IG9mIGFs
bCB0aGUgZmVhdHVyZXMgdGhlIGd1ZXN0IHN1cHBvcnRzLiBUaGV5IGFyZSBzZXQgYnkKKyAqIHBh
cnNpbmcgdGhlIFhFTl9FTEZOT1RFX0ZFQVRVUkVTIGFuZCBYRU5fRUxGTk9URV9TVVBQT1JURURf
RkVBVFVSRVMKKyAqIHN0cmluZy4gVGhlIGZvcm1hdCBpcyB0aGUgIGZlYXR1cmUgbmFtZXMgKGFz
IGdpdmVuIGhlcmUgd2l0aG91dCB0aGUKKyAqICJYRU5GRUFUXyIgcHJlZml4KSBzZXBhcmF0ZWQg
YnkgJ3wnIGNoYXJhY3RlcnMuCisgKiBJZiBhIGZlYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBr
ZXJuZWwgdG8gZnVuY3Rpb24gdGhlbiB0aGUgZmVhdHVyZSBuYW1lCisgKiBtdXN0IGJlIHByZWNl
ZGVkIGJ5IGEgJyEnIGNoYXJhY3Rlci4KKyAqCisgKiBOb3RlIHRoYXQgaWYgWEVOX0VMRk5PVEVf
U1VQUE9SVEVEX0ZFQVRVUkVTIGlzIHVzZWQsIHRoZW4gaW4gdGhlCisgKiBYRU5GRUFUX2RvbTAg
TVVTVCBiZSBzZXQgaWYgdGhlIGd1ZXN0IGlzIHRvIGJlIGJvb3RlZCBhcyBkb20wLAorICovCisK
Ky8qCisgKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIHdyaXRlLXByb3RlY3Qg
aXRzIHBhZ2V0YWJsZXMsIGFuZCBjYW4KKyAqIHVwZGF0ZSB0aGVtIHZpYSBkaXJlY3Qgd3JpdGVz
LgorICovCisjZGVmaW5lIFhFTkZFQVRfd3JpdGFibGVfcGFnZV90YWJsZXMgICAgICAgMAorCisv
KgorICogSWYgc2V0LCB0aGUgZ3Vlc3QgZG9lcyBub3QgbmVlZCB0byB3cml0ZS1wcm90ZWN0IGl0
cyBzZWdtZW50IGRlc2NyaXB0b3IKKyAqIHRhYmxlcywgYW5kIGNhbiB1cGRhdGUgdGhlbSB2aWEg
ZGlyZWN0IHdyaXRlcy4KKyAqLworI2RlZmluZSBYRU5GRUFUX3dyaXRhYmxlX2Rlc2NyaXB0b3Jf
dGFibGVzIDEKKworLyoKKyAqIElmIHNldCwgdHJhbnNsYXRpb24gYmV0d2VlbiB0aGUgZ3Vlc3Qn
cyAncHNldWRvLXBoeXNpY2FsJyBhZGRyZXNzIHNwYWNlCisgKiBhbmQgdGhlIGhvc3QncyBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UgYXJlIGhhbmRsZWQgYnkgdGhlIGh5cGVydmlzb3IuIEluIHRoaXMK
KyAqIG1vZGUgdGhlIGd1ZXN0IGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybSBwaHlzLXRvL2Zyb20t
bWFjaGluZSB0cmFuc2xhdGlvbnMKKyAqIHdoZW4gcGVyZm9ybWluZyBwYWdlIHRhYmxlIG9wZXJh
dGlvbnMuCisgKi8KKyNkZWZpbmUgWEVORkVBVF9hdXRvX3RyYW5zbGF0ZWRfcGh5c21hcCAgICAy
CisKKy8qIElmIHNldCwgdGhlIGd1ZXN0IGlzIHJ1bm5pbmcgaW4gc3VwZXJ2aXNvciBtb2RlIChl
LmcuLCB4ODYgcmluZyAwKS4gKi8KKyNkZWZpbmUgWEVORkVBVF9zdXBlcnZpc29yX21vZGVfa2Vy
bmVsICAgICAzCisKKy8qCisgKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIGFs
bG9jYXRlIHg4NiBQQUUgcGFnZSBkaXJlY3RvcmllcworICogYmVsb3cgNEdCLiBUaGlzIGZsYWcg
aXMgdXN1YWxseSBpbXBsaWVkIGJ5IGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwLgorICovCisjZGVm
aW5lIFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRnYiAgICAgICAgNAorCisvKiB4ODY6IERvZXMg
dGhpcyBYZW4gaG9zdCBzdXBwb3J0IHRoZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIGh5cGVy
Y2FsbD8gKi8KKyNkZWZpbmUgWEVORkVBVF9tbXVfcHRfdXBkYXRlX3ByZXNlcnZlX2FkICA1CisK
Ky8qIHg4NjogRG9lcyB0aGlzIFhlbiBob3N0IHN1cHBvcnQgdGhlIE1NVV97Q0xFQVIsQ09QWX1f
UEFHRSBoeXBlcmNhbGw/ICovCisjZGVmaW5lIFhFTkZFQVRfaGlnaG1lbV9hc3Npc3QgICAgICAg
ICAgICAgNgorCisvKgorICogSWYgc2V0LCBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGhvbm9ycyBm
bGFncyB0byBiZSBwbGFjZWQgaW50byBndWVzdCBrZXJuZWwKKyAqIGF2YWlsYWJsZSBwdGUgYml0
cy4KKyAqLworI2RlZmluZSBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyAgICAgIDcKKwor
LyogeDg2OiBEb2VzIHRoaXMgWGVuIGhvc3Qgc3VwcG9ydCB0aGUgSFZNIGNhbGxiYWNrIHZlY3Rv
ciB0eXBlPyAqLworI2RlZmluZSBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IgICAgICAgIDgK
KworLyogeDg2OiBwdmNsb2NrIGFsZ29yaXRobSBpcyBzYWZlIHRvIHVzZSBvbiBIVk0gKi8KKyNk
ZWZpbmUgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrICAgICAgICAgICA5CisKKy8qIHg4NjogcGly
cSBjYW4gYmUgdXNlZCBieSBIVk0gZ3Vlc3RzICovCisjZGVmaW5lIFhFTkZFQVRfaHZtX3BpcnFz
ICAgICAgICAgICAgICAgICAxMAorCisvKiBvcGVyYXRpb24gYXMgRG9tMCBpcyBzdXBwb3J0ZWQg
Ki8KKyNkZWZpbmUgWEVORkVBVF9kb20wICAgICAgICAgICAgICAgICAgICAgIDExCisKKy8qIFhl
biBhbHNvIG1hcHMgZ3JhbnQgcmVmZXJlbmNlcyBhdCBwZm4gPSBtZm4uCisgKiBUaGlzIGZlYXR1
cmUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisjZGVmaW5lIFhF
TkZFQVRfZ3JhbnRfbWFwX2lkZW50aXR5ICAgICAgICAxMgorICovCisKKyNkZWZpbmUgWEVORkVB
VF9OUl9TVUJNQVBTIDEKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18gKi8K
KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog
IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10
YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJs
aWMvZ3JhbnRfdGFibGUuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjc5MTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUuaApAQCAtMCwwICsxLDY4MiBAQAorLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorICogZ3JhbnRfdGFibGUuaAorICoKKyAqIEludGVyZmFjZSBm
b3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8gcGFnZSBmcmFtZXMsIGFuZCByZWNlaXZpbmcK
KyAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0
IChjKSAyMDA0LCBLIEEgRnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfR1JBTlRf
VEFCTEVfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9IX18KKworI2luY2x1
ZGUgInhlbi5oIgorCisvKgorICogYGluY29udGVudHMgMTUwIGdudHRhYiBHcmFudCBUYWJsZXMK
KyAqCisgKiBYZW4ncyBncmFudCB0YWJsZXMgcHJvdmlkZSBhIGdlbmVyaWMgbWVjaGFuaXNtIHRv
IG1lbW9yeSBzaGFyaW5nCisgKiBiZXR3ZWVuIGRvbWFpbnMuIFRoaXMgc2hhcmVkIG1lbW9yeSBp
bnRlcmZhY2UgdW5kZXJwaW5zIHRoZSBzcGxpdAorICogZGV2aWNlIGRyaXZlcnMgZm9yIGJsb2Nr
IGFuZCBuZXR3b3JrIElPLgorICoKKyAqIEVhY2ggZG9tYWluIGhhcyBpdHMgb3duIGdyYW50IHRh
YmxlLiBUaGlzIGlzIGEgZGF0YSBzdHJ1Y3R1cmUgdGhhdAorICogaXMgc2hhcmVkIHdpdGggWGVu
OyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0ZWxsIFhlbiB3aGF0IGtpbmQgb2YKKyAqIHBlcm1p
c3Npb25zIG90aGVyIGRvbWFpbnMgaGF2ZSBvbiBpdHMgcGFnZXMuIEVudHJpZXMgaW4gdGhlIGdy
YW50CisgKiB0YWJsZSBhcmUgaWRlbnRpZmllZCBieSBncmFudCByZWZlcmVuY2VzLiBBIGdyYW50
IHJlZmVyZW5jZSBpcyBhbgorICogaW50ZWdlciwgd2hpY2ggaW5kZXhlcyBpbnRvIHRoZSBncmFu
dCB0YWJsZS4gSXQgYWN0cyBhcyBhCisgKiBjYXBhYmlsaXR5IHdoaWNoIHRoZSBncmFudGVlIGNh
biB1c2UgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIHRoZQorICogZ3JhbnRlcuKAmXMgbWVtb3J5
LgorICoKKyAqIFRoaXMgY2FwYWJpbGl0eS1iYXNlZCBzeXN0ZW0gYWxsb3dzIHNoYXJlZC1tZW1v
cnkgY29tbXVuaWNhdGlvbnMKKyAqIGJldHdlZW4gdW5wcml2aWxlZ2VkIGRvbWFpbnMuIEEgZ3Jh
bnQgcmVmZXJlbmNlIGFsc28gZW5jYXBzdWxhdGVzCisgKiB0aGUgZGV0YWlscyBvZiBhIHNoYXJl
ZCBwYWdlLCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYSBkb21haW4gdG8KKyAqIGtub3cgdGhlIHJl
YWwgbWFjaGluZSBhZGRyZXNzIG9mIGEgcGFnZSBpdCBpcyBzaGFyaW5nLiBUaGlzIG1ha2VzCisg
KiBpdCBwb3NzaWJsZSB0byBzaGFyZSBtZW1vcnkgY29ycmVjdGx5IHdpdGggZG9tYWlucyBydW5u
aW5nIGluCisgKiBmdWxseSB2aXJ0dWFsaXNlZCBtZW1vcnkuCisgKi8KKworLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisgKiBHUkFOVCBUQUJMRSBSRVBSRVNFTlRBVElPTgor
ICovCisKKy8qIFNvbWUgcm91Z2ggZ3VpZGVsaW5lcyBvbiBhY2Nlc3NpbmcgYW5kIHVwZGF0aW5n
IGdyYW50LXRhYmxlIGVudHJpZXMKKyAqIGluIGEgY29uY3VycmVuY3ktc2FmZSBtYW5uZXIuIEZv
ciBtb3JlIGluZm9ybWF0aW9uLCBMaW51eCBjb250YWlucyBhCisgKiByZWZlcmVuY2UgaW1wbGVt
ZW50YXRpb24gZm9yIGd1ZXN0IE9TZXMgKGRyaXZlcnMveGVuL2dyYW50X3RhYmxlLmMsIHNlZQor
ICogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGlu
dXguZ2l0O2E9YmxvYjtmPWRyaXZlcnMveGVuL2dyYW50LXRhYmxlLmM7aGI9SEVBRAorICoKKyAq
IE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50LWdlbmVyYXRpb24geDg2IHByb2Nlc3NvcnMu
IEhvd2V2ZXIsIGEKKyAqICAgICBjb21waWxlciBiYXJyaWVyIHdpbGwgc3RpbGwgYmUgcmVxdWly
ZWQuCisgKgorICogSW50cm9kdWNpbmcgYSB2YWxpZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJs
ZToKKyAqICAxLiBXcml0ZSBlbnQtPmRvbWlkLgorICogIDIuIFdyaXRlIGVudC0+ZnJhbWU6Cisg
KiAgICAgIEdURl9wZXJtaXRfYWNjZXNzOiAgIEZyYW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJt
aXR0ZWQuCisgKiAgICAgIEdURl9hY2NlcHRfdHJhbnNmZXI6IFBzZXVkby1waHlzIGZyYW1lIHNs
b3QgYmVpbmcgZmlsbGVkIGJ5IG5ldworICogICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZSwgb3IgemVybyBpZiBub25lLgorICogIDMuIFdyaXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLgor
ICogIDQuIFdyaXRlIGVudC0+ZmxhZ3MsIGluYy4gdmFsaWQgdHlwZS4KKyAqCisgKiBJbnZhbGlk
YXRpbmcgYW4gdW51c2VkIEdURl9wZXJtaXRfYWNjZXNzIGVudHJ5OgorICogIDEuIGZsYWdzID0g
ZW50LT5mbGFncy4KKyAqICAyLiBPYnNlcnZlIHRoYXQgIShmbGFncyAmIChHVEZfcmVhZGluZ3xH
VEZfd3JpdGluZykpLgorICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZl
bnQtPmZsYWdzLCBmbGFncywgMCkuCisgKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBv
ZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCisgKiAgICAgIHN0ZXAg
MywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3
cml0ZXMuCisgKgorICogSW52YWxpZGF0aW5nIGFuIGluLXVzZSBHVEZfcGVybWl0X2FjY2VzcyBl
bnRyeToKKyAqICBUaGlzIGNhbm5vdCBiZSBkb25lIGRpcmVjdGx5LiBSZXF1ZXN0IGFzc2lzdGFu
Y2UgZnJvbSB0aGUgZG9tYWluIGNvbnRyb2xsZXIKKyAqICB3aGljaCBjYW4gc2V0IGEgdGltZW91
dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQgZW50cnkgYW5kIHRha2UgbmVjZXNzYXJ5CisgKiAgYWN0
aW9uLiAoTkIuIFRoaXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCEpLgorICoKKyAqIEludmFsaWRh
dGluZyBhbiB1bnVzZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKKyAqICAxLiBmbGFncyA9
IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiBHVEZfdHJhbnNmZXJf
Y29tbWl0dGVkKS4gWypdCisgKiAgMy4gQ2hlY2sgcmVzdWx0IG9mIFNNUC1zYWZlIENNUFhDSEco
JmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KKyAqICBOQi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNl
IG9mIGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50IG9uIHN1Y2Nlc3Mgb2YKKyAqICAgICAgc3Rl
cCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3VhcmFudGVlIG9yZGVyaW5nIG9mIGN0cmwtZGVw
IHdyaXRlcy4KKyAqICBbKl0gSWYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCBpcyBzZXQgdGhlbiB0
aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcuCisgKiAgICAgIFRoZSBndWVzdCBtdXN0IC9u
b3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgdGhlIGFkZHJlc3Mgb2YgdGhlCisgKiAg
ICAgIHRyYW5zZmVycmVkIGZyYW1lIGlzIHdyaXR0ZW4uIEl0IGlzIHNhZmUgZm9yIHRoZSBndWVz
dCB0byBzcGluIHdhaXRpbmcKKyAqICAgICAgZm9yIHRoaXMgdG8gb2NjdXIgKGRldGVjdCBieSBv
YnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpbgorICogICAgICBlbnQtPmZsYWdzKS4K
KyAqCisgKiBJbnZhbGlkYXRpbmcgYSBjb21taXR0ZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRy
eToKKyAqICAxLiBXYWl0IGZvciAoZW50LT5mbGFncyAmIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQp
LgorICoKKyAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byBy
ZWFkLW9ubHk6CisgKiAgVXNlIFNNUC1zYWZlIENNUFhDSEcgdG8gc2V0IEdURl9yZWFkb25seSwg
d2hpbGUgY2hlY2tpbmcgIUdURl93cml0aW5nLgorICoKKyAqIENoYW5naW5nIGEgR1RGX3Blcm1p
dF9hY2Nlc3MgZnJvbSByZWFkLW9ubHkgdG8gd3JpdGFibGU6CisgKiAgVXNlIFNNUC1zYWZlIGJp
dC1zZXR0aW5nIGluc3RydWN0aW9uLgorICovCisKKy8qCisgKiBSZWZlcmVuY2UgdG8gYSBncmFu
dCBlbnRyeSBpbiBhIHNwZWNpZmllZCBkb21haW4ncyBncmFudCB0YWJsZS4KKyAqLwordHlwZWRl
ZiB1aW50MzJfdCBncmFudF9yZWZfdDsKKworLyoKKyAqIEEgZ3JhbnQgdGFibGUgY29tcHJpc2Vz
IGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJpZXMgaW4gb25lIG9yIG1vcmUKKyAqIHBhZ2Ug
ZnJhbWVzIHNoYXJlZCBiZXR3ZWVuIFhlbiBhbmQgYSBndWVzdC4KKyAqIFtYRU5dOiBUaGlzIGZp
ZWxkIGlzIHdyaXR0ZW4gYnkgWGVuIGFuZCByZWFkIGJ5IHRoZSBzaGFyaW5nIGd1ZXN0LgorICog
W0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBieSB0aGUgZ3Vlc3QgYW5kIHJlYWQgYnkgWGVu
LgorICovCisKKy8qCisgKiBWZXJzaW9uIDEgb2YgdGhlIGdyYW50IHRhYmxlIGVudHJ5IHN0cnVj
dHVyZSBpcyBtYWludGFpbmVkIHB1cmVseQorICogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
LiAgTmV3IGd1ZXN0cyBzaG91bGQgdXNlIHZlcnNpb24gMi4KKyAqLworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjBhCisjZGVmaW5lIGdyYW50X2VudHJ5X3YxIGdyYW50
X2VudHJ5CisjZGVmaW5lIGdyYW50X2VudHJ5X3YxX3QgZ3JhbnRfZW50cnlfdAorI2VuZGlmCitz
dHJ1Y3QgZ3JhbnRfZW50cnlfdjEgeworICAgIC8qIEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQg
ZmxhZyBpbmZvcm1hdGlvbi4gIFtYRU4sR1NUXSAqLworICAgIHVpbnQxNl90IGZsYWdzOworICAg
IC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBmb3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICov
CisgICAgZG9taWRfdCAgZG9taWQ7CisgICAgLyoKKyAgICAgKiBHVEZfcGVybWl0X2FjY2Vzczog
RnJhbWUgdGhhdCBAZG9taWQgaXMgYWxsb3dlZCB0byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KKyAg
ICAgKiBHVEZfYWNjZXB0X3RyYW5zZmVyOiBGcmFtZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJy
ZWQgYnkgQGRvbWlkLiBbWEVOXQorICAgICAqLworICAgIHVpbnQzMl90IGZyYW1lOworfTsKK3R5
cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X3YxIGdyYW50X2VudHJ5X3YxX3Q7CisKKy8qIFRoZSBm
aXJzdCBmZXcgZ3JhbnQgdGFibGUgZW50cmllcyB3aWxsIGJlIHByZXNlcnZlZCBhY3Jvc3MgZ3Jh
bnQgdGFibGUKKyAqIHZlcnNpb24gY2hhbmdlcyBhbmQgbWF5IGJlIHByZS1wb3B1bGF0ZWQgYXQg
ZG9tYWluIGNyZWF0aW9uIGJ5IHRvb2xzLgorICovCisjZGVmaW5lIEdOVFRBQl9OUl9SRVNFUlZF
RF9FTlRSSUVTICAgICA4CisjZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9DT05TT0xFICAgICAgICAw
CisjZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9YRU5TVE9SRSAgICAgICAxCisKKy8qCisgKiBUeXBl
IG9mIGdyYW50IGVudHJ5LgorICogIEdURl9pbnZhbGlkOiBUaGlzIGdyYW50IGVudHJ5IGdyYW50
cyBubyBwcml2aWxlZ2VzLgorICogIEdURl9wZXJtaXRfYWNjZXNzOiBBbGxvdyBAZG9taWQgdG8g
bWFwL2FjY2VzcyBAZnJhbWUuCisgKiAgR1RGX2FjY2VwdF90cmFuc2ZlcjogQWxsb3cgQGRvbWlk
IHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBvbmUgcGFnZSBmcmFtZQorICogICAgICAgICAgICAg
ICAgICAgICAgIHRvIHRoaXMgZ3Vlc3QuIFhlbiB3cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIEBm
cmFtZS4KKyAqICBHVEZfdHJhbnNpdGl2ZTogQWxsb3cgQGRvbWlkIHRvIHRyYW5zaXRpdmVseSBh
Y2Nlc3MgYSBzdWJyYW5nZSBvZgorICogICAgICAgICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4g
QHRyYW5zX2RvbWlkLiAgTm8gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKi8KKyNkZWZpbmUgR1RG
X2ludmFsaWQgICAgICAgICAoMFU8PDApCisjZGVmaW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFV
PDwwKQorI2RlZmluZSBHVEZfYWNjZXB0X3RyYW5zZmVyICgyVTw8MCkKKyNkZWZpbmUgR1RGX3Ry
YW5zaXRpdmUgICAgICAoM1U8PDApCisjZGVmaW5lIEdURl90eXBlX21hc2sgICAgICAgKDNVPDww
KQorCisvKgorICogU3ViZmxhZ3MgZm9yIEdURl9wZXJtaXRfYWNjZXNzLgorICogIEdURl9yZWFk
b25seTogUmVzdHJpY3QgQGRvbWlkIHRvIHJlYWQtb25seSBtYXBwaW5ncyBhbmQgYWNjZXNzZXMu
IFtHU1RdCisgKiAgR1RGX3JlYWRpbmc6IEdyYW50IGVudHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQg
Zm9yIHJlYWRpbmcgYnkgQGRvbWlkLiBbWEVOXQorICogIEdURl93cml0aW5nOiBHcmFudCBlbnRy
eSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciB3cml0aW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAqICBH
VEZfUEFULCBHVEZfUFdULCBHVEZfUENEOiAoeDg2KSBjYWNoZSBhdHRyaWJ1dGUgZmxhZ3MgZm9y
IHRoZSBncmFudCBbR1NUXQorICogIEdURl9zdWJfcGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkg
YSBzdWJyYW5nZSBvZiB0aGUgcGFnZS4gIEBkb21pZAorICogICAgICAgICAgICAgICAgd2lsbCBv
bmx5IGJlIGFsbG93ZWQgdG8gY29weSBmcm9tIHRoZSBncmFudCwgYW5kIG5vdAorICogICAgICAg
ICAgICAgICAgbWFwIGl0LiBbR1NUXQorICovCisjZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAg
KDIpCisjZGVmaW5lIEdURl9yZWFkb25seSAgICAgICAgKDFVPDxfR1RGX3JlYWRvbmx5KQorI2Rl
ZmluZSBfR1RGX3JlYWRpbmcgICAgICAgICgzKQorI2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAg
ICgxVTw8X0dURl9yZWFkaW5nKQorI2RlZmluZSBfR1RGX3dyaXRpbmcgICAgICAgICg0KQorI2Rl
ZmluZSBHVEZfd3JpdGluZyAgICAgICAgICgxVTw8X0dURl93cml0aW5nKQorI2RlZmluZSBfR1RG
X1BXVCAgICAgICAgICAgICg1KQorI2RlZmluZSBHVEZfUFdUICAgICAgICAgICAgICgxVTw8X0dU
Rl9QV1QpCisjZGVmaW5lIF9HVEZfUENEICAgICAgICAgICAgKDYpCisjZGVmaW5lIEdURl9QQ0Qg
ICAgICAgICAgICAgKDFVPDxfR1RGX1BDRCkKKyNkZWZpbmUgX0dURl9QQVQgICAgICAgICAgICAo
NykKKyNkZWZpbmUgR1RGX1BBVCAgICAgICAgICAgICAoMVU8PF9HVEZfUEFUKQorI2RlZmluZSBf
R1RGX3N1Yl9wYWdlICAgICAgICg4KQorI2RlZmluZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8
X0dURl9zdWJfcGFnZSkKKworLyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVy
OgorICogIEdURl90cmFuc2Zlcl9jb21taXR0ZWQ6IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRp
Y2F0ZSB0aGF0IGl0IGlzIGNvbW1pdHRlZAorICogICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJz
aGlwIG9mIGEgcGFnZSBmcmFtZS4gV2hlbiBhIGd1ZXN0IHNlZXMgdGhpcyBmbGFnCisgKiAgICAg
IGl0IG11c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFudCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJf
Y29tcGxldGVkIGlzCisgKiAgICAgIHNldCBieSBYZW4uCisgKiAgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZDogSXQgaXMgc2FmZSBmb3IgdGhlIGd1ZXN0IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcK
KyAqICAgICAgYWZ0ZXIgcmVhZGluZyBHVEZfdHJhbnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBh
bHdheXMgd3JpdGUgdGhlIGZyYW1lCisgKiAgICAgIGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5n
IHRoaXMgZmxhZywgaW4gYSB0aW1lbHkgbWFubmVyLgorICovCisjZGVmaW5lIF9HVEZfdHJhbnNm
ZXJfY29tbWl0dGVkICgyKQorI2RlZmluZSBHVEZfdHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9H
VEZfdHJhbnNmZXJfY29tbWl0dGVkKQorI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAo
MykKKyNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2Nv
bXBsZXRlZCkKKworLyoKKyAqIFZlcnNpb24gMiBncmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2Ug
ZnVsZmlsIHRoZSBzYW1lIHJvbGUgYXMKKyAqIHZlcnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJl
cHJlc2VudCBtb3JlIGNvbXBsaWNhdGVkIG9wZXJhdGlvbnMuCisgKiBBbnkgZ2l2ZW4gZG9tYWlu
IHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJzaW9uIDEgb3IgYSB2ZXJzaW9uIDIgdGFibGUsCisgKiBh
bmQgZXZlcnkgZW50cnkgaW4gdGhlIHRhYmxlIHdpbGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KKyAq
CisgKiBUaGUgaW50ZXJmYWNlIGJ5IHdoaWNoIGRvbWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMg
ZG9lcyBub3QgZGVwZW5kCisgKiBvbiB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkg
dGhlIG90aGVyIGRvbWFpbi4KKyAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0g
MHgwMDAzMDIwYQorLyoKKyAqIFZlcnNpb24gMSBhbmQgdmVyc2lvbiAyIGdyYW50IGVudHJpZXMg
c2hhcmUgYSBjb21tb24gcHJlZml4LiAgVGhlCisgKiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUg
ZG9jdW1lbnRlZCBhcyBwYXJ0IG9mIHN0cnVjdAorICogZ3JhbnRfZW50cnlfdjEuCisgKi8KK3N0
cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgeworICAgIHVpbnQxNl90IGZsYWdzOworICAgIGRvbWlk
X3QgIGRvbWlkOworfTsKK3R5cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9l
bnRyeV9oZWFkZXJfdDsKKworLyoKKyAqIFZlcnNpb24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3Ry
dWN0dXJlLgorICovCit1bmlvbiBncmFudF9lbnRyeV92MiB7CisgICAgZ3JhbnRfZW50cnlfaGVh
ZGVyX3QgaGRyOworCisgICAgLyoKKyAgICAgKiBUaGlzIG1lbWJlciBpcyB1c2VkIGZvciBWMS1z
dHlsZSBmdWxsIHBhZ2UgZ3JhbnRzLCB3aGVyZSBlaXRoZXI6CisgICAgICoKKyAgICAgKiAtLSBo
ZHIudHlwZSBpcyBHVEZfYWNjZXB0X3RyYW5zZmVyLCBvcgorICAgICAqIC0tIGhkci50eXBlIGlz
IEdURl9wZXJtaXRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgbm90IHNldC4KKyAgICAgKgor
ICAgICAqIEluIHRoYXQgY2FzZSwgdGhlIGZyYW1lIGZpZWxkIGhhcyB0aGUgc2FtZSBzZW1hbnRp
Y3MgYXMgdGhlCisgICAgICogZmllbGQgb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUgVjEgZW50cnkg
c3RydWN0dXJlLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGdyYW50X2VudHJ5X2hl
YWRlcl90IGhkcjsKKyAgICAgICAgdWludDMyX3QgcGFkMDsKKyAgICAgICAgdWludDY0X3QgZnJh
bWU7CisgICAgfSBmdWxsX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCB0eXBl
IGlzIEdURl9ncmFudF9hY2Nlc3MgYW5kIEdURl9zdWJfcGFnZSBpcyBzZXQsCisgICAgICogQGRv
bWlkIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGJ5dGVzIFtAcGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5n
dGgpCisgICAgICogaW4gZnJhbWUgQGZyYW1lLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAg
ICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAgICAgdWludDE2X3QgcGFnZV9vZmY7
CisgICAgICAgIHVpbnQxNl90IGxlbmd0aDsKKyAgICAgICAgdWludDY0X3QgZnJhbWU7CisgICAg
fSBzdWJfcGFnZTsKKworICAgIC8qCisgICAgICogSWYgdGhlIGdyYW50IGlzIEdURl90cmFuc2l0
aXZlLCBAZG9taWQgaXMgYWxsb3dlZCB0byB1c2UgdGhlCisgICAgICogZ3JhbnQgQGdyZWYgaW4g
ZG9tYWluIEB0cmFuc19kb21pZCwgYXMgaWYgaXQgd2FzIHRoZSBsb2NhbAorICAgICAqIGRvbWFp
bi4gIE9idmlvdXNseSwgdGhlIHRyYW5zaXRpdmUgYWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQor
ICAgICAqIHdpdGggdGhlIG9yaWdpbmFsIGdyYW50LgorICAgICAqCisgICAgICogVGhlIGN1cnJl
bnQgdmVyc2lvbiBvZiBYZW4gZG9lcyBub3QgYWxsb3cgdHJhbnNpdGl2ZSBncmFudHMKKyAgICAg
KiB0byBiZSBtYXBwZWQuCisgICAgICovCisgICAgc3RydWN0IHsKKyAgICAgICAgZ3JhbnRfZW50
cnlfaGVhZGVyX3QgaGRyOworICAgICAgICBkb21pZF90IHRyYW5zX2RvbWlkOworICAgICAgICB1
aW50MTZfdCBwYWQwOworICAgICAgICBncmFudF9yZWZfdCBncmVmOworICAgIH0gdHJhbnNpdGl2
ZTsKKworICAgIHVpbnQzMl90IF9fc3BhY2VyWzRdOyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28g
Ki8KK307Cit0eXBlZGVmIHVuaW9uIGdyYW50X2VudHJ5X3YyIGdyYW50X2VudHJ5X3YyX3Q7CisK
K3R5cGVkZWYgdWludDE2X3QgZ3JhbnRfc3RhdHVzX3Q7CisKKyNlbmRpZiAvKiBfX1hFTl9JTlRF
UkZBQ0VfVkVSU0lPTl9fICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICogR1JBTlQgVEFCTEUgUVVFUklFUyBBTkQgVVNFUworICovCisKKy8qIGAgZW51bSBuZWdf
ZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcChlbnVtIGdyYW50X3RhYmxl
X29wIGNtZCwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdzLAorICog
YCAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCkKKyAqIGAKKyAq
CisgKiBAYXJncyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgYSBwZXItY29tbWFuZCBkYXRhIHN0cnVj
dHVyZS4gVGhlIGFycmF5CisgKiBoYXMgQGNvdW50IG1lbWJlcnMKKyAqLworCisvKiBgIGVudW0g
Z3JhbnRfdGFibGVfb3AgeyAvLyBHTlRUQUJPUF8qID0+IHN0cnVjdCBnbnR0YWJfKiAqLworI2Rl
ZmluZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmICAgICAgICAwCisjZGVmaW5lIEdOVFRBQk9QX3Vu
bWFwX2dyYW50X3JlZiAgICAgIDEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0dXBfdGFibGUgICAgICAg
ICAgMgorI2RlZmluZSBHTlRUQUJPUF9kdW1wX3RhYmxlICAgICAgICAgICAzCisjZGVmaW5lIEdO
VFRBQk9QX3RyYW5zZmVyICAgICAgICAgICAgIDQKKyNkZWZpbmUgR05UVEFCT1BfY29weSAgICAg
ICAgICAgICAgICAgNQorI2RlZmluZSBHTlRUQUJPUF9xdWVyeV9zaXplICAgICAgICAgICA2Cisj
ZGVmaW5lIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBsYWNlICAgIDcKKyNpZiBfX1hFTl9JTlRFUkZB
Q0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24g
ICAgICAgICAgOAorI2RlZmluZSBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lcyAgICA5CisjZGVm
aW5lIEdOVFRBQk9QX2dldF92ZXJzaW9uICAgICAgICAgIDEwCisjZGVmaW5lIEdOVFRBQk9QX3N3
YXBfZ3JhbnRfcmVmCSAgICAgIDExCisjZGVmaW5lIEdOVFRBQk9QX2NhY2hlX2ZsdXNoCSAgICAg
IDEyCisjZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworLyogYCB9ICovCisK
Ky8qCisgKiBIYW5kbGUgdG8gdHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQgcmVm
ZXJlbmNlLgorICovCit0eXBlZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OworCisvKgorICog
R05UVEFCT1BfbWFwX2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJlZj4p
IGZvciBhY2Nlc3MKKyAqIGJ5IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vzc2Z1
bCwgPGhhbmRsZT4gaXMgYSB0cmFja2luZyBudW1iZXIKKyAqIHRoYXQgbXVzdCBiZSBwcmVzZW50
ZWQgbGF0ZXIgdG8gZGVzdHJveSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxoYW5kbGU+Cisg
KiBpcyBhIG5lZ2F0aXZlIHN0YXR1cyBjb2RlLgorICogTk9URVM6CisgKiAgMS4gSWYgR05UTUFQ
X2RldmljZV9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFkZHJl
c3MKKyAqICAgICB2aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRlZCBm
cmFtZS4KKyAqICAyLiBJZiBHTlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBtYXBw
aW5nIHdpbGwgYmUgYWRkZWQgYXQKKyAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRkcmVz
cyBpbiB0aGUgY3VycmVudCBhZGRyZXNzIHNwYWNlLCBvciBhdAorICogICAgIGEgUFRFIGF0IHRo
ZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bworICog
ICAgIHBlcmZvcm0gaXMgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0ZSBm
bGFnLCBhbmQgdGhlCisgKiAgICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRkcj4u
CisgKiAgMy4gTWFwcGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91
bm1hcF9ncmFudF9yZWYuIElmIGEKKyAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVkIGJ5
IG90aGVyIG1lYW5zIHRoZW4gaXQgaXMgKk5PVCogZ3VhcmFudGVlZAorICogICAgIHRvIGJlIGFj
Y291bnRlZCB0byB0aGUgY29ycmVjdCBncmFudCByZWZlcmVuY2UhCisgKi8KK3N0cnVjdCBnbnR0
YWJfbWFwX2dyYW50X3JlZiB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRf
dCBob3N0X2FkZHI7CisgICAgdWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAgICAgLyogR05UTUFQ
XyogKi8KKyAgICBncmFudF9yZWZfdCByZWY7CisgICAgZG9taWRfdCAgZG9tOworICAgIC8qIE9V
VCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+
IGVudW0gZ3JhbnRfc3RhdHVzICovCisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAgIHVp
bnQ2NF90IGRldl9idXNfYWRkcjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfbWFwX2dyYW50
X3JlZiBnbnR0YWJfbWFwX2dyYW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250
dGFiX21hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWY6
IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCisgKiB0cmFja2Vk
IGJ5IDxoYW5kbGU+LiBJZiA8aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBpcyB6ZXJvLCB0
aGF0CisgKiBmaWVsZCBpcyBpZ25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0IHJlZmVyIHRv
IGEgZGV2aWNlL2hvc3QgbWFwcGluZworICogdGhhdCBpcyB0cmFja2VkIGJ5IDxoYW5kbGU+Cisg
KiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVy
IGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCisg
KiAgMy4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVk
IHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNl
IG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgeworICAg
IC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDY0X3QgaG9zdF9hZGRyOworICAgIHVpbnQ2
NF90IGRldl9idXNfYWRkcjsKKyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7CisgICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4g
ZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3Jh
bnRfcmVmIGdudHRhYl91bm1hcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KGdudHRhYl91bm1hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zZXR1cF90YWJs
ZTogU2V0IHVwIGEgZ3JhbnQgdGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QKKyAq
IDxucl9mcmFtZXM+IHBhZ2VzLiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRvIHRo
ZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRl
biwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4g
bWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50
bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAq
ICAzLiBYZW4gbWF5IG5vdCBzdXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJsZSBw
YWdlIHBlciBkb21haW4uCisgKi8KK3N0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgeworICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCAgZG9tOworICAgIHVpbnQzMl90IG5yX2Zy
YW1lczsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAg
ICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworI2lmIF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCisgICAgWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJh
bWVfbGlzdDsKKyNlbHNlCisgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGZyYW1lX2xp
c3Q7CisjZW5kaWYKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgZ250dGFi
X3NldHVwX3RhYmxlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0dXBfdGFi
bGVfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9kdW1wX3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBv
ZiB0aGUgZ3JhbnQgdGFibGUgdG8gdGhlCisgKiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBv
bmx5LgorICovCitzdHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgeworICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCisgICAgZG9taWRfdCBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAg
aW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7CisKKy8qCisg
KiBHTlRUQUJPUF90cmFuc2Zlcl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3Jl
aWduIGRvbWFpbi4gVGhlCisgKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3Rl
cmVkIGl0cyBpbnRlcmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCisgKiA8ZG9taWQsIHJlZj4uCisg
KgorICogTm90ZSB0aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmll
ZCBwYWdlIG5vIExPTkdfUFRSZXIgYmVsb25ncworICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1
bmxlc3MqIHRoZSBlcnJvciBpcyBHTlRTVF9iYWRfcGFnZS4KKyAqLworc3RydWN0IGdudHRhYl90
cmFuc2ZlciB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB4ZW5fcGZuX3QgICAgIG1m
bjsKKyAgICBkb21pZF90ICAgICAgIGRvbWlkOworICAgIGdyYW50X3JlZl90ICAgcmVmOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgICAgICAgc3RhdHVzOworfTsKK3R5
cGVkZWYgc3RydWN0IGdudHRhYl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKGdudHRhYl90cmFuc2Zlcl90KTsKKworCisvKgorICogR05UVEFCT1Bf
Y29weTogSHlwZXJ2aXNvciBiYXNlZCBjb3B5CisgKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBj
YW4gYmUgZWl0aGVycyBNRk5zIG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAorICogZ3JhbnQgcmVm
ZXJlbmNlcy4gdGhlIGZvcmVpZ24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2Vz
cworICogaW4gaXRzIGdyYW50IHRhYmxlLgorICoKKyAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQg
dHlwZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KKyAqIG9yIGdyYW50
IHJlZmVyZW5jZSkuCisgKgorICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBj
b3B5IGRhdGEgYmV0d2VlbiB0d28gZG9tYWlucworICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQorICogZ3JhbnQg
YXBwcm9wcmlhdGUgYWNjZXNzIHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KKyAq
CisgKiBzb3VyY2Vfb2Zmc2V0IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFt
ZSwgZGVzdF9vZmZzZXQKKyAqIHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxl
biBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorICogYnl0ZXMgdG8gYmUgY29waWVkLgorICovCisK
KyNkZWZpbmUgX0dOVENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKKyNkZWZpbmUgR05UQ09QWV9z
b3VyY2VfZ3JlZiAgICAgICAoMTw8X0dOVENPUFlfc291cmNlX2dyZWYpCisjZGVmaW5lIF9HTlRD
T1BZX2Rlc3RfZ3JlZiAgICAgICAgKDEpCisjZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAg
ICAgKDE8PF9HTlRDT1BZX2Rlc3RfZ3JlZikKKworc3RydWN0IGdudHRhYl9jb3B5IHsKKyAgICAv
KiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHN0cnVjdCBnbnR0YWJfY29weV9wdHIgeworICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICBncmFudF9yZWZfdCByZWY7CisgICAgICAgICAgICB4ZW5f
cGZuX3QgICBnbWZuOworICAgICAgICB9IHU7CisgICAgICAgIGRvbWlkX3QgIGRvbWlkOworICAg
ICAgICB1aW50MTZfdCBvZmZzZXQ7CisgICAgfSBzb3VyY2UsIGRlc3Q7CisgICAgdWludDE2X3Qg
ICAgICBsZW47CisgICAgdWludDE2X3QgICAgICBmbGFnczsgICAgICAgICAgLyogR05UQ09QWV8q
ICovCisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgICAgICBzdGF0dXM7
Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NvcHkgIGdudHRhYl9jb3B5X3Q7CitERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3F1ZXJ5
X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhpbXVtIHNpemVzIG9mIHRoZSBzaGFyZWQK
KyAqIGdyYW50IHRhYmxlLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmll
ZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBk
b21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqLworc3RydWN0IGdudHRh
Yl9xdWVyeV9zaXplIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgIGRv
bTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBucl9mcmFtZXM7Cisg
ICAgdWludDMyX3QgbWF4X25yX2ZyYW1lczsKKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAg
ICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRh
Yl9xdWVyeV9zaXplIGdudHRhYl9xdWVyeV9zaXplX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RShnbnR0YWJfcXVlcnlfc2l6ZV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBs
YWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICogdHJh
Y2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSByZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVu
dHJ5IHdpdGggb25lCisgKiBwb2ludGluZyB0byB0aGUgbWFjaGluZSBhZGRyZXNzIHVuZGVyIDxu
ZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKKyAqIHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwg
ZW50cnkuCisgKiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmlu
ZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhh
bmRsZT4uCisgKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBn
dWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0
aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9hbmRfcmVw
bGFjZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRfdCBob3N0X2FkZHI7
CisgICAgdWludDY0X3QgbmV3X2FkZHI7CisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAg
IC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3Vu
bWFwX2FuZF9yZXBsYWNlIGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZV90OworREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlX3QpOworCisjaWYgX19YRU5fSU5U
RVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisvKgorICogR05UVEFCT1Bfc2V0X3ZlcnNp
b246IFJlcXVlc3QgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdyYW50CisgKiB0YWJsZSBz
aGFyZWQgdGFibGUgc3RydWN0dXJlLiAgVGhpcyBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9y
bWVkCisgKiBvbmNlIGluIGFueSBnaXZlbiBkb21haW4uICBJdCBtdXN0IGJlIHBlcmZvcm1lZCBi
ZWZvcmUgYW55IGdyYW50cworICogYXJlIGFjdGl2YXRlZDsgb3RoZXJ3aXNlLCB0aGUgZG9tYWlu
IHdpbGwgYmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDEuCisgKiBUaGUgb25seSBkZWZpbmVkIHZlcnNp
b25zIGFyZSAxIGFuZCAyLgorICovCitzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIHsKKyAgICAv
KiBJTi9PVVQgcGFyYW1ldGVycyAqLworICAgIHVpbnQzMl90IHZlcnNpb247Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIGdudHRhYl9zZXRfdmVyc2lvbl90OworREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldF92ZXJzaW9uX3QpOworCisKKy8qCisgKiBHTlRU
QUJPUF9nZXRfc3RhdHVzX2ZyYW1lczogR2V0IHRoZSBsaXN0IG9mIGZyYW1lcyB1c2VkIHRvIHN0
b3JlIGdyYW50CisgKiBzdGF0dXMgZm9yIDxkb20+LiBJbiBncmFudCBmb3JtYXQgdmVyc2lvbiAy
LCB0aGUgc3RhdHVzIGlzIHNlcGFyYXRlZAorICogZnJvbSB0aGUgb3RoZXIgc2hhcmVkIGdyYW50
IGZpZWxkcyB0byBhbGxvdyBtb3JlIGVmZmljaWVudCBzeW5jaHJvbml6YXRpb24KKyAqIHVzaW5n
IGJhcnJpZXJzIGluc3RlYWQgb2YgYXRvbWljIGNtcGV4Y2ggb3BlcmF0aW9ucy4KKyAqIDxucl9m
cmFtZXM+IHNwZWNpZnkgdGhlIHNpemUgb2YgdmVjdG9yIDxmcmFtZV9saXN0Pi4KKyAqIFRoZSBm
cmFtZSBhZGRyZXNzZXMgYXJlIHJldHVybmVkIGluIHRoZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5
IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQsIGV2ZW4gaWYgdGhlIHRhYmxlIGlz
IGxhcmdlci4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9N
SURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1h
eSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCisgKi8KK3N0cnVjdCBnbnR0YWJfZ2V0X3N0
YXR1c19mcmFtZXMgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJf
ZnJhbWVzOworICAgIGRvbWlkX3QgIGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAg
ICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAq
LworICAgIFhFTl9HVUVTVF9IQU5ETEUodWludDY0X3QpIGZyYW1lX2xpc3Q7Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1l
c190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3Qp
OworCisvKgorICogR05UVEFCT1BfZ2V0X3ZlcnNpb246IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVy
c2lvbiB3aGljaCBpcyBpbgorICogZWZmZWN0IGZvciBkb21haW4gPGRvbT4uCisgKi8KK3N0cnVj
dCBnbnR0YWJfZ2V0X3ZlcnNpb24geworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBkb21p
ZF90IGRvbTsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KKyAg
ICB1aW50MzJfdCB2ZXJzaW9uOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfdmVyc2lv
biBnbnR0YWJfZ2V0X3ZlcnNpb25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9n
ZXRfdmVyc2lvbl90KTsKKworLyoKKyAqIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRo
ZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4KKyAqLworc3RydWN0IGdudHRhYl9zd2Fw
X2dyYW50X3JlZiB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLworICAgIGdyYW50X3JlZl90IHJl
Zl9hOworICAgIGdyYW50X3JlZl90IHJlZl9iOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisg
ICAgaW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICov
Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3N3YXBfZ3JhbnRfcmVmIGdudHRhYl9zd2FwX2dy
YW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVm
X3QpOworCisvKgorICogSXNzdWUgb25lIG9yIG1vcmUgY2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0
aW9ucyBvbiBhIHBvcnRpb24gb2YgYQorICogcGFnZSBncmFudGVkIHRvIHRoZSBjYWxsaW5nIGRv
bWFpbiBieSBhIGZvcmVpZ24gZG9tYWluLgorICovCitzdHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNo
IHsKKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsKKyAgICAgICAg
Z3JhbnRfcmVmX3QgcmVmOworICAgIH0gYTsKKyAgICB1aW50MTZfdCBvZmZzZXQ7IC8qIG9mZnNl
dCBmcm9tIHN0YXJ0IG9mIGdyYW50ICovCisgICAgdWludDE2X3QgbGVuZ3RoOyAvKiBzaXplIHdp
dGhpbiB0aGUgZ3JhbnQgKi8KKyNkZWZpbmUgR05UVEFCX0NBQ0hFX0NMRUFOICAgICAgICAgICgx
PDwwKQorI2RlZmluZSBHTlRUQUJfQ0FDSEVfSU5WQUwgICAgICAgICAgKDE8PDEpCisjZGVmaW5l
IEdOVFRBQl9DQUNIRV9TT1VSQ0VfR1JFRiAgICAoMTw8MzEpCisgICAgdWludDMyX3Qgb3A7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNoIGdudHRhYl9jYWNoZV9mbHVzaF90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2NhY2hlX2ZsdXNoX3QpOworCisjZW5k
aWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworCisvKgorICogQml0ZmllbGQgdmFs
dWVzIGZvciBnbnR0YWJfbWFwX2dyYW50X3JlZi5mbGFncy4KKyAqLworIC8qIE1hcCB0aGUgZ3Jh
bnQgZW50cnkgZm9yIGFjY2VzcyBieSBJL08gZGV2aWNlcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9k
ZXZpY2VfbWFwICAgICAgKDApCisjZGVmaW5lIEdOVE1BUF9kZXZpY2VfbWFwICAgICAgICgxPDxf
R05UTUFQX2RldmljZV9tYXApCisgLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5
IGhvc3QgQ1BVcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9ob3N0X21hcCAgICAgICAgKDEpCisjZGVm
aW5lIEdOVE1BUF9ob3N0X21hcCAgICAgICAgICgxPDxfR05UTUFQX2hvc3RfbWFwKQorIC8qIEFj
Y2Vzc2VzIHRvIHRoZSBncmFudGVkIGZyYW1lIHdpbGwgYmUgcmVzdHJpY3RlZCB0byByZWFkLW9u
bHkgYWNjZXNzLiAqLworI2RlZmluZSBfR05UTUFQX3JlYWRvbmx5ICAgICAgICAoMikKKyNkZWZp
bmUgR05UTUFQX3JlYWRvbmx5ICAgICAgICAgKDE8PF9HTlRNQVBfcmVhZG9ubHkpCisgLyoKKyAg
KiBHTlRNQVBfaG9zdF9tYXAgc3ViZmxhZzoKKyAgKiAgMCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlz
IHVzYWJsZSBvbmx5IGJ5IHRoZSBndWVzdCBPUy4KKyAgKiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5n
IGlzIHVzYWJsZSBieSBndWVzdCBPUyArIGN1cnJlbnQgYXBwbGljYXRpb24uCisgICovCisjZGVm
aW5lIF9HTlRNQVBfYXBwbGljYXRpb25fbWFwICgzKQorI2RlZmluZSBHTlRNQVBfYXBwbGljYXRp
b25fbWFwICAoMTw8X0dOVE1BUF9hcHBsaWNhdGlvbl9tYXApCisKKyAvKgorICAqIEdOVE1BUF9j
b250YWluc19wdGUgc3ViZmxhZzoKKyAgKiAgMCA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5z
IGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuCisgICogIDEgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250
YWlucyB0aGUgbWFjaGluZSBhZGRlc3Mgb2YgdGhlIFBURSB0byB1cGRhdGUuCisgICovCisjZGVm
aW5lIF9HTlRNQVBfY29udGFpbnNfcHRlICAgICg0KQorI2RlZmluZSBHTlRNQVBfY29udGFpbnNf
cHRlICAgICAoMTw8X0dOVE1BUF9jb250YWluc19wdGUpCisKKyNkZWZpbmUgX0dOVE1BUF9jYW5f
ZmFpbCAgICAgICAgKDUpCisjZGVmaW5lIEdOVE1BUF9jYW5fZmFpbCAgICAgICAgICgxPDxfR05U
TUFQX2Nhbl9mYWlsKQorCisvKgorICogQml0cyB0byBiZSBwbGFjZWQgaW4gZ3Vlc3Qga2VybmVs
IGF2YWlsYWJsZSBQVEUgYml0cyAoYXJjaGl0ZWN0dXJlCisgKiBkZXBlbmRlbnQ7IG9ubHkgc3Vw
cG9ydGVkIHdoZW4gWEVORkVBVF9nbnR0YWJfbWFwX2F2YWlsX2JpdHMgaXMgc2V0KS4KKyAqLwor
I2RlZmluZSBfR05UTUFQX2d1ZXN0X2F2YWlsMCAgICAoMTYpCisjZGVmaW5lIEdOVE1BUF9ndWVz
dF9hdmFpbF9tYXNrICgodWludDMyX3QpfjAgPDwgX0dOVE1BUF9ndWVzdF9hdmFpbDApCisKKy8q
CisgKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUu
CisgKi8KKy8qIGAgZW51bSBncmFudF9zdGF0dXMgeyAqLworI2RlZmluZSBHTlRTVF9va2F5ICAg
ICAgICAgICAgICgwKSAgLyogTm9ybWFsIHJldHVybi4gICAgICAgICAgICAgICAgICAgICAgICAq
LworI2RlZmluZSBHTlRTVF9nZW5lcmFsX2Vycm9yICAgICgtMSkgLyogR2VuZXJhbCB1bmRlZmlu
ZWQgZXJyb3IuICAgICAgICAgICAgICAqLworI2RlZmluZSBHTlRTVF9iYWRfZG9tYWluICAgICAg
ICgtMikgLyogVW5yZWNvZ25zZWQgZG9tYWluIGlkLiAgICAgICAgICAgICAgICAqLworI2RlZmlu
ZSBHTlRTVF9iYWRfZ250cmVmICAgICAgICgtMykgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9w
cmlhdGUgZ250cmVmLiAqLworI2RlZmluZSBHTlRTVF9iYWRfaGFuZGxlICAgICAgICgtNCkgLyog
VW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgaGFuZGxlLiAqLworI2RlZmluZSBHTlRTVF9i
YWRfdmlydF9hZGRyICAgICgtNSkgLyogSW5hcHByb3ByaWF0ZSB2aXJ0dWFsIGFkZHJlc3MgdG8g
bWFwLiAqLworI2RlZmluZSBHTlRTVF9iYWRfZGV2X2FkZHIgICAgICgtNikgLyogSW5hcHByb3By
aWF0ZSBkZXZpY2UgYWRkcmVzcyB0byB1bm1hcC4qLworI2RlZmluZSBHTlRTVF9ub19kZXZpY2Vf
c3BhY2UgICgtNykgLyogT3V0IG9mIHNwYWNlIGluIEkvTyBNTVUuICAgICAgICAgICAgICAqLwor
I2RlZmluZSBHTlRTVF9wZXJtaXNzaW9uX2RlbmllZCAoLTgpIC8qIE5vdCBlbm91Z2ggcHJpdmls
ZWdlIGZvciBvcGVyYXRpb24uICAqLworI2RlZmluZSBHTlRTVF9iYWRfcGFnZSAgICAgICAgICgt
OSkgLyogU3BlY2lmaWVkIHBhZ2Ugd2FzIGludmFsaWQgZm9yIG9wLiAgICAqLworI2RlZmluZSBH
TlRTVF9iYWRfY29weV9hcmcgICAgKC0xMCkgLyogY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBi
b3VuZGFyeS4gICAqLworI2RlZmluZSBHTlRTVF9hZGRyZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJh
bnNmZXIgcGFnZSBhZGRyZXNzIHRvbyBsYXJnZS4gICAgICAqLworI2RlZmluZSBHTlRTVF9lYWdh
aW4gICAgICAgICAgKC0xMikgLyogT3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4uICAgICAg
ICAqLworLyogYCB9ICovCisKKyNkZWZpbmUgR05UVEFCT1BfZXJyb3JfbXNncyB7ICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAib2theSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAidW5kZWZpbmVkIGVycm9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAidW5yZWNvZ25pc2VkIGRvbWFpbiBpZCIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAi
aW52YWxpZCBncmFudCByZWZlcmVuY2UiLCAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxp
ZCBtYXBwaW5nIGhhbmRsZSIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCB2aXJ0
dWFsIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCBkZXZpY2UgYWRk
cmVzcyIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAibm8gc3BhcmUgdHJhbnNsYXRpb24gc2xv
dCBpbiB0aGUgSS9PIE1NVSIsIFwKKyAgICAicGVybWlzc2lvbiBkZW5pZWQiLCAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAiYmFkIHBhZ2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAiY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeSIsICAgICAg
IFwKKyAgICAicGFnZSBhZGRyZXNzIHNpemUgdG9vIGxhcmdlIiwgICAgICAgICAgICAgIFwKKyAg
ICAib3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4iICAgICAgICAgICAgIFwKK30KKworI2Vu
ZGlmIC8qIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZh
cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt
b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog
RW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9pbmZvX3Rh
YmxlLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9pbmZvX3RhYmxlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3YmY5MQotLS0gL2Rldi9udWxsCisrKyBiL2lu
Y2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX2luZm9fdGFibGUuaApAQCAtMCwwICsxLDcyIEBACisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisgKiBodm0vaHZtX2luZm9fdGFibGUuaAorICoKKyAqIEhW
TSBwYXJhbWV0ZXIgYW5kIGluZm9ybWF0aW9uIHRhYmxlLCB3cml0dGVuIGludG8gZ3Vlc3QgbWVt
b3J5IG1hcC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K
KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9J
TkZPX1RBQkxFX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0hWTV9JTkZPX1RBQkxFX0hf
XworCisjZGVmaW5lIEhWTV9JTkZPX1BGTiAgICAgICAgIDB4MDlGCisjZGVmaW5lIEhWTV9JTkZP
X09GRlNFVCAgICAgIDB4ODAwCisjZGVmaW5lIEhWTV9JTkZPX1BBRERSICAgICAgICgoSFZNX0lO
Rk9fUEZOIDw8IDEyKSArIEhWTV9JTkZPX09GRlNFVCkKKworLyogTWF4aW11bSB3ZSBjYW4gc3Vw
cG9ydCB3aXRoIGN1cnJlbnQgdkxBUElDIElEIG1hcHBpbmcuICovCisjZGVmaW5lIEhWTV9NQVhf
VkNQVVMgICAgICAgIDEyOAorCitzdHJ1Y3QgaHZtX2luZm9fdGFibGUgeworICAgIGNoYXIgICAg
ICAgIHNpZ25hdHVyZVs4XTsgLyogIkhWTSBJTkZPIiAqLworICAgIHVpbnQzMl90ICAgIGxlbmd0
aDsKKyAgICB1aW50OF90ICAgICBjaGVja3N1bTsKKworICAgIC8qIFNob3VsZCBmaXJtd2FyZSBi
dWlsZCBBUElDIGRlc2NyaXB0b3JzIChBUElDIE1BRFQgLyBNUCBCSU9TKT8gKi8KKyAgICB1aW50
OF90ICAgICBhcGljX21vZGU7CisKKyAgICAvKiBIb3cgbWFueSBDUFVzIGRvZXMgdGhpcyBkb21h
aW4gaGF2ZT8gKi8KKyAgICB1aW50MzJfdCAgICBucl92Y3B1czsKKworICAgIC8qCisgICAgICog
TUVNT1JZIE1BUCBwcm92aWRlZCBieSBIVk0gZG9tYWluIGJ1aWxkZXIuCisgICAgICogTm90ZXM6
CisgICAgICogIDEuIHBhZ2VfdG9fcGh5cyh4KSA9IHggPDwgMTIKKyAgICAgKiAgMi4gSWYgYSBm
aWVsZCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBkb2VzIG5vdCBleGlzdC4KKyAg
ICAgKi8KKyAgICAvKgorICAgICAqICAweDAgdG8gcGFnZV90b19waHlzKGxvd19tZW1fcGdlbmQp
LTE6CisgICAgICogICAgUkFNIGJlbG93IDRHQiAoZXhjZXB0IGZvciBWR0EgaG9sZSAweEEwMDAw
LTB4QkZGRkYpCisgICAgICovCisgICAgdWludDMyX3QgICAgbG93X21lbV9wZ2VuZDsKKyAgICAv
KgorICAgICAqICBwYWdlX3RvX3BoeXMocmVzZXJ2ZWRfbWVtX3Bnc3RhcnQpIHRvIDB4RkZGRkZG
RkY6CisgICAgICogICAgUmVzZXJ2ZWQgZm9yIHNwZWNpYWwgbWVtb3J5IG1hcHBpbmdzCisgICAg
ICovCisgICAgdWludDMyX3QgICAgcmVzZXJ2ZWRfbWVtX3Bnc3RhcnQ7CisgICAgLyoKKyAgICAg
KiAgMHgxMDAwMDAwMDAgdG8gcGFnZV90b19waHlzKGhpZ2hfbWVtX3BnZW5kKS0xOgorICAgICAq
ICAgIFJBTSBhYm92ZSA0R0IKKyAgICAgKi8KKyAgICB1aW50MzJfdCAgICBoaWdoX21lbV9wZ2Vu
ZDsKKworICAgIC8qIEJpdG1hcCBvZiB3aGljaCBDUFVzIGFyZSBvbmxpbmUgYXQgYm9vdCB0aW1l
LiAqLworICAgIHVpbnQ4X3QgICAgIHZjcHVfb25saW5lWyhIVk1fTUFYX1ZDUFVTICsgNykvOF07
Cit9OworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9IVk1fSU5GT19UQUJMRV9IX18gKi8K
ZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX29wLmggYi9pbmNsdWRlL3hl
bi9wdWJsaWMvaHZtL2h2bV9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjczYmM3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9v
cC5oCkBAIC0wLDAgKzEsNDAyIEBACisvKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19YRU5fUFVC
TElDX0hWTV9IVk1fT1BfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fSFZNX09QX0hfXwor
CisjaW5jbHVkZSAiLi4veGVuLmgiCisjaW5jbHVkZSAiLi4vdHJhY2UuaCIKKyNpbmNsdWRlICIu
Li9ldmVudF9jaGFubmVsLmgiCisKKy8qIEdldC9zZXQgc3ViY29tbWFuZHM6IGV4dHJhIGFyZ3Vt
ZW50ID09IHBvaW50ZXIgdG8geGVuX2h2bV9wYXJhbSBzdHJ1Y3QuICovCisjZGVmaW5lIEhWTU9Q
X3NldF9wYXJhbSAgICAgICAgICAgMAorI2RlZmluZSBIVk1PUF9nZXRfcGFyYW0gICAgICAgICAg
IDEKK3N0cnVjdCB4ZW5faHZtX3BhcmFtIHsKKyAgICBkb21pZF90ICBkb21pZDsgICAgLyogSU4g
Ki8KKyAgICB1aW50MzJfdCBpbmRleDsgICAgLyogSU4gKi8KKyAgICB1aW50NjRfdCB2YWx1ZTsg
ICAgLyogSU4vT1VUICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9wYXJhbSB4ZW5faHZt
X3BhcmFtX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3BhcmFtX3QpOworCisv
KiBTZXQgdGhlIGxvZ2ljYWwgbGV2ZWwgb2Ygb25lIG9mIGEgZG9tYWluJ3MgUENJIElOVHggd2ly
ZXMuICovCisjZGVmaW5lIEhWTU9QX3NldF9wY2lfaW50eF9sZXZlbCAgMgorc3RydWN0IHhlbl9o
dm1fc2V0X3BjaV9pbnR4X2xldmVsIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8K
KyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBQQ0kgSU5UeCBpZGVudGlmaWNhdGlvbiBpbiBQ
Q0kgdG9wb2xvZ3kgKGRvbWFpbjpidXM6ZGV2aWNlOmludHgpLiAqLworICAgIHVpbnQ4X3QgIGRv
bWFpbiwgYnVzLCBkZXZpY2UsIGludHg7CisgICAgLyogQXNzZXJ0aW9uIGxldmVsICgwID0gdW5h
c3NlcnRlZCwgMSA9IGFzc2VydGVkKS4gKi8KKyAgICB1aW50OF90ICBsZXZlbDsKK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9wY2lfaW50eF9sZXZlbCB4ZW5faHZtX3NldF9wY2lfaW50
eF9sZXZlbF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfcGNpX2ludHhf
bGV2ZWxfdCk7CisKKy8qIFNldCB0aGUgbG9naWNhbCBsZXZlbCBvZiBvbmUgb2YgYSBkb21haW4n
cyBJU0EgSVJRIHdpcmVzLiAqLworI2RlZmluZSBIVk1PUF9zZXRfaXNhX2lycV9sZXZlbCAgIDMK
K3N0cnVjdCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsIHsKKyAgICAvKiBEb21haW4gdG8gYmUg
dXBkYXRlZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBJU0EgZGV2aWNlIGlkZW50
aWZpY2F0aW9uLCBieSBJU0EgSVJRICgwLTE1KS4gKi8KKyAgICB1aW50OF90ICBpc2FfaXJxOwor
ICAgIC8qIEFzc2VydGlvbiBsZXZlbCAoMCA9IHVuYXNzZXJ0ZWQsIDEgPSBhc3NlcnRlZCkuICov
CisgICAgdWludDhfdCAgbGV2ZWw7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfaXNh
X2lycV9sZXZlbCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsX3Q7CitERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRSh4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsX3QpOworCisjZGVmaW5lIEhWTU9QX3Nl
dF9wY2lfbGlua19yb3V0ZSAgNAorc3RydWN0IHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlIHsK
KyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAg
ICAvKiBQQ0kgbGluayBpZGVudGlmaWVyICgwLTMpLiAqLworICAgIHVpbnQ4X3QgIGxpbms7Cisg
ICAgLyogSVNBIElSUSAoMS0xNSksIG9yIDAgKGRpc2FibGUgbGluaykuICovCisgICAgdWludDhf
dCAgaXNhX2lycTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0
ZSB4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0ZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGVfdCk7CisKKy8qIEZsdXNoZXMgYWxsIFZDUFUgVExC
czogQGFyZyBtdXN0IGJlIE5VTEwuICovCisjZGVmaW5lIEhWTU9QX2ZsdXNoX3RsYnMgICAgICAg
ICAgNQorCit0eXBlZGVmIGVudW0geworICAgIEhWTU1FTV9yYW1fcncsICAgICAgICAgICAgIC8q
IE5vcm1hbCByZWFkL3dyaXRlIGd1ZXN0IFJBTSAqLworICAgIEhWTU1FTV9yYW1fcm8sICAgICAg
ICAgICAgIC8qIFJlYWQtb25seTsgd3JpdGVzIGFyZSBkaXNjYXJkZWQgKi8KKyAgICBIVk1NRU1f
bW1pb19kbSwgICAgICAgICAgICAvKiBSZWFkcyBhbmQgd3JpdGUgZ28gdG8gdGhlIGRldmljZSBt
b2RlbCAqLworICAgIEhWTU1FTV9tbWlvX3dyaXRlX2RtICAgICAgIC8qIFJlYWQtb25seTsgd3Jp
dGVzIGdvIHRvIHRoZSBkZXZpY2UgbW9kZWwgKi8KK30gaHZtbWVtX3R5cGVfdDsKKworLyogRm9s
bG93aW5nIHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KKyNp
ZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworLyogVHJhY2sg
ZGlydHkgVlJBTS4gKi8KKyNkZWZpbmUgSFZNT1BfdHJhY2tfZGlydHlfdnJhbSAgICA2CitzdHJ1
Y3QgeGVuX2h2bV90cmFja19kaXJ0eV92cmFtIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdHJhY2tl
ZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBOdW1iZXIgb2YgcGFnZXMgdG8gdHJh
Y2suICovCisgICAgdWludDMyX3QgbnI7CisgICAgLyogRmlyc3QgcGZuIHRvIHRyYWNrLiAqLwor
ICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOworICAgIC8qIE9VVCB2YXJpYWJsZS4gKi8K
KyAgICAvKiBEaXJ0eSBiaXRtYXAgYnVmZmVyLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo
dWludDgpIGRpcnR5X2JpdG1hcDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3RyYWNrX2Rp
cnR5X3ZyYW0geGVuX2h2bV90cmFja19kaXJ0eV92cmFtX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh4ZW5faHZtX3RyYWNrX2RpcnR5X3ZyYW1fdCk7CisKKy8qIE5vdGlmeSB0aGF0IHNvbWUg
cGFnZXMgZ290IG1vZGlmaWVkIGJ5IHRoZSBEZXZpY2UgTW9kZWwuICovCisjZGVmaW5lIEhWTU9Q
X21vZGlmaWVkX21lbW9yeSAgICA3CitzdHJ1Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgewor
ICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAg
IC8qIE51bWJlciBvZiBwYWdlcy4gKi8KKyAgICB1aW50MzJfdCBucjsKKyAgICAvKiBGaXJzdCBw
Zm4uICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cit9OwordHlwZWRlZiBzdHJ1
Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnlfdDsKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5X3QpOworCisjZGVm
aW5lIEhWTU9QX3NldF9tZW1fdHlwZSAgICA4CisvKiBOb3RpZnkgdGhhdCBhIHJlZ2lvbiBvZiBt
ZW1vcnkgaXMgdG8gYmUgdHJlYXRlZCBpbiBhIHNwZWNpZmljIHdheS4gKi8KK3N0cnVjdCB4ZW5f
aHZtX3NldF9tZW1fdHlwZSB7CisgICAgLyogRG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCisgICAg
ZG9taWRfdCBkb21pZDsKKyAgICAvKiBNZW1vcnkgdHlwZSAqLworICAgIHVpbnQxNl90IGh2bW1l
bV90eXBlOworICAgIC8qIE51bWJlciBvZiBwYWdlcy4gKi8KKyAgICB1aW50MzJfdCBucjsKKyAg
ICAvKiBGaXJzdCBwZm4uICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX3R5cGUgeGVuX2h2bV9zZXRfbWVtX3R5cGVf
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X21lbV90eXBlX3QpOworCisj
ZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCisK
Ky8qIEhpbnQgZnJvbSBQViBkcml2ZXJzIGZvciBwYWdldGFibGUgZGVzdHJ1Y3Rpb24uICovCisj
ZGVmaW5lIEhWTU9QX3BhZ2V0YWJsZV9keWluZyAgICAgICAgOQorc3RydWN0IHhlbl9odm1fcGFn
ZXRhYmxlX2R5aW5nIHsKKyAgICAvKiBEb21haW4gd2l0aCBhIHBhZ2V0YWJsZSBhYm91dCB0byBi
ZSBkZXN0cm95ZWQuICovCisgICAgZG9taWRfdCAgZG9taWQ7CisgICAgdWludDE2X3QgcGFkWzNd
OyAvKiBhbGlnbiBuZXh0IGZpZWxkIG9uIDgtYnl0ZSBib3VuZGFyeSAqLworICAgIC8qIGd1ZXN0
IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHRvcGxldmVsIHBhZ2V0YWJsZSBkeWluZyAqLworICAg
IHVpbnQ2NF90IGdwYTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3BhZ2V0YWJsZV9keWlu
ZyB4ZW5faHZtX3BhZ2V0YWJsZV9keWluZ190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu
X2h2bV9wYWdldGFibGVfZHlpbmdfdCk7CisKKy8qIEdldCB0aGUgY3VycmVudCBYZW4gdGltZSwg
aW4gbmFub3NlY29uZHMgc2luY2Ugc3lzdGVtIGJvb3QuICovCisjZGVmaW5lIEhWTU9QX2dldF90
aW1lICAgICAgICAgICAgICAxMAorc3RydWN0IHhlbl9odm1fZ2V0X3RpbWUgeworICAgIHVpbnQ2
NF90IG5vdzsgICAgICAvKiBPVVQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2dldF90
aW1lIHhlbl9odm1fZ2V0X3RpbWVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1f
Z2V0X3RpbWVfdCk7CisKKyNkZWZpbmUgSFZNT1BfeGVudHJhY2UgICAgICAgICAgICAgIDExCitz
dHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB7CisgICAgdWludDE2X3QgZXZlbnQsIGV4dHJhX2J5dGVz
OworICAgIHVpbnQ4X3QgZXh0cmFbVFJBQ0VfRVhUUkFfTUFYICogc2l6ZW9mKHVpbnQzMl90KV07
Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB4ZW5faHZtX3hlbnRyYWNlX3Q7
CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3hlbnRyYWNlX3QpOworCisvKiBGb2xs
b3dpbmcgdG9vbHMtb25seSBpbnRlcmZhY2VzIG1heSBjaGFuZ2UgaW4gZnV0dXJlLiAqLworI2lm
IGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisvKiBEZXByZWNh
dGVkIGJ5IFhFTk1FTV9hY2Nlc3Nfb3Bfc2V0X2FjY2VzcyAqLworI2RlZmluZSBIVk1PUF9zZXRf
bWVtX2FjY2VzcyAgICAgICAgMTIKKworLyogRGVwcmVjYXRlZCBieSBYRU5NRU1fYWNjZXNzX29w
X2dldF9hY2Nlc3MgKi8KKyNkZWZpbmUgSFZNT1BfZ2V0X21lbV9hY2Nlc3MgICAgICAgIDEzCisK
KyNkZWZpbmUgSFZNT1BfaW5qZWN0X3RyYXAgICAgICAgICAgICAxNAorLyogSW5qZWN0IGEgdHJh
cCBpbnRvIGEgVkNQVSwgd2hpY2ggd2lsbCBnZXQgdGFrZW4gdXAgb24gdGhlIG5leHQKKyAqIHNj
aGVkdWxpbmcgb2YgaXQuIE5vdGUgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBrbm93IGVub3VnaCBv
ZiB0aGUKKyAqIHN0YXRlIG9mIHRoZSBDUFUgYmVmb3JlIGluamVjdGluZywgdG8ga25vdyB3aGF0
IHRoZSBlZmZlY3Qgb2YKKyAqIGluamVjdGluZyB0aGUgdHJhcCB3aWxsIGJlLgorICovCitzdHJ1
Y3QgeGVuX2h2bV9pbmplY3RfdHJhcCB7CisgICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICov
CisgICAgZG9taWRfdCBkb21pZDsKKyAgICAvKiBWQ1BVICovCisgICAgdWludDMyX3QgdmNwdWlk
OworICAgIC8qIFZlY3RvciBudW1iZXIgKi8KKyAgICB1aW50MzJfdCB2ZWN0b3I7CisgICAgLyog
VHJhcCB0eXBlIChIVk1PUF9UUkFQXyopICovCisgICAgdWludDMyX3QgdHlwZTsKKy8qIE5CLiBU
aGlzIGVudW1lcmF0aW9uIHByZWNpc2VseSBtYXRjaGVzIGh2bS5oOlg4Nl9FVkVOVFRZUEVfKiAq
LworIyBkZWZpbmUgSFZNT1BfVFJBUF9leHRfaW50ICAgIDAgLyogZXh0ZXJuYWwgaW50ZXJydXB0
ICovCisjIGRlZmluZSBIVk1PUF9UUkFQX25taSAgICAgICAgMiAvKiBubWkgKi8KKyMgZGVmaW5l
IEhWTU9QX1RSQVBfaHdfZXhjICAgICAzIC8qIGhhcmR3YXJlIGV4Y2VwdGlvbiAqLworIyBkZWZp
bmUgSFZNT1BfVFJBUF9zd19pbnQgICAgIDQgLyogc29mdHdhcmUgaW50ZXJydXB0IChDRCBubikg
Ki8KKyMgZGVmaW5lIEhWTU9QX1RSQVBfcHJpX3N3X2V4YyA1IC8qIElDRUJQIChGMSkgKi8KKyMg
ZGVmaW5lIEhWTU9QX1RSQVBfc3dfZXhjICAgICA2IC8qIElOVDMgKENDKSwgSU5UTyAoQ0UpICov
CisgICAgLyogRXJyb3IgY29kZSwgb3IgfjB1IHRvIHNraXAgKi8KKyAgICB1aW50MzJfdCBlcnJv
cl9jb2RlOworICAgIC8qIEludHJ1Y3Rpb24gbGVuZ3RoICovCisgICAgdWludDMyX3QgaW5zbl9s
ZW47CisgICAgLyogQ1IyIGZvciBwYWdlIGZhdWx0cyAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3Qg
Y3IyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1faW5qZWN0X3RyYXAgeGVuX2h2bV9pbmpl
Y3RfdHJhcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pbmplY3RfdHJhcF90
KTsKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19f
KSAqLworCisjZGVmaW5lIEhWTU9QX2dldF9tZW1fdHlwZSAgICAxNQorLyogUmV0dXJuIGh2bW1l
bV90eXBlX3QgZm9yIHRoZSBzcGVjaWZpZWQgcGZuLiAqLworc3RydWN0IHhlbl9odm1fZ2V0X21l
bV90eXBlIHsKKyAgICAvKiBEb21haW4gdG8gYmUgcXVlcmllZC4gKi8KKyAgICBkb21pZF90IGRv
bWlkOworICAgIC8qIE9VVCB2YXJpYWJsZS4gKi8KKyAgICB1aW50MTZfdCBtZW1fdHlwZTsKKyAg
ICB1aW50MTZfdCBwYWRbMl07IC8qIGFsaWduIG5leHQgZmllbGQgb24gOC1ieXRlIGJvdW5kYXJ5
ICovCisgICAgLyogSU4gdmFyaWFibGUuICovCisgICAgdWludDY0X3QgcGZuOworfTsKK3R5cGVk
ZWYgc3RydWN0IHhlbl9odm1fZ2V0X21lbV90eXBlIHhlbl9odm1fZ2V0X21lbV90eXBlX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF9tZW1fdHlwZV90KTsKKworLyogRm9s
bG93aW5nIHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KKyNp
ZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworLyogTVNJIGlu
amVjdGlvbiBmb3IgZW11bGF0ZWQgZGV2aWNlcyAqLworI2RlZmluZSBIVk1PUF9pbmplY3RfbXNp
ICAgICAgICAgMTYKK3N0cnVjdCB4ZW5faHZtX2luamVjdF9tc2kgeworICAgIC8qIERvbWFpbiB0
byBiZSBpbmplY3RlZCAqLworICAgIGRvbWlkX3QgICBkb21pZDsKKyAgICAvKiBEYXRhIC0tIGxv
d2VyIDMyIGJpdHMgKi8KKyAgICB1aW50MzJfdCAgZGF0YTsKKyAgICAvKiBBZGRyZXNzICgweGZl
ZXh4eHh4KSAqLworICAgIHVpbnQ2NF90ICBhZGRyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9o
dm1faW5qZWN0X21zaSB4ZW5faHZtX2luamVjdF9tc2lfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKHhlbl9odm1faW5qZWN0X21zaV90KTsKKworLyoKKyAqIElPUkVRIFNlcnZlcnMKKyAqCisg
KiBUaGUgaW50ZXJmYWNlIGJldHdlZW4gYW4gSS9PIGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxsZWQg
YW4gSU9SRVEgU2VydmVyLgorICogQSBkb21haW4gc3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2FjeScg
SU9SRVEgU2VydmVyIHdoaWNoIGlzIGluc3RhbnRpYXRlZCBpZgorICogcGFyYW1ldGVyLi4uCisg
KgorICogSFZNX1BBUkFNX0lPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFp
bmluZyB0aGUgc3luY2hyb25vdXMKKyAqIGlvcmVxIHN0cnVjdHVyZXMpLCBvci4uLgorICogSFZN
X1BBUkFNX0JVRklPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0
aGUgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklPUkVR
X0VWVENITiBpcyByZWFkICh0byBnZXQgdGhlIGV2ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNlcwor
ICogdG8gcmVxdWVzdCBidWZmZXJlZCBJL08gZW11bGF0aW9uKS4KKyAqCisgKiBUaGUgZm9sbG93
aW5nIGh5cGVyY2FsbHMgZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2YgSU9SRVEgU2VydmVycyBm
b3IKKyAqICdzZWNvbmRhcnknIGVtdWxhdG9ycyB3aGljaCBhcmUgaW52b2tlZCB0byBpbXBsZW1l
bnQgcG9ydCBJL08sIG1lbW9yeSwgb3IKKyAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIHdoaWNo
IHRoZXkgZXhwbGljaXRseSByZWdpc3Rlci4KKyAqLworCit0eXBlZGVmIHVpbnQxNl90IGlvc2Vy
dmlkX3Q7CisKKy8qCisgKiBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOiBJbnN0YW50aWF0ZSBh
IG5ldyBJT1JFUSBTZXJ2ZXIgZm9yIGEgc2Vjb25kYXJ5CisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbXVsYXRvciBzZXJ2aWNpbmcgZG9tYWluIDxkb21pZD4uCisgKgorICogVGhlIDxp
ZD4gaGFuZGVkIGJhY2sgaXMgdW5pcXVlIGZvciA8ZG9taWQ+LiBJZiA8aGFuZGxlX2J1ZmlvcmVx
PiBpcyB6ZXJvCisgKiB0aGUgYnVmZmVyZWQgaW9yZXEgcmluZyB3aWxsIG5vdCBiZSBhbGxvY2F0
ZWQgYW5kIGhlbmNlIGFsbCBlbXVsYXRpb24KKyAqIHJlcXVlc3RlcyB0byB0aGlzIHNlcnZlciB3
aWxsIGJlIHN5bmNocm9ub3VzLgorICovCisjZGVmaW5lIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2
ZXIgMTcKK3N0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgeworICAgIGRvbWlkX3Qg
ZG9taWQ7ICAgICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLworICAgIHVp
bnQ4X3QgaGFuZGxlX2J1ZmlvcmVxOyAvKiBJTiAtIHNob3VsZCBzZXJ2ZXIgaGFuZGxlIGJ1ZmZl
cmVkIGlvcmVxcyAqLworICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgICAgICAvKiBPVVQgLSBzZXJ2
ZXIgaWQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIg
eGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdCk7CisKKy8qCisgKiBIVk1PUF9nZXRfaW9yZXFf
c2VydmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0byBhY2Nlc3MK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9SRVEgU2VydmVyIDxpZD4uCisgKgor
ICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0
dXJlcyBhbmQgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4g
dXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCisgKiBob3N0ZWQgaW4gZG9tYWlu
IDxkb21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KKyAqIHJlc3Bl
Y3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVm
ZmVyZWQKKyAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQg
dG8gZXZlbnQgY2hhbm5lbAorICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4g
KFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgorICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJl
cXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKKyAqIHN0cnVjdHVyZXMg
aW4gPGlvcmVxX3Bmbj4pLgorICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcg
YnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCisgKiB2YWx1ZXMgaGFuZGVkIGJh
Y2sgaW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4K
KyAqLworI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMTgKK3N0cnVjdCB4ZW5f
aHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7CisgICAgZG9taWRfdCBkb21pZDsgICAgICAgICAg
ICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCisgICAgaW9zZXJ2aWRfdCBp
ZDsgICAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCisgICAgZXZ0Y2huX3BvcnRf
dCBidWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KKyAgICB1
aW50NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8K
KyAgICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9y
ZXEgcGZuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2lu
Zm8geGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpOworCisvKgorICogSFZNX21hcF9p
b19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4g
PGRvbWlkPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbXVsYXRp
b24gYnkgdGhlIGNsaWVudCBvZiBJT1JFUQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlcnZlciA8aWQ+CisgKiBIVk1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2
ZXI6IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIDxkb21pZD4KKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElP
UkVRCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+
CisgKgorICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRl
ZDogcG9ydCBJL08sIG1lbW9yeSBhY2Nlc3NlcworICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNj
ZXNzZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3RlcyB3aGljaCB0eXBlIG9mIHJhbmdlCisgKiB0
aGUgPHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgor
ICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJlIHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9k
ZXZpY2UvZnVuY3Rpb24gdmFsdWVzCisgKiB3aGljaCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0
aGUgSFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3JvIGJlbG93LgorICoKKyAqIE5PVEU6IHVubGVz
cyBhbiBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBw
ZWQKKyAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8g
dGhhdCBlbXVsYXRvci4KKyAqLworI2RlZmluZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFf
c2VydmVyIDE5CisjZGVmaW5lIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVy
IDIwCitzdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7CisgICAgZG9taWRfdCBkb21pZDsgICAgICAg
ICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLworICAgIGlvc2VydmlkX3Qg
aWQ7ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICB1aW50MzJfdCB0eXBl
OyAgICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLworIyBkZWZpbmUgSFZNT1Bf
SU9fUkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KKyMgZGVmaW5lIEhWTU9QX0lP
X1JBTkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2UgKi8KKyMgZGVmaW5lIEhWTU9QX0lPX1JBTkdF
X1BDSSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLworICAgIHVpbnQ2
NF9hbGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBv
ZiByYW5nZSAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9p
b19yYW5nZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsK
KworI2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIsZCxmKSAgICAgICAgICAgICAgICAgXAorCSgo
KChzKSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgXAorCSAoKChiKSAmIDB4
ZmYpIDw8IDgpIHwgICAgICAgICAgICAgICAgICAgICAgXAorCSAoKChkKSAmIDB4MWYpIDw8IDMp
IHwgICAgICAgICAgICAgICAgICAgICAgXAorCSAoKGYpICYgMHgwNykpCisKKy8qCisgKiBIVk1P
UF9kZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2Vy
dmljaW5nIGRvbWFpbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb21pZD4uCisg
KgorICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVy
ZWdpc3RlcmVkLgorICovCisjZGVmaW5lIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCitz
dHJ1Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB7CisgICAgZG9taWRfdCBkb21pZDsg
LyogSU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOyAvKiBJ
TiAtIHNlcnZlciBpZCAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3Jl
cV9zZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KTsKKworLyoKKyAqIEhWTU9Q
X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2
ZXIgPGlkPiBzZXJ2aWNpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFp
biA8ZG9taWQ+LgorICoKKyAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFu
eSBlbXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMgaW4gdGhlCisgKiBlbmFibGVkIHN0YXRl
LgorICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3Jl
cV9mbiAoc2VlCisgKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmlu
Z2Z1bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlzIGluCisgKiB0aGUgZW5hYmxlZCBzdGF0ZS4K
KyAqLworI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDIyCitzdHJ1Y3QgeGVu
X2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKKyAgICBkb21pZF90IGRvbWlkOyAgIC8qIElO
IC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCisgICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAt
IHNlcnZlciBpZCAqLworICAgIHVpbnQ4X3QgZW5hYmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLwor
fTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB4ZW5faHZt
X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KTsKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5f
XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLworCisjaWYgZGVmaW5lZChfX2kzODZfXykg
fHwgZGVmaW5lZChfX3g4Nl82NF9fKQorCisvKgorICogSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxf
dmVjdG9yOiBTZXQgYSA8dmVjdG9yPiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBldmVudAorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsIHVwY2FsbHMgb24gdGhlIHNw
ZWNpZmllZCA8dmNwdT4uIElmIHNldCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcyB2ZWN0b3Igd2lsbCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBnbG9iYWwgY2FsbGJhY2sgdmlhIChz
ZWUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX1BBUkFNX0NBTExCQUNL
X0lSUSkuCisgKi8KKyNkZWZpbmUgSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yIDIzCitz
dHJ1Y3QgeGVuX2h2bV9ldnRjaG5fdXBjYWxsX3ZlY3RvciB7CisgICAgdWludDMyX3QgdmNwdTsK
KyAgICB1aW50OF90IHZlY3RvcjsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2V2dGNobl91
cGNhbGxfdmVjdG9yIHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdCk7CisKKyNlbmRpZiAv
KiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxl
czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0
OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor
ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL3BhcmFtcy5oIGIvaW5jbHVk
ZS94ZW4vcHVibGljL2h2bS9wYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNDJlMjgzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2h2bS9w
YXJhbXMuaApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAq
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K
KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor
ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9fWEVO
X1BVQkxJQ19IVk1fUEFSQU1TX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX1BBUkFNU19I
X18KKworI2luY2x1ZGUgImh2bV9vcC5oIgorCisvKgorICogUGFyYW1ldGVyIHNwYWNlIGZvciBI
Vk1PUF97c2V0LGdldH1fcGFyYW0uCisgKi8KKworLyoKKyAqIEhvdyBzaG91bGQgQ1BVMCBldmVu
dC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYmUgZGVsaXZlcmVkPworICogdmFsWzYzOjU2XSA9PSAw
OiB2YWxbNTU6MF0gaXMgYSBkZWxpdmVyeSBHU0kgKEdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0KS4K
KyAqIHZhbFs2Mzo1Nl0gPT0gMTogdmFsWzU1OjBdIGlzIGEgZGVsaXZlcnkgUENJIElOVHggbGlu
ZSwgYXMgZm9sbG93czoKKyAqICAgICAgICAgICAgICAgICAgRG9tYWluID0gdmFsWzQ3OjMyXSwg
QnVzICA9IHZhbFszMToxNl0sCisgKiAgICAgICAgICAgICAgICAgIERldkZuICA9IHZhbFsxNTog
OF0sIEludFggPSB2YWxbIDE6IDBdCisgKiB2YWxbNjM6NTZdID09IDI6IHZhbFs3OjBdIGlzIGEg
dmVjdG9yIG51bWJlciwgY2hlY2sgZm9yCisgKiAgICAgICAgICAgICAgICAgIFhFTkZFQVRfaHZt
X2NhbGxiYWNrX3ZlY3RvciB0byBrbm93IGlmIHRoaXMgZGVsaXZlcnkKKyAqICAgICAgICAgICAg
ICAgICAgbWV0aG9kIGlzIGF2YWlsYWJsZS4KKyAqIElmIHZhbCA9PSAwIHRoZW4gQ1BVMCBldmVu
dC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBkZWxpdmVyZWQuCisgKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX0NBTExCQUNLX0lSUSAwCisKKy8qCisgKiBUaGVzZSBhcmUgbm90IHVzZWQgYnkg
WGVuLiBUaGV5IGFyZSBoZXJlIGZvciBjb252ZW5pZW5jZSBvZiBIVk0tZ3Vlc3QKKyAqIHhlbmJ1
cyBpbXBsZW1lbnRhdGlvbnMuCisgKi8KKyNkZWZpbmUgSFZNX1BBUkFNX1NUT1JFX1BGTiAgICAx
CisjZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9FVlRDSE4gMgorCisjZGVmaW5lIEhWTV9QQVJBTV9Q
QUVfRU5BQkxFRCAgNAorCisjZGVmaW5lIEhWTV9QQVJBTV9JT1JFUV9QRk4gICAgNQorCisjZGVm
aW5lIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gNgorI2RlZmluZSBIVk1fUEFSQU1fQlVGSU9SRVFf
RVZUQ0hOIDI2CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p
CisKKy8qCisgKiBWaXJpZGlhbiBlbmxpZ2h0ZW5tZW50cworICoKKyAqIChTZWUgaHR0cDovL2Rv
d25sb2FkLm1pY3Jvc29mdC5jb20vZG93bmxvYWQvQS9CLzQvQUI0M0EzNEUtQkREMC00RkE2LUJE
RUYtNzlFRUYxNkU4ODBCL0h5cGVydmlzb3IlMjBUb3AlMjBMZXZlbCUyMEZ1bmN0aW9uYWwlMjBT
cGVjaWZpY2F0aW9uJTIwdjQuMC5kb2N4KQorICoKKyAqIFRvIGV4cG9zZSB2aXJpZGlhbiBlbmxp
Z2h0ZW5tZW50cyB0byB0aGUgZ3Vlc3Qgc2V0IHRoaXMgcGFyYW1ldGVyCisgKiB0byB0aGUgZGVz
aXJlZCBmZWF0dXJlIG1hc2suIFRoZSBiYXNlIGZlYXR1cmUgc2V0IG11c3QgYmUgcHJlc2VudAor
ICogaW4gYW55IHZhbGlkIGZlYXR1cmUgbWFzay4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fVklS
SURJQU4gICAgIDkKKworLyogQmFzZStGcmVxIHZpcmlkaWFuIGZlYXR1cmUgc2V0czoKKyAqCisg
KiAtIEh5cGVyY2FsbCBNU1JzIChIVl9YNjRfTVNSX0dVRVNUX09TX0lEIGFuZCBIVl9YNjRfTVNS
X0hZUEVSQ0FMTCkKKyAqIC0gQVBJQyBhY2Nlc3MgTVNScyAoSFZfWDY0X01TUl9FT0ksIEhWX1g2
NF9NU1JfSUNSIGFuZCBIVl9YNjRfTVNSX1RQUikKKyAqIC0gVmlydHVhbCBQcm9jZXNzb3IgaW5k
ZXggTVNSIChIVl9YNjRfTVNSX1ZQX0lOREVYKQorICogLSBUaW1lciBmcmVxdWVuY3kgTVNScyAo
SFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZIGFuZAorICogICBIVl9YNjRfTVNSX0FQSUNfRlJFUVVF
TkNZKQorICovCisjZGVmaW5lIF9IVk1QVl9iYXNlX2ZyZXEgMAorI2RlZmluZSBIVk1QVl9iYXNl
X2ZyZXEgICgxIDw8IF9IVk1QVl9iYXNlX2ZyZXEpCisKKy8qIEZlYXR1cmUgc2V0IG1vZGlmaWNh
dGlvbnMgKi8KKworLyogRGlzYWJsZSB0aW1lciBmcmVxdWVuY3kgTVNScyAoSFZfWDY0X01TUl9U
U0NfRlJFUVVFTkNZIGFuZAorICogSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWSkuCisgKiBUaGlz
IG1vZGlmaWNhdGlvbiByZXN0b3JlcyB0aGUgdmlyaWRpYW4gZmVhdHVyZSBzZXQgdG8gdGhlCisg
KiBvcmlnaW5hbCAnYmFzZScgc2V0IGV4cG9zZWQgaW4gcmVsZWFzZXMgcHJpb3IgdG8gWGVuIDQu
NC4KKyAqLworI2RlZmluZSBfSFZNUFZfbm9fZnJlcSAxCisjZGVmaW5lIEhWTVBWX25vX2ZyZXEg
ICgxIDw8IF9IVk1QVl9ub19mcmVxKQorCisvKiBFbmFibGUgUGFydGl0aW9uIFRpbWUgUmVmZXJl
bmNlIENvdW50ZXIgKEhWX1g2NF9NU1JfVElNRV9SRUZfQ09VTlQpICovCisjZGVmaW5lIF9IVk1Q
Vl90aW1lX3JlZl9jb3VudCAyCisjZGVmaW5lIEhWTVBWX3RpbWVfcmVmX2NvdW50ICAoMSA8PCBf
SFZNUFZfdGltZV9yZWZfY291bnQpCisKKy8qIEVuYWJsZSBSZWZlcmVuY2UgVFNDIFBhZ2UgKEhW
X1g2NF9NU1JfUkVGRVJFTkNFX1RTQykgKi8KKyNkZWZpbmUgX0hWTVBWX3JlZmVyZW5jZV90c2Mg
MworI2RlZmluZSBIVk1QVl9yZWZlcmVuY2VfdHNjICAoMSA8PCBfSFZNUFZfcmVmZXJlbmNlX3Rz
YykKKworI2RlZmluZSBIVk1QVl9mZWF0dXJlX21hc2sgXAorCShIVk1QVl9iYXNlX2ZyZXEgfCBc
CisJIEhWTVBWX25vX2ZyZXEgfCBcCisJIEhWTVBWX3RpbWVfcmVmX2NvdW50IHwgXAorCSBIVk1Q
Vl9yZWZlcmVuY2VfdHNjKQorCisjZW5kaWYKKworLyoKKyAqIFNldCBtb2RlIGZvciB2aXJ0dWFs
IHRpbWVycyAoY3VycmVudGx5IHg4NiBvbmx5KToKKyAqICBkZWxheV9mb3JfbWlzc2VkX3RpY2tz
IChkZWZhdWx0KToKKyAqICAgRG8gbm90IGFkdmFuY2UgYSB2Y3B1J3MgdGltZSBiZXlvbmQgdGhl
IGNvcnJlY3QgZGVsaXZlcnkgdGltZSBmb3IKKyAqICAgaW50ZXJydXB0cyB0aGF0IGhhdmUgYmVl
biBtaXNzZWQgZHVlIHRvIHByZWVtcHRpb24uIERlbGl2ZXIgbWlzc2VkCisgKiAgIGludGVycnVw
dHMgd2hlbiB0aGUgdmNwdSBpcyByZXNjaGVkdWxlZCBhbmQgYWR2YW5jZSB0aGUgdmNwdSdzIHZp
cnR1YWwKKyAqICAgdGltZSBzdGVwd2lzZSBmb3IgZWFjaCBvbmUuCisgKiAgbm9fZGVsYXlfZm9y
X21pc3NlZF90aWNrczoKKyAqICAgQXMgYWJvdmUsIG1pc3NlZCBpbnRlcnJ1cHRzIGFyZSBkZWxp
dmVyZWQsIGJ1dCBndWVzdCB0aW1lIGFsd2F5cyB0cmFja3MKKyAqICAgd2FsbGNsb2NrIChpLmUu
LCByZWFsKSB0aW1lIHdoaWxlIGRvaW5nIHNvLgorICogIG5vX21pc3NlZF90aWNrc19wZW5kaW5n
OgorICogICBObyBtaXNzZWQgaW50ZXJydXB0cyBhcmUgaGVsZCBwZW5kaW5nLiBJbnN0ZWFkLCB0
byBlbnN1cmUgdGlja3MgYXJlCisgKiAgIGRlbGl2ZXJlZCBhdCBzb21lIG5vbi16ZXJvIHJhdGUs
IGlmIHdlIGRldGVjdCBtaXNzZWQgdGlja3MgdGhlbiB0aGUKKyAqICAgaW50ZXJuYWwgdGljayBh
bGFybSBpcyBub3QgZGlzYWJsZWQgaWYgdGhlIFZDUFUgaXMgcHJlZW1wdGVkIGR1cmluZyB0aGUK
KyAqICAgbmV4dCB0aWNrIHBlcmlvZC4KKyAqICBvbmVfbWlzc2VkX3RpY2tfcGVuZGluZzoKKyAq
ICAgTWlzc2VkIGludGVycnVwdHMgYXJlIGNvbGxhcHNlZCB0b2dldGhlciBhbmQgZGVsaXZlcmVk
IGFzIG9uZSAnbGF0ZSB0aWNrJy4KKyAqICAgR3Vlc3QgdGltZSBhbHdheXMgdHJhY2tzIHdhbGxj
bG9jayAoaS5lLiwgcmVhbCkgdGltZS4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fVElNRVJfTU9E
RSAgIDEwCisjZGVmaW5lIEhWTVBUTV9kZWxheV9mb3JfbWlzc2VkX3RpY2tzICAgIDAKKyNkZWZp
bmUgSFZNUFRNX25vX2RlbGF5X2Zvcl9taXNzZWRfdGlja3MgMQorI2RlZmluZSBIVk1QVE1fbm9f
bWlzc2VkX3RpY2tzX3BlbmRpbmcgICAyCisjZGVmaW5lIEhWTVBUTV9vbmVfbWlzc2VkX3RpY2tf
cGVuZGluZyAgIDMKKworLyogQm9vbGVhbjogRW5hYmxlIHZpcnR1YWwgSFBFVCAoaGlnaC1wcmVj
aXNpb24gZXZlbnQgdGltZXIpPyAoeDg2LW9ubHkpICovCisjZGVmaW5lIEhWTV9QQVJBTV9IUEVU
X0VOQUJMRUQgMTEKKworLyogSWRlbnRpdHktbWFwIHBhZ2UgZGlyZWN0b3J5IHVzZWQgYnkgSW50
ZWwgRVBUIHdoZW4gQ1IwLlBHPTAuICovCisjZGVmaW5lIEhWTV9QQVJBTV9JREVOVF9QVCAgICAg
MTIKKworLyogRGV2aWNlIE1vZGVsIGRvbWFpbiwgZGVmYXVsdHMgdG8gMC4gKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX0RNX0RPTUFJTiAgICAxMworCisvKiBBQ1BJIFMgc3RhdGU6IGN1cnJlbnRseSBz
dXBwb3J0IFMwIGFuZCBTMyBvbiB4ODYuICovCisjZGVmaW5lIEhWTV9QQVJBTV9BQ1BJX1NfU1RB
VEUgMTQKKworLyogVFNTIHVzZWQgb24gSW50ZWwgd2hlbiBDUjAuUEU9MC4gKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX1ZNODZfVFNTICAgICAxNQorCisvKiBCb29sZWFuOiBFbmFibGUgYWxpZ25pbmcg
YWxsIHBlcmlvZGljIHZwdHMgdG8gcmVkdWNlIGludGVycnVwdHMgKi8KKyNkZWZpbmUgSFZNX1BB
UkFNX1ZQVF9BTElHTiAgICAxNgorCisvKiBDb25zb2xlIGRlYnVnIHNoYXJlZCBtZW1vcnkgcmlu
ZyBhbmQgZXZlbnQgY2hhbm5lbCAqLworI2RlZmluZSBIVk1fUEFSQU1fQ09OU09MRV9QRk4gICAg
MTcKKyNkZWZpbmUgSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOIDE4CisKKy8qCisgKiBTZWxlY3Qg
bG9jYXRpb24gb2YgQUNQSSBQTTFhIGFuZCBUTVIgY29udHJvbCBibG9ja3MuIEN1cnJlbnRseSB0
d28gbG9jYXRpb25zCisgKiBhcmUgc3VwcG9ydGVkLCBzcGVjaWZpZWQgYnkgdmVyc2lvbiAwIG9y
IDEgaW4gdGhpcyBwYXJhbWV0ZXI6CisgKiAgIC0gMDogZGVmYXVsdCwgdXNlIHRoZSBvbGQgYWRk
cmVzc2VzCisgKiAgICAgICAgUE0xQV9FVlQgPT0gMHgxZjQwOyBQTTFBX0NOVCA9PSAweDFmNDQ7
IFBNX1RNUiA9PSAweDFmNDgKKyAqICAgLSAxOiB1c2UgdGhlIG5ldyBkZWZhdWx0IHFlbXUgYWRk
cmVzc2VzCisgKiAgICAgICAgUE0xQV9FVlQgPT0gMHhiMDAwOyBQTTFBX0NOVCA9PSAweGIwMDQ7
IFBNX1RNUiA9PSAweGIwMDgKKyAqIFlvdSBjYW4gZmluZCB0aGVzZSBhZGRyZXNzIGRlZmluaXRp
b25zIGluIDxodm0vaW9yZXEuaD4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fQUNQSV9JT1BPUlRT
X0xPQ0FUSU9OIDE5CisKKy8qIEVuYWJsZSBibG9ja2luZyBtZW1vcnkgZXZlbnRzLCBhc3luYyBv
ciBzeW5jIChwYXVzZSB2Y3B1IHVudGlsIHJlc3BvbnNlKQorICogb25jaGFuZ2Vvbmx5IGluZGlj
YXRlcyBtZXNzYWdlcyBvbmx5IG9uIGEgY2hhbmdlIG9mIHZhbHVlICovCisjZGVmaW5lIEhWTV9Q
QVJBTV9NRU1PUllfRVZFTlRfQ1IwICAgICAgICAgIDIwCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1P
UllfRVZFTlRfQ1IzICAgICAgICAgIDIxCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRf
Q1I0ICAgICAgICAgIDIyCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfSU5UMyAgICAg
ICAgIDIzCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfU0lOR0xFX1NURVAgIDI1Cisj
ZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfTVNSICAgICAgICAgIDMwCisKKyNkZWZpbmUg
SFZNUE1FX01PREVfTUFTSyAgICAgICAoMyA8PCAwKQorI2RlZmluZSBIVk1QTUVfbW9kZV9kaXNh
YmxlZCAgIDAKKyNkZWZpbmUgSFZNUE1FX21vZGVfYXN5bmMgICAgICAxCisjZGVmaW5lIEhWTVBN
RV9tb2RlX3N5bmMgICAgICAgMgorI2RlZmluZSBIVk1QTUVfb25jaGFuZ2Vvbmx5ICAgICgxIDw8
IDIpCisKKy8qIEJvb2xlYW46IEVuYWJsZSBuZXN0ZWRodm0gKGh2bSBvbmx5KSAqLworI2RlZmlu
ZSBIVk1fUEFSQU1fTkVTVEVESFZNICAgIDI0CisKKy8qIFBhcmFtcyBmb3IgdGhlIG1lbSBldmVu
dCByaW5ncyAqLworI2RlZmluZSBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOICAgMjcKKyNkZWZp
bmUgSFZNX1BBUkFNX0FDQ0VTU19SSU5HX1BGTiAgIDI4CisjZGVmaW5lIEhWTV9QQVJBTV9TSEFS
SU5HX1JJTkdfUEZOICAyOQorCisvKiBTSFVURE9XTl8qIGFjdGlvbiBpbiBjYXNlIG9mIGEgdHJp
cGxlIGZhdWx0ICovCisjZGVmaW5lIEhWTV9QQVJBTV9UUklQTEVfRkFVTFRfUkVBU09OIDMxCisK
KyNkZWZpbmUgSFZNX1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4gMzIKKyNkZWZpbmUgSFZNX1BBUkFN
X05SX0lPUkVRX1NFUlZFUl9QQUdFUyAzMworCisvKiBMb2NhdGlvbiBvZiB0aGUgVk0gR2VuZXJh
dGlvbiBJRCBpbiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAqLworI2RlZmluZSBIVk1f
UEFSQU1fVk1fR0VORVJBVElPTl9JRF9BRERSIDM0CisKKyNkZWZpbmUgSFZNX05SX1BBUkFNUyAg
ICAgICAgICAzNQorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fICovCmRp
ZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaW8veHNfd2lyZS5oIGIvaW5jbHVkZS94ZW4v
cHVibGljL2lvL3hzX3dpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YTBjZGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dpcmUu
aApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIERldGFpbHMgb2YgdGhlICJ3aXJlIiBwcm90b2Nv
bCBiZXR3ZWVuIFhlbiBTdG9yZSBEYWVtb24gYW5kIGNsaWVudAorICogbGlicmFyeSBvciBndWVz
dCBrZXJuZWwuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv
CisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY
UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElO
R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBSdXN0eSBSdXNz
ZWxsIElCTSBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX1hTX1dJUkVfSAorI2RlZmluZSBf
WFNfV0lSRV9ICisKK2VudW0geHNkX3NvY2ttc2dfdHlwZQoreworICAgIFhTX0RFQlVHLAorICAg
IFhTX0RJUkVDVE9SWSwKKyAgICBYU19SRUFELAorICAgIFhTX0dFVF9QRVJNUywKKyAgICBYU19X
QVRDSCwKKyAgICBYU19VTldBVENILAorICAgIFhTX1RSQU5TQUNUSU9OX1NUQVJULAorICAgIFhT
X1RSQU5TQUNUSU9OX0VORCwKKyAgICBYU19JTlRST0RVQ0UsCisgICAgWFNfUkVMRUFTRSwKKyAg
ICBYU19HRVRfRE9NQUlOX1BBVEgsCisgICAgWFNfV1JJVEUsCisgICAgWFNfTUtESVIsCisgICAg
WFNfUk0sCisgICAgWFNfU0VUX1BFUk1TLAorICAgIFhTX1dBVENIX0VWRU5ULAorICAgIFhTX0VS
Uk9SLAorICAgIFhTX0lTX0RPTUFJTl9JTlRST0RVQ0VELAorICAgIFhTX1JFU1VNRSwKKyAgICBY
U19TRVRfVEFSR0VULAorICAgIFhTX1JFU1RSSUNULAorICAgIFhTX1JFU0VUX1dBVENIRVMsCisK
KyAgICBYU19JTlZBTElEID0gMHhmZmZmIC8qIEd1YXJhbnRlZWQgdG8gcmVtYWluIGFuIGludmFs
aWQgdHlwZSAqLworfTsKKworI2RlZmluZSBYU19XUklURV9OT05FICJOT05FIgorI2RlZmluZSBY
U19XUklURV9DUkVBVEUgIkNSRUFURSIKKyNkZWZpbmUgWFNfV1JJVEVfQ1JFQVRFX0VYQ0wgIkNS
RUFURXxFWENMIgorCisvKiBXZSBoYW5kIGVycm9ycyBhcyBzdHJpbmdzLCBmb3IgcG9ydGFiaWxp
dHkuICovCitzdHJ1Y3QgeHNkX2Vycm9ycworeworICAgIGludCBlcnJudW07CisgICAgY29uc3Qg
Y2hhciAqZXJyc3RyaW5nOworfTsKKyNpZmRlZiBFSU5WQUwKKyNkZWZpbmUgWFNEX0VSUk9SKHgp
IHsgeCwgI3ggfQorLyogTElOVEVEOiBzdGF0aWMgdW51c2VkICovCitzdGF0aWMgc3RydWN0IHhz
ZF9lcnJvcnMgeHNkX2Vycm9yc1tdCisjaWYgZGVmaW5lZChfX0dOVUNfXykKK19fYXR0cmlidXRl
X18oKHVudXNlZCkpCisjZW5kaWYKKyAgICA9IHsKKyAgICBYU0RfRVJST1IoRUlOVkFMKSwKKyAg
ICBYU0RfRVJST1IoRUFDQ0VTKSwKKyAgICBYU0RfRVJST1IoRUVYSVNUKSwKKyAgICBYU0RfRVJS
T1IoRUlTRElSKSwKKyAgICBYU0RfRVJST1IoRU5PRU5UKSwKKyAgICBYU0RfRVJST1IoRU5PTUVN
KSwKKyAgICBYU0RfRVJST1IoRU5PU1BDKSwKKyAgICBYU0RfRVJST1IoRUlPKSwKKyAgICBYU0Rf
RVJST1IoRU5PVEVNUFRZKSwKKyAgICBYU0RfRVJST1IoRU5PU1lTKSwKKyAgICBYU0RfRVJST1Io
RVJPRlMpLAorICAgIFhTRF9FUlJPUihFQlVTWSksCisgICAgWFNEX0VSUk9SKEVBR0FJTiksCisg
ICAgWFNEX0VSUk9SKEVJU0NPTk4pLAorICAgIFhTRF9FUlJPUihFMkJJRykKK307CisjZW5kaWYK
Kworc3RydWN0IHhzZF9zb2NrbXNnCit7CisgICAgdWludDMyX3QgdHlwZTsgIC8qIFhTXz8/PyAq
LworICAgIHVpbnQzMl90IHJlcV9pZDsvKiBSZXF1ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiBk
YWVtb24ncyByZXNwb25zZS4gICovCisgICAgdWludDMyX3QgdHhfaWQ7IC8qIFRyYW5zYWN0aW9u
IGlkICgwIGlmIG5vdCByZWxhdGVkIHRvIGEgdHJhbnNhY3Rpb24pLiAqLworICAgIHVpbnQzMl90
IGxlbjsgICAvKiBMZW5ndGggb2YgZGF0YSBmb2xsb3dpbmcgdGhpcy4gKi8KKworICAgIC8qIEdl
bmVyYWxseSBmb2xsb3dlZCBieSBudWwtdGVybWluYXRlZCBzdHJpbmcocykuICovCit9OworCitl
bnVtIHhzX3dhdGNoX3R5cGUKK3sKKyAgICBYU19XQVRDSF9QQVRIID0gMCwKKyAgICBYU19XQVRD
SF9UT0tFTgorfTsKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCB4ZW5zdG9yZV9zdHJ1Y3QgWGVu
U3RvcmUgd2lyZSBwcm90b2NvbC4KKyAqCisgKiBJbnRlci1kb21haW4gc2hhcmVkIG1lbW9yeSBj
b21tdW5pY2F0aW9ucy4gKi8KKyNkZWZpbmUgWEVOU1RPUkVfUklOR19TSVpFIDEwMjQKK3R5cGVk
ZWYgdWludDMyX3QgWEVOU1RPUkVfUklOR19JRFg7CisjZGVmaW5lIE1BU0tfWEVOU1RPUkVfSURY
KGlkeCkgKChpZHgpICYgKFhFTlNUT1JFX1JJTkdfU0laRS0xKSkKK3N0cnVjdCB4ZW5zdG9yZV9k
b21haW5faW50ZXJmYWNlIHsKKyAgICBjaGFyIHJlcVtYRU5TVE9SRV9SSU5HX1NJWkVdOyAvKiBS
ZXF1ZXN0cyB0byB4ZW5zdG9yZSBkYWVtb24uICovCisgICAgY2hhciByc3BbWEVOU1RPUkVfUklO
R19TSVpFXTsgLyogUmVwbGllcyBhbmQgYXN5bmMgd2F0Y2ggZXZlbnRzLiAqLworICAgIFhFTlNU
T1JFX1JJTkdfSURYIHJlcV9jb25zLCByZXFfcHJvZDsKKyAgICBYRU5TVE9SRV9SSU5HX0lEWCBy
c3BfY29ucywgcnNwX3Byb2Q7CisgICAgdWludDMyX3Qgc2VydmVyX2ZlYXR1cmVzOyAvKiBCaXRt
YXAgb2YgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgKi8KKyAgICB1aW50MzJfdCBj
b25uZWN0aW9uOworfTsKKworLyogVmlvbGF0aW5nIHRoaXMgaXMgdmVyeSBiYWQuICBTZWUgZG9j
cy9taXNjL3hlbnN0b3JlLnR4dC4gKi8KKyNkZWZpbmUgWEVOU1RPUkVfUEFZTE9BRF9NQVggNDA5
NgorCisvKiBWaW9sYXRpbmcgdGhlc2UganVzdCBnZXRzIHlvdSBhbiBlcnJvciBiYWNrICovCisj
ZGVmaW5lIFhFTlNUT1JFX0FCU19QQVRIX01BWCAzMDcyCisjZGVmaW5lIFhFTlNUT1JFX1JFTF9Q
QVRIX01BWCAyMDQ4CisKKy8qIFRoZSBhYmlsaXR5IHRvIHJlY29ubmVjdCBhIHJpbmcgKi8KKyNk
ZWZpbmUgWEVOU1RPUkVfU0VSVkVSX0ZFQVRVUkVfUkVDT05ORUNUSU9OIDEKKworLyogVmFsaWQg
dmFsdWVzIGZvciB0aGUgY29ubmVjdGlvbiBmaWVsZCAqLworI2RlZmluZSBYRU5TVE9SRV9DT05O
RUNURUQgMCAvKiB0aGUgc3RlYWR5LXN0YXRlICovCisjZGVmaW5lIFhFTlNUT1JFX1JFQ09OTkVD
VCAxIC8qIGd1ZXN0IGhhcyBpbml0aWF0ZWQgYSByZWNvbm5lY3QgKi8KKworI2VuZGlmIC8qIF9Y
U19XSVJFX0ggKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt
ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK
KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNs
dWRlL3hlbi9wdWJsaWMvbWVtb3J5LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvbWVtb3J5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5NThkMwotLS0gL2Rldi9udWxsCisr
KyBiL2luY2x1ZGUveGVuL3B1YmxpYy9tZW1vcnkuaApAQCAtMCwwICsxLDU4NyBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorICogbWVtb3J5LmgKKyAqCisgKiBNZW1vcnkgcmVzZXJ2YXRpb24g
YW5kIGluZm9ybWF0aW9uLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICog
c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAq
IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEtl
aXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJjZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJM
SUNfTUVNT1JZX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfTUVNT1JZX0hfXworCisjaW5jbHVk
ZSAieGVuLmgiCisKKy8qCisgKiBJbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgc3BlY2lmaWVkIGRv
bWFpbidzIG1lbW9yeSByZXNlcnZhdGlvbi4gUmV0dXJucyB0aGUKKyAqIG51bWJlciBvZiBleHRl
bnRzIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgb3IgZnJlZWQuCisgKiBhcmcgPT0gYWRkciBvZiBz
dHJ1Y3QgeGVuX21lbW9yeV9yZXNlcnZhdGlvbi4KKyAqLworI2RlZmluZSBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb24gMAorI2RlZmluZSBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24gMQor
I2RlZmluZSBYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCAgICAgNgorCisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjA5CisvKgorICogTWF4aW11bSAjIGJpdHMgYWRkcmVz
c2FibGUgYnkgdGhlIHVzZXIgb2YgdGhlIGFsbG9jYXRlZCByZWdpb24gKGUuZy4sIEkvTworICog
ZGV2aWNlcyBvZnRlbiBoYXZlIGEgMzItYml0IGxpbWl0YXRpb24gZXZlbiBpbiA2NC1iaXQgc3lz
dGVtcykuIElmIHplcm8KKyAqIHRoZW4gdGhlIHVzZXIgaGFzIG5vIGFkZHJlc3NpbmcgcmVzdHJp
Y3Rpb24uIFRoaXMgZmllbGQgaXMgbm90IHVzZWQgYnkKKyAqIFhFTk1FTV9kZWNyZWFzZV9yZXNl
cnZhdGlvbi4KKyAqLworI2RlZmluZSBYRU5NRU1GX2FkZHJlc3NfYml0cyh4KSAgICAgKHgpCisj
ZGVmaW5lIFhFTk1FTUZfZ2V0X2FkZHJlc3NfYml0cyh4KSAoKHgpICYgMHhmZnUpCisvKiBOVU1B
IG5vZGUgdG8gYWxsb2NhdGUgZnJvbS4gKi8KKyNkZWZpbmUgWEVOTUVNRl9ub2RlKHgpICAgICAo
KCh4KSArIDEpIDw8IDgpCisjZGVmaW5lIFhFTk1FTUZfZ2V0X25vZGUoeCkgKCgoKHgpID4+IDgp
IC0gMSkgJiAweGZmdSkKKy8qIEZsYWcgdG8gcG9wdWxhdGUgcGh5c21hcCB3aXRoIHBvcHVsYXRl
LW9uLWRlbWFuZCBlbnRyaWVzICovCisjZGVmaW5lIFhFTk1FTUZfcG9wdWxhdGVfb25fZGVtYW5k
ICgxPDwxNikKKy8qIEZsYWcgdG8gcmVxdWVzdCBhbGxvY2F0aW9uIG9ubHkgZnJvbSB0aGUgbm9k
ZSBzcGVjaWZpZWQgKi8KKyNkZWZpbmUgWEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QgICgxPDwx
NykKKyNkZWZpbmUgWEVOTUVNRl9leGFjdF9ub2RlKG4pIChYRU5NRU1GX25vZGUobikgfCBYRU5N
RU1GX2V4YWN0X25vZGVfcmVxdWVzdCkKKyNlbmRpZgorCitzdHJ1Y3QgeGVuX21lbW9yeV9yZXNl
cnZhdGlvbiB7CisKKyAgICAvKgorICAgICAqIFhFTk1FTV9pbmNyZWFzZV9yZXNlcnZhdGlvbjoK
KyAgICAgKiAgIE9VVDogTUZOICgqbm90KiBHTUZOKSBiYXNlcyBvZiBleHRlbnRzIHRoYXQgd2Vy
ZSBhbGxvY2F0ZWQKKyAgICAgKiBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb246CisgICAgICog
ICBJTjogIEdNRk4gYmFzZXMgb2YgZXh0ZW50cyB0byBmcmVlCisgICAgICogWEVOTUVNX3BvcHVs
YXRlX3BoeXNtYXA6CisgICAgICogICBJTjogIEdQRk4gYmFzZXMgb2YgZXh0ZW50cyB0byBwb3B1
bGF0ZSB3aXRoIG1lbW9yeQorICAgICAqICAgT1VUOiBHTUZOIGJhc2VzIG9mIGV4dGVudHMgdGhh
dCB3ZXJlIGFsbG9jYXRlZAorICAgICAqICAgKE5CLiBUaGlzIGNvbW1hbmQgYWxzbyB1cGRhdGVz
IHRoZSBtYWNoX3RvX3BoeXMgdHJhbnNsYXRpb24gdGFibGUpCisgICAgICogWEVOTUVNX2NsYWlt
X3BhZ2VzOgorICAgICAqICAgSU46IG11c3QgYmUgemVybworICAgICAqLworICAgIFhFTl9HVUVT
VF9IQU5ETEUoeGVuX3Bmbl90KSBleHRlbnRfc3RhcnQ7CisKKyAgICAvKiBOdW1iZXIgb2YgZXh0
ZW50cywgYW5kIHNpemUvYWxpZ25tZW50IG9mIGVhY2ggKDJeZXh0ZW50X29yZGVyIHBhZ2VzKS4g
Ki8KKyAgICB4ZW5fdWxvbmdfdCAgICBucl9leHRlbnRzOworICAgIHVuc2lnbmVkIGludCAgIGV4
dGVudF9vcmRlcjsKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIw
OQorICAgIC8qIFhFTk1FTUYgZmxhZ3MuICovCisgICAgdW5zaWduZWQgaW50ICAgbWVtX2ZsYWdz
OworI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgICBhZGRyZXNzX2JpdHM7CisjZW5kaWYKKworICAg
IC8qCisgICAgICogRG9tYWluIHdob3NlIHJlc2VydmF0aW9uIGlzIGJlaW5nIGNoYW5nZWQuCisg
ICAgICogVW5wcml2aWxlZ2VkIGRvbWFpbnMgY2FuIHNwZWNpZnkgb25seSBET01JRF9TRUxGLgor
ICAgICAqLworICAgIGRvbWlkX3QgICAgICAgIGRvbWlkOworfTsKK3R5cGVkZWYgc3RydWN0IHhl
bl9tZW1vcnlfcmVzZXJ2YXRpb24geGVuX21lbW9yeV9yZXNlcnZhdGlvbl90OworREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUoeGVuX21lbW9yeV9yZXNlcnZhdGlvbl90KTsKKworLyoKKyAqIEFuIGF0
b21pYyBleGNoYW5nZSBvZiBtZW1vcnkgcGFnZXMuIElmIHJldHVybiBjb2RlIGlzIHplcm8gdGhl
bgorICogQG91dC5leHRlbnRfbGlzdCBwcm92aWRlcyBHTUZOcyBvZiB0aGUgbmV3bHktYWxsb2Nh
dGVkIG1lbW9yeS4KKyAqIFJldHVybnMgemVybyBvbiBjb21wbGV0ZSBzdWNjZXNzLCBvdGhlcndp
c2UgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgorICogT24gY29tcGxldGUgc3VjY2VzcyB0aGVuIGFs
d2F5cyBAbnJfZXhjaGFuZ2VkID09IEBpbi5ucl9leHRlbnRzLgorICogT24gcGFydGlhbCBzdWNj
ZXNzIEBucl9leGNoYW5nZWQgaW5kaWNhdGVzIGhvdyBtdWNoIHdvcmsgd2FzIGRvbmUuCisgKi8K
KyNkZWZpbmUgWEVOTUVNX2V4Y2hhbmdlICAgICAgICAgICAgIDExCitzdHJ1Y3QgeGVuX21lbW9y
eV9leGNoYW5nZSB7CisgICAgLyoKKyAgICAgKiBbSU5dIERldGFpbHMgb2YgbWVtb3J5IGV4dGVu
dHMgdG8gYmUgZXhjaGFuZ2VkIChHTUZOIGJhc2VzKS4KKyAgICAgKiBOb3RlIHRoYXQgQGluLmFk
ZHJlc3NfYml0cyBpcyBpZ25vcmVkIGFuZCB1bnVzZWQuCisgICAgICovCisgICAgc3RydWN0IHhl
bl9tZW1vcnlfcmVzZXJ2YXRpb24gaW47CisKKyAgICAvKgorICAgICAqIFtJTi9PVVRdIERldGFp
bHMgb2YgbmV3IG1lbW9yeSBleHRlbnRzLgorICAgICAqIFdlIHJlcXVpcmUgdGhhdDoKKyAgICAg
KiAgMS4gQGluLmRvbWlkID09IEBvdXQuZG9taWQKKyAgICAgKiAgMi4gQGluLm5yX2V4dGVudHMg
IDw8IEBpbi5leHRlbnRfb3JkZXIgPT0KKyAgICAgKiAgICAgQG91dC5ucl9leHRlbnRzIDw8IEBv
dXQuZXh0ZW50X29yZGVyCisgICAgICogIDMuIEBpbi5leHRlbnRfc3RhcnQgYW5kIEBvdXQuZXh0
ZW50X3N0YXJ0IGxpc3RzIG11c3Qgbm90IG92ZXJsYXAKKyAgICAgKiAgNC4gQG91dC5leHRlbnRf
c3RhcnQgbGlzdHMgR1BGTiBiYXNlcyB0byBiZSBwb3B1bGF0ZWQKKyAgICAgKiAgNS4gQG91dC5l
eHRlbnRfc3RhcnQgaXMgb3ZlcndyaXR0ZW4gd2l0aCBhbGxvY2F0ZWQgR01GTiBiYXNlcworICAg
ICAqLworICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIG91dDsKKworICAgIC8qCisg
ICAgICogW09VVF0gTnVtYmVyIG9mIGlucHV0IGV4dGVudHMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxs
eSBleGNoYW5nZWQ6CisgICAgICogIDEuIFRoZSBmaXJzdCBAbnJfZXhjaGFuZ2VkIGlucHV0IGV4
dGVudHMgd2VyZSBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgZGVhbGxvY2F0ZWQuCisgICAgICog
IDIuIFRoZSBjb3JyZXNwb25kaW5nIGZpcnN0IGVudHJpZXMgaW4gdGhlIG91dHB1dCBleHRlbnQg
bGlzdCBjb3JyZWN0bHkKKyAgICAgKiAgICAgaW5kaWNhdGUgdGhlIEdNRk5zIHRoYXQgd2VyZSBz
dWNjZXNzZnVsbHkgZXhjaGFuZ2VkLgorICAgICAqICAzLiBBbGwgb3RoZXIgaW5wdXQgYW5kIG91
dHB1dCBleHRlbnRzIGFyZSB1bnRvdWNoZWQuCisgICAgICogIDQuIElmIG5vdCBhbGwgaW5wdXQg
ZXhlbnRzIGFyZSBleGNoYW5nZWQgdGhlbiB0aGUgcmV0dXJuIGNvZGUgb2YgdGhpcworICAgICAq
ICAgICBjb21tYW5kIHdpbGwgYmUgbm9uLXplcm8uCisgICAgICogIDUuIFRISVMgRklFTEQgTVVT
VCBCRSBJTklUSUFMSVNFRCBUTyBaRVJPIEJZIFRIRSBDQUxMRVIhCisgICAgICovCisgICAgeGVu
X3Vsb25nX3QgbnJfZXhjaGFuZ2VkOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1vcnlfZXhj
aGFuZ2UgeGVuX21lbW9yeV9leGNoYW5nZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu
X21lbW9yeV9leGNoYW5nZV90KTsKKworLyoKKyAqIFJldHVybnMgdGhlIG1heGltdW0gbWFjaGlu
ZSBmcmFtZSBudW1iZXIgb2YgbWFwcGVkIFJBTSBpbiB0aGlzIHN5c3RlbS4KKyAqIFRoaXMgY29t
bWFuZCBhbHdheXMgc3VjY2VlZHMgKGl0IG5ldmVyIHJldHVybnMgYW4gZXJyb3IgY29kZSkuCisg
KiBhcmcgPT0gTlVMTC4KKyAqLworI2RlZmluZSBYRU5NRU1fbWF4aW11bV9yYW1fcGFnZSAgICAg
MgorCisvKgorICogUmV0dXJucyB0aGUgY3VycmVudCBvciBtYXhpbXVtIG1lbW9yeSByZXNlcnZh
dGlvbiwgaW4gcGFnZXMsIG9mIHRoZQorICogc3BlY2lmaWVkIGRvbWFpbiAobWF5IGJlIERPTUlE
X1NFTEYpLiBSZXR1cm5zIC12ZSBlcnJjb2RlIG9uIGZhaWx1cmUuCisgKiBhcmcgPT0gYWRkciBv
ZiBkb21pZF90LgorICovCisjZGVmaW5lIFhFTk1FTV9jdXJyZW50X3Jlc2VydmF0aW9uICAzCisj
ZGVmaW5lIFhFTk1FTV9tYXhpbXVtX3Jlc2VydmF0aW9uICA0CisKKy8qCisgKiBSZXR1cm5zIHRo
ZSBtYXhpbXVtIEdQRk4gaW4gdXNlIGJ5IHRoZSBndWVzdCwgb3IgLXZlIGVycmNvZGUgb24gZmFp
bHVyZS4KKyAqLworI2RlZmluZSBYRU5NRU1fbWF4aW11bV9ncGZuICAgICAgICAgMTQKKworLyoK
KyAqIFJldHVybnMgYSBsaXN0IG9mIE1GTiBiYXNlcyBvZiAyTUIgZXh0ZW50cyBjb21wcmlzaW5n
IHRoZSBtYWNoaW5lX3RvX3BoeXMKKyAqIG1hcHBpbmcgdGFibGUuIEFyY2hpdGVjdHVyZXMgd2hp
Y2ggZG8gbm90IGhhdmUgYSBtMnAgdGFibGUgZG8gbm90IGltcGxlbWVudAorICogdGhpcyBjb21t
YW5kLgorICogYXJnID09IGFkZHIgb2YgeGVuX21hY2hwaHlzX21mbl9saXN0X3QuCisgKi8KKyNk
ZWZpbmUgWEVOTUVNX21hY2hwaHlzX21mbl9saXN0ICAgIDUKK3N0cnVjdCB4ZW5fbWFjaHBoeXNf
bWZuX2xpc3QgeworICAgIC8qCisgICAgICogU2l6ZSBvZiB0aGUgJ2V4dGVudF9zdGFydCcgYXJy
YXkuIEZld2VyIGVudHJpZXMgd2lsbCBiZSBmaWxsZWQgaWYgdGhlCisgICAgICogbWFjaHBoeXMg
dGFibGUgaXMgc21hbGxlciB0aGFuIG1heF9leHRlbnRzICogMk1CLgorICAgICAqLworICAgIHVu
c2lnbmVkIGludCBtYXhfZXh0ZW50czsKKworICAgIC8qCisgICAgICogUG9pbnRlciB0byBidWZm
ZXIgdG8gZmlsbCB3aXRoIGxpc3Qgb2YgZXh0ZW50IHN0YXJ0cy4gSWYgdGhlcmUgYXJlCisgICAg
ICogYW55IGxhcmdlIGRpc2NvbnRpZ3VpdGllcyBpbiB0aGUgbWFjaGluZSBhZGRyZXNzIHNwYWNl
LCAyTUIgZ2FwcyBpbgorICAgICAqIHRoZSBtYWNocGh5cyB0YWJsZSB3aWxsIGJlIHJlcHJlc2Vu
dGVkIGJ5IGFuIE1GTiBiYXNlIG9mIHplcm8uCisgICAgICovCisgICAgWEVOX0dVRVNUX0hBTkRM
RSh4ZW5fcGZuX3QpIGV4dGVudF9zdGFydDsKKworICAgIC8qCisgICAgICogTnVtYmVyIG9mIGV4
dGVudHMgd3JpdHRlbiB0byB0aGUgYWJvdmUgYXJyYXkuIFRoaXMgd2lsbCBiZSBzbWFsbGVyCisg
ICAgICogdGhhbiAnbWF4X2V4dGVudHMnIGlmIHRoZSBtYWNocGh5cyB0YWJsZSBpcyBzbWFsbGVy
IHRoYW4gbWF4X2UgKiAyTUIuCisgICAgICovCisgICAgdW5zaWduZWQgaW50IG5yX2V4dGVudHM7
Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21mbl9saXN0IHhlbl9tYWNocGh5c19t
Zm5fbGlzdF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21hY2hwaHlzX21mbl9saXN0
X3QpOworCisvKgorICogRm9yIGEgY29tcGF0IGNhbGxlciwgdGhpcyBpcyBpZGVudGljYWwgdG8g
WEVOTUVNX21hY2hwaHlzX21mbl9saXN0LgorICoKKyAqIEZvciBhIG5vbiBjb21wYXQgY2FsbGVy
LCB0aGlzIGZ1bmN0aW9ucyBzaW1pbGFybHkgdG8KKyAqIFhFTk1FTV9tYWNocGh5c19tZm5fbGlz
dCwgYnV0IHJldHVybnMgdGhlIG1mbnMgbWFraW5nIHVwIHRoZSBjb21wYXRpYmlsaXR5CisgKiBt
MnAgdGFibGUuCisgKi8KKyNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX2NvbXBhdF9tZm5fbGlzdCAg
ICAgMjUKKworLyoKKyAqIFJldHVybnMgdGhlIGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBz
cGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlzCisgKiBtYXBwaW5nIHRhYmxlLiBBcmNoaXRlY3R1
cmVzIHdoaWNoIGRvIG5vdCBoYXZlIGEgbTJwIHRhYmxlLCBvciB3aGljaCBkbyBub3QKKyAqIG1h
cCBpdCBieSBkZWZhdWx0IGludG8gZ3Vlc3QgYWRkcmVzcyBzcGFjZSwgZG8gbm90IGltcGxlbWVu
dCB0aGlzIGNvbW1hbmQuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWFwcGluZ190
LgorICovCisjZGVmaW5lIFhFTk1FTV9tYWNocGh5c19tYXBwaW5nICAgICAxMgorc3RydWN0IHhl
bl9tYWNocGh5c19tYXBwaW5nIHsKKyAgICB4ZW5fdWxvbmdfdCB2X3N0YXJ0LCB2X2VuZDsgLyog
U3RhcnQgYW5kIGVuZCB2aXJ0dWFsIGFkZHJlc3Nlcy4gICAqLworICAgIHhlbl91bG9uZ190IG1h
eF9tZm47ICAgICAgICAvKiBNYXhpbXVtIE1GTiB0aGF0IGNhbiBiZSBsb29rZWQgdXAuICovCit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21hcHBpbmcgeGVuX21hY2hwaHlzX21hcHBp
bmdfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tYWNocGh5c19tYXBwaW5nX3QpOwor
CisvKiBTb3VyY2UgbWFwcGluZyBzcGFjZS4gKi8KKy8qIGAgZW51bSBwaHlzX21hcF9zcGFjZSB7
ICovCisjZGVmaW5lIFhFTk1BUFNQQUNFX3NoYXJlZF9pbmZvICAwIC8qIHNoYXJlZCBpbmZvIHBh
Z2UgKi8KKyNkZWZpbmUgWEVOTUFQU1BBQ0VfZ3JhbnRfdGFibGUgIDEgLyogZ3JhbnQgdGFibGUg
cGFnZSAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuICAgICAgICAgMiAvKiBHTUZOICovCisj
ZGVmaW5lIFhFTk1BUFNQQUNFX2dtZm5fcmFuZ2UgICAzIC8qIEdNRk4gcmFuZ2UsIFhFTk1FTV9h
ZGRfdG9fcGh5c21hcCBvbmx5LiAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuX2ZvcmVpZ24g
NCAvKiBHTUZOIGZyb20gYW5vdGhlciBkb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIFhFTk1FTV9hZGRfdG9fcGh5c21hcF9iYXRjaCBvbmx5LiAqLworLyogYCB9ICov
CisKKy8qCisgKiBTZXRzIHRoZSBHUEZOIGF0IHdoaWNoIGEgcGFydGljdWxhciBwYWdlIGFwcGVh
cnMgaW4gdGhlIHNwZWNpZmllZCBndWVzdCdzCisgKiBwc2V1ZG9waHlzaWNhbCBhZGRyZXNzIHNw
YWNlLgorICogYXJnID09IGFkZHIgb2YgeGVuX2FkZF90b19waHlzbWFwX3QuCisgKi8KKyNkZWZp
bmUgWEVOTUVNX2FkZF90b19waHlzbWFwICAgICAgNworc3RydWN0IHhlbl9hZGRfdG9fcGh5c21h
cCB7CisgICAgLyogV2hpY2ggZG9tYWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisg
ICAgZG9taWRfdCBkb21pZDsKKworICAgIC8qIE51bWJlciBvZiBwYWdlcyB0byBnbyB0aHJvdWdo
IGZvciBnbWZuX3JhbmdlICovCisgICAgdWludDE2X3QgICAgc2l6ZTsKKworICAgIHVuc2lnbmVk
IGludCBzcGFjZTsgLyogPT4gZW51bSBwaHlzX21hcF9zcGFjZSAqLworCisjZGVmaW5lIFhFTk1B
UElEWF9ncmFudF90YWJsZV9zdGF0dXMgMHg4MDAwMDAwMAorCisgICAgLyogSW5kZXggaW50byBz
cGFjZSBiZWluZyBtYXBwZWQuICovCisgICAgeGVuX3Vsb25nX3QgaWR4OworCisgICAgLyogR1BG
TiBpbiBkb21pZCB3aGVyZSB0aGUgc291cmNlIG1hcHBpbmcgcGFnZSBzaG91bGQgYXBwZWFyLiAq
LworICAgIHhlbl9wZm5fdCAgICAgZ3BmbjsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3Rv
X3BoeXNtYXAgeGVuX2FkZF90b19waHlzbWFwX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5fYWRkX3RvX3BoeXNtYXBfdCk7CisKKy8qIEEgYmF0Y2hlZCB2ZXJzaW9uIG9mIGFkZF90b19w
aHlzbWFwLiAqLworI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggMjMKK3N0cnVj
dCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeworICAgIC8qIElOICovCisgICAgLyogV2hpY2gg
ZG9tYWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisgICAgZG9taWRfdCBkb21pZDsK
KyAgICB1aW50MTZfdCBzcGFjZTsgLyogPT4gZW51bSBwaHlzX21hcF9zcGFjZSAqLworCisgICAg
LyogTnVtYmVyIG9mIHBhZ2VzIHRvIGdvIHRocm91Z2ggKi8KKyAgICB1aW50MTZfdCBzaXplOwor
ICAgIGRvbWlkX3QgZm9yZWlnbl9kb21pZDsgLyogSUZGIGdtZm5fZm9yZWlnbiAqLworCisgICAg
LyogSW5kZXhlcyBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KKyAgICBYRU5fR1VFU1RfSEFO
RExFKHhlbl91bG9uZ190KSBpZHhzOworCisgICAgLyogR1BGTiBpbiBkb21pZCB3aGVyZSB0aGUg
c291cmNlIG1hcHBpbmcgcGFnZSBzaG91bGQgYXBwZWFyLiAqLworICAgIFhFTl9HVUVTVF9IQU5E
TEUoeGVuX3Bmbl90KSBncGZuczsKKworICAgIC8qIE9VVCAqLworCisgICAgLyogUGVyIGluZGV4
IGVycm9yIGNvZGUuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRShpbnQpIGVycnM7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwX2JhdGNoIHhlbl9hZGRfdG9fcGh5c21hcF9i
YXRjaF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FkZF90b19waHlzbWFwX2JhdGNo
X3QpOworCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA0MDAKKyNkZWZp
bmUgWEVOTUVNX2FkZF90b19waHlzbWFwX3JhbmdlIFhFTk1FTV9hZGRfdG9fcGh5c21hcF9iYXRj
aAorI2RlZmluZSB4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2UgeGVuX2FkZF90b19waHlzbWFwX2Jh
dGNoCit0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeGVuX2FkZF90b19w
aHlzbWFwX3JhbmdlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRkX3RvX3BoeXNt
YXBfcmFuZ2VfdCk7CisjZW5kaWYKKworLyoKKyAqIFVubWFwcyB0aGUgcGFnZSBhcHBlYXJpbmcg
YXQgYSBwYXJ0aWN1bGFyIEdQRk4gZnJvbSB0aGUgc3BlY2lmaWVkIGd1ZXN0J3MKKyAqIHBzZXVk
b3BoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5fcmVtb3ZlX2Zy
b21fcGh5c21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9yZW1vdmVfZnJvbV9waHlzbWFwICAg
ICAgMTUKK3N0cnVjdCB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcCB7CisgICAgLyogV2hpY2ggZG9t
YWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisgICAgZG9taWRfdCBkb21pZDsKKwor
ICAgIC8qIEdQRk4gb2YgdGhlIGN1cnJlbnQgbWFwcGluZyBvZiB0aGUgcGFnZS4gKi8KKyAgICB4
ZW5fcGZuX3QgICAgIGdwZm47Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3JlbW92ZV9mcm9tX3Bo
eXNtYXAgeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXBfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QpOworCisvKioqIFJFTU9WRUQgKioqLworLyojZGVm
aW5lIFhFTk1FTV90cmFuc2xhdGVfZ3Bmbl9saXN0ICA4Ki8KKworLyoKKyAqIFJldHVybnMgdGhl
IHBzZXVkby1waHlzaWNhbCBtZW1vcnkgbWFwIGFzIGl0IHdhcyB3aGVuIHRoZSBkb21haW4KKyAq
IHdhcyBzdGFydGVkIChzcGVjaWZpZWQgYnkgWEVOTUVNX3NldF9tZW1vcnlfbWFwKS4KKyAqIGFy
ZyA9PSBhZGRyIG9mIHhlbl9tZW1vcnlfbWFwX3QuCisgKi8KKyNkZWZpbmUgWEVOTUVNX21lbW9y
eV9tYXAgICAgICAgICAgIDkKK3N0cnVjdCB4ZW5fbWVtb3J5X21hcCB7CisgICAgLyoKKyAgICAg
KiBPbiBjYWxsIHRoZSBudW1iZXIgb2YgZW50cmllcyB3aGljaCBjYW4gYmUgc3RvcmVkIGluIGJ1
ZmZlci4gT24KKyAgICAgKiByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIGhhdmUg
YmVlbiBzdG9yZWQgaW4KKyAgICAgKiBidWZmZXIuCisgICAgICovCisgICAgdW5zaWduZWQgaW50
IG5yX2VudHJpZXM7CisKKyAgICAvKgorICAgICAqIEVudHJpZXMgaW4gdGhlIGJ1ZmZlciBhcmUg
aW4gdGhlIHNhbWUgZm9ybWF0IGFzIHJldHVybmVkIGJ5IHRoZQorICAgICAqIEJJT1MgSU5UIDB4
MTUgRUFYPTB4RTgyMCBjYWxsLgorICAgICAqLworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkg
YnVmZmVyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1vcnlfbWFwIHhlbl9tZW1vcnlfbWFw
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X21hcF90KTsKKworLyoKKyAq
IFJldHVybnMgdGhlIHJlYWwgcGh5c2ljYWwgbWVtb3J5IG1hcC4gUGFzc2VzIHRoZSBzYW1lIHN0
cnVjdHVyZSBhcworICogWEVOTUVNX21lbW9yeV9tYXAuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5f
bWVtb3J5X21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9tYWNoaW5lX21lbW9yeV9tYXAgICAx
MAorCisvKgorICogU2V0IHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWVtb3J5IG1hcCBvZiBhIGRvbWFp
biwgYXMgcmV0dXJuZWQgYnkKKyAqIFhFTk1FTV9tZW1vcnlfbWFwLgorICogYXJnID09IGFkZHIg
b2YgeGVuX2ZvcmVpZ25fbWVtb3J5X21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9zZXRfbWVt
b3J5X21hcCAgICAgICAxMworc3RydWN0IHhlbl9mb3JlaWduX21lbW9yeV9tYXAgeworICAgIGRv
bWlkX3QgZG9taWQ7CisgICAgc3RydWN0IHhlbl9tZW1vcnlfbWFwIG1hcDsKK307Cit0eXBlZGVm
IHN0cnVjdCB4ZW5fZm9yZWlnbl9tZW1vcnlfbWFwIHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdCk7CisKKyNk
ZWZpbmUgWEVOTUVNX3NldF9wb2RfdGFyZ2V0ICAgICAgIDE2CisjZGVmaW5lIFhFTk1FTV9nZXRf
cG9kX3RhcmdldCAgICAgICAxNworc3RydWN0IHhlbl9wb2RfdGFyZ2V0IHsKKyAgICAvKiBJTiAq
LworICAgIHVpbnQ2NF90IHRhcmdldF9wYWdlczsKKyAgICAvKiBPVVQgKi8KKyAgICB1aW50NjRf
dCB0b3RfcGFnZXM7CisgICAgdWludDY0X3QgcG9kX2NhY2hlX3BhZ2VzOworICAgIHVpbnQ2NF90
IHBvZF9lbnRyaWVzOworICAgIC8qIElOICovCisgICAgZG9taWRfdCBkb21pZDsKK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5fcG9kX3RhcmdldCB4ZW5fcG9kX3RhcmdldF90OworCisjaWYgZGVmaW5l
ZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNpZm5kZWYgdWludDY0X2Fs
aWduZWRfdAorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90CisjZW5kaWYKKworLyoK
KyAqIEdldCB0aGUgbnVtYmVyIG9mIE1GTnMgc2F2ZWQgdGhyb3VnaCBtZW1vcnkgc2hhcmluZy4K
KyAqIFRoZSBjYWxsIG5ldmVyIGZhaWxzLgorICovCisjZGVmaW5lIFhFTk1FTV9nZXRfc2hhcmlu
Z19mcmVlZF9wYWdlcyAgICAxOAorI2RlZmluZSBYRU5NRU1fZ2V0X3NoYXJpbmdfc2hhcmVkX3Bh
Z2VzICAgMTkKKworI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wICAgICAgICAgICAgICAgICAgICAy
MAorI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX25vbWluYXRlICAgICAgICAgICAwCisjZGVmaW5l
IFhFTk1FTV9wYWdpbmdfb3BfZXZpY3QgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWEVOTUVNX3Bh
Z2luZ19vcF9wcmVwICAgICAgICAgICAgICAgMgorCitzdHJ1Y3QgeGVuX21lbV9ldmVudF9vcCB7
CisgICAgdWludDhfdCAgICAgb3A7ICAgICAgICAgLyogWEVOTUVNXypfb3BfKiAqLworICAgIGRv
bWlkX3QgICAgIGRvbWFpbjsKKworCisgICAgLyogUEFHSU5HX1BSRVAgSU46IGJ1ZmZlciB0byBp
bW1lZGlhdGVseSBmaWxsIHBhZ2UgaW4gKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGJ1ZmZl
cjsKKyAgICAvKiBPdGhlciBPUHMgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGdmbjsgICAg
ICAgICAgIC8qIElOOiAgZ2ZuIG9mIHBhZ2UgYmVpbmcgb3BlcmF0ZWQgb24gKi8KK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5fbWVtX2V2ZW50X29wIHhlbl9tZW1fZXZlbnRfb3BfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9tZW1fZXZlbnRfb3BfdCk7CisKKyNkZWZpbmUgWEVOTUVNX2Fj
Y2Vzc19vcCAgICAgICAgICAgICAgICAgICAgMjEKKyNkZWZpbmUgWEVOTUVNX2FjY2Vzc19vcF9y
ZXN1bWUgICAgICAgICAgICAgMAorI2RlZmluZSBYRU5NRU1fYWNjZXNzX29wX3NldF9hY2Nlc3Mg
ICAgICAgICAxCisjZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3BfZ2V0X2FjY2VzcyAgICAgICAgIDIK
KwordHlwZWRlZiBlbnVtIHsKKyAgICBYRU5NRU1fYWNjZXNzX24sCisgICAgWEVOTUVNX2FjY2Vz
c19yLAorICAgIFhFTk1FTV9hY2Nlc3NfdywKKyAgICBYRU5NRU1fYWNjZXNzX3J3LAorICAgIFhF
Tk1FTV9hY2Nlc3NfeCwKKyAgICBYRU5NRU1fYWNjZXNzX3J4LAorICAgIFhFTk1FTV9hY2Nlc3Nf
d3gsCisgICAgWEVOTUVNX2FjY2Vzc19yd3gsCisgICAgLyoKKyAgICAgKiBQYWdlIHN0YXJ0cyBv
ZmYgYXMgci14LCBidXQgYXV0b21hdGljYWxseQorICAgICAqIGNoYW5nZSB0byByLXcgb24gYSB3
cml0ZQorICAgICAqLworICAgIFhFTk1FTV9hY2Nlc3NfcngycncsCisgICAgLyoKKyAgICAgKiBM
b2cgYWNjZXNzOiBzdGFydHMgb2ZmIGFzIG4sIGF1dG9tYXRpY2FsbHkKKyAgICAgKiBnb2VzIHRv
IHJ3eCwgZ2VuZXJhdGluZyBhbiBldmVudCB3aXRob3V0CisgICAgICogcGF1c2luZyB0aGUgdmNw
dQorICAgICAqLworICAgIFhFTk1FTV9hY2Nlc3NfbjJyd3gsCisgICAgLyogVGFrZSB0aGUgZG9t
YWluIGRlZmF1bHQgKi8KKyAgICBYRU5NRU1fYWNjZXNzX2RlZmF1bHQKK30geGVubWVtX2FjY2Vz
c190OworCitzdHJ1Y3QgeGVuX21lbV9hY2Nlc3Nfb3AgeworICAgIC8qIFhFTk1FTV9hY2Nlc3Nf
b3BfKiAqLworICAgIHVpbnQ4X3Qgb3A7CisgICAgLyogeGVubWVtX2FjY2Vzc190ICovCisgICAg
dWludDhfdCBhY2Nlc3M7CisgICAgZG9taWRfdCBkb21pZDsKKyAgICAvKgorICAgICAqIE51bWJl
ciBvZiBwYWdlcyBmb3Igc2V0IG9wCisgICAgICogSWdub3JlZCBvbiBzZXR0aW5nIGRlZmF1bHQg
YWNjZXNzIGFuZCBvdGhlciBvcHMKKyAgICAgKi8KKyAgICB1aW50MzJfdCBucjsKKyAgICAvKgor
ICAgICAqIEZpcnN0IHBmbiBmb3Igc2V0IG9wCisgICAgICogcGZuIGZvciBnZXQgb3AKKyAgICAg
KiB+MHVsbCBpcyB1c2VkIHRvIHNldCBhbmQgZ2V0IHRoZSBkZWZhdWx0IGFjY2VzcyBmb3IgcGFn
ZXMKKyAgICAgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90IHBmbjsKK307Cit0eXBlZGVmIHN0cnVj
dCB4ZW5fbWVtX2FjY2Vzc19vcCB4ZW5fbWVtX2FjY2Vzc19vcF90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoeGVuX21lbV9hY2Nlc3Nfb3BfdCk7CisKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdf
b3AgICAgICAgICAgICAgICAgICAgMjIKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Bfbm9taW5h
dGVfZ2ZuICAgICAgMAorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9ub21pbmF0ZV9ncmVmICAg
ICAxCisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3NoYXJlICAgICAgICAgICAgIDIKKyNkZWZp
bmUgWEVOTUVNX3NoYXJpbmdfb3BfcmVzdW1lICAgICAgICAgICAgMworI2RlZmluZSBYRU5NRU1f
c2hhcmluZ19vcF9kZWJ1Z19nZm4gICAgICAgICA0CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29w
X2RlYnVnX21mbiAgICAgICAgIDUKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ3Jl
ZiAgICAgICAgNgorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9hZGRfcGh5c21hcCAgICAgICA3
CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2F1ZGl0ICAgICAgICAgICAgIDgKKworI2RlZmlu
ZSBYRU5NRU1fU0hBUklOR19PUF9TX0hBTkRMRV9JTlZBTElEICAoLTEwKQorI2RlZmluZSBYRU5N
RU1fU0hBUklOR19PUF9DX0hBTkRMRV9JTlZBTElEICAoLTkpCisKKy8qIFRoZSBmb2xsb3dpbmcg
YWxsb3dzIHNoYXJpbmcgb2YgZ3JhbnQgcmVmcy4gVGhpcyBpcyB1c2VmdWwKKyAqIGZvciBzaGFy
aW5nIHV0aWxpdGllcyBzaXR0aW5nIGFzICJmaWx0ZXJzIiBpbiBJTyBiYWNrZW5kcworICogKGUu
Zy4gbWVtc2hyICsgYmxrdGFwKDIpKS4gVGhlIElPIGJhY2tlbmQgaXMgb25seSBleHBvc2VkCisg
KiB0byBncmFudCByZWZlcmVuY2VzLCBhbmQgdGhpcyBhbGxvd3Mgc2hhcmluZyBvZiB0aGUgZ3Jl
ZnMgKi8KKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfSVNfR1JFRl9GTEFHICAgKDFV
TEwgPDwgNjIpCisKKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfTUFLRV9HUkVGKGZp
ZWxkLCB2YWwpICBcCisgICAgKGZpZWxkKSA9IChYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19H
UkVGX0ZMQUcgfCB2YWwpCisjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUYo
ZmllbGQpICAgICAgICAgXAorICAgICgoZmllbGQpICYgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERf
SVNfR1JFRl9GTEFHKQorI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9HRVRfR1JFRihm
aWVsZCkgICAgICAgIFwKKyAgICAoKGZpZWxkKSAmICh+WEVOTUVNX1NIQVJJTkdfT1BfRklFTERf
SVNfR1JFRl9GTEFHKSkKKworc3RydWN0IHhlbl9tZW1fc2hhcmluZ19vcCB7CisgICAgdWludDhf
dCAgICAgb3A7ICAgICAvKiBYRU5NRU1fc2hhcmluZ19vcF8qICovCisgICAgZG9taWRfdCAgICAg
ZG9tYWluOworCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgbWVtX3NoYXJpbmdfb3Bfbm9t
aW5hdGUgeyAgLyogT1BfTk9NSU5BVEVfeHh4ICAgICAgICAgICAqLworICAgICAgICAgICAgdW5p
b24geworICAgICAgICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3QgZ2ZuOyAgICAgLyogSU46IGdm
biB0byBub21pbmF0ZSAgICAgICAqLworICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgZ3Jh
bnRfcmVmOyAgLyogSU46IGdyYW50IHJlZiB0byBub21pbmF0ZSAqLworICAgICAgICAgICAgfSB1
OworICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCAgaGFuZGxlOyAgICAgLyogT1VUOiB0aGUg
aGFuZGxlICAgICAgICAgICAqLworICAgICAgICB9IG5vbWluYXRlOworICAgICAgICBzdHJ1Y3Qg
bWVtX3NoYXJpbmdfb3Bfc2hhcmUgeyAgICAgLyogT1BfU0hBUkUvQUREX1BIWVNNQVAgKi8KKyAg
ICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc291cmNlX2dmbjsgICAgLyogSU46IHRoZSBnZm4g
b2YgdGhlIHNvdXJjZSBwYWdlICovCisgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IHNvdXJj
ZV9oYW5kbGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIHNvdXJjZSBwYWdlICovCisgICAgICAgICAg
ICB1aW50NjRfYWxpZ25lZF90IGNsaWVudF9nZm47ICAgIC8qIElOOiB0aGUgY2xpZW50IGdmbiAq
LworICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBjbGllbnRfaGFuZGxlOyAvKiBJTjogaGFu
ZGxlIHRvIHRoZSBjbGllbnQgcGFnZSAqLworICAgICAgICAgICAgZG9taWRfdCAgY2xpZW50X2Rv
bWFpbjsgLyogSU46IHRoZSBjbGllbnQgZG9tYWluIGlkICovCisgICAgICAgIH0gc2hhcmU7Cisg
ICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9kZWJ1ZyB7ICAgICAvKiBPUF9ERUJVR194eHgg
Ki8KKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90
IGdmbjsgICAgICAvKiBJTjogZ2ZuIHRvIGRlYnVnICAgICAgICAgICovCisgICAgICAgICAgICAg
ICAgdWludDY0X2FsaWduZWRfdCBtZm47ICAgICAgLyogSU46IG1mbiB0byBkZWJ1ZyAgICAgICAg
ICAqLworICAgICAgICAgICAgICAgIHVpbnQzMl90IGdyZWY7ICAgICAvKiBJTjogZ3JlZiB0byBk
ZWJ1ZyAgICAgICAgICovCisgICAgICAgICAgICB9IHU7CisgICAgICAgIH0gZGVidWc7CisgICAg
fSB1OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1fc2hhcmluZ19vcCB4ZW5fbWVtX3NoYXJp
bmdfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1fc2hhcmluZ19vcF90KTsK
KworLyoKKyAqIEF0dGVtcHQgdG8gc3Rha2UgYSBjbGFpbSBmb3IgYSBkb21haW4gb24gYSBxdWFu
dGl0eSBvZiBwYWdlcworICogb2Ygc3lzdGVtIFJBTSwgYnV0IF9ub3RfIGFzc2lnbiBzcGVjaWZp
YyBwYWdlZnJhbWVzLiAgT25seQorICogYXJpdGhtZXRpYyBpcyBwZXJmb3JtZWQgc28gdGhlIGh5
cGVyY2FsbCBpcyB2ZXJ5IGZhc3QgYW5kIG5lZWQKKyAqIG5vdCBiZSBwcmVlbXB0aWJsZSwgdGh1
cyBzaWRlc3RlcHBpbmcgdGltZS1vZi1jaGVjay10aW1lLW9mLXVzZQorICogcmFjZXMgZm9yIG1l
bW9yeSBhbGxvY2F0aW9uLiAgUmV0dXJucyAwIGlmIHRoZSBoeXBlcnZpc29yIHBhZ2UKKyAqIGFs
bG9jYXRvciBoYXMgYXRvbWljYWxseSBhbmQgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgdGhlIHJlcXVl
c3RlZAorICogbnVtYmVyIG9mIHBhZ2VzLCBlbHNlIG5vbi16ZXJvLgorICoKKyAqIEFueSBkb21h
aW4gbWF5IGhhdmUgb25seSBvbmUgYWN0aXZlIGNsYWltLiAgV2hlbiBzdWZmaWNpZW50IG1lbW9y
eQorICogaGFzIGJlZW4gYWxsb2NhdGVkIHRvIHJlc29sdmUgdGhlIGNsYWltLCB0aGUgY2xhaW0g
c2lsZW50bHkgZXhwaXJlcy4KKyAqIENsYWltaW5nIHplcm8gcGFnZXMgZWZmZWN0aXZlbHkgcmVz
ZXRzIGFueSBvdXRzdGFuZGluZyBjbGFpbSBhbmQKKyAqIGlzIGFsd2F5cyBzdWNjZXNzZnVsLgor
ICoKKyAqIE5vdGUgdGhhdCBhIHZhbGlkIGNsYWltIG1heSBiZSBzdGFrZWQgZXZlbiBhZnRlciBt
ZW1vcnkgaGFzIGJlZW4KKyAqIGFsbG9jYXRlZCBmb3IgYSBkb21haW4uICBJbiB0aGlzIGNhc2Us
IHRoZSBjbGFpbSBpcyBub3QgaW5jcmVtZW50YWwsCisgKiBpLmUuIGlmIHRoZSBkb21haW4ncyB0
b3RfcGFnZXMgaXMgMywgYW5kIGEgY2xhaW0gaXMgc3Rha2VkIGZvciAxMCwKKyAqIG9ubHkgNyBh
ZGRpdGlvbmFsIHBhZ2VzIGFyZSBjbGFpbWVkLgorICoKKyAqIENhbGxlciBtdXN0IGJlIHByaXZp
bGVnZWQgb3IgdGhlIGh5cGVyY2FsbCBmYWlscy4KKyAqLworI2RlZmluZSBYRU5NRU1fY2xhaW1f
cGFnZXMgICAgICAgICAgICAgICAgICAyNAorCisvKgorICogWEVOTUVNX2NsYWltX3BhZ2VzIGZs
YWdzIC0gdGhlIGFyZSBubyBmbGFncyBhdCB0aGlzIHRpbWUuCisgKiBUaGUgemVybyB2YWx1ZSBp
cyBhcHByb3BpYXRlLgorICovCisKKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmlu
ZWQoX19YRU5fVE9PTFNfXykgKi8KKworLyoKKyAqIFhFTk1FTV9nZXRfdm51bWFpbmZvIHVzZWQg
YnkgZ3Vlc3QgdG8gZ2V0CisgKiB2TlVNQSB0b3BvbG9neSBmcm9tIGh5cGVydmlzb3IuCisgKi8K
KyNkZWZpbmUgWEVOTUVNX2dldF92bnVtYWluZm8gICAgICAgICAgICAgICAgMjYKKworLyogdk5V
TUEgbm9kZSBtZW1vcnkgcmFuZ2VzICovCitzdHJ1Y3QgeGVuX3ZtZW1yYW5nZSB7CisgICAgdWlu
dDY0X3Qgc3RhcnQsIGVuZDsKKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisgICAgdW5zaWduZWQg
aW50IG5pZDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fdm1lbXJhbmdlIHhlbl92bWVtcmFuZ2Vf
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl92bWVtcmFuZ2VfdCk7CisKKy8qCisgKiB2
TlVNQSB0b3BvbG9neSBzcGVjaWZpZXMgdk5VTUEgbm9kZSBudW1iZXIsIGRpc3RhbmNlIHRhYmxl
LAorICogbWVtb3J5IHJhbmdlcyBhbmQgdmNwdSBtYXBwaW5nIHByb3ZpZGVkIGZvciBndWVzdHMu
CisgKiBYRU5NRU1fZ2V0X3ZudW1haW5mbyBoeXBlcmNhbGwgZXhwZWN0cyB0byBzZWUgZnJvbSBn
dWVzdAorICogbnJfdm5vZGVzLCBucl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cyB0byBpbmRpY2F0
ZSBhdmFpbGFibGUgbWVtb3J5LgorICogQWZ0ZXIgZmlsbGluZyBndWVzdHMgc3RydWN0dXJlcywg
bnJfdm5vZGVzLCBucl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cworICogY29waWVkIGJhY2sgdG8g
Z3Vlc3QuIERvbWFpbiByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBvZiBucl92bm9kZXMsCisgKiBu
cl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cyB0byBndWVzdCBpZiB0aGUgdmFsdWVzIHdoZXJlIGlu
Y29ycmVjdC4KKyAqLworc3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvIHsKKyAgICAvKiBJ
TiAqLworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgdWludDE2X3QgcGFkOworICAgIC8qIElOL09V
VCAqLworICAgIHVuc2lnbmVkIGludCBucl92bm9kZXM7CisgICAgdW5zaWduZWQgaW50IG5yX3Zj
cHVzOworICAgIHVuc2lnbmVkIGludCBucl92bWVtcmFuZ2VzOworICAgIC8qIE9VVCAqLworICAg
IHVuaW9uIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBoOworICAgICAgICB1aW50
NjRfdCBwYWQ7CisgICAgfSB2ZGlzdGFuY2U7CisgICAgdW5pb24geworICAgICAgICBYRU5fR1VF
U1RfSEFORExFKHVpbnQpIGg7CisgICAgICAgIHVpbnQ2NF90IHBhZDsKKyAgICB9IHZjcHVfdG9f
dm5vZGU7CisgICAgdW5pb24geworICAgICAgICBYRU5fR1VFU1RfSEFORExFKHhlbl92bWVtcmFu
Z2VfdCkgaDsKKyAgICAgICAgdWludDY0X3QgcGFkOworICAgIH0gdm1lbXJhbmdlOworfTsKK3R5
cGVkZWYgc3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvIHhlbl92bnVtYV90b3BvbG9neV9p
bmZvX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdm51bWFfdG9wb2xvZ3lfaW5mb190
KTsKKworLyogTmV4dCBhdmFpbGFibGUgc3Vib3AgbnVtYmVyIGlzIDI3ICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfTUVNT1JZX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgor
ICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQK
KyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K
ZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oIGIvaW5jbHVkZS94ZW4vcHVi
bGljL3NjaGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjViMTQwZAot
LS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oCkBAIC0wLDAgKzEs
MTc1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBzY2hlZC5oCisgKgorICogU2NoZWR1
bGVyIHN0YXRlIGludGVyYWN0aW9ucworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK
KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDUsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJjZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfU0NIRURfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18KKworI2lu
Y2x1ZGUgImV2ZW50X2NoYW5uZWwuaCIKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCBzY2hlZCBH
dWVzdCBTY2hlZHVsZXIgT3BlcmF0aW9ucworICoKKyAqIFRoZSBTQ0hFRE9QIGludGVyZmFjZSBw
cm92aWRlcyBtZWNoYW5pc21zIGZvciBhIGd1ZXN0IHRvIGludGVyYWN0CisgKiB3aXRoIHRoZSBz
Y2hlZHVsZXIsIGluY2x1ZGluZyB5aWVsZCwgYmxvY2tpbmcgYW5kIHNodXR0aW5nIGl0c2VsZgor
ICogZG93bi4KKyAqLworCisvKgorICogVGhlIHByb3RvdHlwZSBmb3IgdGhpcyBoeXBlcmNhbGwg
aXM6CisgKiBgIExPTkdfUFRSIEhZUEVSVklTT1Jfc2NoZWRfb3AoZW51bSBzY2hlZF9vcCBjbWQs
IHZvaWQgKmFyZywgLi4uKQorICoKKyAqIEBjbWQgPT0gU0NIRURPUF8/Pz8gKHNjaGVkdWxlciBv
cGVyYXRpb24pLgorICogQGFyZyA9PSBPcGVyYXRpb24tc3BlY2lmaWMgZXh0cmEgYXJndW1lbnQo
cyksIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAqIC4uLiAgPT0gQWRkaXRpb25hbCBPcGVyYXRpb24t
c3BlY2lmaWMgZXh0cmEgYXJndW1lbnRzLCBkZXNjcmliZWQgYmVsb3cuCisgKgorICogVmVyc2lv
bnMgb2YgWGVuIHByaW9yIHRvIDMuMC4yIHByb3ZpZGVkIG9ubHkgdGhlIGZvbGxvd2luZyBsZWdh
Y3kgdmVyc2lvbgorICogb2YgdGhpcyBoeXBlcmNhbGwsIHN1cHBvcnRpbmcgb25seSB0aGUgY29t
bWFuZHMgeWllbGQsIGJsb2NrIGFuZCBzaHV0ZG93bjoKKyAqICBMT05HX1BUUiBzY2hlZF9vcChp
bnQgY21kLCBVTE9OR19QVFIgYXJnKQorICogQGNtZCA9PSBTQ0hFRE9QXz8/PyAoc2NoZWR1bGVy
IG9wZXJhdGlvbikuCisgKiBAYXJnID09IDAgICAgICAgICAgICAgICAoU0NIRURPUF95aWVsZCBh
bmQgU0NIRURPUF9ibG9jaykKKyAqICAgICAgPT0gU0hVVERPV05fKiBjb2RlIChTQ0hFRE9QX3No
dXRkb3duKQorICoKKyAqIFRoaXMgbGVnYWN5IHZlcnNpb24gaXMgYXZhaWxhYmxlIHRvIG5ldyBn
dWVzdHMgYXM6CisgKiBgIExPTkdfUFRSIEhZUEVSVklTT1Jfc2NoZWRfb3BfY29tcGF0KGVudW0g
c2NoZWRfb3AgY21kLCBVTE9OR19QVFIgYXJnKQorICovCisKKy8qIGAgZW51bSBzY2hlZF9vcCB7
IC8vIFNDSEVET1BfKiA9PiBzdHJ1Y3Qgc2NoZWRfKiAqLworLyoKKyAqIFZvbHVudGFyaWx5IHlp
ZWxkIHRoZSBDUFUuCisgKiBAYXJnID09IE5VTEwuCisgKi8KKyNkZWZpbmUgU0NIRURPUF95aWVs
ZCAgICAgICAwCisKKy8qCisgKiBCbG9jayBleGVjdXRpb24gb2YgdGhpcyBWQ1BVIHVudGlsIGFu
IGV2ZW50IGlzIHJlY2VpdmVkIGZvciBwcm9jZXNzaW5nLgorICogSWYgY2FsbGVkIHdpdGggZXZl
bnQgdXBjYWxscyBtYXNrZWQsIHRoaXMgb3BlcmF0aW9uIHdpbGwgYXRvbWljYWxseQorICogcmVl
bmFibGUgZXZlbnQgZGVsaXZlcnkgYW5kIGNoZWNrIGZvciBwZW5kaW5nIGV2ZW50cyBiZWZvcmUg
YmxvY2tpbmcgdGhlCisgKiBWQ1BVLiBUaGlzIGF2b2lkcyBhICJ3YWtldXAgd2FpdGluZyIgcmFj
ZS4KKyAqIEBhcmcgPT0gTlVMTC4KKyAqLworI2RlZmluZSBTQ0hFRE9QX2Jsb2NrICAgICAgIDEK
KworLyoKKyAqIEhhbHQgZXhlY3V0aW9uIG9mIHRoaXMgZG9tYWluIChhbGwgVkNQVXMpIGFuZCBu
b3RpZnkgdGhlIHN5c3RlbSBjb250cm9sbGVyLgorICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVk
X3NodXRkb3duX3Qgc3RydWN0dXJlLgorICoKKyAqIElmIHRoZSBzY2hlZF9zaHV0ZG93bl90IHJl
YXNvbiBpcyBTSFVURE9XTl9zdXNwZW5kIHRoZW4KKyAqIHg4NiBQViBndWVzdHMgbXVzdCBhbHNv
IHNldCBSRFggKEVEWCBmb3IgMzItYml0IGd1ZXN0cykgdG8gdGhlIE1GTgorICogb2YgdGhlIGd1
ZXN0J3Mgc3RhcnQgaW5mbyBwYWdlLiAgUkRYL0VEWCBpcyB0aGUgdGhpcmQgaHlwZXJjYWxsCisg
KiBhcmd1bWVudC4KKyAqCisgKiBJbiBhZGRpdGlvbiwgd2hpY2ggcmVhc29uIGlzIFNIVVRET1dO
X3N1c3BlbmQgdGhpcyBoeXBlcmNhbGwKKyAqIHJldHVybnMgMSBpZiBzdXNwZW5kIHdhcyBjYW5j
ZWxsZWQgb3IgdGhlIGRvbWFpbiB3YXMgbWVyZWx5CisgKiBjaGVja3BvaW50ZWQsIGFuZCAwIGlm
IGl0IGlzIHJlc3VtaW5nIGluIGEgbmV3IGRvbWFpbi4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3No
dXRkb3duICAgIDIKKworLyoKKyAqIFBvbGwgYSBzZXQgb2YgZXZlbnQtY2hhbm5lbCBwb3J0cy4g
UmV0dXJuIHdoZW4gb25lIG9yIG1vcmUgYXJlIHBlbmRpbmcuIEFuCisgKiBvcHRpb25hbCB0aW1l
b3V0IG1heSBiZSBzcGVjaWZpZWQuCisgKiBAYXJnID09IHBvaW50ZXIgdG8gc2NoZWRfcG9sbF90
IHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3BvbGwgICAgICAgIDMKKworLyoKKyAq
IERlY2xhcmUgYSBzaHV0ZG93biBmb3IgYW5vdGhlciBkb21haW4uIFRoZSBtYWluIHVzZSBvZiB0
aGlzIGZ1bmN0aW9uIGlzCisgKiBpbiBpbnRlcnByZXRpbmcgc2h1dGRvd24gcmVxdWVzdHMgYW5k
IHJlYXNvbnMgZm9yIGZ1bGx5LXZpcnR1YWxpemVkCisgKiBkb21haW5zLiAgQSBwYXJhLXZpcnR1
YWxpemVkIGRvbWFpbiBtYXkgdXNlIFNDSEVET1Bfc2h1dGRvd24gZGlyZWN0bHkuCisgKiBAYXJn
ID09IHBvaW50ZXIgdG8gc2NoZWRfcmVtb3RlX3NodXRkb3duX3Qgc3RydWN0dXJlLgorICovCisj
ZGVmaW5lIFNDSEVET1BfcmVtb3RlX3NodXRkb3duICAgICAgICA0CisKKy8qCisgKiBMYXRjaCBh
IHNodXRkb3duIGNvZGUsIHNvIHRoYXQgd2hlbiB0aGUgZG9tYWluIGxhdGVyIHNodXRzIGRvd24g
aXQKKyAqIHJlcG9ydHMgdGhpcyBjb2RlIHRvIHRoZSBjb250cm9sIHRvb2xzLgorICogQGFyZyA9
PSBzY2hlZF9zaHV0ZG93bl90LCBhcyBmb3IgU0NIRURPUF9zaHV0ZG93bi4KKyAqLworI2RlZmlu
ZSBTQ0hFRE9QX3NodXRkb3duX2NvZGUgNQorCisvKgorICogU2V0dXAsIHBva2UgYW5kIGRlc3Ry
b3kgYSBkb21haW4gd2F0Y2hkb2cgdGltZXIuCisgKiBAYXJnID09IHBvaW50ZXIgdG8gc2NoZWRf
d2F0Y2hkb2dfdCBzdHJ1Y3R1cmUuCisgKiBXaXRoIGlkID09IDAsIHNldHVwIGEgZG9tYWluIHdh
dGNoZG9nIHRpbWVyIHRvIGNhdXNlIGRvbWFpbiBzaHV0ZG93bgorICogICAgICAgICAgICAgICBh
ZnRlciB0aW1lb3V0LCByZXR1cm5zIHdhdGNoZG9nIGlkLgorICogV2l0aCBpZCAhPSAwIGFuZCB0
aW1lb3V0ID09IDAsIGRlc3Ryb3kgZG9tYWluIHdhdGNoZG9nIHRpbWVyLgorICogV2l0aCBpZCAh
PSAwIGFuZCB0aW1lb3V0ICE9IDAsIHBva2Ugd2F0Y2hkb2cgdGltZXIgYW5kIHNldCBuZXcgdGlt
ZW91dC4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3dhdGNoZG9nICAgIDYKKy8qIGAgfSAqLworCitz
dHJ1Y3Qgc2NoZWRfc2h1dGRvd24geworICAgIHVuc2lnbmVkIGludCByZWFzb247IC8qIFNIVVRE
T1dOXyogPT4gZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24gKi8KK307Cit0eXBlZGVmIHN0cnVj
dCBzY2hlZF9zaHV0ZG93biBzY2hlZF9zaHV0ZG93bl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoc2NoZWRfc2h1dGRvd25fdCk7CisKK3N0cnVjdCBzY2hlZF9wb2xsIHsKKyAgICBYRU5fR1VF
U1RfSEFORExFKGV2dGNobl9wb3J0X3QpIHBvcnRzOworICAgIHVuc2lnbmVkIGludCBucl9wb3J0
czsKKyAgICB1aW50NjRfdCB0aW1lb3V0OworfTsKK3R5cGVkZWYgc3RydWN0IHNjaGVkX3BvbGwg
c2NoZWRfcG9sbF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoc2NoZWRfcG9sbF90KTsKKwor
c3RydWN0IHNjaGVkX3JlbW90ZV9zaHV0ZG93biB7CisgICAgZG9taWRfdCBkb21haW5faWQ7ICAg
ICAgICAgLyogUmVtb3RlIGRvbWFpbiBJRCAqLworICAgIHVuc2lnbmVkIGludCByZWFzb247ICAg
ICAgIC8qIFNIVVRET1dOXyogPT4gZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24gKi8KK307Cit0
eXBlZGVmIHN0cnVjdCBzY2hlZF9yZW1vdGVfc2h1dGRvd24gc2NoZWRfcmVtb3RlX3NodXRkb3du
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShzY2hlZF9yZW1vdGVfc2h1dGRvd25fdCk7CisK
K3N0cnVjdCBzY2hlZF93YXRjaGRvZyB7CisgICAgdWludDMyX3QgaWQ7ICAgICAgICAgICAgICAg
IC8qIHdhdGNoZG9nIElEICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAgIC8qIHRp
bWVvdXQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBzY2hlZF93YXRjaGRvZyBzY2hlZF93YXRjaGRv
Z190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoc2NoZWRfd2F0Y2hkb2dfdCk7CisKKy8qCisg
KiBSZWFzb24gY29kZXMgZm9yIFNDSEVET1Bfc2h1dGRvd24uIFRoZXNlIG1heSBiZSBpbnRlcnBy
ZXRlZCBieSBjb250cm9sCisgKiBzb2Z0d2FyZSB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRl
IGFjdGlvbi4gRm9yIHRoZSBtb3N0IHBhcnQsIFhlbiBkb2VzCisgKiBub3QgY2FyZSBhYm91dCB0
aGUgc2h1dGRvd24gY29kZS4KKyAqLworLyogYCBlbnVtIHNjaGVkX3NodXRkb3duX3JlYXNvbiB7
ICovCisjZGVmaW5lIFNIVVRET1dOX3Bvd2Vyb2ZmICAgMCAgLyogRG9tYWluIGV4aXRlZCBub3Jt
YWxseS4gQ2xlYW4gdXAgYW5kIGtpbGwuICovCisjZGVmaW5lIFNIVVRET1dOX3JlYm9vdCAgICAg
MSAgLyogQ2xlYW4gdXAsIGtpbGwsIGFuZCB0aGVuIHJlc3RhcnQuICAgICAgICAgICovCisjZGVm
aW5lIFNIVVRET1dOX3N1c3BlbmQgICAgMiAgLyogQ2xlYW4gdXAsIHNhdmUgc3VzcGVuZCBpbmZv
LCBraWxsLiAgICAgICAgICovCisjZGVmaW5lIFNIVVRET1dOX2NyYXNoICAgICAgMyAgLyogVGVs
bCBjb250cm9sbGVyIHdlJ3ZlIGNyYXNoZWQuICAgICAgICAgICAgICovCisjZGVmaW5lIFNIVVRE
T1dOX3dhdGNoZG9nICAgNCAgLyogUmVzdGFydCBiZWNhdXNlIHdhdGNoZG9nIHRpbWUgZXhwaXJl
ZC4gICAgICovCisjZGVmaW5lIFNIVVRET1dOX01BWCAgICAgICAgNCAgLyogTWF4aW11bSB2YWxp
ZCBzaHV0ZG93biByZWFzb24uICAgICAgICAgICAgICovCisvKiBgIH0gKi8KKworI2VuZGlmIC8q
IF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAq
IG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg
KiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRp
ZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaCBiL2luY2x1ZGUveGVuL3B1Ymxp
Yy90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMjg1OWMKLS0t
IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaApAQCAtMCwwICsxLDMz
MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogaW5jbHVkZS9wdWJsaWMvdHJhY2UuaAor
ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg
KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT
T0ZUV0FSRS4KKyAqCisgKiBNYXJrIFdpbGxpYW1zb24sIChDKSAyMDA0IEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQorICogQ29weXJpZ2h0IChDKSAyMDA1IEJpbiBSZW4KKyAqLworCisjaWZuZGVm
IF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX1RSQUNFX0hfXwor
CisjZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAgICA3CisjZGVmaW5lIFRSQUNFX0VYVFJBX1NISUZU
IDI4CisKKy8qIFRyYWNlIGNsYXNzZXMgKi8KKyNkZWZpbmUgVFJDX0NMU19TSElGVCAxNgorI2Rl
ZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAwMCAgICAvKiBHZW5lcmFsIHRyYWNlICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgVFJDX1NDSEVEICAgIDB4MDAwMmYwMDAgICAgLyogWGVuIFNjaGVkdWxl
ciB0cmFjZSAgICAgICovCisjZGVmaW5lIFRSQ19ET00wT1AgICAweDAwMDRmMDAwICAgIC8qIFhl
biBET00wIG9wZXJhdGlvbiB0cmFjZSAqLworI2RlZmluZSBUUkNfSFZNICAgICAgMHgwMDA4ZjAw
MCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX01FTSAgICAg
IDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9yeSB0cmFjZSAgICAgICAgICovCisjZGVmaW5lIFRS
Q19QViAgICAgICAweDAwMjBmMDAwICAgIC8qIFhlbiBQViB0cmFjZXMgICAgICAgICAgICAqLwor
I2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQwZjAwMCAgICAvKiBYZW4gc2hhZG93IHRyYWNpbmcg
ICAgICAgKi8KKyNkZWZpbmUgVFJDX0hXICAgICAgIDB4MDA4MGYwMDAgICAgLyogWGVuIGhhcmR3
YXJlLXJlbGF0ZWQgdHJhY2VzICovCisjZGVmaW5lIFRSQ19HVUVTVCAgICAweDA4MDBmMDAwICAg
IC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMgICAqLworI2RlZmluZSBUUkNfQUxMICAgICAgMHgw
ZmZmZjAwMAorI2RlZmluZSBUUkNfSERfVE9fRVZFTlQoeCkgKCh4KSYweDBmZmZmZmZmKQorI2Rl
ZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVMPDwzMSkKKyNkZWZpbmUgVFJDX0hEX0lOQ0xVREVT
X0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAmIFRSQ19IRF9DWUNMRV9GTEFHICkgKQorI2RlZmlu
ZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+PlRSQUNFX0VYVFJBX1NISUZUKSZUUkFDRV9FWFRS
QV9NQVgpCisKKy8qIFRyYWNlIHN1YmNsYXNzZXMgKi8KKyNkZWZpbmUgVFJDX1NVQkNMU19TSElG
VCAxMgorCisvKiB0cmFjZSBzdWJjbGFzc2VzIGZvciBTVk0gKi8KKyNkZWZpbmUgVFJDX0hWTV9F
TlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyogVk1FTlRSWSBhbmQgI1ZNRVhJVCAgICAgICAqLwor
I2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAgIDB4MDAwODIwMDAgICAvKiB2YXJpb3VzIEhWTSBo
YW5kbGVycyAgICAgICovCisjZGVmaW5lIFRSQ19IVk1fRU1VTCAgICAgICAgMHgwMDA4NDAwMCAg
IC8qIGVtdWxhdGVkIGRldmljZXMgKi8KKworI2RlZmluZSBUUkNfU0NIRURfTUlOICAgICAgIDB4
MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRlIGNoYW5nZXMgKi8KKyNkZWZpbmUgVFJDX1NDSEVE
X0NMQVNTICAgICAweDAwMDIyMDAwICAgLyogU2NoZWR1bGVyLXNwZWNpZmljICAgICovCisjZGVm
aW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgwMDAyODAwMCAgIC8qIE1vcmUgaW5jbHVzaXZlIHNj
aGVkdWxpbmcgKi8KKworLyoKKyAqIFRoZSBoaWdoZXN0IDMgYml0cyBvZiB0aGUgbGFzdCAxMiBi
aXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92ZSBhcmUKKyAqIHJlc2VydmVkIGZvciBlbmNvZGlu
ZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0aGUgaW5mb3JtYXRpb24uIFRoZQorICogYWN0dWFs
IGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxhc3QgOSBiaXRzLgorICoKKyAqIFRoaXMgbWVhbnMg
d2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2YWlsYWJsZSAod2hpY2ggbWVhbnMgYXQgbW9zdCA4
CisgKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcgZXZlbnRzKSBhbmQsIGluIGVhY2ggc2NoZWR1bGVy
LCB1cCB0byA1MTIKKyAqIGRpZmZlcmVudCBldmVudHMuCisgKi8KKyNkZWZpbmUgVFJDX1NDSEVE
X0lEX0JJVFMgMworI2RlZmluZSBUUkNfU0NIRURfSURfU0hJRlQgKFRSQ19TVUJDTFNfU0hJRlQg
LSBUUkNfU0NIRURfSURfQklUUykKKyNkZWZpbmUgVFJDX1NDSEVEX0lEX01BU0sgKCgoMVVMPDxU
UkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBUUkNfU0NIRURfSURfU0hJRlQpCisjZGVmaW5lIFRS
Q19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NIRURfSURfTUFTSykpCisKKy8qIFBlci1zY2hlZHVs
ZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVsZXIgc3BlY2lmaWMgZXZlbnRzICovCisjZGVmaW5l
IFRSQ19TQ0hFRF9DU0NIRUQgICAwCisjZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQyICAxCisjZGVm
aW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCisjZGVmaW5lIFRSQ19TQ0hFRF9BUklOQzY1MyAzCisj
ZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0CisKKy8qIFBlci1zY2hlZHVsZXIgdHJhY2luZyAq
LworI2RlZmluZSBUUkNfU0NIRURfQ0xBU1NfRVZUKF9jLCBfZSkgXAorICAoICggVFJDX1NDSEVE
X0NMQVNTIHwgXAorICAgICAgKChUUkNfU0NIRURfIyNfYyA8PCBUUkNfU0NIRURfSURfU0hJRlQp
ICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBcCisgICAgKF9lICYgVFJDX1NDSEVEX0VWVF9NQVNL
KSApCisKKy8qIFRyYWNlIGNsYXNzZXMgZm9yIEhhcmR3YXJlICovCisjZGVmaW5lIFRSQ19IV19Q
TSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8qIFBvd2VyIG1hbmFnZW1lbnQgdHJhY2VzICovCisj
ZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAgMHgwMDgwMjAwMCAgIC8qIFRyYWNlcyByZWxhdGlu
ZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAqLworCisvKiBUcmFjZSBldmVudHMgcGVyIGNsYXNz
ICovCisjZGVmaW5lIFRSQ19MT1NUX1JFQ09SRFMgICAgICAgIChUUkNfR0VOICsgMSkKKyNkZWZp
bmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAoVFJDX0dFTiArIDIpCisjZGVmaW5lIFRSQ19UUkFD
RV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsgMykKKworI2RlZmluZSBUUkNfU0NIRURfUlVOU1RB
VEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4gKyAxKQorI2RlZmluZSBUUkNfU0NIRURfQ09OVElO
VUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4gKyAyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX0FE
RCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDEpCisjZGVmaW5lIFRSQ19TQ0hFRF9ET01f
UkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgMikKKyNkZWZpbmUgVFJDX1NDSEVEX1NM
RUVQICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICAzKQorI2RlZmluZSBUUkNfU0NIRURf
V0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDQpCisjZGVmaW5lIFRSQ19TQ0hF
RF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNSkKKyNkZWZpbmUgVFJDX1ND
SEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA2KQorI2RlZmluZSBUUkNf
U0NIRURfU0hVVERPV04gICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDcpCisjZGVmaW5lIFRS
Q19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgOCkKKyNkZWZpbmUg
VFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA5KQorI2RlZmlu
ZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTApCisjZGVm
aW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMSkKKyNk
ZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4gICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEyKQor
I2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVSX0ZOICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTMp
CisjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hfSU5GUFJFViAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAx
NCkKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhUIChUUkNfU0NIRURfVkVSQk9TRSAr
IDE1KQorI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV05fQ09ERSAgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgMTYpCisKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX01BUCAgICAgIChUUkNfTUVNICsg
MSkKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1VOTUFQICAgIChUUkNfTUVNICsgMikKKyNk
ZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSIChUUkNfTUVNICsgMykKKyNkZWZpbmUg
VFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAgIChUUkNfTUVNICsgNCkKKyNkZWZpbmUgVFJDX01F
TV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJDX01FTSArIDUpCisjZGVmaW5lIFRSQ19NRU1fUE9E
X1BPUFVMQVRFICAgICAgICAoVFJDX01FTSArIDE2KQorI2RlZmluZSBUUkNfTUVNX1BPRF9aRVJP
X1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykKKyNkZWZpbmUgVFJDX01FTV9QT0RfU1VQRVJQQUdF
X1NQTElOVEVSIChUUkNfTUVNICsgMTgpCisKKyNkZWZpbmUgVFJDX1BWX0VOVFJZICAgMHgwMDIw
MTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBvaW50cyBmb3IgUFYgZ3Vlc3RzLiAqLworI2RlZmlu
ZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAwIC8qIFN1Yi1jYWxsIGluIGEgbXVsdGljYWxsIGh5
cGVyY2FsbCAqLworCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTEwgICAgICAgICAgICAgKFRSQ19Q
Vl9FTlRSWSArICAxKQorI2RlZmluZSBUUkNfUFZfVFJBUCAgICAgICAgICAgICAgICAgIChUUkNf
UFZfRU5UUlkgKyAgMykKKyNkZWZpbmUgVFJDX1BWX1BBR0VfRkFVTFQgICAgICAgICAgICAoVFJD
X1BWX0VOVFJZICsgIDQpCisjZGVmaW5lIFRSQ19QVl9GT1JDRURfSU5WQUxJRF9PUCAgICAgKFRS
Q19QVl9FTlRSWSArICA1KQorI2RlZmluZSBUUkNfUFZfRU1VTEFURV9QUklWT1AgICAgICAgIChU
UkNfUFZfRU5UUlkgKyAgNikKKyNkZWZpbmUgVFJDX1BWX0VNVUxBVEVfNEdCICAgICAgICAgICAo
VFJDX1BWX0VOVFJZICsgIDcpCisjZGVmaW5lIFRSQ19QVl9NQVRIX1NUQVRFX1JFU1RPUkUgICAg
KFRSQ19QVl9FTlRSWSArICA4KQorI2RlZmluZSBUUkNfUFZfUEFHSU5HX0ZJWFVQICAgICAgICAg
IChUUkNfUFZfRU5UUlkgKyAgOSkKKyNkZWZpbmUgVFJDX1BWX0dEVF9MRFRfTUFQUElOR19GQVVM
VCAoVFJDX1BWX0VOVFJZICsgMTApCisjZGVmaW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTiAgICAg
ICAgKFRSQ19QVl9FTlRSWSArIDExKQorI2RlZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT05fUEFF
ICAgIChUUkNfUFZfRU5UUlkgKyAxMikKKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMiAgICAg
ICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfU1VCQ0FM
TCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQpCisKKy8qCisgKiBUUkNfUFZfSFlQRVJDQUxMX1Yy
IGZvcm1hdAorICoKKyAqIE9ubHkgc29tZSBvZiB0aGUgaHlwZXJjYWxsIGFyZ3VtZW50IGFyZSBy
ZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bworICogQTUgaW4gdGhlIGZpcnN0IGV4dHJhIHdvcmQg
YXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMgcHJlc2VudCBhbmQKKyAqIHRoZSBhcmd1bWVudHMg
dGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVlbnRpYWxseSBpbiB0aGUgZm9sbG93aW5nCisgKiB3
b3Jkcy4KKyAqCisgKiBUaGUgVFJDXzY0X0ZMQUcgYml0IGlzIG5vdCBzZXQgZm9yIHRoZXNlIGV2
ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKKyAqIDY0LWJpdCBhcmd1bWVudHMgaW4gdGhlIHJlY29y
ZCkuCisgKgorICogV29yZAorICogMCAgICBiaXQgMzEgMzB8MjkgMjh8MjcgMjZ8MjUgMjR8MjMg
MjJ8MjEgMjB8MTkgLi4uIDAKKyAqICAgICAgICAgIEE1ICAgfEE0ICAgfEEzICAgfEEyICAgfEEx
ICAgfEEwICAgfEh5cGVyY2FsbCBvcAorICogMSAgICBGaXJzdCAzMiBiaXQgKG9yIGxvdyB3b3Jk
IG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZAorICogMiAgICBTZWNvbmQgMzIgYml0IChv
ciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcgaW4gcmVjb3JkCisgKiAuLi4KKyAqCisg
KiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6CisgKgorICogICAwMGIgIEFyZ3VtZW50IG5vdCBwcmVz
ZW50CisgKiAgIDAxYiAgMzItYml0IGFyZ3VtZW50IHByZXNlbnQKKyAqICAgMTBiICA2NC1iaXQg
YXJndW1lbnQgcHJlc2VudAorICogICAxMWIgIFJlc2VydmVkCisgKi8KKyNkZWZpbmUgVFJDX1BW
X0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4MSA8PCAoMjAgKyAyKihpKSkpCisjZGVmaW5lIFRS
Q19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkpICgweDIgPDwgKDIwICsgMiooaSkpKQorI2RlZmlu
ZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19NQVNLICAoMHhmZmYwMDAwMCkKKworI2RlZmluZSBU
UkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDEpCisj
ZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9QQUdBVEUgICAgICAgICAgICAgKFRSQ19TSEFET1cg
KyAgMikKKyNkZWZpbmUgVFJDX1NIQURPV19GQVNUX01NSU8gICAgICAgICAgICAgICAgICAoVFJD
X1NIQURPVyArICAzKQorI2RlZmluZSBUUkNfU0hBRE9XX0ZBTFNFX0ZBU1RfUEFUSCAgICAgICAg
ICAgIChUUkNfU0hBRE9XICsgIDQpCisjZGVmaW5lIFRSQ19TSEFET1dfTU1JTyAgICAgICAgICAg
ICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNSkKKyNkZWZpbmUgVFJDX1NIQURPV19GSVhVUCAg
ICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA2KQorI2RlZmluZSBUUkNfU0hBRE9X
X0RPTUZfRFlJTkcgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDcpCisjZGVmaW5lIFRS
Q19TSEFET1dfRU1VTEFURSAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgOCkKKyNk
ZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9XX1VTRVIgICAgICAoVFJDX1NIQURPVyAr
ICA5KQorI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5TSEFET1dfRVZUSU5KICAgIChUUkNf
U0hBRE9XICsgMTApCisjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURV9VTlNIQURPV19VTkhBTkRM
RUQgKFRSQ19TSEFET1cgKyAxMSkKKyNkZWZpbmUgVFJDX1NIQURPV19XUk1BUF9CRiAgICAgICAg
ICAgICAgICAgICAoVFJDX1NIQURPVyArIDEyKQorI2RlZmluZSBUUkNfU0hBRE9XX1BSRUFMTE9D
X1VOUElOICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTMpCisjZGVmaW5lIFRSQ19TSEFET1df
UkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAxNCkKKyNkZWZpbmUgVFJD
X1NIQURPV19SRVNZTkNfT05MWSAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDE1KQorCisv
KiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNzICovCisjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxB
RyAgICAgICgweDQwMCkKKyNkZWZpbmUgVFJDX0hWTV9WTUVOVFJZICAgICAgICAgKFRSQ19IVk1f
RU5UUllFWElUICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQgICAgICAgICAgKFRSQ19I
Vk1fRU5UUllFWElUICsgMHgwMikKKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRS
Q19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZMQUcgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1BG
X1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9Q
Rl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgwMSkKKyNk
ZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIpCisj
ZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRf
RkxBRyArIDB4MDIpCisjZGVmaW5lIFRSQ19IVk1fSU5KX0VYQyAgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDAzKQorI2RlZmluZSBUUkNfSFZNX0lOSl9WSVJRICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgwNCkKKyNkZWZpbmUgVFJDX0hWTV9SRUlOSl9WSVJRICAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MDUpCisjZGVmaW5lIFRSQ19IVk1fSU9fUkVBRCAgICAgICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDA2KQorI2RlZmluZSBUUkNfSFZNX0lPX1dSSVRFICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwNykKKyNkZWZpbmUgVFJDX0hWTV9DUl9SRUFEICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfUkVBRDY0ICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfV1JJ
VEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0NSX1dS
SVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDA5KQorI2RlZmlu
ZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwQSkKKyNkZWZp
bmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEIpCisjZGVm
aW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBDKQorI2Rl
ZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRCkKKyNk
ZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEUpCisj
ZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBGKQor
I2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMCkK
KyNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTEp
CisjZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDEy
KQorI2RlZmluZSBUUkNfSFZNX0hMVCAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgx
MykKKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEcgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MTQpCisjZGVmaW5lIFRSQ19IVk1fSU5WTFBHNjQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBU
UkNfNjRfRkxBRyArIDB4MTQpCisjZGVmaW5lIFRSQ19IVk1fTUNFICAgICAgICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyAweDE1KQorI2RlZmluZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgxNikKKyNkZWZpbmUgVFJDX0hWTV9JT01FTV9SRUFEICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MTcpCisjZGVmaW5lIFRSQ19IVk1fQ0xUUyAgICAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDE4KQorI2RlZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9MTVNXNjQgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9S
RFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MWEpCisjZGVmaW5lIFRSQ19IVk1f
SU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIwKQorI2RlZmluZSBUUkNfSFZN
X05QRiAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMSkKKyNkZWZpbmUgVFJDX0hW
TV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZNX0hBTkRMRVIgKyAweDIyKQorI2RlZmluZSBUUkNf
SFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjMpCisjZGVmaW5lIFRS
Q19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNCkKKyNkZWZpbmUg
VFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI1KQorCisjZGVm
aW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikKKyNk
ZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE3KQor
CisvKiBUcmFjZSBldmVudHMgZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KKyNkZWZpbmUgVFJDX0hW
TV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChUUkNfSFZNX0VNVUwgKyAweDEpCisjZGVmaW5lIFRS
Q19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIgICAoVFJDX0hWTV9FTVVMICsgMHgyKQorI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJTUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MykKKyNk
ZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NUQVJUX1RJTUVSIChUUkNfSFZNX0VNVUwgKyAweDQp
CisjZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVUX1NUT1BfVElNRVIgICAoVFJDX0hWTV9FTVVMICsg
MHg1KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1NUT1BfVElNRVIgICAgKFRSQ19IVk1fRU1V
TCArIDB4NikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1JUQ19TVE9QX1RJTUVSICAgIChUUkNfSFZN
X0VNVUwgKyAweDcpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9MQVBJQ19TVE9QX1RJTUVSICAoVFJD
X0hWTV9FTVVMICsgMHg4KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1RJTUVSX0NCICAgICAg
KFRSQ19IVk1fRU1VTCArIDB4OSkKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1RJTUVSX0NC
ICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UX09V
VFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhCKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX0tJ
Q0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4QykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJ
Q19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEQpCisjZGVmaW5lIFRSQ19IVk1fRU1V
TF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hWTV9FTVVMICsgMHhFKQorI2RlZmluZSBUUkNfSFZN
X0VNVUxfUElDX05FR0VER0UgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4RikKKyNkZWZpbmUgVFJD
X0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxMIChUUkNfSFZNX0VNVUwgKyAweDEwKQorI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lOVFIgICAgKFRSQ19IVk1fRU1VTCArIDB4MTEpCisK
Ky8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCisjZGVmaW5lIFRSQ19QTV9GUkVRX0NI
QU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQorI2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAg
ICAgICAoVFJDX0hXX1BNICsgMHgwMikKKyNkZWZpbmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAg
KFRSQ19IV19QTSArIDB4MDMpCisKKy8qIFRyYWNlIGV2ZW50cyBmb3IgSVJRcyAqLworI2RlZmlu
ZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9ERUxBWSAoVFJDX0hXX0lSUSArIDB4MSkKKyNkZWZp
bmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAgICAgICAgKFRSQ19IV19JUlEgKyAweDIpCisjZGVm
aW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1IgICAgICAgIChUUkNfSFdfSVJRICsgMHgzKQorI2Rl
ZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkKKyNk
ZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAgKFRSQ19IV19JUlEgKyAweDUpCisj
ZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAgIChUUkNfSFdfSVJRICsgMHg2KQor
I2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4NykK
KyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAgICAgKFRSQ19IV19JUlEgKyAweDgp
CisKKy8qCisgKiBFdmVudCBGbGFncworICoKKyAqIFNvbWUgZXZlbnRzIChlLmcsIFRSQ19QVl9U
UkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVsdGlwbGUKKyAqIHJlY29yZCBmb3Jt
YXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUKKyAqIGRpZmZl
cmVudCBmb3JtYXRzLgorICovCisjZGVmaW5lIFRSQ182NF9GTEFHIDB4MTAwIC8qIEFkZHJlc3Nl
cyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAzMiBiaXRzKSAqLworCisvKiBUaGlzIHN0cnVjdHVy
ZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciByZWNvcmQuICovCitzdHJ1Y3QgdF9y
ZWMgeworICAgIHVpbnQzMl90IGV2ZW50OjI4OworICAgIHVpbnQzMl90IGV4dHJhX3UzMjozOyAg
ICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFpbGluZyBleHRyYV91MzJbXSBhcnJheSAqLworICAg
IHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3ljbGVz
PyAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3VudGVyIHRpbWVzdGFtcCAqLworICAg
ICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMyWzddOyAgICAgICAgIC8qIGV2ZW50IGRhdGEgaXRl
bXMgKi8KKyAgICAgICAgfSBjeWNsZXM7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1
aW50MzJfdCBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZlbnQgZGF0YSBpdGVtcyAqLworICAg
ICAgICB9IG5vY3ljbGVzOworICAgIH0gdTsKK307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBj
b250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFk
CisgKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFuIGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgorICov
CitzdHJ1Y3QgdF9idWYgeworICAgIC8qIEFzc3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBY
LiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4KKyAgICAgKiBDT05TIGFuZCBQUk9E
IGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6CisgICAgICogICAgIDAgPD0gY29ucyA8IDIq
WAorICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgKKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVz
ZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3aGVuIFggaXMgbm90IGEKKyAgICAg
KiBwb3dlciBvZiAyOgorICAgICAqICAgICAoKCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAo
Ml4zMikgJSBYCisgICAgICovCisgICAgdWludDMyX3QgY29uczsgICAvKiBPZmZzZXQgb2YgbmV4
dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNvbnRyb2wgdG9vbHMuICovCisgICAgdWludDMyX3Qg
cHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIHByb2R1Y2VkIGJ5IFhlbi4gICAg
ICAgICAgICovCisgICAgLyogIFJlY29yZHMgZm9sbG93IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBt
ZXRhLWRhdGEgaGVhZGVyLiAgICAqLworfTsKKworLyogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBN
Rk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJhY2sgdG8gdHJhY2UgY29uc3VtZXJzLgorICogT2Zm
c2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgc3RydWN0dXJlIHdoZXJlIHRoZSBtZm4g
bGlzdCB3aWxsIGJlIGhlbGQuCisgKiBNRk5zIHdpbGwgYmUgYXQgKChVTE9OR19QVFIgKikodF9p
bmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtjcHVdKS4KKyAqLworc3RydWN0IHRfaW5mbyB7Cisg
ICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBTaXplIGluIHBhZ2VzIG9mIGVhY2ggdHJhY2UgYnVm
ZmVyICovCisgICAgdWludDE2X3QgbWZuX29mZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2lu
Zm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxpc3QgcGVyIGNwdSAqLworICAgIC8qIE1GTiBsaXN0
cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyICovCit9OworCisjZW5kaWYgLyogX19YRU5f
UFVCTElDX1RSQUNFX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTog
QworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13
aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdp
dCBhL2luY2x1ZGUveGVuL3B1YmxpYy92ZXJzaW9uLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvdmVy
c2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZjI5MWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvdmVyc2lvbi5oCkBAIC0wLDAgKzEsOTYg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHZlcnNpb24uaAorICoKKyAqIFhlbiB2ZXJz
aW9uLCB0eXBlLCBhbmQgY29tcGlsZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdo
dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29w
eXJpZ2h0IChjKSAyMDA1LCBOZ3V5ZW4gQW5oIFF1eW5oIDxhcXV5bmhAZ21haWwuY29tPgorICog
Q29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29tPgorICov
CisKKyNpZm5kZWYgX19YRU5fUFVCTElDX1ZFUlNJT05fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJ
Q19WRVJTSU9OX0hfXworCisjaW5jbHVkZSAieGVuLmgiCisKKy8qIE5CLiBBbGwgb3BzIHJldHVy
biB6ZXJvIG9uIHN1Y2Nlc3MsIGV4Y2VwdCBYRU5WRVJfe3ZlcnNpb24scGFnZXNpemV9ICovCisK
Ky8qIGFyZyA9PSBOVUxMOyByZXR1cm5zIG1ham9yOm1pbm9yICgxNjoxNikuICovCisjZGVmaW5l
IFhFTlZFUl92ZXJzaW9uICAgICAgMAorCisvKiBhcmcgPT0geGVuX2V4dHJhdmVyc2lvbl90LiAq
LworI2RlZmluZSBYRU5WRVJfZXh0cmF2ZXJzaW9uIDEKK3R5cGVkZWYgY2hhciB4ZW5fZXh0cmF2
ZXJzaW9uX3RbMTZdOworI2RlZmluZSBYRU5fRVhUUkFWRVJTSU9OX0xFTiAoc2l6ZW9mKHhlbl9l
eHRyYXZlcnNpb25fdCkpCisKKy8qIGFyZyA9PSB4ZW5fY29tcGlsZV9pbmZvX3QuICovCisjZGVm
aW5lIFhFTlZFUl9jb21waWxlX2luZm8gMgorc3RydWN0IHhlbl9jb21waWxlX2luZm8geworICAg
IGNoYXIgY29tcGlsZXJbNjRdOworICAgIGNoYXIgY29tcGlsZV9ieVsxNl07CisgICAgY2hhciBj
b21waWxlX2RvbWFpblszMl07CisgICAgY2hhciBjb21waWxlX2RhdGVbMzJdOworfTsKK3R5cGVk
ZWYgc3RydWN0IHhlbl9jb21waWxlX2luZm8geGVuX2NvbXBpbGVfaW5mb190OworCisjZGVmaW5l
IFhFTlZFUl9jYXBhYmlsaXRpZXMgMwordHlwZWRlZiBjaGFyIHhlbl9jYXBhYmlsaXRpZXNfaW5m
b190WzEwMjRdOworI2RlZmluZSBYRU5fQ0FQQUJJTElUSUVTX0lORk9fTEVOIChzaXplb2YoeGVu
X2NhcGFiaWxpdGllc19pbmZvX3QpKQorCisjZGVmaW5lIFhFTlZFUl9jaGFuZ2VzZXQgNAordHlw
ZWRlZiBjaGFyIHhlbl9jaGFuZ2VzZXRfaW5mb190WzY0XTsKKyNkZWZpbmUgWEVOX0NIQU5HRVNF
VF9JTkZPX0xFTiAoc2l6ZW9mKHhlbl9jaGFuZ2VzZXRfaW5mb190KSkKKworI2RlZmluZSBYRU5W
RVJfcGxhdGZvcm1fcGFyYW1ldGVycyA1CitzdHJ1Y3QgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnMg
eworICAgIHhlbl91bG9uZ190IHZpcnRfc3RhcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3Bs
YXRmb3JtX3BhcmFtZXRlcnMgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnNfdDsKKworI2RlZmluZSBY
RU5WRVJfZ2V0X2ZlYXR1cmVzIDYKK3N0cnVjdCB4ZW5fZmVhdHVyZV9pbmZvIHsKKyAgICB1bnNp
Z25lZCBpbnQgc3VibWFwX2lkeDsgICAgLyogSU46IHdoaWNoIDMyLWJpdCBzdWJtYXAgdG8gcmV0
dXJuICovCisgICAgdWludDMyX3QgICAgIHN1Ym1hcDsgICAgICAgIC8qIE9VVDogMzItYml0IHN1
Ym1hcCAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9mZWF0dXJlX2luZm8geGVuX2ZlYXR1cmVf
aW5mb190OworCisvKiBEZWNsYXJlcyB0aGUgZmVhdHVyZXMgcmVwb3J0ZWQgYnkgWEVOVkVSX2dl
dF9mZWF0dXJlcy4gKi8KKyNpbmNsdWRlICJmZWF0dXJlcy5oIgorCisvKiBhcmcgPT0gTlVMTDsg
cmV0dXJucyBob3N0IG1lbW9yeSBwYWdlIHNpemUuICovCisjZGVmaW5lIFhFTlZFUl9wYWdlc2l6
ZSA3CisKKy8qIGFyZyA9PSB4ZW5fZG9tYWluX2hhbmRsZV90LiAqLworI2RlZmluZSBYRU5WRVJf
Z3Vlc3RfaGFuZGxlIDgKKworI2RlZmluZSBYRU5WRVJfY29tbWFuZGxpbmUgOQordHlwZWRlZiBj
aGFyIHhlbl9jb21tYW5kbGluZV90WzEwMjRdOworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1ZF
UlNJT05fSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj
LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0
CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29t
cGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzYzM3MQotLS0gL2Rl
di9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKQEAgLTAsMCArMSw0
NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogeGVuLWNvbXBhdC5oCisgKgorICogR3Vl
c3QgT1MgaW50ZXJmYWNlIHRvIFhlbi4gIENvbXBhdGliaWxpdHkgbGF5ZXIuCisgKgorICogUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg
KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor
ICoKKyAqIENvcHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKKyAqLworCisjaWZu
ZGVmIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVO
X0NPTVBBVF9IX18KKworI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAw
eDAwMDQwNjAwCisKKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNf
XykKKy8qIFhlbiBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMg
dGhlIGxhdGVzdCBpbnRlcmZhY2UuICovCisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18gX19YRU5fTEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KKyNlbGlmICFkZWZpbmVkKF9fWEVO
X0lOVEVSRkFDRV9WRVJTSU9OX18pCisvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2
ZXJzaW9uIGdldCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyAweDAwMDAwMDAwCisjZW5kaWYKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2Vycm9yICJUaGVz
ZSBoZWFkZXIgZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVy
c2lvbi4iCisjZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oIGIvaW5jbHVkZS94ZW4vcHVi
bGljL3hlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNjYzMWIKLS0t
IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKQEAgLTAsMCArMSw5MDgg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHhlbi5oCisgKgorICogR3Vlc3QgT1MgaW50
ZXJmYWNlIHRvIFhlbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNl
bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBE
RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEg
RnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfWEVOX0hfXworI2RlZmluZSBfX1hF
Tl9QVUJMSUNfWEVOX0hfXworCisjaW5jbHVkZSAieGVuLWNvbXBhdC5oIgorCisjaWYgZGVmaW5l
ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorI2luY2x1ZGUgImFyY2gteDg2L3hl
bi5oIgorI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKKyNp
bmNsdWRlICJhcmNoLWFybS5oIgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0
dXJlIgorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisvKiBHdWVzdCBoYW5kbGVzIGZv
ciBwcmltaXRpdmUgQyB0eXBlcy4gKi8KK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwor
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1Y2hhciwgdW5zaWduZWQgY2hhcik7CitERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShpbnQpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAg
dW5zaWduZWQgaW50KTsKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMw
MAorREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoTE9OR19QVFIpOworX19ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRSh1bG9uZywgVUxPTkdfUFRSKTsKKyNlbmRpZgorREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUodm9pZCk7CisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ2NF90KTsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
dWxvbmdfdCk7CisjZW5kaWYKKworLyoKKyAqIEhZUEVSQ0FMTFMKKyAqLworCisvKiBgaW5jb250
ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2YgaHlwZXJjYWxscworICogYCBlbnVtIGh5cGVyY2FsbF9u
dW0geyAvLyBfX0hZUEVSVklTT1JfKiA9PiBIWVBFUlZJU09SXyooKQorICovCisKKyNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF90cmFwX3RhYmxlICAgICAgICAwCisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9tbXVfdXBkYXRlICAgICAgICAgICAgMQorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAg
ICAgICAgICAgICAgIDIKKyNkZWZpbmUgX19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAg
ICAzCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfY2FsbGJhY2tzICAgICAgICAgNAorI2RlZmlu
ZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tzd2l0Y2ggICAgICAgIDUKKyNkZWZpbmUgX19IWVBFUlZJ
U09SX3NjaGVkX29wX2NvbXBhdCAgICAgICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICov
CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCAgICAgICAgICAgNworI2RlZmluZSBf
X0hZUEVSVklTT1Jfc2V0X2RlYnVncmVnICAgICAgICAgIDgKKyNkZWZpbmUgX19IWVBFUlZJU09S
X2dldF9kZWJ1Z3JlZyAgICAgICAgICA5CisjZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVz
Y3JpcHRvciAgICAxMAorI2RlZmluZSBfX0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAg
MTIKKyNkZWZpbmUgX19IWVBFUlZJU09SX211bHRpY2FsbCAgICAgICAgICAgIDEzCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZyAgICAxNAorI2RlZmluZSBfX0hZUEVSVklT
T1Jfc2V0X3RpbWVyX29wICAgICAgICAgMTUKKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2No
YW5uZWxfb3BfY29tcGF0IDE2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMjAyICovCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lvbiAgICAgICAgICAxNworI2RlZmluZSBfX0hZUEVSVklT
T1JfY29uc29sZV9pbyAgICAgICAgICAgMTgKKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZf
b3BfY29tcGF0ICAgIDE5IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMjAyICovCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcCAgICAgICAyMAorI2RlZmluZSBfX0hZUEVSVklTT1Jf
dm1fYXNzaXN0ICAgICAgICAgICAgMjEKKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9t
YXBwaW5nX290aGVyZG9tYWluIDIyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAg
ICAgICAgICAyMyAvKiB4ODYgb25seSAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAg
ICAgICAgICAgICAgMjQKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAg
IDI1IC8qIHg4Ni82NCBvbmx5ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAg
ICAgICAgICAyNgorI2RlZmluZSBfX0hZUEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcK
KyNkZWZpbmUgX19IWVBFUlZJU09SX25taV9vcCAgICAgICAgICAgICAgIDI4CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcCAgICAgICAgICAgICAyOQorI2RlZmluZSBfX0hZUEVSVklTT1Jf
Y2FsbGJhY2tfb3AgICAgICAgICAgMzAKKyNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29w
ICAgICAgICAgIDMxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAz
MgorI2RlZmluZSBfX0hZUEVSVklTT1JfcGh5c2Rldl9vcCAgICAgICAgICAgMzMKKyNkZWZpbmUg
X19IWVBFUlZJU09SX2h2bV9vcCAgICAgICAgICAgICAgIDM0CisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zeXNjdGwgICAgICAgICAgICAgICAzNQorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAg
ICAgICAgICAgICAgMzYKKyNkZWZpbmUgX19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAg
IDM3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl90bWVtX29wICAgICAgICAgICAgICAzOAorI2RlZmlu
ZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhl
bkNsaWVudCAqLworCisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRp
b25zLiAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMSAgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzIgICAgICAgICAgICAgICA1MAorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF8zICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAg
ICAgICAgIDUyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1Mwor
I2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF82ICAgICAgICAgICAgICAgNTQKKyNkZWZpbmUgX19I
WVBFUlZJU09SX2FyY2hfNyAgICAgICAgICAgICAgIDU1CisKKy8qIGAgfSAqLworCisvKgorICog
SFlQRVJDQUxMIENPTVBBVElCSUxJVFkuCisgKi8KKworLyogTmV3IHNjaGVkX29wIGh5cGVyY2Fs
bCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAxMDEuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyA8IDB4MDAwMzAxMDEKKyN1bmRlZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKKyNkZWZpbmUg
X19IWVBFUlZJU09SX3NjaGVkX29wIF9fSFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKKyNlbmRp
ZgorCisvKiBOZXcgZXZlbnQtY2hhbm5lbCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVj
ZWQgaW4gMHgwMDAzMDIwMi4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgw
MDAzMDIwMgorI3VuZGVmIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29w
X2NvbXBhdAorI3VuZGVmIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wX2NvbXBhdAorI2VuZGlmCisK
Ky8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBlcmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAq
LworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjA0CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9kb20wX29wIF9fSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcAorI2VuZGlmCisKKy8q
CisgKiBWSVJUVUFMIElOVEVSUlVQVFMKKyAqCisgKiBWaXJ0dWFsIGludGVycnVwdHMgdGhhdCBh
IGd1ZXN0IE9TIG1heSByZWNlaXZlIGZyb20gWGVuLgorICoKKyAqIEluIHRoZSBzaWRlIGNvbW1l
bnRzLCAnVi4nIGRlbm90ZXMgYSBwZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCisg
KiBnbG9iYWwgVklSUS4gVGhlIGZvcm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQg
Y2Fubm90IGJlIHJlLWJvdW5kLgorICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkg
b25jZSBwZXIgZ3Vlc3Q6IHRoZXkgbXVzdCBpbml0aWFsbHkgYmUKKyAqIGFsbG9jYXRlZCB0byBW
Q1BVMCBidXQgY2FuIHN1YnNlcXVlbnRseSBiZSByZS1ib3VuZC4KKyAqLworLyogYCBlbnVtIHZp
cnEgeyAqLworI2RlZmluZSBWSVJRX1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRl
LCBhbmQvb3IgcmVxdWVzdGVkIHRpbWVvdXQuICAqLworI2RlZmluZSBWSVJRX0RFQlVHICAgICAg
MSAgLyogVi4gUmVxdWVzdCBndWVzdCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwor
I2RlZmluZSBWSVJRX0NPTlNPTEUgICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9u
IGVtZXJnZW5jeSBjb25zb2xlLiAqLworI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4g
KERPTTApIEV4Y2VwdGlvbmFsIGV2ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLworI2RlZmluZSBW
SVJRX1RCVUYgICAgICAgNCAgLyogRy4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBh
dmFpbGFibGUuICAqLworI2RlZmluZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEg
ZG9tYWluIGhhcyBwYXVzZWQgZm9yIGRlYnVnZ2luZy4gICAqLworI2RlZmluZSBWSVJRX1hFTk9Q
Uk9GICAgNyAgLyogVi4gWGVuT3Byb2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJs
ZSAqLworI2RlZmluZSBWSVJRX0NPTl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2Vp
dmVkIG9uIGNvbnNvbGUgICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAg
LyogRy4gKERPTTApIFBDUFUgc3RhdGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLworI2Rl
ZmluZSBWSVJRX01FTV9FVkVOVCAgMTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBv
Y2N1cmVkICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJl
c2VydmVkIGZvciBYZW5DbGllbnQgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBWSVJR
X0VOT01FTSAgICAgMTIgLyogRy4gKERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwor
CisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUg
VklSUV9BUkNIXzAgICAgMTYKKyNkZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKKyNkZWZpbmUgVklS
UV9BUkNIXzIgICAgMTgKKyNkZWZpbmUgVklSUV9BUkNIXzMgICAgMTkKKyNkZWZpbmUgVklSUV9B
UkNIXzQgICAgMjAKKyNkZWZpbmUgVklSUV9BUkNIXzUgICAgMjEKKyNkZWZpbmUgVklSUV9BUkNI
XzYgICAgMjIKKyNkZWZpbmUgVklSUV9BUkNIXzcgICAgMjMKKy8qIGAgfSAqLworCisjZGVmaW5l
IE5SX1ZJUlFTICAgICAgIDI0CisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZ
UEVSVklTT1JfbW11X3VwZGF0ZShjb25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCisgKiBg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0
LAorICogYCAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKKyAqIGAK
KyAqIEByZXFzIGlzIGFuIGFycmF5IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2
YWwpIHBhaXJzKS4KKyAqIEBjb3VudCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4K
KyAqIEBwZG9uZSBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNv
bXBsZXRlZCBvcGVyYXRpb25zCisgKiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3Rl
ZCBvd25lciBvZiBkYXRhIHBhZ2VzIHJlZmVyZW5jZWQgaW4gdGhpcworICogICAgICAgICAgICAg
ICAgICAgIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KKyAqIEBmb3Jl
aWduZG9tWzMxOjE2XTogUEZELCB0aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2Vz
IHJlZmVyZW5jZWQKKyAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52
b2NhdGlvbi4gVGhlIHZhbHVlIG9mIHRoaXMgZmllbGQKKyAqICAgICAgICAgICAgICAgICAgICAg
KHgpIGVuY29kZXMgdGhlIFBGRCBhcyBmb2xsb3dzOgorICogICAgICAgICAgICAgICAgICAgICB4
ID09IDAgPT4gUEZEID09IERPTUlEX1NFTEYKKyAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAw
ID0+IFBGRCA9PSB4IC0gMQorICoKKyAqIFN1Yi1jb21tYW5kczogcHRyWzE6MF0gc3BlY2lmaWVz
IHRoZSBhcHByb3ByaWF0ZSBNTVVfKiBjb21tYW5kLgorICogLS0tLS0tLS0tLS0tLQorICogcHRy
WzE6MF0gPT0gTU1VX05PUk1BTF9QVF9VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIGEg
cGFnZSB0YWJsZSBiZWxvbmdpbmcgdG8gUEZELiBJZiB1cGRhdGluZyBhbiBMMSB0YWJsZSwKKyAq
IGFuZCB0aGUgbmV3IHRhYmxlIGVudHJ5IGlzIHZhbGlkL3ByZXNlbnQsIHRoZSBtYXBwZWQgZnJh
bWUgbXVzdCBiZWxvbmcgdG8KKyAqIEZELiBJZiBhdHRlbXB0aW5nIHRvIG1hcCBhbiBJL08gcGFn
ZSB0aGVuIHRoZSBjYWxsZXIgYXNzdW1lcyB0aGUgcHJpdmlsZWdlCisgKiBvZiB0aGUgRkQuCisg
KiBGRCA9PSBET01JRF9JTzogUGVybWl0IC9vbmx5LyBJL08gbWFwcGluZ3MsIGF0IHRoZSBwcml2
IGxldmVsIG9mIHRoZSBjYWxsZXIuCisgKiBGRCA9PSBET01JRF9YRU46IE1hcCByZXN0cmljdGVk
IGFyZWFzIG9mIFhlbidzIGhlYXAgc3BhY2UuCisgKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgb2YgdGhlIHBhZ2UtdGFibGUgZW50cnkgdG8gbW9kaWZ5LgorICogdmFsICAgICAgLS0gVmFs
dWUgdG8gd3JpdGUuCisgKgorICogVGhlcmUgYWxzbyBjZXJ0YWluIGltcGxpY2l0IHJlcXVpcmVt
ZW50cyB3aGVuIHVzaW5nIHRoaXMgaHlwZXJjYWxsLiBUaGUKKyAqIHBhZ2VzIHRoYXQgbWFrZSB1
cCBhIHBhZ2V0YWJsZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9ubHkgaW4gdGhlIGd1ZXN0LgorICog
VGhpcyBwcmV2ZW50cyB1bmNvbnRyb2xsZWQgZ3Vlc3QgdXBkYXRlcyB0byB0aGUgcGFnZXRhYmxl
LiBYZW4gc3RyaWN0bHkKKyAqIGVuZm9yY2VzIHRoaXMsIGFuZCB3aWxsIGRpc2FsbG93IGFueSBw
YWdldGFibGUgdXBkYXRlIHdoaWNoIHdpbGwgZW5kIHVwCisgKiBtYXBwaW5nIHBhZ2V0YWJsZSBw
YWdlIFJXLCBhbmQgd2lsbCBkaXNhbGxvdyB1c2luZyBhbnkgd3JpdGFibGUgcGFnZSBhcyBhCisg
KiBwYWdldGFibGUuIEluIHByYWN0aWNlIGl0IG1lYW5zIHRoYXQgd2hlbiBjb25zdHJ1Y3Rpbmcg
YSBwYWdlIHRhYmxlIGZvciBhCisgKiBwcm9jZXNzLCB0aHJlYWQsIGV0Yywgd2UgTVVTVCBiZSB2
ZXJ5IGRpbGxpZ2llbnQgaW4gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICogIDEpLiBTdGFydCB3
aXRoIHRvcC1sZXZlbCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxhbmd1YWdlOiBMNCkuIEZpbGwgb3V0
CisgKiAgICAgIHRoZSBlbnRyaWVzLgorICogIDIpLiBLZWVwIG9uIGdvaW5nLCBmaWxsaW5nIG91
dCB0aGUgdXBwZXIgKFBVRCBvciBMMyksIGFuZCBtaWRkbGUgKFBNRAorICogICAgICBvciBMMiku
CisgKiAgMykuIFN0YXJ0IGZpbGxpbmcgb3V0IHRoZSBQVEUgdGFibGUgKEwxKSB3aXRoIHRoZSBQ
VEUgZW50cmllcy4gT25jZQorICogIAlkb25lLCBtYWtlIHN1cmUgdG8gc2V0IGVhY2ggb2YgdGhv
c2UgZW50cmllcyB0byBSTyAoc28gd3JpdGVhYmxlIGJpdAorICogIAlpcyB1bnNldCkuIE9uY2Ug
dGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQsIHNldCB0aGUgUE1EIChMMikgZm9yIHRoaXMKKyAqICAJ
UFRFIHRhYmxlIGFzIFJPLgorICogIDQpLiBXaGVuIGNvbXBsZXRlZCB3aXRoIGFsbCBvZiB0aGUg
UE1EIChMMikgZW50cmllcywgYW5kIGFsbCBvZiB0aGVtIGhhdmUKKyAqICAJYmVlbiBzZXQgdG8g
Uk8sIG1ha2Ugc3VyZSB0byBzZXQgUk8gdGhlIFBVRCAoTDMpLiBEbyB0aGUgc2FtZQorICogIAlv
cGVyYXRpb24gb24gUEdEIChMNCkgcGFnZXRhYmxlIGVudHJpZXMgdGhhdCBoYXZlIGEgUFVEIChM
MykgZW50cnkuCisgKiAgNSkuIE5vdyBiZWZvcmUgeW91IGNhbiB1c2UgdGhvc2UgcGFnZXMgKHNv
IHNldHRpbmcgdGhlIGNyMyksIHlvdSBNVVNUIGFsc28KKyAqICAgICAgcGluIHRoZW0gc28gdGhh
dCB0aGUgaHlwZXJ2aXNvciBjYW4gdmVyaWZ5IHRoZSBlbnRyaWVzLiBUaGlzIGlzIGRvbmUKKyAq
ICAgICAgdmlhIHRoZSBIWVBFUlZJU09SX21tdWV4dF9vcChNTVVFWFRfUElOX0w0X1RBQkxFLCBn
dWVzdCBwaHlzaWNhbCBmcmFtZQorICogICAgICBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKS4gQW5k
IHRoaXMgcG9pbnQgdGhlIEhZUEVSVklTT1JfbW11ZXh0X29wKAorICogICAgICBNTVVFWFRfTkVX
X0JBU0VQVFIsIGd1ZXN0IHBoeXNpY2FsIGZyYW1lIG51bWJlciBvZiB0aGUgUEdEIChMNCkpIGNh
biBiZQorICogICAgICBpc3N1ZWQuCisgKiBGb3IgMzItYml0IGd1ZXN0cywgdGhlIEw0IGlzIG5v
dCB1c2VkIChhcyB0aGVyZSBpcyBsZXNzIHBhZ2V0YWJsZXMpLCBzbworICogaW5zdGVhZCB1c2Ug
TDMuCisgKiBBdCB0aGlzIHBvaW50IHRoZSBwYWdldGFibGVzIGNhbiBiZSBtb2RpZmllZCB1c2lu
ZyB0aGUgTU1VX05PUk1BTF9QVF9VUERBVEUKKyAqIGh5cGVyY2FsbC4gQWxzbyBpZiBzbyBkZXNp
cmVkIHRoZSBPUyBjYW4gYWxzbyB0cnkgdG8gd3JpdGUgdG8gdGhlIFBURQorICogYW5kIGJlIHRy
YXBwZWQgYnkgdGhlIGh5cGVydmlzb3IgKGFzIHRoZSBQVEUgZW50cnkgaXMgUk8pLgorICoKKyAq
IFRvIGRlYWxsb2NhdGUgdGhlIHBhZ2VzLCB0aGUgb3BlcmF0aW9ucyBhcmUgdGhlIHJldmVyc2Ug
b2YgdGhlIHN0ZXBzCisgKiBtZW50aW9uZWQgYWJvdmUuIFRoZSBhcmd1bWVudCBpcyBNTVVFWFRf
VU5QSU5fVEFCTEUgZm9yIGFsbCBsZXZlbHMgYW5kIHRoZQorICogcGFnZXRhYmxlIE1VU1Qgbm90
IGJlIGluIHVzZSAobWVhbmluZyB0aGF0IHRoZSBjcjMgaXMgbm90IHNldCB0byBpdCkuCisgKgor
ICogcHRyWzE6MF0gPT0gTU1VX01BQ0hQSFlTX1VQREFURToKKyAqIFVwZGF0ZXMgYW4gZW50cnkg
aW4gdGhlIG1hY2hpbmUtPnBzZXVkby1waHlzaWNhbCBtYXBwaW5nIHRhYmxlLgorICogcHRyWzoy
XSAgLS0gTWFjaGluZSBhZGRyZXNzIHdpdGhpbiB0aGUgZnJhbWUgd2hvc2UgbWFwcGluZyB0byBt
b2RpZnkuCisgKiAgICAgICAgICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBp
ZiBvbmUgaXMgc3BlY2lmaWVkLgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUgaW50byB0
aGUgbWFwcGluZyBlbnRyeS4KKyAqCisgKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNF
UlZFX0FEOgorICogQXMgTU1VX05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBj
dXJyZW50bHkgaW4gdGhlIFBURSBhcmUgT1JlZAorICogd2l0aCB0aG9zZSBpbiBAdmFsLgorICoK
KyAqIEB2YWwgaXMgdXN1YWxseSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBz
b21lIGF0dHJpYnV0ZXMuCisgKiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUg
YXJjaGl0ZWN0dXJlIGRlZmluZWQgYml0cy4gTWVhbmluZyB0aGF0CisgKiBpZiB0aGlzIGlzIGEg
WDg2XzY0IG1hY2hpbmUgYW5kIGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxh
eW91dAorICogb2YgdmFsIGlzOgorICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5Y
KQorICogIC0gNDYtMTMgdGhlIG1hY2hpbmUgZnJhbWUgbnVtYmVyCisgKiAgLSAxMiBhdmFpbGFi
bGUgZm9yIGd1ZXN0CisgKiAgLSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0CisgKiAgLSAxMCBhdmFp
bGFibGUgZm9yIGd1ZXN0CisgKiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKKyAqICAtIDggZ2xv
YmFsCisgKiAgLSA3IFBBVCAoUFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8g
bWFrZSA0TUIgb3IgMk1CIHBhZ2VzKQorICogIC0gNiBkaXJ0eQorICogIC0gNSBhY2Nlc3NlZAor
ICogIC0gNCBwYWdlIGNhY2hlZCBkaXNhYmxlZAorICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gK
KyAqICAtIDIgdXNlcnNwYWNlIGFjY2Vzc2libGUKKyAqICAtIDEgd3JpdGVhYmxlCisgKiAgLSAw
IHByZXNlbnQKKyAqCisgKiAgVGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhl
IGRlZmF1bHQgbGF5b3V0IGlzIHRoZSBQQUdFX1BTRQorICogIGFsc28gY2FsbGVkIFBBR0VfUEFU
KS4gVGhlIE1NVUVYVF9bVU5dTUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCisgKiAgSFlQRVJW
SVNPUl9tbXVleHRfb3Agc2VydmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBi
ZSA0TUIKKyAqICAob3IgMk1CKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCisg
KgorICogIFRoZSByZWFzb24gdGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcg
dXRpbGl6ZWQgaXMgZHVlIHRvIFhlbgorICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0
ZSBUYWJsZSAoUEFUKSBiaXQgLSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKKyAqICByZWZlciB0
byBJbnRlbCBTRE0gMTAuMTIuIFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRy
aWJ1dGVzIG9mCisgKiAgcGFnZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KKyAqCisgKiAgVGhl
IFBBVCBNU1IgaXMgYXMgZm9sbG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkg
aXMgOCBiaXRzKToKKyAqICAgICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQ
QVQwCisgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKKyAq
ICB8IFVDICB8IFVDLSB8IFdDIHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgK
KyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICogIHwg
VUMgIHwgVUMtIHwgV1QgfCBXQiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZh
dWx0IHdoZW4gbWFjaGluZSBib290cykKKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0r
LS0tLS0rLS0tLSstLS0tKworICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwg
V1QgfCBXQiB8ICA8PSBYZW4KKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0r
LS0tLSstLS0tKworICoKKyAqICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNs
YXRlcyB0byBsb29raW5nIHVwCisgKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVu
dHJ5OgorICoKKyAqICBQQVQvUFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0
IDMpLgorICoKKyAqICBJZiBhbGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQw
LiBJZiBiaXQgMyB0dXJuZWQgb24sCisgKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0
IDMgYW5kIGJpdCA0LCB0aGVuIFBBVDIuLgorICoKKyAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExp
bnV4IFBBVDEgdHJhbnNsYXRlcyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKKyAqICB0
aGF0IGlmIGEgZ3Vlc3QgdGhhdCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBs
aWtlIHRvIHNldCBXcml0ZQorICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQg
ZW50cnkuIE1lYW5pbmcgdGhhdCBCaXQgNyAoUEFHRV9QQVQpIGlzCisgKiAgc2V0LiBGb3IgZXhh
bXBsZSwgdW5kZXIgTGludXggaXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0
aGUKKyAqICBjYWNoaW5nIGFzOgorICoKKyAqICAgV0IgPSBub25lIChzbyBQQVQwKQorICogICBX
QyA9IFBXVCAoYml0IDMgb24pCisgKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUg
b24pLgorICoKKyAqIFRvIG1ha2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNs
YXRlIHRoZSBXQyBiaXQgYXMgc286CisgKgorICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQg
KHNvIGJpdCA3IGlzIG9uKSBhbmQgY2xlYXIgYml0IDMKKyAqCisgKiBBbmQgdG8gdHJhbnNsYXRl
IGJhY2sgaXQgd291bGQ6CisgKgorICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24p
IGFuZCBjbGVhciBiaXQgNy4KKyAqLworI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAg
IDAgLyogY2hlY2tlZCAnKnB0ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLworI2RlZmluZSBN
TVVfTUFDSFBIWVNfVVBEQVRFICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5
IGVudHJ5IGZvciAqLworI2RlZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRv
bWljYWxseTogKnB0ciA9IHZhbCB8ICgqcHRyJihBfEQpKSAqLworCisvKgorICogTU1VIEVYVEVO
REVEIE9QRVJBVElPTlMKKyAqCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklT
T1JfbW11ZXh0X29wKG1tdWV4dF9vcF90IHVvcHNbXSwKKyAqIGAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNvdW50LAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgKnBkb25lLAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9y
ZWlnbmRvbSkKKyAqLworLyogSFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBv
ZiBtbXVleHRfb3Agc3RydWN0dXJlcy4KKyAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVj
aWZpZWQgKG9yIERPTUlEX1NFTEYgZm9yIG5vbmUpLgorICogV2hlcmUgdGhlIEZEIGhhcyBzb21l
IGVmZmVjdCwgaXQgaXMgZGVzY3JpYmVkIGJlbG93LgorICoKKyAqIGNtZDogTU1VRVhUXyhVTilQ
SU5fKl9UQUJMRQorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVk
IGFzIGEgcC50LiBwYWdlLgorICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZE
LCBpZiBvbmUgaXMgc3BlY2lmaWVkLgorICoKKyAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCisg
KiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5z
dGFsbCBpbiBNTVUuCisgKgorICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0
IG9ubHldCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJh
c2UgdG8gaW5zdGFsbCBpbiBNTVUKKyAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgorICoKKyAq
IGNtZDogTU1VRVhUX1RMQl9GTFVTSF9MT0NBTAorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IEZsdXNoZXMgbG9jYWwgVExCLgorICoKKyAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAorICog
bGluZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwg
VExCLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9NVUxUSQorICogdmNwdW1hc2s6IFBv
aW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNoZWQuCisgKgorICogY21kOiBNTVVF
WFRfSU5WTFBHX01VTFRJCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1
c2hlZC4KKyAqIHZjcHVtYXNrOiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVz
aGVkLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9BTEwKKyAqIE5vIGFkZGl0aW9uYWwg
YXJndW1lbnRzLiBGbHVzaGVzIGFsbCBWQ1BVcycgVExCcy4KKyAqCisgKiBjbWQ6IE1NVUVYVF9J
TlZMUEdfQUxMCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBm
cm9tIGFsbCBWQ1BVcycgVExCcy4KKyAqCisgKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQorICog
Tm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNv
bnRlbnRzLgorICoKKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAorICogTm8gYWRk
aXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRz
CisgKiBvbiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLgorICoKKyAqIGNtZDogTU1VRVhUX1NFVF9M
RFQKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3Qg
YmUgcGFnZS1hbGlnbmVkKS4KKyAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4K
KyAqCisgKiBjbWQ6IE1NVUVYVF9DTEVBUl9QQUdFCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIHRvIGJlIGNsZWFyZWQuCisgKgorICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCisgKiBtZm46
IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgorICogc3JjX21m
bjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgorICoKKyAqIGNtZDog
TU1VRVhUX1tVTl1NQVJLX1NVUEVSCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhl
YWQgb2Ygc3VwZXJwYWdlIHRvIGJlIFt1bl1tYXJrZWQuCisgKi8KKy8qIGAgZW51bSBtbXVleHRf
Y21kIHsgKi8KKyNkZWZpbmUgTU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKKyNkZWZpbmUgTU1V
RVhUX1BJTl9MMl9UQUJMRSAgICAgIDEKKyNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAg
IDIKKyNkZWZpbmUgTU1VRVhUX1BJTl9MNF9UQUJMRSAgICAgIDMKKyNkZWZpbmUgTU1VRVhUX1VO
UElOX1RBQkxFICAgICAgIDQKKyNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKKyNk
ZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9MT0NBTCAgIDYKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19M
T0NBTCAgICAgIDcKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKKyNkZWZpbmUg
TU1VRVhUX0lOVkxQR19NVUxUSSAgICAgIDkKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwg
ICAgMTAKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19BTEwgICAgICAgMTEKKyNkZWZpbmUgTU1VRVhU
X0ZMVVNIX0NBQ0hFICAgICAgMTIKKyNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMK
KyNkZWZpbmUgTU1VRVhUX05FV19VU0VSX0JBU0VQVFIgMTUKKyNkZWZpbmUgTU1VRVhUX0NMRUFS
X1BBR0UgICAgICAgMTYKKyNkZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKKyNkZWZp
bmUgTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTCAxOAorI2RlZmluZSBNTVVFWFRfTUFSS19TVVBF
UiAgICAgICAxOQorI2RlZmluZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAorLyogYCB9ICov
CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1Y3QgbW11ZXh0X29wIHsKKyAgICB1bnNpZ25l
ZCBpbnQgY21kOyAvKiA9PiBlbnVtIG1tdWV4dF9jbWQgKi8KKyAgICB1bmlvbiB7CisgICAgICAg
IC8qIFtVTl1QSU5fVEFCTEUsIE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCisgICAgICAg
ICAqIENMRUFSX1BBR0UsIENPUFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KKyAgICAgICAgeGVu
X3Bmbl90ICAgICBtZm47CisgICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VU
X0xEVCAqLworICAgICAgICBVTE9OR19QVFIgbGluZWFyX2FkZHI7CisgICAgfSBhcmcxOworICAg
IHVuaW9uIHsKKyAgICAgICAgLyogU0VUX0xEVCAqLworICAgICAgICB1bnNpZ25lZCBpbnQgbnJf
ZW50czsKKyAgICAgICAgLyogVExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KKyNpZiBf
X1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDUKKyAgICAgICAgWEVOX0dVRVNU
X0hBTkRMRShjb25zdF92b2lkKSB2Y3B1bWFzazsKKyNlbHNlCisgICAgICAgIGNvbnN0IHZvaWQg
KnZjcHVtYXNrOworI2VuZGlmCisgICAgICAgIC8qIENPUFlfUEFHRSAqLworICAgICAgICB4ZW5f
cGZuX3Qgc3JjX21mbjsKKyAgICB9IGFyZzI7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29w
IG1tdWV4dF9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOworI2Vu
ZGlmCisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRl
X3ZhX21hcHBpbmcoVUxPTkdfUFRSIHZhLCB1NjQgdmFsLAorICogYCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudW0gdXZtX2ZsYWdzIGZsYWdzKQorICogYAorICogYCBlbnVtIG5lZ19l
cnJub3ZhbAorICogYCBIWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVM
T05HX1BUUiB2YSwgdTY0IHZhbCwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnVtIHV2bV9mbGFncyBmbGFncywKKyAqIGAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlkKQorICogYAorICogYCBAdmE6IFRo
ZSB2aXJ0dWFsIGFkZHJlc3Mgd2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQorICogYCBA
dmFsOiBUaGUgbmV3IHBhZ2UgdGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRk
cmVzcworICogYCBAZmxhZ3M6IENvbnRyb2wgVExCIGZsdXNoZXMKKyAqLworLyogVGhlc2UgYXJl
IHBhc3NlZCBhcyAnZmxhZ3MnIHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVk
LiAqLworLyogV2hlbiBzcGVjaWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVy
IHRvIGEgQ1BVIGJpdG1hcC4gICAqLworLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxU
SSB3aXRoIGEgTlVMTCBiaXRtYXAgcG9pbnRlci4gICAgICAgICAqLworLyogYCBlbnVtIHV2bV9m
bGFncyB7ICovCisjZGVmaW5lIFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5v
IGZsdXNoaW5nIGF0IGFsbC4gICAqLworI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAo
MVVMPDwwKSAvKiBGbHVzaCBlbnRpcmUgVExCKHMpLiAgKi8KKyNkZWZpbmUgVVZNRl9JTlZMUEcg
ICAgICAgICAgICAgKDJVTDw8MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCisjZGVmaW5l
IFVWTUZfRkxVU0hUWVBFX01BU0sgICAgICgzVUw8PDApCisjZGVmaW5lIFVWTUZfTVVMVEkgICAg
ICAgICAgICAgICgwVUw8PDIpIC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLworI2RlZmluZSBV
Vk1GX0xPQ0FMICAgICAgICAgICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAg
Ki8KKyNkZWZpbmUgVVZNRl9BTEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxs
IFRMQnMuICAgICAgICovCisvKiBgIH0gKi8KKworLyoKKyAqIENvbW1hbmRzIHRvIEhZUEVSVklT
T1JfY29uc29sZV9pbygpLgorICovCisjZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAK
KyNkZWZpbmUgQ09OU09MRUlPX3JlYWQgICAgICAgICAgMQorCisvKgorICogQ29tbWFuZHMgdG8g
SFlQRVJWSVNPUl92bV9hc3Npc3QoKS4KKyAqLworI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAg
ICAgICAgICAgICAgICAwCisjZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAg
IDEKKworLyogeDg2LzMyIGd1ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMu
ICovCisjZGVmaW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKKworLyogeDg2
LzMyIGd1ZXN0czogdHJhcCAodmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1
c2VkLiAqLworI2RlZmluZSBWTUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCisKKy8q
CisgKiB4ODYgZ3Vlc3RzOiBzdXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KKyAq
IE5CMS4gUGFnZS1kaXJlY3RvcnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KKyAqIE5CMi4g
R3Vlc3QgbXVzdCBjb250aW51ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBU
RXMuCisgKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgorCisv
KiB4ODYvUEFFIGd1ZXN0czogc3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCisjZGVmaW5lIFZN
QVNTVF9UWVBFX3BhZV9leHRlbmRlZF9jcjMgICAgIDMKKworI2RlZmluZSBNQVhfVk1BU1NUX1RZ
UEUgICAgICAgICAgICAgICAgICAzCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVkZWYg
dWludDE2X3QgZG9taWRfdDsKKworLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZF
RCBjYW5ub3QgYmUgdXNlZCBmb3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KKyNkZWZpbmUgRE9NSURf
RklSU1RfUkVTRVJWRUQgKDB4N0ZGMFUpCisKKy8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0
YWluIGNvbnRleHRzIHRvIHJlZmVyIHRvIG9uZXNlbGYuICovCisjZGVmaW5lIERPTUlEX1NFTEYg
KDB4N0ZGMFUpCisKKy8qCisgKiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFi
bGUgdXBkYXRlcyB0byBtYXBwaW5nIEkvTyBtZW1vcnkuCisgKiBBbHRob3VnaCBubyBGb3JlaWdu
IERvbWFpbiBuZWVkIGJlIHNwZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTworICog
aXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFw
IGFyZSBhY2NpZGVudGFsbHkKKyAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291
bGQgY2F1c2UgaGF2b2MgYXMgcmVmZXJlbmNlIGNvdW50cworICogYXJlbid0IGFkanVzdGVkIG9u
IHRoZSBJL08tbWFwcGluZyBjb2RlIHBhdGgpLgorICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlu
IE1NVUVYVF9TRVRfRk9SRUlHTkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KKyAqIGJlIHNw
ZWNpZmllZCBieSBhbnkgY2FsbGluZyBkb21haW4uCisgKi8KKyNkZWZpbmUgRE9NSURfSU8gICAo
MHg3RkYxVSkKKworLyoKKyAqIERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQg
ZG9tYWlucyB0byBtYXAgcmVzdHJpY3RlZCBwYXJ0cyBvZgorICogWGVuJ3MgaGVhcCBzcGFjZSAo
ZS5nLiwgdGhlIG1hY2hpbmVfdG9fcGh5cyB0YWJsZSkuCisgKiBUaGlzIG9ubHkgbWFrZXMgc2Vu
c2UgaW4gTU1VRVhUX1NFVF9GT1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKKyAq
IHRoZSBjYWxsZXIgaXMgcHJpdmlsZWdlZC4KKyAqLworI2RlZmluZSBET01JRF9YRU4gICgweDdG
RjJVKQorCisvKgorICogRE9NSURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxl
IHBhZ2VzICovCisjZGVmaW5lIERPTUlEX0NPVyAgKDB4N0ZGM1UpCisKKy8qIERPTUlEX0lOVkFM
SUQgaXMgdXNlZCB0byBpZGVudGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCisjZGVm
aW5lIERPTUlEX0lOVkFMSUQgKDB4N0ZGNFUpCisKKy8qIElkbGUgZG9tYWluLiAqLworI2RlZmlu
ZSBET01JRF9JRExFICgweDdGRkZVKQorCisvKgorICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0
byBIWVBFUlZJU09SX21tdV91cGRhdGUoKS4KKyAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFs
IHBvaW50ZXIvYWRkcmVzcyBzaXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KKyAqLworc3RydWN0
IG1tdV91cGRhdGUgeworICAgIHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNz
IG9mIFBURS4gKi8KKyAgICB1aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQ
VEUuICAgICovCit9OwordHlwZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtbXVfdXBkYXRlX3QpOworCisvKgorICogYCBlbnVtIG5l
Z19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBj
YWxsX2xpc3RbXSwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfY2FsbHMp
OworICoKKyAqIE5CLiBUaGUgZmllbGRzIGFyZSBsb2dpY2FsbHkgdGhlIG5hdHVyYWwgcmVnaXN0
ZXIgc2l6ZSBmb3IgdGhpcworICogYXJjaGl0ZWN0dXJlLiBJbiBjYXNlcyB3aGVyZSB4ZW5fdWxv
bmdfdCBpcyBsYXJnZXIgdGhhbiB0aGlzIHRoZW4KKyAqIGFueSB1bnVzZWQgYml0cyBpbiB0aGUg
dXBwZXIgcG9ydGlvbiBtdXN0IGJlIHplcm8uCisgKi8KK3N0cnVjdCBtdWx0aWNhbGxfZW50cnkg
eworICAgIHhlbl91bG9uZ190IG9wLCByZXN1bHQ7CisgICAgeGVuX3Vsb25nX3QgYXJnc1s2XTsK
K307Cit0eXBlZGVmIHN0cnVjdCBtdWx0aWNhbGxfZW50cnkgbXVsdGljYWxsX2VudHJ5X3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtdWx0aWNhbGxfZW50cnlfdCk7CisKKyNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDQwMAorLyoKKyAqIEV2ZW50IGNoYW5uZWwgZW5k
cG9pbnRzIHBlciBkb21haW4gKHdoZW4gdXNpbmcgdGhlIDItbGV2ZWwgQUJJKToKKyAqICAxMDI0
IGlmIGEgTE9OR19QVFIgaXMgMzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRSIGlzIDY0IGJpdHMu
CisgKi8KKyNkZWZpbmUgTlJfRVZFTlRfQ0hBTk5FTFMgRVZUQ0hOXzJMX05SX0NIQU5ORUxTCisj
ZW5kaWYKKworc3RydWN0IHZjcHVfdGltZV9pbmZvIHsKKyAgICAvKgorICAgICAqIFVwZGF0ZXMg
dG8gdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHByZWNlZGVkIGFuZCBmb2xsb3dlZCBieSBhbgor
ICAgICAqIGluY3JlbWVudCBvZiAndmVyc2lvbicuIFRoZSBndWVzdCBjYW4gdGhlcmVmb3JlIGRl
dGVjdCB1cGRhdGVzIGJ5CisgICAgICogbG9va2luZyBmb3IgY2hhbmdlcyB0byAndmVyc2lvbicu
IElmIHRoZSBsZWFzdC1zaWduaWZpY2FudCBiaXQgb2YKKyAgICAgKiB0aGUgdmVyc2lvbiBudW1i
ZXIgaXMgc2V0IHRoZW4gYW4gdXBkYXRlIGlzIGluIHByb2dyZXNzIGFuZCB0aGUgZ3Vlc3QKKyAg
ICAgKiBtdXN0IHdhaXQgdG8gcmVhZCBhIGNvbnNpc3RlbnQgc2V0IG9mIHZhbHVlcy4KKyAgICAg
KiBUaGUgY29ycmVjdCB3YXkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdmVyc2lvbiBudW1iZXIgaXMg
c2ltaWxhciB0bworICAgICAqIExpbnV4J3Mgc2VxbG9jazogc2VlIHRoZSBpbXBsZW1lbnRhdGlv
bnMgb2YgcmVhZF9zZXFiZWdpbi9yZWFkX3NlcXJldHJ5LgorICAgICAqLworICAgIHVpbnQzMl90
IHZlcnNpb247CisgICAgdWludDMyX3QgcGFkMDsKKyAgICB1aW50NjRfdCB0c2NfdGltZXN0YW1w
OyAgIC8qIFRTQyBhdCBsYXN0IHVwZGF0ZSBvZiB0aW1lIHZhbHMuICAqLworICAgIHVpbnQ2NF90
IHN5c3RlbV90aW1lOyAgICAgLyogVGltZSwgaW4gbmFub3NlY3MsIHNpbmNlIGJvb3QuICAgICov
CisgICAgLyoKKyAgICAgKiBDdXJyZW50IHN5c3RlbSB0aW1lOgorICAgICAqICAgc3lzdGVtX3Rp
bWUgKworICAgICAqICAgKCgoKHRzYyAtIHRzY190aW1lc3RhbXApIDw8IHRzY19zaGlmdCkgKiB0
c2NfdG9fc3lzdGVtX211bCkgPj4gMzIpCisgICAgICogQ1BVIGZyZXF1ZW5jeSAoSHopOgorICAg
ICAqICAgKCgxMF45IDw8IDMyKSAvIHRzY190b19zeXN0ZW1fbXVsKSA+PiB0c2Nfc2hpZnQKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCB0c2NfdG9fc3lzdGVtX211bDsKKyAgICBpbnQ4X3QgICB0c2Nf
c2hpZnQ7CisgICAgaW50OF90ICAgcGFkMVszXTsKK307IC8qIDMyIGJ5dGVzICovCit0eXBlZGVm
IHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB2Y3B1X3RpbWVfaW5mb190OworCitzdHJ1Y3QgdmNwdV9p
bmZvIHsKKyAgICAvKgorICAgICAqICdldnRjaG5fdXBjYWxsX3BlbmRpbmcnIGlzIHdyaXR0ZW4g
bm9uLXplcm8gYnkgWGVuIHRvIGluZGljYXRlCisgICAgICogYSBwZW5kaW5nIG5vdGlmaWNhdGlv
biBmb3IgYSBwYXJ0aWN1bGFyIFZDUFUuIEl0IGlzIHRoZW4gY2xlYXJlZAorICAgICAqIGJ5IHRo
ZSBndWVzdCBPUyAvYmVmb3JlLyBjaGVja2luZyBmb3IgcGVuZGluZyB3b3JrLCB0aHVzIGF2b2lk
aW5nCisgICAgICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUgbWFzayBpcyBv
bmx5IGFjY2Vzc2VkIGJ5IFhlbgorICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBjdXJyZW50bHkg
aG9zdGluZyB0aGUgVkNQVS4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHBlbmRpbmcgYW5k
IG1hc2sgZmxhZ3MgY2FuIGJlIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0IHdpdGhvdXQgc3BlY2lhbAor
ICAgICAqIHN5bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4NiBMT0NLIHBy
ZWZpeCkuCisgICAgICogVGhpcyBtYXkgc2VlbSBzdWJvcHRpbWFsIGJlY2F1c2UgaWYgdGhlIHBl
bmRpbmcgZmxhZyBpcyBzZXQgYnkKKyAgICAgKiBhIGRpZmZlcmVudCBDUFUgdGhlbiBhbiBJUEkg
bWF5IGJlIHNjaGVkdWxlZCBldmVuIHdoZW4gdGhlIG1hc2sKKyAgICAgKiBpcyBzZXQuIEhvd2V2
ZXIsIG5vdGU6CisgICAgICogIDEuIFRoZSB0YXNrIG9mICdpbnRlcnJ1cHQgaG9sZG9mZicgaXMg
Y292ZXJlZCBieSB0aGUgcGVyLWV2ZW50LQorICAgICAqICAgICBjaGFubmVsIG1hc2sgYml0cy4g
QSAnbm9pc3knIGV2ZW50IHRoYXQgaXMgY29udGludWFsbHkgYmVpbmcKKyAgICAgKiAgICAgdHJp
Z2dlcmVkIGNhbiBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVyeSBwcmVjaXNlCisgICAg
ICogICAgIGdyYW51bGFyaXR5LgorICAgICAqICAyLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBw
ZXItVkNQVSBtYXNrIGlzIHRoZXJlZm9yZSB0byByZXN0cmljdAorICAgICAqICAgICByZWVudHJh
bnQgZXhlY3V0aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5jeSBjb250cm9sLCBvciB0bworICAg
ICAqICAgICBwcmV2ZW50IHVuYm91bmRlZCBzdGFjayB1c2FnZS4gV2hhdGV2ZXIgdGhlIHB1cnBv
c2UsIHdlIGV4cGVjdAorICAgICAqICAgICB0aGF0IHRoZSBtYXNrIHdpbGwgYmUgYXNzZXJ0ZWQg
b25seSBmb3Igc2hvcnQgcGVyaW9kcyBhdCBhIHRpbWUsCisgICAgICogICAgIGFuZCBzbyB0aGUg
bGlrZWxpaG9vZCBvZiBhICdzcHVyaW91cycgSVBJIGlzIHN1aXRhYmx5IHNtYWxsLgorICAgICAq
IFRoZSBtYXNrIGlzIHJlYWQgYmVmb3JlIG1ha2luZyBhbiBldmVudCB1cGNhbGwgdG8gdGhlIGd1
ZXN0OiBhCisgICAgICogbm9uLXplcm8gbWFzayB0aGVyZWZvcmUgZ3VhcmFudGVlcyB0aGF0IHRo
ZSBWQ1BVIHdpbGwgbm90IHJlY2VpdmUKKyAgICAgKiBhbiB1cGNhbGwgYWN0aXZhdGlvbi4gVGhl
IG1hc2sgaXMgY2xlYXJlZCB3aGVuIHRoZSBWQ1BVIHJlcXVlc3RzCisgICAgICogdG8gYmxvY2s6
IHRoaXMgYXZvaWRzIHdha2V1cC13YWl0aW5nIHJhY2VzLgorICAgICAqLworICAgIHVpbnQ4X3Qg
ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nOworI2lmZGVmIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLCisg
ICAgdWludDhfdCBldnRjaG5fdXBjYWxsX21hc2s7CisjZWxzZSAvKiBYRU5fSEFWRV9QVl9VUENB
TExfTUFTSyAqLworICAgIHVpbnQ4X3QgcGFkMDsKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9VUENB
TExfTUFTSyAqLworICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKKyAgICBzdHJ1
Y3QgYXJjaF92Y3B1X2luZm8gYXJjaDsKKyAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdGltZTsK
K307IC8qIDY0IGJ5dGVzICh4ODYpICovCisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0
IHZjcHVfaW5mbyB2Y3B1X2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVudHMgMjAw
IHN0YXJ0b2ZkYXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUKKyAq
IFhlbi9rZXJuZWwgc2hhcmVkIGRhdGEgLS0gcG9pbnRlciBwcm92aWRlZCBpbiBzdGFydF9pbmZv
LgorICoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90aCBzbWFsbGVyIHRo
YW4gYSBwYWdlLCBhbmQgdGhlCisgKiBvbmx5IGRhdGEgb24gdGhlIHNoYXJlZCBwYWdlLCBidXQg
bWF5IHZhcnkgaW4gYWN0dWFsIHNpemUgZXZlbiB3aXRoaW4KKyAqIGNvbXBhdGlibGUgWGVuIHZl
cnNpb25zOyBndWVzdHMgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBzaXplCisgKiBvZiB0aGlzIHN0
cnVjdHVyZSByZW1haW5pbmcgY29uc3RhbnQuCisgKi8KK3N0cnVjdCBzaGFyZWRfaW5mbyB7Cisg
ICAgc3RydWN0IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVOX0xFR0FDWV9NQVhfVkNQVVNdOworCisg
ICAgLyoKKyAgICAgKiBBIGRvbWFpbiBjYW4gY3JlYXRlICJldmVudCBjaGFubmVscyIgb24gd2hp
Y2ggaXQgY2FuIHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgKiBhc3luY2hyb25vdXMgZXZlbnQgbm90
aWZpY2F0aW9ucy4gVGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZXZlbnQgdGhhdAorICAgICAq
IGFyZSBkZWxpdmVyZWQgYnkgdGhpcyBtZWNoYW5pc206CisgICAgICogIDEuIEJpLWRpcmVjdGlv
bmFsIGludGVyLSBhbmQgaW50cmEtZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QKKyAg
ICAgKiAgICAgYXJyYW5nZSBvdXQtb2YtYmFuZCB0byBzZXQgdXAgYSBjb25uZWN0aW9uICh1c3Vh
bGx5IGJ5IGFsbG9jYXRpbmcKKyAgICAgKiAgICAgYW4gdW5ib3VuZCAnbGlzdGVuZXInIHBvcnQg
YW5kIGF2ZXJ0aXNpbmcgdGhhdCB2aWEgYSBzdG9yYWdlIHNlcnZpY2UKKyAgICAgKiAgICAgc3Vj
aCBhcyB4ZW5zdG9yZSkuCisgICAgICogIDIuIFBoeXNpY2FsIGludGVycnVwdHMuIEEgZG9tYWlu
IHdpdGggc3VpdGFibGUgaGFyZHdhcmUtYWNjZXNzCisgICAgICogICAgIHByaXZpbGVnZXMgY2Fu
IGJpbmQgYW4gZXZlbnQtY2hhbm5lbCBwb3J0IHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0CisgICAg
ICogICAgIHNvdXJjZS4KKyAgICAgKiAgMy4gVmlydHVhbCBpbnRlcnJ1cHRzICgnZXZlbnRzJyku
IEEgZG9tYWluIGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwKKyAgICAgKiAgICAgcG9ydCB0byBh
IHZpcnR1YWwgaW50ZXJydXB0IHNvdXJjZSwgc3VjaCBhcyB0aGUgdmlydHVhbC10aW1lcgorICAg
ICAqICAgICBkZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgorICAgICAqCisgICAgICog
RXZlbnQgY2hhbm5lbHMgYXJlIGFkZHJlc3NlZCBieSBhICJwb3J0IGluZGV4Ii4gRWFjaCBjaGFu
bmVsIGlzCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHR3byBiaXRzIG9mIGluZm9ybWF0aW9uOgor
ICAgICAqICAxLiBQRU5ESU5HIC0tIG5vdGlmaWVzIHRoZSBkb21haW4gdGhhdCB0aGVyZSBpcyBh
IHBlbmRpbmcgbm90aWZpY2F0aW9uCisgICAgICogICAgIHRvIGJlIHByb2Nlc3NlZC4gVGhpcyBi
aXQgaXMgY2xlYXJlZCBieSB0aGUgZ3Vlc3QuCisgICAgICogIDIuIE1BU0sgLS0gaWYgdGhpcyBi
aXQgaXMgY2xlYXIgdGhlbiBhIDAtPjEgdHJhbnNpdGlvbiBvZiBQRU5ESU5HCisgICAgICogICAg
IHdpbGwgY2F1c2UgYW4gYXN5bmNocm9ub3VzIHVwY2FsbCB0byBiZSBzY2hlZHVsZWQuIFRoaXMg
Yml0IGlzIG9ubHkKKyAgICAgKiAgICAgdXBkYXRlZCBieSB0aGUgZ3Vlc3QuIEl0IGlzIHJlYWQt
b25seSB3aXRoaW4gWGVuLiBJZiBhIGNoYW5uZWwKKyAgICAgKiAgICAgYmVjb21lcyBwZW5kaW5n
IHdoaWxlIHRoZSBjaGFubmVsIGlzIG1hc2tlZCB0aGVuIHRoZSAnZWRnZScgaXMgbG9zdAorICAg
ICAqICAgICAoaS5lLiwgd2hlbiB0aGUgY2hhbm5lbCBpcyB1bm1hc2tlZCwgdGhlIGd1ZXN0IG11
c3QgbWFudWFsbHkgaGFuZGxlCisgICAgICogICAgIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBu
byB1cGNhbGwgd2lsbCBiZSBzY2hlZHVsZWQgYnkgWGVuKS4KKyAgICAgKgorICAgICAqIFRvIGV4
cGVkaXRlIHNjYW5uaW5nIG9mIHBlbmRpbmcgbm90aWZpY2F0aW9ucywgYW55IDAtPjEgcGVuZGlu
ZworICAgICAqIHRyYW5zaXRpb24gb24gYW4gdW5tYXNrZWQgY2hhbm5lbCBjYXVzZXMgYSBjb3Jy
ZXNwb25kaW5nIGJpdCBpbiBhCisgICAgICogcGVyLXZjcHUgc2VsZWN0b3Igd29yZCB0byBiZSBz
ZXQuIEVhY2ggYml0IGluIHRoZSBzZWxlY3RvciBjb3ZlcnMgYQorICAgICAqICdDIExPTkdfUFRS
JyBpbiB0aGUgUEVORElORyBiaXRmaWVsZCBhcnJheS4KKyAgICAgKi8KKyAgICB4ZW5fdWxvbmdf
dCBldnRjaG5fcGVuZGluZ1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07CisgICAgeGVuX3Vsb25n
X3QgZXZ0Y2huX21hc2tbc2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOworCisgICAgLyoKKyAgICAg
KiBXYWxsY2xvY2sgdGltZTogdXBkYXRlZCBvbmx5IGJ5IGNvbnRyb2wgc29mdHdhcmUuIEd1ZXN0
cyBzaG91bGQgYmFzZQorICAgICAqIHRoZWlyIGdldHRpbWVvZmRheSgpIHN5c2NhbGwgb24gdGhp
cyB3YWxsY2xvY2stYmFzZSB2YWx1ZS4KKyAgICAgKi8KKyAgICB1aW50MzJfdCB3Y192ZXJzaW9u
OyAgICAgIC8qIFZlcnNpb24gY291bnRlcjogc2VlIHZjcHVfdGltZV9pbmZvX3QuICovCisgICAg
dWludDMyX3Qgd2Nfc2VjOyAgICAgICAgICAvKiBTZWNzICAwMDowMDowMCBVVEMsIEphbiAxLCAx
OTcwLiAgKi8KKyAgICB1aW50MzJfdCB3Y19uc2VjOyAgICAgICAgIC8qIE5zZWNzIDAwOjAwOjAw
IFVUQywgSmFuIDEsIDE5NzAuICAqLworI2lmICFkZWZpbmVkKF9faTM4Nl9fKQorICAgIHVpbnQz
Ml90IHdjX3NlY19oaTsKKyMgZGVmaW5lIHhlbl93Y19zZWNfaGkgd2Nfc2VjX2hpCisjZWxpZiAh
ZGVmaW5lZChfX1hFTl9fKSAmJiAhZGVmaW5lZChfX1hFTl9UT09MU19fKQorIyBkZWZpbmUgeGVu
X3djX3NlY19oaSBhcmNoLndjX3NlY19oaQorI2VuZGlmCisKKyAgICBzdHJ1Y3QgYXJjaF9zaGFy
ZWRfaW5mbyBhcmNoOworCit9OworI2lmbmRlZiBfX1hFTl9fCit0eXBlZGVmIHN0cnVjdCBzaGFy
ZWRfaW5mbyBzaGFyZWRfaW5mb190OworI2VuZGlmCisKKy8qCisgKiBgaW5jb250ZW50cyAyMDAg
c3RhcnRvZmRheSBTdGFydC1vZi1kYXkgbWVtb3J5IGxheW91dAorICoKKyAqICAxLiBUaGUgZG9t
YWluIGlzIHN0YXJ0ZWQgd2l0aGluIGNvbnRpZ3VvdXMgdmlydHVhbC1tZW1vcnkgcmVnaW9uLgor
ICogIDIuIFRoZSBjb250aWd1b3VzIHJlZ2lvbiBlbmRzIG9uIGFuIGFsaWduZWQgNE1CIGJvdW5k
YXJ5LgorICogIDMuIFRoaXMgdGhlIG9yZGVyIG9mIGJvb3RzdHJhcCBlbGVtZW50cyBpbiB0aGUg
aW5pdGlhbCB2aXJ0dWFsIHJlZ2lvbjoKKyAqICAgICAgYS4gcmVsb2NhdGVkIGtlcm5lbCBpbWFn
ZQorICogICAgICBiLiBpbml0aWFsIHJhbSBkaXNrICAgICAgICAgICAgICBbbW9kX3N0YXJ0LCBt
b2RfbGVuXQorICogICAgICBjLiBsaXN0IG9mIGFsbG9jYXRlZCBwYWdlIGZyYW1lcyBbbWZuX2xp
c3QsIG5yX3BhZ2VzXQorICogICAgICAgICAodW5sZXNzIHJlbG9jYXRlZCBkdWUgdG8gWEVOX0VM
Rk5PVEVfSU5JVF9QMk0pCisgKiAgICAgIGQuIHN0YXJ0X2luZm9fdCBzdHJ1Y3R1cmUgICAgICAg
IFtyZWdpc3RlciBFU0kgKHg4NildCisgKiAgICAgIGUuIGJvb3RzdHJhcCBwYWdlIHRhYmxlcyAg
ICAgICAgIFtwdF9iYXNlIGFuZCBDUjMgKHg4NildCisgKiAgICAgIGYuIGJvb3RzdHJhcCBzdGFj
ayAgICAgICAgICAgICAgIFtyZWdpc3RlciBFU1AgKHg4NildCisgKiAgNC4gQm9vdHN0cmFwIGVs
ZW1lbnRzIGFyZSBwYWNrZWQgdG9nZXRoZXIsIGJ1dCBlYWNoIGlzIDRrQi1hbGlnbmVkLgorICog
IDUuIFRoZSBpbml0aWFsIHJhbSBkaXNrIG1heSBiZSBvbWl0dGVkLgorICogIDYuIFRoZSBsaXN0
IG9mIHBhZ2UgZnJhbWVzIGZvcm1zIGEgY29udGlndW91cyAncHNldWRvLXBoeXNpY2FsJyBtZW1v
cnkKKyAqICAgICBsYXlvdXQgZm9yIHRoZSBkb21haW4uIEluIHBhcnRpY3VsYXIsIHRoZSBib290
c3RyYXAgdmlydHVhbC1tZW1vcnkKKyAqICAgICByZWdpb24gaXMgYSAxOjEgbWFwcGluZyB0byB0
aGUgZmlyc3Qgc2VjdGlvbiBvZiB0aGUgcHNldWRvLXBoeXNpY2FsIG1hcC4KKyAqICA3LiBBbGwg
Ym9vdHN0cmFwIGVsZW1lbnRzIGFyZSBtYXBwZWQgcmVhZC13cml0YWJsZSBmb3IgdGhlIGd1ZXN0
IE9TLiBUaGUKKyAqICAgICBvbmx5IGV4Y2VwdGlvbiBpcyB0aGUgYm9vdHN0cmFwIHBhZ2UgdGFi
bGUsIHdoaWNoIGlzIG1hcHBlZCByZWFkLW9ubHkuCisgKiAgOC4gVGhlcmUgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhdCBsZWFzdCA1MTJrQiBwYWRkaW5nIGFmdGVyIHRoZSBmaW5hbAorICogICAgIGJv
b3RzdHJhcCBlbGVtZW50LiBJZiBuZWNlc3NhcnksIHRoZSBib290c3RyYXAgdmlydHVhbCByZWdp
b24gaXMKKyAqICAgICBleHRlbmRlZCBieSBhbiBleHRyYSA0TUIgdG8gZW5zdXJlIHRoaXMuCisg
KgorICogTm90ZTogUHJpb3IgdG8gMjU4MzM6YmI4NWJiY2NiMWM5LiAoIng4Ni8zMi1vbi02NCBh
ZGp1c3QgRG9tMCBpbml0aWFsIHBhZ2UKKyAqIHRhYmxlIGxheW91dCIpIGEgYnVnIGNhdXNlZCB0
aGUgcHRfYmFzZSAoMy5lIGFib3ZlKSBhbmQgY3IzIHRvIG5vdCBwb2ludAorICogdG8gdGhlIHN0
YXJ0IG9mIHRoZSBndWVzdCBwYWdlIHRhYmxlcyAoaXQgd2FzIG9mZnNldCBieSB0d28gcGFnZXMp
LgorICogVGhpcyBvbmx5IG1hbmlmZXN0ZWQgaXRzZWxmIG9uIDMyLW9uLTY0IGRvbTAga2VybmVs
cyBhbmQgbm90IDMyLW9uLTY0IGRvbVUKKyAqIG9yIDY0LWJpdCBrZXJuZWxzIG9mIGFueSBjb2xv
dXIuIFRoZSBwYWdlIHRhYmxlcyBmb3IgYSAzMi1vbi02NCBkb20wIGdvdAorICogYWxsb2NhdGVk
IGluIHRoZSBvcmRlcjogJ2ZpcnN0IEwxJywnZmlyc3QgTDInLCAnZmlyc3QgTDMnLCBzbyB0aGUg
b2Zmc2V0CisgKiB0byB0aGUgcGFnZSB0YWJsZSBiYXNlIGlzIGJ5IHR3byBwYWdlcyBiYWNrLiBU
aGUgaW5pdGlhbCBkb21haW4gaWYgaXQgaXMKKyAqIDMyLWJpdCBhbmQgcnVucyB1bmRlciBhIDY0
LWJpdCBoeXBlcnZpc29yIHNob3VsZCBfTk9UXyB1c2UgdHdvIG9mIHRoZQorICogcGFnZXMgcHJl
Y2VkaW5nIHB0X2Jhc2UgYW5kIG1hcmsgdGhlbSBhcyByZXNlcnZlZC91bnVzZWQuCisgKi8KKyNp
ZmRlZiBYRU5fSEFWRV9QVl9HVUVTVF9FTlRSWQorc3RydWN0IHN0YXJ0X2luZm8geworICAgIC8q
IFRIRSBGT0xMT1dJTkcgQVJFIEZJTExFRCBJTiBCT1RIIE9OIElOSVRJQUwgQk9PVCBBTkQgT04g
UkVTVU1FLiAgICAqLworICAgIGNoYXIgbWFnaWNbMzJdOyAgICAgICAgICAgICAvKiAieGVuLTx2
ZXJzaW9uPi08cGxhdGZvcm0+Ii4gICAgICAgICAgICAqLworICAgIFVMT05HX1BUUiBucl9wYWdl
czsgICAgIC8qIFRvdGFsIHBhZ2VzIGFsbG9jYXRlZCB0byB0aGlzIGRvbWFpbi4gICovCisgICAg
VUxPTkdfUFRSIHNoYXJlZF9pbmZvOyAgLyogTUFDSElORSBhZGRyZXNzIG9mIHNoYXJlZCBpbmZv
IHN0cnVjdC4gKi8KKyAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAgICAgLyogU0lGX3h4eCBm
bGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB4ZW5fcGZuX3Qgc3RvcmVfbWZu
OyAgICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBzaGFyZWQgcGFnZS4gICAgKi8KKyAg
ICB1aW50MzJfdCBzdG9yZV9ldnRjaG47ICAgICAgLyogRXZlbnQgY2hhbm5lbCBmb3Igc3RvcmUg
Y29tbXVuaWNhdGlvbi4gKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICB4ZW5fcGZuX3QgbWZuOyAgICAgIC8qIE1BQ0hJTkUgcGFnZSBudW1iZXIgb2YgY29uc29s
ZSBwYWdlLiAgICovCisgICAgICAgICAgICB1aW50MzJfdCAgZXZ0Y2huOyAgIC8qIEV2ZW50IGNo
YW5uZWwgZm9yIGNvbnNvbGUgcGFnZS4gICAgICAgICovCisgICAgICAgIH0gZG9tVTsKKyAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGluZm9fb2ZmOyAgLyogT2Zmc2V0IG9m
IGNvbnNvbGVfaW5mbyBzdHJ1Y3QuICAgICAgICAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90IGlu
Zm9fc2l6ZTsgLyogU2l6ZSBvZiBjb25zb2xlX2luZm8gc3RydWN0IGZyb20gc3RhcnQuKi8KKyAg
ICAgICAgfSBkb20wOworICAgIH0gY29uc29sZTsKKyAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBP
TkxZIEZJTExFRCBJTiBPTiBJTklUSUFMIEJPT1QgKE5PVCBSRVNVTUUpLiAgICAgKi8KKyAgICBV
TE9OR19QVFIgcHRfYmFzZTsgICAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZSBkaXJlY3Rv
cnkuICAgICAqLworICAgIFVMT05HX1BUUiBucl9wdF9mcmFtZXM7IC8qIE51bWJlciBvZiBib290
c3RyYXAgcC50LiBmcmFtZXMuICAgICAgICovCisgICAgVUxPTkdfUFRSIG1mbl9saXN0OyAgICAg
LyogVklSVFVBTCBhZGRyZXNzIG9mIHBhZ2UtZnJhbWUgbGlzdC4gICAgKi8KKyAgICBVTE9OR19Q
VFIgbW9kX3N0YXJ0OyAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcHJlLWxvYWRlZCBtb2R1bGUg
ICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoUEZOIG9mIHByZS1sb2Fk
ZWQgbW9kdWxlIGlmICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiAgU0lGX01PRF9TVEFSVF9QRk4gc2V0IGluIGZsYWdzKS4gICAgICAqLworICAgIFVMT05H
X1BUUiBtb2RfbGVuOyAgICAgIC8qIFNpemUgKGJ5dGVzKSBvZiBwcmUtbG9hZGVkIG1vZHVsZS4g
ICAgICovCisjZGVmaW5lIE1BWF9HVUVTVF9DTURMSU5FIDEwMjQKKyAgICBpbnQ4X3QgY21kX2xp
bmVbTUFYX0dVRVNUX0NNRExJTkVdOworICAgIC8qIFRoZSBwZm4gcmFuZ2UgaGVyZSBjb3ZlcnMg
Ym90aCBwYWdlIHRhYmxlIGFuZCBwLT5tIHRhYmxlIGZyYW1lcy4gICAqLworICAgIFVMT05HX1BU
UiBmaXJzdF9wMm1fcGZuOy8qIDFzdCBwZm4gZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAg
ICovCisgICAgVUxPTkdfUFRSIG5yX3AybV9mcmFtZXM7LyogIyBvZiBwZm5zIGZvcm1pbmcgaW5p
dGlhbCBQLT5NIHRhYmxlLiAgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBzdGFydF9pbmZvIHN0YXJ0
X2luZm9fdDsKKworLyogTmV3IGNvbnNvbGUgdW5pb24gZm9yIGRvbTAgaW50cm9kdWNlZCBpbiAw
eDAwMDMwMjAzLiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAz
CisjZGVmaW5lIGNvbnNvbGVfbWZuICAgIGNvbnNvbGUuZG9tVS5tZm4KKyNkZWZpbmUgY29uc29s
ZV9ldnRjaG4gY29uc29sZS5kb21VLmV2dGNobgorI2VuZGlmCisjZW5kaWYgLyogWEVOX0hBVkVf
UFZfR1VFU1RfRU5UUlkgKi8KKworLyogVGhlc2UgZmxhZ3MgYXJlIHBhc3NlZCBpbiB0aGUgJ2Zs
YWdzJyBmaWVsZCBvZiBzdGFydF9pbmZvX3QuICovCisjZGVmaW5lIFNJRl9QUklWSUxFR0VEICAg
ICgxPDwwKSAgLyogSXMgdGhlIGRvbWFpbiBwcml2aWxlZ2VkPyAqLworI2RlZmluZSBTSUZfSU5J
VERPTUFJTiAgICAoMTw8MSkgIC8qIElzIHRoaXMgdGhlIGluaXRpYWwgY29udHJvbCBkb21haW4/
ICovCisjZGVmaW5lIFNJRl9NVUxUSUJPT1RfTU9EICgxPDwyKSAgLyogSXMgbW9kX3N0YXJ0IGEg
bXVsdGlib290IG1vZHVsZT8gKi8KKyNkZWZpbmUgU0lGX01PRF9TVEFSVF9QRk4gKDE8PDMpICAv
KiBJcyBtb2Rfc3RhcnQgYSBQRk4/ICovCisjZGVmaW5lIFNJRl9QTV9NQVNLICAgICAgICgweEZG
PDw4KSAvKiByZXNlcnZlIDEgYnl0ZSBmb3IgeGVuLXBtIG9wdGlvbnMgKi8KKworLyoKKyAqIEEg
bXVsdGlib290IG1vZHVsZSBpcyBhIHBhY2thZ2UgY29udGFpbmluZyBtb2R1bGVzIHZlcnkgc2lt
aWxhciB0byBhCisgKiBtdWx0aWJvb3QgbW9kdWxlIGFycmF5LiBUaGUgb25seSBkaWZmZXJlbmNl
cyBhcmU6CisgKiAtIHRoZSBhcnJheSBvZiBtb2R1bGUgZGVzY3JpcHRvcnMgaXMgYnkgY29udmVu
dGlvbiBzaW1wbHkgYXQgdGhlIGJlZ2lubmluZworICogICBvZiB0aGUgbXVsdGlib290IG1vZHVs
ZSwKKyAqIC0gYWRkcmVzc2VzIGluIHRoZSBtb2R1bGUgZGVzY3JpcHRvcnMgYXJlIGJhc2VkIG9u
IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgKiAgIG11bHRpYm9vdCBtb2R1bGUsCisgKiAtIHRoZSBu
dW1iZXIgb2YgbW9kdWxlcyBpcyBkZXRlcm1pbmVkIGJ5IGEgdGVybWluYXRpb24gZGVzY3JpcHRv
ciB0aGF0IGhhcworICogICBtb2Rfc3RhcnQgPT0gMC4KKyAqCisgKiBUaGlzIHBlcm1pdHMgdG8g
Ym90aCBidWlsZCBpdCBzdGF0aWNhbGx5IGFuZCByZWZlcmVuY2UgaXQgaW4gYSBjb25maWd1cmF0
aW9uCisgKiBmaWxlLCBhbmQgbGV0IHRoZSBQViBndWVzdCBlYXNpbHkgcmViYXNlIHRoZSBhZGRy
ZXNzZXMgdG8gdmlydHVhbCBhZGRyZXNzZXMKKyAqIGFuZCBhdCB0aGUgc2FtZSB0aW1lIGNvdW50
IHRoZSBudW1iZXIgb2YgbW9kdWxlcy4KKyAqLworc3RydWN0IHhlbl9tdWx0aWJvb3RfbW9kX2xp
c3QKK3sKKyAgICAvKiBBZGRyZXNzIG9mIGZpcnN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAqLworICAg
IHVpbnQzMl90IG1vZF9zdGFydDsKKyAgICAvKiBBZGRyZXNzIG9mIGxhc3QgYnl0ZSBvZiB0aGUg
bW9kdWxlIChpbmNsdXNpdmUpICovCisgICAgdWludDMyX3QgbW9kX2VuZDsKKyAgICAvKiBBZGRy
ZXNzIG9mIHplcm8tdGVybWluYXRlZCBjb21tYW5kIGxpbmUgKi8KKyAgICB1aW50MzJfdCBjbWRs
aW5lOworICAgIC8qIFVudXNlZCwgbXVzdCBiZSB6ZXJvICovCisgICAgdWludDMyX3QgcGFkOwor
fTsKKy8qCisgKiBgaW5jb250ZW50cyAyMDAgc3RhcnRvZmRheV9kb20wX2NvbnNvbGUgRG9tMF9j
b25zb2xlCisgKgorICogVGhlIGNvbnNvbGUgc3RydWN0dXJlIGluIHN0YXJ0X2luZm8uY29uc29s
ZS5kb20wCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgaW5jbHVkZXMgYSB2YXJpZXR5IG9mIGluZm9y
bWF0aW9uIHJlcXVpcmVkIHRvCisgKiBoYXZlIGEgd29ya2luZyBWR0EvVkVTQSBjb25zb2xlLgor
ICovCit0eXBlZGVmIHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8geworICAgIHVpbnQ4X3Qg
dmlkZW9fdHlwZTsgLyogRE9NMF9WR0FfQ09OU09MRV8/Pz8gKi8KKyNkZWZpbmUgWEVOX1ZHQVRZ
UEVfVEVYVF9NT0RFXzMgMHgwMworI2RlZmluZSBYRU5fVkdBVFlQRV9WRVNBX0xGQiAgICAweDIz
CisjZGVmaW5lIFhFTl9WR0FUWVBFX0VGSV9MRkIgICAgIDB4NzAKKworICAgIHVuaW9uIHsKKyAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIEZvbnQgaGVpZ2h0LCBpbiBwaXhlbHMuICov
CisgICAgICAgICAgICB1aW50MTZfdCBmb250X2hlaWdodDsKKyAgICAgICAgICAgIC8qIEN1cnNv
ciBsb2NhdGlvbiAoY29sdW1uLCByb3cpLiAqLworICAgICAgICAgICAgdWludDE2X3QgY3Vyc29y
X3gsIGN1cnNvcl95OworICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMg
KGRpbWVuc2lvbnMgaW4gY2hhcmFjdGVycykuICovCisgICAgICAgICAgICB1aW50MTZfdCByb3dz
LCBjb2x1bW5zOworICAgICAgICB9IHRleHRfbW9kZV8zOworCisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAvKiBXaWR0aCBhbmQgaGVpZ2h0LCBpbiBwaXhlbHMuICovCisgICAgICAgICAg
ICB1aW50MTZfdCB3aWR0aCwgaGVpZ2h0OworICAgICAgICAgICAgLyogQnl0ZXMgcGVyIHNjYW4g
bGluZS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IGJ5dGVzX3Blcl9saW5lOworICAgICAgICAg
ICAgLyogQml0cyBwZXIgcGl4ZWwuICovCisgICAgICAgICAgICB1aW50MTZfdCBiaXRzX3Blcl9w
aXhlbDsKKyAgICAgICAgICAgIC8qIExGQiBwaHlzaWNhbCBhZGRyZXNzLCBhbmQgc2l6ZSAoaW4g
dW5pdHMgb2YgNjRrQikuICovCisgICAgICAgICAgICB1aW50MzJfdCBsZmJfYmFzZTsKKyAgICAg
ICAgICAgIHVpbnQzMl90IGxmYl9zaXplOworICAgICAgICAgICAgLyogUkdCIG1hc2sgb2Zmc2V0
cyBhbmQgc2l6ZXMsIGFzIGRlZmluZWQgYnkgVkJFIDEuMisgKi8KKyAgICAgICAgICAgIHVpbnQ4
X3QgIHJlZF9wb3MsIHJlZF9zaXplOworICAgICAgICAgICAgdWludDhfdCAgZ3JlZW5fcG9zLCBn
cmVlbl9zaXplOworICAgICAgICAgICAgdWludDhfdCAgYmx1ZV9wb3MsIGJsdWVfc2l6ZTsKKyAg
ICAgICAgICAgIHVpbnQ4X3QgIHJzdmRfcG9zLCByc3ZkX3NpemU7CisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjA2CisgICAgICAgICAgICAvKiBWRVNBIGNhcGFiaWxp
dGllcyAob2Zmc2V0IDB4YSwgVkVTQSBjb21tYW5kIDB4NGYwMCkuICovCisgICAgICAgICAgICB1
aW50MzJfdCBnYmxfY2FwczsKKyAgICAgICAgICAgIC8qIE1vZGUgYXR0cmlidXRlcyAob2Zmc2V0
IDB4MCwgVkVTQSBjb21tYW5kIDB4NGYwMSkuICovCisgICAgICAgICAgICB1aW50MTZfdCBtb2Rl
X2F0dHJzOworI2VuZGlmCisgICAgICAgIH0gdmVzYV9sZmI7CisgICAgfSB1OworfSBkb20wX3Zn
YV9jb25zb2xlX2luZm9fdDsKKyNkZWZpbmUgeGVuX3ZnYV9jb25zb2xlX2luZm8gZG9tMF92Z2Ff
Y29uc29sZV9pbmZvCisjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvX3QgZG9tMF92Z2FfY29u
c29sZV9pbmZvX3QKKwordHlwZWRlZiB1aW50OF90IHhlbl9kb21haW5faGFuZGxlX3RbMTZdOwor
CisvKiBUdXJuIGEgcGxhaW4gbnVtYmVyIGludG8gYSBDIFVMT05HX1BUUiBjb25zdGFudC4gKi8K
KyNkZWZpbmUgX19ta191bnNpZ25lZF9sb25nKHgpIHggIyMgVUwKKyNkZWZpbmUgbWtfdW5zaWdu
ZWRfbG9uZyh4KSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkKKworX19ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh1aW50OCwgIHVpbnQ4X3QpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50MTYs
IHVpbnQxNl90KTsKK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDMyLCB1aW50MzJfdCk7
CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ2NCwgdWludDY0X3QpOworCisjZWxzZSAv
KiBfX0FTU0VNQkxZX18gKi8KKworLyogSW4gYXNzZW1ibHkgY29kZSB3ZSBjYW5ub3QgdXNlIEMg
bnVtZXJpYyBjb25zdGFudCBzdWZmaXhlcy4gKi8KKyNkZWZpbmUgbWtfdW5zaWduZWRfbG9uZyh4
KSB4CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisKKy8qIERlZmF1bHQgZGVmaW5pdGlv
bnMgZm9yIG1hY3JvcyB1c2VkIGJ5IGRvbWN0bC9zeXNjdGwuICovCisjaWYgZGVmaW5lZChfX1hF
Tl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNpZm5kZWYgaW50NjRfYWxpZ25lZF90
CisjZGVmaW5lIGludDY0X2FsaWduZWRfdCBpbnQ2NF90CisjZW5kaWYKKyNpZm5kZWYgdWludDY0
X2FsaWduZWRfdAorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90CisjZW5kaWYKKyNp
Zm5kZWYgWEVOX0dVRVNUX0hBTkRMRV82NAorI2RlZmluZSBYRU5fR1VFU1RfSEFORExFXzY0KG5h
bWUpIFhFTl9HVUVTVF9IQU5ETEUobmFtZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlf
Xworc3RydWN0IHhlbmN0bF9iaXRtYXAgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgp
IGJpdG1hcDsKKyAgICB1aW50MzJfdCBucl9iaXRzOworfTsKKyNlbmRpZgorCisjZW5kaWYgLyog
ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfWEVOX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog
bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq
IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm
ZiAtLWdpdCBhL2luY2x1ZGUveGVuL3NjaGVkLmggYi9pbmNsdWRlL3hlbi9zY2hlZC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWIxNDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUv
eGVuL3NjaGVkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgotICogc2NoZWQuaAotICoKLSAqIFNjaGVkdWxlciBzdGF0ZSBpbnRlcmFjdGlv
bnMKLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2Vp
ckB4ZW5zb3VyY2UuY29tPgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX1NDSEVEX0hfXwot
I2RlZmluZSBfX1hFTl9QVUJMSUNfU0NIRURfSF9fCi0KLSNpbmNsdWRlICJldmVudF9jaGFubmVs
LmgiCi0KLS8qCi0gKiBgaW5jb250ZW50cyAxNTAgc2NoZWQgR3Vlc3QgU2NoZWR1bGVyIE9wZXJh
dGlvbnMKLSAqCi0gKiBUaGUgU0NIRURPUCBpbnRlcmZhY2UgcHJvdmlkZXMgbWVjaGFuaXNtcyBm
b3IgYSBndWVzdCB0byBpbnRlcmFjdAotICogd2l0aCB0aGUgc2NoZWR1bGVyLCBpbmNsdWRpbmcg
eWllbGQsIGJsb2NraW5nIGFuZCBzaHV0dGluZyBpdHNlbGYKLSAqIGRvd24uCi0gKi8KLQotLyoK
LSAqIFRoZSBwcm90b3R5cGUgZm9yIHRoaXMgaHlwZXJjYWxsIGlzOgotICogYCBMT05HX1BUUiBI
WVBFUlZJU09SX3NjaGVkX29wKGVudW0gc2NoZWRfb3AgY21kLCB2b2lkICphcmcsIC4uLikKLSAq
Ci0gKiBAY21kID09IFNDSEVET1BfPz8/IChzY2hlZHVsZXIgb3BlcmF0aW9uKS4KLSAqIEBhcmcg
PT0gT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3VtZW50KHMpLCBhcyBkZXNjcmliZWQgYmVs
b3cuCi0gKiAuLi4gID09IEFkZGl0aW9uYWwgT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3Vt
ZW50cywgZGVzY3JpYmVkIGJlbG93LgotICoKLSAqIFZlcnNpb25zIG9mIFhlbiBwcmlvciB0byAz
LjAuMiBwcm92aWRlZCBvbmx5IHRoZSBmb2xsb3dpbmcgbGVnYWN5IHZlcnNpb24KLSAqIG9mIHRo
aXMgaHlwZXJjYWxsLCBzdXBwb3J0aW5nIG9ubHkgdGhlIGNvbW1hbmRzIHlpZWxkLCBibG9jayBh
bmQgc2h1dGRvd246Ci0gKiAgTE9OR19QVFIgc2NoZWRfb3AoaW50IGNtZCwgVUxPTkdfUFRSIGFy
ZykKLSAqIEBjbWQgPT0gU0NIRURPUF8/Pz8gKHNjaGVkdWxlciBvcGVyYXRpb24pLgotICogQGFy
ZyA9PSAwICAgICAgICAgICAgICAgKFNDSEVET1BfeWllbGQgYW5kIFNDSEVET1BfYmxvY2spCi0g
KiAgICAgID09IFNIVVRET1dOXyogY29kZSAoU0NIRURPUF9zaHV0ZG93bikKLSAqCi0gKiBUaGlz
IGxlZ2FjeSB2ZXJzaW9uIGlzIGF2YWlsYWJsZSB0byBuZXcgZ3Vlc3RzIGFzOgotICogYCBMT05H
X1BUUiBIWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdChlbnVtIHNjaGVkX29wIGNtZCwgVUxPTkdf
UFRSIGFyZykKLSAqLwotCi0vKiBgIGVudW0gc2NoZWRfb3AgeyAvLyBTQ0hFRE9QXyogPT4gc3Ry
dWN0IHNjaGVkXyogKi8KLS8qCi0gKiBWb2x1bnRhcmlseSB5aWVsZCB0aGUgQ1BVLgotICogQGFy
ZyA9PSBOVUxMLgotICovCi0jZGVmaW5lIFNDSEVET1BfeWllbGQgICAgICAgMAotCi0vKgotICog
QmxvY2sgZXhlY3V0aW9uIG9mIHRoaXMgVkNQVSB1bnRpbCBhbiBldmVudCBpcyByZWNlaXZlZCBm
b3IgcHJvY2Vzc2luZy4KLSAqIElmIGNhbGxlZCB3aXRoIGV2ZW50IHVwY2FsbHMgbWFza2VkLCB0
aGlzIG9wZXJhdGlvbiB3aWxsIGF0b21pY2FsbHkKLSAqIHJlZW5hYmxlIGV2ZW50IGRlbGl2ZXJ5
IGFuZCBjaGVjayBmb3IgcGVuZGluZyBldmVudHMgYmVmb3JlIGJsb2NraW5nIHRoZQotICogVkNQ
VS4gVGhpcyBhdm9pZHMgYSAid2FrZXVwIHdhaXRpbmciIHJhY2UuCi0gKiBAYXJnID09IE5VTEwu
Ci0gKi8KLSNkZWZpbmUgU0NIRURPUF9ibG9jayAgICAgICAxCi0KLS8qCi0gKiBIYWx0IGV4ZWN1
dGlvbiBvZiB0aGlzIGRvbWFpbiAoYWxsIFZDUFVzKSBhbmQgbm90aWZ5IHRoZSBzeXN0ZW0gY29u
dHJvbGxlci4KLSAqIEBhcmcgPT0gcG9pbnRlciB0byBzY2hlZF9zaHV0ZG93bl90IHN0cnVjdHVy
ZS4KLSAqCi0gKiBJZiB0aGUgc2NoZWRfc2h1dGRvd25fdCByZWFzb24gaXMgU0hVVERPV05fc3Vz
cGVuZCB0aGVuCi0gKiB4ODYgUFYgZ3Vlc3RzIG11c3QgYWxzbyBzZXQgUkRYIChFRFggZm9yIDMy
LWJpdCBndWVzdHMpIHRvIHRoZSBNRk4KLSAqIG9mIHRoZSBndWVzdCdzIHN0YXJ0IGluZm8gcGFn
ZS4gIFJEWC9FRFggaXMgdGhlIHRoaXJkIGh5cGVyY2FsbAotICogYXJndW1lbnQuCi0gKgotICog
SW4gYWRkaXRpb24sIHdoaWNoIHJlYXNvbiBpcyBTSFVURE9XTl9zdXNwZW5kIHRoaXMgaHlwZXJj
YWxsCi0gKiByZXR1cm5zIDEgaWYgc3VzcGVuZCB3YXMgY2FuY2VsbGVkIG9yIHRoZSBkb21haW4g
d2FzIG1lcmVseQotICogY2hlY2twb2ludGVkLCBhbmQgMCBpZiBpdCBpcyByZXN1bWluZyBpbiBh
IG5ldyBkb21haW4uCi0gKi8KLSNkZWZpbmUgU0NIRURPUF9zaHV0ZG93biAgICAyCi0KLS8qCi0g
KiBQb2xsIGEgc2V0IG9mIGV2ZW50LWNoYW5uZWwgcG9ydHMuIFJldHVybiB3aGVuIG9uZSBvciBt
b3JlIGFyZSBwZW5kaW5nLiBBbgotICogb3B0aW9uYWwgdGltZW91dCBtYXkgYmUgc3BlY2lmaWVk
LgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3BvbGxfdCBzdHJ1Y3R1cmUuCi0gKi8KLSNk
ZWZpbmUgU0NIRURPUF9wb2xsICAgICAgICAzCi0KLS8qCi0gKiBEZWNsYXJlIGEgc2h1dGRvd24g
Zm9yIGFub3RoZXIgZG9tYWluLiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBpcwotICog
aW4gaW50ZXJwcmV0aW5nIHNodXRkb3duIHJlcXVlc3RzIGFuZCByZWFzb25zIGZvciBmdWxseS12
aXJ0dWFsaXplZAotICogZG9tYWlucy4gIEEgcGFyYS12aXJ0dWFsaXplZCBkb21haW4gbWF5IHVz
ZSBTQ0hFRE9QX3NodXRkb3duIGRpcmVjdGx5LgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVk
X3JlbW90ZV9zaHV0ZG93bl90IHN0cnVjdHVyZS4KLSAqLwotI2RlZmluZSBTQ0hFRE9QX3JlbW90
ZV9zaHV0ZG93biAgICAgICAgNAotCi0vKgotICogTGF0Y2ggYSBzaHV0ZG93biBjb2RlLCBzbyB0
aGF0IHdoZW4gdGhlIGRvbWFpbiBsYXRlciBzaHV0cyBkb3duIGl0Ci0gKiByZXBvcnRzIHRoaXMg
Y29kZSB0byB0aGUgY29udHJvbCB0b29scy4KLSAqIEBhcmcgPT0gc2NoZWRfc2h1dGRvd25fdCwg
YXMgZm9yIFNDSEVET1Bfc2h1dGRvd24uCi0gKi8KLSNkZWZpbmUgU0NIRURPUF9zaHV0ZG93bl9j
b2RlIDUKLQotLyoKLSAqIFNldHVwLCBwb2tlIGFuZCBkZXN0cm95IGEgZG9tYWluIHdhdGNoZG9n
IHRpbWVyLgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3dhdGNoZG9nX3Qgc3RydWN0dXJl
LgotICogV2l0aCBpZCA9PSAwLCBzZXR1cCBhIGRvbWFpbiB3YXRjaGRvZyB0aW1lciB0byBjYXVz
ZSBkb21haW4gc2h1dGRvd24KLSAqICAgICAgICAgICAgICAgYWZ0ZXIgdGltZW91dCwgcmV0dXJu
cyB3YXRjaGRvZyBpZC4KLSAqIFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCA9PSAwLCBkZXN0cm95
IGRvbWFpbiB3YXRjaGRvZyB0aW1lci4KLSAqIFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCAhPSAw
LCBwb2tlIHdhdGNoZG9nIHRpbWVyIGFuZCBzZXQgbmV3IHRpbWVvdXQuCi0gKi8KLSNkZWZpbmUg
U0NIRURPUF93YXRjaGRvZyAgICA2Ci0vKiBgIH0gKi8KLQotc3RydWN0IHNjaGVkX3NodXRkb3du
IHsKLSAgICB1bnNpZ25lZCBpbnQgcmVhc29uOyAvKiBTSFVURE9XTl8qID0+IGVudW0gc2NoZWRf
c2h1dGRvd25fcmVhc29uICovCi19OwotdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfc2h1dGRvd24gc2No
ZWRfc2h1dGRvd25fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3NodXRkb3duX3Qp
OwotCi1zdHJ1Y3Qgc2NoZWRfcG9sbCB7Ci0gICAgWEVOX0dVRVNUX0hBTkRMRShldnRjaG5fcG9y
dF90KSBwb3J0czsKLSAgICB1bnNpZ25lZCBpbnQgbnJfcG9ydHM7Ci0gICAgdWludDY0X3QgdGlt
ZW91dDsKLX07Ci10eXBlZGVmIHN0cnVjdCBzY2hlZF9wb2xsIHNjaGVkX3BvbGxfdDsKLURFRklO
RV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3BvbGxfdCk7Ci0KLXN0cnVjdCBzY2hlZF9yZW1vdGVf
c2h1dGRvd24gewotICAgIGRvbWlkX3QgZG9tYWluX2lkOyAgICAgICAgIC8qIFJlbW90ZSBkb21h
aW4gSUQgKi8KLSAgICB1bnNpZ25lZCBpbnQgcmVhc29uOyAgICAgICAvKiBTSFVURE9XTl8qID0+
IGVudW0gc2NoZWRfc2h1dGRvd25fcmVhc29uICovCi19OwotdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRf
cmVtb3RlX3NodXRkb3duIHNjaGVkX3JlbW90ZV9zaHV0ZG93bl90OwotREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoc2NoZWRfcmVtb3RlX3NodXRkb3duX3QpOwotCi1zdHJ1Y3Qgc2NoZWRfd2F0Y2hk
b2cgewotICAgIHVpbnQzMl90IGlkOyAgICAgICAgICAgICAgICAvKiB3YXRjaGRvZyBJRCAqLwot
ICAgIHVpbnQzMl90IHRpbWVvdXQ7ICAgICAgICAgICAvKiB0aW1lb3V0ICovCi19OwotdHlwZWRl
ZiBzdHJ1Y3Qgc2NoZWRfd2F0Y2hkb2cgc2NoZWRfd2F0Y2hkb2dfdDsKLURFRklORV9YRU5fR1VF
U1RfSEFORExFKHNjaGVkX3dhdGNoZG9nX3QpOwotCi0vKgotICogUmVhc29uIGNvZGVzIGZvciBT
Q0hFRE9QX3NodXRkb3duLiBUaGVzZSBtYXkgYmUgaW50ZXJwcmV0ZWQgYnkgY29udHJvbAotICog
c29mdHdhcmUgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uIEZvciB0aGUgbW9z
dCBwYXJ0LCBYZW4gZG9lcwotICogbm90IGNhcmUgYWJvdXQgdGhlIHNodXRkb3duIGNvZGUuCi0g
Ki8KLS8qIGAgZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24geyAqLwotI2RlZmluZSBTSFVURE9X
Tl9wb3dlcm9mZiAgIDAgIC8qIERvbWFpbiBleGl0ZWQgbm9ybWFsbHkuIENsZWFuIHVwIGFuZCBr
aWxsLiAqLwotI2RlZmluZSBTSFVURE9XTl9yZWJvb3QgICAgIDEgIC8qIENsZWFuIHVwLCBraWxs
LCBhbmQgdGhlbiByZXN0YXJ0LiAgICAgICAgICAqLwotI2RlZmluZSBTSFVURE9XTl9zdXNwZW5k
ICAgIDIgIC8qIENsZWFuIHVwLCBzYXZlIHN1c3BlbmQgaW5mbywga2lsbC4gICAgICAgICAqLwot
I2RlZmluZSBTSFVURE9XTl9jcmFzaCAgICAgIDMgIC8qIFRlbGwgY29udHJvbGxlciB3ZSd2ZSBj
cmFzaGVkLiAgICAgICAgICAgICAqLwotI2RlZmluZSBTSFVURE9XTl93YXRjaGRvZyAgIDQgIC8q
IFJlc3RhcnQgYmVjYXVzZSB3YXRjaGRvZyB0aW1lIGV4cGlyZWQuICAgICAqLwotI2RlZmluZSBT
SFVURE9XTl9NQVggICAgICAgIDQgIC8qIE1heGltdW0gdmFsaWQgc2h1dGRvd24gcmVhc29uLiAg
ICAgICAgICAgICAqLwotLyogYCB9ICovCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfU0NIRURf
SF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUt
c3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBp
bmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW4vdHJhY2UuaCBiL2luY2x1ZGUveGVuL3RyYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhkZTYzMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vdHJhY2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDMzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBpbmNs
dWRlL3B1YmxpYy90cmFjZS5oCi0gKiAKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0cyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgot
ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotICoKLSAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK
LSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBNYXJrIFdpbGxpYW1zb24sIChD
KSAyMDA0IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQotICogQ29weXJpZ2h0IChDKSAyMDA1IEJp
biBSZW4KLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KLSNkZWZpbmUgX19Y
RU5fUFVCTElDX1RSQUNFX0hfXwotCi0jZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAgICA3Ci0jZGVm
aW5lIFRSQUNFX0VYVFJBX1NISUZUIDI4Ci0KLS8qIFRyYWNlIGNsYXNzZXMgKi8KLSNkZWZpbmUg
VFJDX0NMU19TSElGVCAxNgotI2RlZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAwMCAgICAvKiBH
ZW5lcmFsIHRyYWNlICAgICAgICAgICAgKi8KLSNkZWZpbmUgVFJDX1NDSEVEICAgIDB4MDAwMmYw
MDAgICAgLyogWGVuIFNjaGVkdWxlciB0cmFjZSAgICAgICovCi0jZGVmaW5lIFRSQ19ET00wT1Ag
ICAweDAwMDRmMDAwICAgIC8qIFhlbiBET00wIG9wZXJhdGlvbiB0cmFjZSAqLwotI2RlZmluZSBU
UkNfSFZNICAgICAgMHgwMDA4ZjAwMCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAgICAgICAgKi8K
LSNkZWZpbmUgVFJDX01FTSAgICAgIDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9yeSB0cmFjZSAg
ICAgICAgICovCi0jZGVmaW5lIFRSQ19QViAgICAgICAweDAwMjBmMDAwICAgIC8qIFhlbiBQViB0
cmFjZXMgICAgICAgICAgICAqLwotI2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQwZjAwMCAgICAv
KiBYZW4gc2hhZG93IHRyYWNpbmcgICAgICAgKi8KLSNkZWZpbmUgVFJDX0hXICAgICAgIDB4MDA4
MGYwMDAgICAgLyogWGVuIGhhcmR3YXJlLXJlbGF0ZWQgdHJhY2VzICovCi0jZGVmaW5lIFRSQ19H
VUVTVCAgICAweDA4MDBmMDAwICAgIC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMgICAqLwotI2Rl
ZmluZSBUUkNfQUxMICAgICAgMHgwZmZmZjAwMAotI2RlZmluZSBUUkNfSERfVE9fRVZFTlQoeCkg
KCh4KSYweDBmZmZmZmZmKQotI2RlZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVMPDwzMSkKLSNk
ZWZpbmUgVFJDX0hEX0lOQ0xVREVTX0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAmIFRSQ19IRF9D
WUNMRV9GTEFHICkgKQotI2RlZmluZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+PlRSQUNFX0VY
VFJBX1NISUZUKSZUUkFDRV9FWFRSQV9NQVgpCi0KLS8qIFRyYWNlIHN1YmNsYXNzZXMgKi8KLSNk
ZWZpbmUgVFJDX1NVQkNMU19TSElGVCAxMgotCi0vKiB0cmFjZSBzdWJjbGFzc2VzIGZvciBTVk0g
Ki8KLSNkZWZpbmUgVFJDX0hWTV9FTlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyogVk1FTlRSWSBh
bmQgI1ZNRVhJVCAgICAgICAqLwotI2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAgIDB4MDAwODIw
MDAgICAvKiB2YXJpb3VzIEhWTSBoYW5kbGVycyAgICAgICovCi0jZGVmaW5lIFRSQ19IVk1fRU1V
TCAgICAgICAgMHgwMDA4NDAwMCAgIC8qIGVtdWxhdGVkIGRldmljZXMgKi8KLQotI2RlZmluZSBU
UkNfU0NIRURfTUlOICAgICAgIDB4MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRlIGNoYW5nZXMg
Ki8KLSNkZWZpbmUgVFJDX1NDSEVEX0NMQVNTICAgICAweDAwMDIyMDAwICAgLyogU2NoZWR1bGVy
LXNwZWNpZmljICAgICovCi0jZGVmaW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgwMDAyODAwMCAg
IC8qIE1vcmUgaW5jbHVzaXZlIHNjaGVkdWxpbmcgKi8KLQotLyoKLSAqIFRoZSBoaWdoZXN0IDMg
Yml0cyBvZiB0aGUgbGFzdCAxMiBiaXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92ZSBhcmUKLSAq
IHJlc2VydmVkIGZvciBlbmNvZGluZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0aGUgaW5mb3Jt
YXRpb24uIFRoZQotICogYWN0dWFsIGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxhc3QgOSBiaXRz
LgotICoKLSAqIFRoaXMgbWVhbnMgd2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2YWlsYWJsZSAo
d2hpY2ggbWVhbnMgYXQgbW9zdCA4Ci0gKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcgZXZlbnRzKSBh
bmQsIGluIGVhY2ggc2NoZWR1bGVyLCB1cCB0byA1MTIKLSAqIGRpZmZlcmVudCBldmVudHMuCi0g
Ki8KLSNkZWZpbmUgVFJDX1NDSEVEX0lEX0JJVFMgMwotI2RlZmluZSBUUkNfU0NIRURfSURfU0hJ
RlQgKFRSQ19TVUJDTFNfU0hJRlQgLSBUUkNfU0NIRURfSURfQklUUykKLSNkZWZpbmUgVFJDX1ND
SEVEX0lEX01BU0sgKCgoMVVMPDxUUkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBUUkNfU0NIRURf
SURfU0hJRlQpCi0jZGVmaW5lIFRSQ19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NIRURfSURfTUFT
SykpCi0KLS8qIFBlci1zY2hlZHVsZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVsZXIgc3BlY2lm
aWMgZXZlbnRzICovCi0jZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQgICAwCi0jZGVmaW5lIFRSQ19T
Q0hFRF9DU0NIRUQyICAxCi0jZGVmaW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCi0jZGVmaW5lIFRS
Q19TQ0hFRF9BUklOQzY1MyAzCi0jZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0Ci0KLS8qIFBl
ci1zY2hlZHVsZXIgdHJhY2luZyAqLwotI2RlZmluZSBUUkNfU0NIRURfQ0xBU1NfRVZUKF9jLCBf
ZSkgXAotICAoICggVFJDX1NDSEVEX0NMQVNTIHwgXAotICAgICAgKChUUkNfU0NIRURfIyNfYyA8
PCBUUkNfU0NIRURfSURfU0hJRlQpICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBcCi0gICAgKF9l
ICYgVFJDX1NDSEVEX0VWVF9NQVNLKSApCi0KLS8qIFRyYWNlIGNsYXNzZXMgZm9yIEhhcmR3YXJl
ICovCi0jZGVmaW5lIFRSQ19IV19QTSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8qIFBvd2VyIG1h
bmFnZW1lbnQgdHJhY2VzICovCi0jZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAgMHgwMDgwMjAw
MCAgIC8qIFRyYWNlcyByZWxhdGluZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAqLwotCi0vKiBU
cmFjZSBldmVudHMgcGVyIGNsYXNzICovCi0jZGVmaW5lIFRSQ19MT1NUX1JFQ09SRFMgICAgICAg
IChUUkNfR0VOICsgMSkKLSNkZWZpbmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAoVFJDX0dFTiAr
IDIpCi0jZGVmaW5lIFRSQ19UUkFDRV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsgMykKLQotI2Rl
ZmluZSBUUkNfU0NIRURfUlVOU1RBVEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4gKyAxKQotI2Rl
ZmluZSBUUkNfU0NIRURfQ09OVElOVUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4gKyAyKQotI2Rl
ZmluZSBUUkNfU0NIRURfRE9NX0FERCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDEpCi0j
ZGVmaW5lIFRSQ19TQ0hFRF9ET01fUkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgMikK
LSNkZWZpbmUgVFJDX1NDSEVEX1NMRUVQICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICAz
KQotI2RlZmluZSBUUkNfU0NIRURfV0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsg
IDQpCi0jZGVmaW5lIFRSQ19TQ0hFRF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0Ug
KyAgNSkKLSNkZWZpbmUgVFJDX1NDSEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9T
RSArICA2KQotI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV04gICAgICAgKFRSQ19TQ0hFRF9WRVJC
T1NFICsgIDcpCi0jZGVmaW5lIFRSQ19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJDX1NDSEVEX1ZF
UkJPU0UgKyAgOCkKLSNkZWZpbmUgVFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChUUkNfU0NIRURf
VkVSQk9TRSArICA5KQotI2RlZmluZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAgKFRSQ19TQ0hF
RF9WRVJCT1NFICsgMTApCi0jZGVmaW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAgICAoVFJDX1ND
SEVEX1ZFUkJPU0UgKyAxMSkKLSNkZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4gICAgIChUUkNf
U0NIRURfVkVSQk9TRSArIDEyKQotI2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVSX0ZOICAgKFRS
Q19TQ0hFRF9WRVJCT1NFICsgMTMpCi0jZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hfSU5GUFJFViAo
VFJDX1NDSEVEX1ZFUkJPU0UgKyAxNCkKLSNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhU
IChUUkNfU0NIRURfVkVSQk9TRSArIDE1KQotI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV05fQ09E
RSAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTYpCi0KLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5U
X01BUCAgICAgIChUUkNfTUVNICsgMSkKLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1VOTUFQ
ICAgIChUUkNfTUVNICsgMikKLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSIChU
UkNfTUVNICsgMykKLSNkZWZpbmUgVFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAgIChUUkNfTUVN
ICsgNCkKLSNkZWZpbmUgVFJDX01FTV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJDX01FTSArIDUp
Ci0jZGVmaW5lIFRSQ19NRU1fUE9EX1BPUFVMQVRFICAgICAgICAoVFJDX01FTSArIDE2KQotI2Rl
ZmluZSBUUkNfTUVNX1BPRF9aRVJPX1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykKLSNkZWZpbmUg
VFJDX01FTV9QT0RfU1VQRVJQQUdFX1NQTElOVEVSIChUUkNfTUVNICsgMTgpCi0KLSNkZWZpbmUg
VFJDX1BWX0VOVFJZICAgMHgwMDIwMTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBvaW50cyBmb3Ig
UFYgZ3Vlc3RzLiAqLwotI2RlZmluZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAwIC8qIFN1Yi1j
YWxsIGluIGEgbXVsdGljYWxsIGh5cGVyY2FsbCAqLwotCi0jZGVmaW5lIFRSQ19QVl9IWVBFUkNB
TEwgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAxKQotI2RlZmluZSBUUkNfUFZfVFJBUCAg
ICAgICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMykKLSNkZWZpbmUgVFJDX1BWX1BBR0Vf
RkFVTFQgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDQpCi0jZGVmaW5lIFRSQ19QVl9GT1JD
RURfSU5WQUxJRF9PUCAgICAgKFRSQ19QVl9FTlRSWSArICA1KQotI2RlZmluZSBUUkNfUFZfRU1V
TEFURV9QUklWT1AgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgNikKLSNkZWZpbmUgVFJDX1BWX0VN
VUxBVEVfNEdCICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDcpCi0jZGVmaW5lIFRSQ19QVl9N
QVRIX1NUQVRFX1JFU1RPUkUgICAgKFRSQ19QVl9FTlRSWSArICA4KQotI2RlZmluZSBUUkNfUFZf
UEFHSU5HX0ZJWFVQICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgOSkKLSNkZWZpbmUgVFJDX1BW
X0dEVF9MRFRfTUFQUElOR19GQVVMVCAoVFJDX1BWX0VOVFJZICsgMTApCi0jZGVmaW5lIFRSQ19Q
Vl9QVFdSX0VNVUxBVElPTiAgICAgICAgKFRSQ19QVl9FTlRSWSArIDExKQotI2RlZmluZSBUUkNf
UFZfUFRXUl9FTVVMQVRJT05fUEFFICAgIChUUkNfUFZfRU5UUlkgKyAxMikKLSNkZWZpbmUgVFJD
X1BWX0hZUEVSQ0FMTF9WMiAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCi0jZGVmaW5lIFRS
Q19QVl9IWVBFUkNBTExfU1VCQ0FMTCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQpCi0KLS8qCi0g
KiBUUkNfUFZfSFlQRVJDQUxMX1YyIGZvcm1hdAotICoKLSAqIE9ubHkgc29tZSBvZiB0aGUgaHlw
ZXJjYWxsIGFyZ3VtZW50IGFyZSByZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bwotICogQTUgaW4g
dGhlIGZpcnN0IGV4dHJhIHdvcmQgYXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMgcHJlc2VudCBh
bmQKLSAqIHRoZSBhcmd1bWVudHMgdGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVlbnRpYWxseSBp
biB0aGUgZm9sbG93aW5nCi0gKiB3b3Jkcy4KLSAqCi0gKiBUaGUgVFJDXzY0X0ZMQUcgYml0IGlz
IG5vdCBzZXQgZm9yIHRoZXNlIGV2ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKLSAqIDY0LWJpdCBh
cmd1bWVudHMgaW4gdGhlIHJlY29yZCkuCi0gKgotICogV29yZAotICogMCAgICBiaXQgMzEgMzB8
MjkgMjh8MjcgMjZ8MjUgMjR8MjMgMjJ8MjEgMjB8MTkgLi4uIDAKLSAqICAgICAgICAgIEE1ICAg
fEE0ICAgfEEzICAgfEEyICAgfEExICAgfEEwICAgfEh5cGVyY2FsbCBvcAotICogMSAgICBGaXJz
dCAzMiBiaXQgKG9yIGxvdyB3b3JkIG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZAotICog
MiAgICBTZWNvbmQgMzIgYml0IChvciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcgaW4g
cmVjb3JkCi0gKiAuLi4KLSAqCi0gKiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6Ci0gKgotICogICAw
MGIgIEFyZ3VtZW50IG5vdCBwcmVzZW50Ci0gKiAgIDAxYiAgMzItYml0IGFyZ3VtZW50IHByZXNl
bnQKLSAqICAgMTBiICA2NC1iaXQgYXJndW1lbnQgcHJlc2VudAotICogICAxMWIgIFJlc2VydmVk
Ci0gKi8KLSNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4MSA8PCAoMjAg
KyAyKihpKSkpCi0jZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkpICgweDIgPDwg
KDIwICsgMiooaSkpKQotI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19NQVNLICAoMHhm
ZmYwMDAwMCkKLQotI2RlZmluZSBUUkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDEpCi0jZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9QQUdBVEUgICAg
ICAgICAgICAgKFRSQ19TSEFET1cgKyAgMikKLSNkZWZpbmUgVFJDX1NIQURPV19GQVNUX01NSU8g
ICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAzKQotI2RlZmluZSBUUkNfU0hBRE9XX0ZB
TFNFX0ZBU1RfUEFUSCAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDQpCi0jZGVmaW5lIFRSQ19T
SEFET1dfTU1JTyAgICAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNSkKLSNkZWZp
bmUgVFJDX1NIQURPV19GSVhVUCAgICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA2
KQotI2RlZmluZSBUUkNfU0hBRE9XX0RPTUZfRFlJTkcgICAgICAgICAgICAgICAgIChUUkNfU0hB
RE9XICsgIDcpCi0jZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURSAgICAgICAgICAgICAgICAgICAg
KFRSQ19TSEFET1cgKyAgOCkKLSNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9XX1VT
RVIgICAgICAoVFJDX1NIQURPVyArICA5KQotI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5T
SEFET1dfRVZUSU5KICAgIChUUkNfU0hBRE9XICsgMTApCi0jZGVmaW5lIFRSQ19TSEFET1dfRU1V
TEFURV9VTlNIQURPV19VTkhBTkRMRUQgKFRSQ19TSEFET1cgKyAxMSkKLSNkZWZpbmUgVFJDX1NI
QURPV19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEyKQotI2RlZmlu
ZSBUUkNfU0hBRE9XX1BSRUFMTE9DX1VOUElOICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTMp
Ci0jZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAgKFRSQ19TSEFE
T1cgKyAxNCkKLSNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAgICAgICAgICAgICAgICAo
VFJDX1NIQURPVyArIDE1KQotCi0vKiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNzICovCi0jZGVm
aW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkKLSNkZWZpbmUgVFJDX0hWTV9WTUVO
VFJZICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMSkKLSNkZWZpbmUgVFJDX0hWTV9W
TUVYSVQgICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMikKLSNkZWZpbmUgVFJDX0hW
TV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZMQUcgKyAweDAy
KQotI2RlZmluZSBUUkNfSFZNX1BGX1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgw
MSkKLSNkZWZpbmUgVFJDX0hWTV9QRl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRS
Q182NF9GTEFHICsgMHgwMSkKLSNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MDIpCi0jZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDIpCi0jZGVmaW5lIFRSQ19IVk1fSU5KX0VY
QyAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAzKQotI2RlZmluZSBUUkNfSFZNX0lOSl9W
SVJRICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNCkKLSNkZWZpbmUgVFJDX0hWTV9SRUlO
Sl9WSVJRICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDUpCi0jZGVmaW5lIFRSQ19IVk1fSU9f
UkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA2KQotI2RlZmluZSBUUkNfSFZNX0lP
X1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykKLSNkZWZpbmUgVFJDX0hWTV9D
Ul9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDgpCi0jZGVmaW5lIFRSQ19IVk1f
Q1JfUkVBRDY0ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDgpCi0j
ZGVmaW5lIFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA5KQot
I2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0
X0ZMQUcgKyAweDA5KQotI2RlZmluZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgwQSkKLSNkZWZpbmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MEIpCi0jZGVmaW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDBDKQotI2RlZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwRCkKLSNkZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MEUpCi0jZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyAweDBGKQotI2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgxMCkKLSNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MTEpCi0jZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDEyKQotI2RlZmluZSBUUkNfSFZNX0hMVCAgICAgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgxMykKLSNkZWZpbmUgVFJDX0hWTV9JTlZMUEcgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MTQpCi0jZGVmaW5lIFRSQ19IVk1fSU5WTFBHNjQgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MTQpCi0jZGVmaW5lIFRSQ19IVk1f
TUNFICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE1KQotI2RlZmluZSBUUkNfSFZN
X0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNikKLSNkZWZpbmUgVFJDX0hW
TV9JT01FTV9SRUFEICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTcpCi0jZGVmaW5lIFRSQ19I
Vk1fQ0xUUyAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE4KQotI2RlZmluZSBUUkNf
SFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKLSNkZWZpbmUgVFJD
X0hWTV9MTVNXNjQgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgx
OSkKLSNkZWZpbmUgVFJDX0hWTV9SRFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MWEpCi0jZGVmaW5lIFRSQ19IVk1fSU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw
eDIwKQotI2RlZmluZSBUUkNfSFZNX05QRiAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgyMSkKLSNkZWZpbmUgVFJDX0hWTV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZNX0hBTkRMRVIg
KyAweDIyKQotI2RlZmluZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExF
UiArIDB4MjMpCi0jZGVmaW5lIFRSQ19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgyNCkKLSNkZWZpbmUgVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDI1KQotCi0jZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDIxNikKLSNkZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MjE3KQotCi0vKiBUcmFjZSBldmVudHMgZm9yIGVtdWxhdGVkIGRldmlj
ZXMgKi8KLSNkZWZpbmUgVFJDX0hWTV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChUUkNfSFZNX0VN
VUwgKyAweDEpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIgICAoVFJDX0hW
TV9FTVVMICsgMHgyKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJTUVSICAgKFRS
Q19IVk1fRU1VTCArIDB4MykKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NUQVJUX1RJTUVS
IChUUkNfSFZNX0VNVUwgKyAweDQpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVUX1NUT1BfVElN
RVIgICAoVFJDX0hWTV9FTVVMICsgMHg1KQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1NUT1Bf
VElNRVIgICAgKFRSQ19IVk1fRU1VTCArIDB4NikKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX1JUQ19T
VE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDcpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9M
QVBJQ19TVE9QX1RJTUVSICAoVFJDX0hWTV9FTVVMICsgMHg4KQotI2RlZmluZSBUUkNfSFZNX0VN
VUxfUElUX1RJTUVSX0NCICAgICAgKFRSQ19IVk1fRU1VTCArIDB4OSkKLSNkZWZpbmUgVFJDX0hW
TV9FTVVMX0xBUElDX1RJTUVSX0NCICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCi0jZGVmaW5lIFRS
Q19IVk1fRU1VTF9QSUNfSU5UX09VVFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhCKQotI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfUElDX0tJQ0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4QykKLSNk
ZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEQp
Ci0jZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hWTV9FTVVMICsg
MHhFKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX05FR0VER0UgICAgICAgKFRSQ19IVk1fRU1V
TCArIDB4RikKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxMIChUUkNfSFZN
X0VNVUwgKyAweDEwKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lOVFIgICAgKFRS
Q19IVk1fRU1VTCArIDB4MTEpCi0KLS8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCi0j
ZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQotI2RlZmlu
ZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKLSNkZWZpbmUgVFJD
X1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCi0KLS8qIFRyYWNlIGV2ZW50
cyBmb3IgSVJRcyAqLwotI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9ERUxBWSAoVFJD
X0hXX0lSUSArIDB4MSkKLSNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAgICAgICAgKFRS
Q19IV19JUlEgKyAweDIpCi0jZGVmaW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1IgICAgICAgIChU
UkNfSFdfSVJRICsgMHgzKQotI2RlZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAo
VFJDX0hXX0lSUSArIDB4NCkKLSNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAg
KFRSQ19IV19JUlEgKyAweDUpCi0jZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAg
IChUUkNfSFdfSVJRICsgMHg2KQotI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAg
ICAoVFJDX0hXX0lSUSArIDB4NykKLSNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAg
ICAgKFRSQ19IV19JUlEgKyAweDgpCi0KLS8qCi0gKiBFdmVudCBGbGFncwotICoKLSAqIFNvbWUg
ZXZlbnRzIChlLmcsIFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVs
dGlwbGUKLSAqIHJlY29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGluZ3Vpc2gg
YmV0d2VlbiB0aGUKLSAqIGRpZmZlcmVudCBmb3JtYXRzLgotICovCi0jZGVmaW5lIFRSQ182NF9G
TEFHIDB4MTAwIC8qIEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAzMiBiaXRzKSAq
LwotCi0vKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciBy
ZWNvcmQuICovCi1zdHJ1Y3QgdF9yZWMgewotICAgIHVpbnQzMl90IGV2ZW50OjI4OwotICAgIHVp
bnQzMl90IGV4dHJhX3UzMjozOyAgICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFpbGluZyBleHRy
YV91MzJbXSBhcnJheSAqLwotICAgIHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUu
Y3ljbGVzIG9yIHUubm9fY3ljbGVzPyAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIHVpbnQzMl90IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3Vu
dGVyIHRpbWVzdGFtcCAqLwotICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMyWzddOyAgICAg
ICAgIC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KLSAgICAgICAgfSBjeWNsZXM7Ci0gICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICB1aW50MzJfdCBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZl
bnQgZGF0YSBpdGVtcyAqLwotICAgICAgICB9IG5vY3ljbGVzOwotICAgIH0gdTsKLX07Ci0KLS8q
Ci0gKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHRy
YWNlIGJ1ZmZlci4gIFRoZSBoZWFkCi0gKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFuIGFycmF5IG9m
IHN0cnVjdCB0X3JlYydzLgotICovCi1zdHJ1Y3QgdF9idWYgewotICAgIC8qIEFzc3VtZSB0aGUg
ZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4K
LSAgICAgKiBDT05TIGFuZCBQUk9EIGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6Ci0gICAg
ICogICAgIDAgPD0gY29ucyA8IDIqWAotICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgKLSAgICAg
KiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3
aGVuIFggaXMgbm90IGEKLSAgICAgKiBwb3dlciBvZiAyOgotICAgICAqICAgICAoKCgyXjMyIC0g
MSkgJSBYKSArIDEpICUgWCAhPSAoMl4zMikgJSBYCi0gICAgICovCi0gICAgdWludDMyX3QgY29u
czsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNvbnRyb2wgdG9v
bHMuICovCi0gICAgdWludDMyX3QgcHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJl
IHByb2R1Y2VkIGJ5IFhlbi4gICAgICAgICAgICovCi0gICAgLyogIFJlY29yZHMgZm9sbG93IGlt
bWVkaWF0ZWx5IGFmdGVyIHRoZSBtZXRhLWRhdGEgaGVhZGVyLiAgICAqLwotfTsKLQotLyogU3Ry
dWN0dXJlIHVzZWQgdG8gcGFzcyBNRk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJhY2sgdG8gdHJh
Y2UgY29uc3VtZXJzLgotICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgc3Ry
dWN0dXJlIHdoZXJlIHRoZSBtZm4gbGlzdCB3aWxsIGJlIGhlbGQuCi0gKiBNRk5zIHdpbGwgYmUg
YXQgKChVTE9OR19QVFIgKikodF9pbmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtjcHVdKS4KLSAq
Lwotc3RydWN0IHRfaW5mbyB7Ci0gICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBTaXplIGluIHBh
Z2VzIG9mIGVhY2ggdHJhY2UgYnVmZmVyICovCi0gICAgdWludDE2X3QgbWZuX29mZnNldFtdOyAg
LyogT2Zmc2V0IHdpdGhpbiB0X2luZm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxpc3QgcGVyIGNw
dSAqLwotICAgIC8qIE1GTiBsaXN0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyICovCi19
OwotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hfXyAqLwotCi0vKgotICogTG9jYWwg
dmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNp
Yy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0g
KiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3ZlcnNpb24uaCBiL2luY2x1ZGUv
eGVuL3ZlcnNpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmMjZiMC4uMDAw
MDAwMAotLS0gYS9pbmNsdWRlL3hlbi92ZXJzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiAr
MCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiB2ZXJzaW9uLmgKLSAqIAotICogWGVu
IHZlcnNpb24sIHR5cGUsIGFuZCBjb21waWxlIGluZm9ybWF0aW9uLgotICogCi0gKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0g
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB
UklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgot
ICogQ29weXJpZ2h0IChjKSAyMDA1LCBOZ3V5ZW4gQW5oIFF1eW5oIDxhcXV5bmhAZ21haWwuY29t
PgotICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29t
PgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX1ZFUlNJT05fSF9fCi0jZGVmaW5lIF9fWEVO
X1BVQkxJQ19WRVJTSU9OX0hfXwotCi0jaW5jbHVkZSAieGVuLmgiCi0KLS8qIE5CLiBBbGwgb3Bz
IHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MsIGV4Y2VwdCBYRU5WRVJfe3ZlcnNpb24scGFnZXNpemV9
ICovCi0KLS8qIGFyZyA9PSBOVUxMOyByZXR1cm5zIG1ham9yOm1pbm9yICgxNjoxNikuICovCi0j
ZGVmaW5lIFhFTlZFUl92ZXJzaW9uICAgICAgMAotCi0vKiBhcmcgPT0geGVuX2V4dHJhdmVyc2lv
bl90LiAqLwotI2RlZmluZSBYRU5WRVJfZXh0cmF2ZXJzaW9uIDEKLXR5cGVkZWYgY2hhciB4ZW5f
ZXh0cmF2ZXJzaW9uX3RbMTZdOwotI2RlZmluZSBYRU5fRVhUUkFWRVJTSU9OX0xFTiAoc2l6ZW9m
KHhlbl9leHRyYXZlcnNpb25fdCkpCi0KLS8qIGFyZyA9PSB4ZW5fY29tcGlsZV9pbmZvX3QuICov
Ci0jZGVmaW5lIFhFTlZFUl9jb21waWxlX2luZm8gMgotc3RydWN0IHhlbl9jb21waWxlX2luZm8g
ewotICAgIGNoYXIgY29tcGlsZXJbNjRdOwotICAgIGNoYXIgY29tcGlsZV9ieVsxNl07Ci0gICAg
Y2hhciBjb21waWxlX2RvbWFpblszMl07Ci0gICAgY2hhciBjb21waWxlX2RhdGVbMzJdOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9jb21waWxlX2luZm8geGVuX2NvbXBpbGVfaW5mb190OwotCi0j
ZGVmaW5lIFhFTlZFUl9jYXBhYmlsaXRpZXMgMwotdHlwZWRlZiBjaGFyIHhlbl9jYXBhYmlsaXRp
ZXNfaW5mb190WzEwMjRdOwotI2RlZmluZSBYRU5fQ0FQQUJJTElUSUVTX0lORk9fTEVOIChzaXpl
b2YoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QpKQotCi0jZGVmaW5lIFhFTlZFUl9jaGFuZ2VzZXQg
NAotdHlwZWRlZiBjaGFyIHhlbl9jaGFuZ2VzZXRfaW5mb190WzY0XTsKLSNkZWZpbmUgWEVOX0NI
QU5HRVNFVF9JTkZPX0xFTiAoc2l6ZW9mKHhlbl9jaGFuZ2VzZXRfaW5mb190KSkKLQotI2RlZmlu
ZSBYRU5WRVJfcGxhdGZvcm1fcGFyYW1ldGVycyA1Ci1zdHJ1Y3QgeGVuX3BsYXRmb3JtX3BhcmFt
ZXRlcnMgewotICAgIHhlbl91bG9uZ190IHZpcnRfc3RhcnQ7Ci19OwotdHlwZWRlZiBzdHJ1Y3Qg
eGVuX3BsYXRmb3JtX3BhcmFtZXRlcnMgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnNfdDsKLQotI2Rl
ZmluZSBYRU5WRVJfZ2V0X2ZlYXR1cmVzIDYKLXN0cnVjdCB4ZW5fZmVhdHVyZV9pbmZvIHsKLSAg
ICB1bnNpZ25lZCBpbnQgc3VibWFwX2lkeDsgICAgLyogSU46IHdoaWNoIDMyLWJpdCBzdWJtYXAg
dG8gcmV0dXJuICovCi0gICAgdWludDMyX3QgICAgIHN1Ym1hcDsgICAgICAgIC8qIE9VVDogMzIt
Yml0IHN1Ym1hcCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9mZWF0dXJlX2luZm8geGVuX2Zl
YXR1cmVfaW5mb190OwotCi0vKiBEZWNsYXJlcyB0aGUgZmVhdHVyZXMgcmVwb3J0ZWQgYnkgWEVO
VkVSX2dldF9mZWF0dXJlcy4gKi8KLSNpbmNsdWRlICJmZWF0dXJlcy5oIgotCi0vKiBhcmcgPT0g
TlVMTDsgcmV0dXJucyBob3N0IG1lbW9yeSBwYWdlIHNpemUuICovCi0jZGVmaW5lIFhFTlZFUl9w
YWdlc2l6ZSA3Ci0KLS8qIGFyZyA9PSB4ZW5fZG9tYWluX2hhbmRsZV90LiAqLwotI2RlZmluZSBY
RU5WRVJfZ3Vlc3RfaGFuZGxlIDgKLQotI2RlZmluZSBYRU5WRVJfY29tbWFuZGxpbmUgOQotdHlw
ZWRlZiBjaGFyIHhlbl9jb21tYW5kbGluZV90WzEwMjRdOwotCi0jZW5kaWYgLyogX19YRU5fUFVC
TElDX1ZFUlNJT05fSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBD
Ci0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdp
ZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oIGIvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWI4MGEwLi4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL3hlbi1jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIHhlbi1jb21wYXQuaAotICogCi0gKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KLSAqIAotICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAot
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKLSAqLwotCi0jaWZuZGVmIF9fWEVO
X1BVQkxJQ19YRU5fQ09NUEFUX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9I
X18KLQotI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNDAw
Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLS8qIFhl
biBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVz
dCBpbnRlcmZhY2UuICovCi0jZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5f
TEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KLSNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18pCi0vKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdl
dCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KLSNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyAweDAwMDAwMDAwCi0jZW5kaWYKLQotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXwotI2Vycm9yICJUaGVzZSBoZWFkZXIg
ZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW4veGVuLmggYi9pbmNsdWRlL3hlbi94ZW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWNhNjViMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi94ZW4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDg5OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4uaAotICogCi0gKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8gWGVuLgotICogCi0gKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoK
LSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Ci0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBf
X1hFTl9QVUJMSUNfWEVOX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0hfXwotCi0jaW5j
bHVkZSAieGVuLWNvbXBhdC5oIgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf
X3g4Nl82NF9fKQotI2luY2x1ZGUgImFyY2gteDg2L3hlbi5oIgotI2VsaWYgZGVmaW5lZChfX2Fy
bV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSNpbmNsdWRlICJhcmNoLWFybS5oIgotI2Vs
c2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0KLSNpZm5kZWYg
X19BU1NFTUJMWV9fCi0vKiBHdWVzdCBoYW5kbGVzIGZvciBwcmltaXRpdmUgQyB0eXBlcy4gKi8K
LURFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1Y2hhciwgdW5zaWduZWQgY2hhcik7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShpbnQpOwot
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAgdW5zaWduZWQgaW50KTsKLSNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoTE9OR19QVFIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1bG9uZywgVUxPTkdfUFRS
KTsKLSNlbmRpZgotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm9pZCk7Ci0KLURFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQ2NF90KTsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9wZm5f
dCk7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7Ci0jZW5kaWYKLQotLyoK
LSAqIEhZUEVSQ0FMTFMKLSAqLwotCi0vKiBgaW5jb250ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2Yg
aHlwZXJjYWxscwotICogYCBlbnVtIGh5cGVyY2FsbF9udW0geyAvLyBfX0hZUEVSVklTT1JfKiA9
PiBIWVBFUlZJU09SXyooKQotICovCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90cmFwX3Rh
YmxlICAgICAgICAwCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVfdXBkYXRlICAgICAgICAgICAg
MQotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAgICAgICAgICAgICAgIDIKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAgICAzCi0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zZXRfY2FsbGJhY2tzICAgICAgICAgNAotI2RlZmluZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tz
d2l0Y2ggICAgICAgIDUKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdCAgICAg
ICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9w
bGF0Zm9ybV9vcCAgICAgICAgICAgNwotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2RlYnVncmVn
ICAgICAgICAgIDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyAgICAgICAgICA5
Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVzY3JpcHRvciAgICAxMAotI2RlZmluZSBf
X0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAgMTIKLSNkZWZpbmUgX19IWVBFUlZJU09S
X211bHRpY2FsbCAgICAgICAgICAgIDEzCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFf
bWFwcGluZyAgICAxNAotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3RpbWVyX29wICAgICAgICAg
MTUKLSNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0IDE2IC8qIGNv
bXBhdCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lv
biAgICAgICAgICAxNwotI2RlZmluZSBfX0hZUEVSVklTT1JfY29uc29sZV9pbyAgICAgICAgICAg
MTgKLSNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0ICAgIDE5IC8qIGNvbXBh
dCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ncmFudF90YWJsZV9v
cCAgICAgICAyMAotI2RlZmluZSBfX0hZUEVSVklTT1Jfdm1fYXNzaXN0ICAgICAgICAgICAgMjEK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluIDIyCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAgICAgICAgICAyMyAvKiB4ODYgb25seSAq
LwotI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAgICAgICAgICAgICAgMjQKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8qIHg4Ni82NCBvbmx5ICovCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAgICAgICAgICAyNgotI2RlZmluZSBfX0hZ
UEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcKLSNkZWZpbmUgX19IWVBFUlZJU09SX25t
aV9vcCAgICAgICAgICAgICAgIDI4Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcCAgICAg
ICAgICAgICAyOQotI2RlZmluZSBfX0hZUEVSVklTT1JfY2FsbGJhY2tfb3AgICAgICAgICAgMzAK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29wICAgICAgICAgIDMxCi0jZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAzMgotI2RlZmluZSBfX0hZUEVSVklTT1Jf
cGh5c2Rldl9vcCAgICAgICAgICAgMzMKLSNkZWZpbmUgX19IWVBFUlZJU09SX2h2bV9vcCAgICAg
ICAgICAgICAgIDM0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zeXNjdGwgICAgICAgICAgICAgICAz
NQotI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAgICAgICAgICAgICAgMzYKLSNkZWZpbmUg
X19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAgIDM3Ci0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul90bWVtX29wICAgICAgICAgICAgICAzOAotI2RlZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2
ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwotCi0vKiBBcmNoaXRl
Y3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBfX0hZUEVS
VklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hf
MSAgICAgICAgICAgICAgIDQ5Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzIgICAgICAgICAg
ICAgICA1MAotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8zICAgICAgICAgICAgICAgNTEKLSNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAgICAgIDUyCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1MwotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF82ICAgICAgICAgICAgICAgNTQKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNyAgICAgICAg
ICAgICAgIDU1Ci0KLS8qIGAgfSAqLwotCi0vKgotICogSFlQRVJDQUxMIENPTVBBVElCSUxJVFku
Ci0gKi8KLQotLyogTmV3IHNjaGVkX29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAx
MDEuICovCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAxMDEKLSN1bmRl
ZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKLSNlbmRpZgotCi0vKiBOZXcgZXZlbnQtY2hhbm5l
bCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMi4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMgotI3VuZGVmIF9fSFlQRVJW
SVNPUl9ldmVudF9jaGFubmVsX29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs
X29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdAotI3VuZGVmIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wX2NvbXBhdAotI2VuZGlmCi0KLS8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBl
cmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDMwMjA0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9kb20wX29wIF9fSFlQ
RVJWSVNPUl9wbGF0Zm9ybV9vcAotI2VuZGlmCi0KLS8qIAotICogVklSVFVBTCBJTlRFUlJVUFRT
Ci0gKiAKLSAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2VpdmUg
ZnJvbSBYZW4uCi0gKiAKLSAqIEluIHRoZSBzaWRlIGNvbW1lbnRzLCAnVi4nIGRlbm90ZXMgYSBw
ZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCi0gKiBnbG9iYWwgVklSUS4gVGhlIGZv
cm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fubm90IGJlIHJlLWJvdW5kLgot
ICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25jZSBwZXIgZ3Vlc3Q6IHRoZXkg
bXVzdCBpbml0aWFsbHkgYmUKLSAqIGFsbG9jYXRlZCB0byBWQ1BVMCBidXQgY2FuIHN1YnNlcXVl
bnRseSBiZSByZS1ib3VuZC4KLSAqLwotLyogYCBlbnVtIHZpcnEgeyAqLwotI2RlZmluZSBWSVJR
X1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRlLCBhbmQvb3IgcmVxdWVzdGVkIHRp
bWVvdXQuICAqLwotI2RlZmluZSBWSVJRX0RFQlVHICAgICAgMSAgLyogVi4gUmVxdWVzdCBndWVz
dCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0NPTlNPTEUg
ICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGVtZXJnZW5jeSBjb25zb2xlLiAq
LwotI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4gKERPTTApIEV4Y2VwdGlvbmFsIGV2
ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLwotI2RlZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyog
Ry4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFpbGFibGUuICAqLwotI2RlZmlu
ZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEgZG9tYWluIGhhcyBwYXVzZWQgZm9y
IGRlYnVnZ2luZy4gICAqLwotI2RlZmluZSBWSVJRX1hFTk9QUk9GICAgNyAgLyogVi4gWGVuT3By
b2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJsZSAqLwotI2RlZmluZSBWSVJRX0NP
Tl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGNvbnNvbGUgICAgICAg
ICAgICAqLwotI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyogRy4gKERPTTApIFBDUFUgc3Rh
dGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX01FTV9FVkVOVCAg
MTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1cmVkICAgICAgICAgICAqLwot
I2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJlc2VydmVkIGZvciBYZW5DbGllbnQg
ICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0VOT01FTSAgICAgMTIgLyogRy4g
KERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwotCi0vKiBBcmNoaXRlY3R1cmUtc3Bl
Y2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KLSNkZWZpbmUgVklSUV9BUkNIXzAgICAgMTYKLSNk
ZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKLSNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKLSNkZWZp
bmUgVklSUV9BUkNIXzMgICAgMTkKLSNkZWZpbmUgVklSUV9BUkNIXzQgICAgMjAKLSNkZWZpbmUg
VklSUV9BUkNIXzUgICAgMjEKLSNkZWZpbmUgVklSUV9BUkNIXzYgICAgMjIKLSNkZWZpbmUgVklS
UV9BUkNIXzcgICAgMjMKLS8qIGAgfSAqLwotCi0jZGVmaW5lIE5SX1ZJUlFTICAgICAgIDI0Ci0K
LS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11X3VwZGF0ZShj
b25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCi0gKiBgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0LAotICogYCAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKLSAqIGAKLSAqIEByZXFzIGlzIGFuIGFycmF5
IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2YWwpIHBhaXJzKS4KLSAqIEBjb3Vu
dCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4KLSAqIEBwZG9uZSBpcyBhbiBvdXRw
dXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCi0g
KiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBkYXRhIHBhZ2Vz
IHJlZmVyZW5jZWQgaW4gdGhpcwotICogICAgICAgICAgICAgICAgICAgIGh5cGVyY2FsbCBpbnZv
Y2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KLSAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0
aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKLSAqICAgICAg
ICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52b2NhdGlvbi4gVGhlIHZhbHVlIG9m
IHRoaXMgZmllbGQKLSAqICAgICAgICAgICAgICAgICAgICAgKHgpIGVuY29kZXMgdGhlIFBGRCBh
cyBmb2xsb3dzOgotICogICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlE
X1NFTEYKLSAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAwID0+IFBGRCA9PSB4IC0gMQotICog
Ci0gKiBTdWItY29tbWFuZHM6IHB0clsxOjBdIHNwZWNpZmllcyB0aGUgYXBwcm9wcmlhdGUgTU1V
XyogY29tbWFuZC4KLSAqIC0tLS0tLS0tLS0tLS0KLSAqIHB0clsxOjBdID09IE1NVV9OT1JNQUxf
UFRfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiBhIHBhZ2UgdGFibGUgYmVsb25naW5n
IHRvIFBGRC4gSWYgdXBkYXRpbmcgYW4gTDEgdGFibGUsCi0gKiBhbmQgdGhlIG5ldyB0YWJsZSBl
bnRyeSBpcyB2YWxpZC9wcmVzZW50LCB0aGUgbWFwcGVkIGZyYW1lIG11c3QgYmVsb25nIHRvCi0g
KiBGRC4gSWYgYXR0ZW1wdGluZyB0byBtYXAgYW4gSS9PIHBhZ2UgdGhlbiB0aGUgY2FsbGVyIGFz
c3VtZXMgdGhlIHByaXZpbGVnZQotICogb2YgdGhlIEZELgotICogRkQgPT0gRE9NSURfSU86IFBl
cm1pdCAvb25seS8gSS9PIG1hcHBpbmdzLCBhdCB0aGUgcHJpdiBsZXZlbCBvZiB0aGUgY2FsbGVy
LgotICogRkQgPT0gRE9NSURfWEVOOiBNYXAgcmVzdHJpY3RlZCBhcmVhcyBvZiBYZW4ncyBoZWFw
IHNwYWNlLgotICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIG9mIHRoZSBwYWdlLXRhYmxl
IGVudHJ5IHRvIG1vZGlmeS4KLSAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlLgotICoKLSAq
IFRoZXJlIGFsc28gY2VydGFpbiBpbXBsaWNpdCByZXF1aXJlbWVudHMgd2hlbiB1c2luZyB0aGlz
IGh5cGVyY2FsbC4gVGhlCi0gKiBwYWdlcyB0aGF0IG1ha2UgdXAgYSBwYWdldGFibGUgbXVzdCBi
ZSBtYXBwZWQgcmVhZC1vbmx5IGluIHRoZSBndWVzdC4KLSAqIFRoaXMgcHJldmVudHMgdW5jb250
cm9sbGVkIGd1ZXN0IHVwZGF0ZXMgdG8gdGhlIHBhZ2V0YWJsZS4gWGVuIHN0cmljdGx5Ci0gKiBl
bmZvcmNlcyB0aGlzLCBhbmQgd2lsbCBkaXNhbGxvdyBhbnkgcGFnZXRhYmxlIHVwZGF0ZSB3aGlj
aCB3aWxsIGVuZCB1cAotICogbWFwcGluZyBwYWdldGFibGUgcGFnZSBSVywgYW5kIHdpbGwgZGlz
YWxsb3cgdXNpbmcgYW55IHdyaXRhYmxlIHBhZ2UgYXMgYQotICogcGFnZXRhYmxlLiBJbiBwcmFj
dGljZSBpdCBtZWFucyB0aGF0IHdoZW4gY29uc3RydWN0aW5nIGEgcGFnZSB0YWJsZSBmb3IgYQot
ICogcHJvY2VzcywgdGhyZWFkLCBldGMsIHdlIE1VU1QgYmUgdmVyeSBkaWxsaWdpZW50IGluIGZv
bGxvd2luZyB0aGVzZSBydWxlczoKLSAqICAxKS4gU3RhcnQgd2l0aCB0b3AtbGV2ZWwgcGFnZSAo
UEdEIG9yIGluIFhlbiBsYW5ndWFnZTogTDQpLiBGaWxsIG91dAotICogICAgICB0aGUgZW50cmll
cy4KLSAqICAyKS4gS2VlcCBvbiBnb2luZywgZmlsbGluZyBvdXQgdGhlIHVwcGVyIChQVUQgb3Ig
TDMpLCBhbmQgbWlkZGxlIChQTUQKLSAqICAgICAgb3IgTDIpLgotICogIDMpLiBTdGFydCBmaWxs
aW5nIG91dCB0aGUgUFRFIHRhYmxlIChMMSkgd2l0aCB0aGUgUFRFIGVudHJpZXMuIE9uY2UKLSAq
ICAJZG9uZSwgbWFrZSBzdXJlIHRvIHNldCBlYWNoIG9mIHRob3NlIGVudHJpZXMgdG8gUk8gKHNv
IHdyaXRlYWJsZSBiaXQKLSAqICAJaXMgdW5zZXQpLiBPbmNlIHRoYXQgaGFzIGJlZW4gY29tcGxl
dGVkLCBzZXQgdGhlIFBNRCAoTDIpIGZvciB0aGlzCi0gKiAgCVBURSB0YWJsZSBhcyBSTy4KLSAq
ICA0KS4gV2hlbiBjb21wbGV0ZWQgd2l0aCBhbGwgb2YgdGhlIFBNRCAoTDIpIGVudHJpZXMsIGFu
ZCBhbGwgb2YgdGhlbSBoYXZlCi0gKiAgCWJlZW4gc2V0IHRvIFJPLCBtYWtlIHN1cmUgdG8gc2V0
IFJPIHRoZSBQVUQgKEwzKS4gRG8gdGhlIHNhbWUKLSAqICAJb3BlcmF0aW9uIG9uIFBHRCAoTDQp
IHBhZ2V0YWJsZSBlbnRyaWVzIHRoYXQgaGF2ZSBhIFBVRCAoTDMpIGVudHJ5LgotICogIDUpLiBO
b3cgYmVmb3JlIHlvdSBjYW4gdXNlIHRob3NlIHBhZ2VzIChzbyBzZXR0aW5nIHRoZSBjcjMpLCB5
b3UgTVVTVCBhbHNvCi0gKiAgICAgIHBpbiB0aGVtIHNvIHRoYXQgdGhlIGh5cGVydmlzb3IgY2Fu
IHZlcmlmeSB0aGUgZW50cmllcy4gVGhpcyBpcyBkb25lCi0gKiAgICAgIHZpYSB0aGUgSFlQRVJW
SVNPUl9tbXVleHRfb3AoTU1VRVhUX1BJTl9MNF9UQUJMRSwgZ3Vlc3QgcGh5c2ljYWwgZnJhbWUK
LSAqICAgICAgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkuIEFuZCB0aGlzIHBvaW50IHRoZSBIWVBF
UlZJU09SX21tdWV4dF9vcCgKLSAqICAgICAgTU1VRVhUX05FV19CQVNFUFRSLCBndWVzdCBwaHlz
aWNhbCBmcmFtZSBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKSBjYW4gYmUKLSAqICAgICAgaXNzdWVk
LgotICogRm9yIDMyLWJpdCBndWVzdHMsIHRoZSBMNCBpcyBub3QgdXNlZCAoYXMgdGhlcmUgaXMg
bGVzcyBwYWdldGFibGVzKSwgc28KLSAqIGluc3RlYWQgdXNlIEwzLgotICogQXQgdGhpcyBwb2lu
dCB0aGUgcGFnZXRhYmxlcyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIE1NVV9OT1JNQUxfUFRf
VVBEQVRFCi0gKiBoeXBlcmNhbGwuIEFsc28gaWYgc28gZGVzaXJlZCB0aGUgT1MgY2FuIGFsc28g
dHJ5IHRvIHdyaXRlIHRvIHRoZSBQVEUKLSAqIGFuZCBiZSB0cmFwcGVkIGJ5IHRoZSBoeXBlcnZp
c29yIChhcyB0aGUgUFRFIGVudHJ5IGlzIFJPKS4KLSAqCi0gKiBUbyBkZWFsbG9jYXRlIHRoZSBw
YWdlcywgdGhlIG9wZXJhdGlvbnMgYXJlIHRoZSByZXZlcnNlIG9mIHRoZSBzdGVwcwotICogbWVu
dGlvbmVkIGFib3ZlLiBUaGUgYXJndW1lbnQgaXMgTU1VRVhUX1VOUElOX1RBQkxFIGZvciBhbGwg
bGV2ZWxzIGFuZCB0aGUKLSAqIHBhZ2V0YWJsZSBNVVNUIG5vdCBiZSBpbiB1c2UgKG1lYW5pbmcg
dGhhdCB0aGUgY3IzIGlzIG5vdCBzZXQgdG8gaXQpLgotICogCi0gKiBwdHJbMTowXSA9PSBNTVVf
TUFDSFBIWVNfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiB0aGUgbWFjaGluZS0+cHNl
dWRvLXBoeXNpY2FsIG1hcHBpbmcgdGFibGUuCi0gKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBtYXBwaW5nIHRvIG1vZGlmeS4KLSAqICAgICAgICAg
ICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBpcyBzcGVjaWZpZWQu
Ci0gKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZSBpbnRvIHRoZSBtYXBwaW5nIGVudHJ5Lgot
ICogCi0gKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEOgotICogQXMgTU1V
X05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBjdXJyZW50bHkgaW4gdGhlIFBU
RSBhcmUgT1JlZAotICogd2l0aCB0aG9zZSBpbiBAdmFsLgotICoKLSAqIEB2YWwgaXMgdXN1YWxs
eSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBzb21lIGF0dHJpYnV0ZXMuCi0g
KiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmlu
ZWQgYml0cy4gTWVhbmluZyB0aGF0Ci0gKiBpZiB0aGlzIGlzIGEgWDg2XzY0IG1hY2hpbmUgYW5k
IGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxheW91dAotICogb2YgdmFsIGlz
OgotICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQotICogIC0gNDYtMTMgdGhl
IG1hY2hpbmUgZnJhbWUgbnVtYmVyCi0gKiAgLSAxMiBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAg
LSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAgLSAxMCBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0g
KiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKLSAqICAtIDggZ2xvYmFsCi0gKiAgLSA3IFBBVCAo
UFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8gbWFrZSA0TUIgb3IgMk1CIHBh
Z2VzKQotICogIC0gNiBkaXJ0eQotICogIC0gNSBhY2Nlc3NlZAotICogIC0gNCBwYWdlIGNhY2hl
ZCBkaXNhYmxlZAotICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gKLSAqICAtIDIgdXNlcnNwYWNl
IGFjY2Vzc2libGUKLSAqICAtIDEgd3JpdGVhYmxlCi0gKiAgLSAwIHByZXNlbnQKLSAqCi0gKiAg
VGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhlIGRlZmF1bHQgbGF5b3V0IGlz
IHRoZSBQQUdFX1BTRQotICogIGFsc28gY2FsbGVkIFBBR0VfUEFUKS4gVGhlIE1NVUVYVF9bVU5d
TUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCi0gKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2Vy
dmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBiZSA0TUIKLSAqICAob3IgMk1C
KSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCi0gKgotICogIFRoZSByZWFzb24g
dGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRv
IFhlbgotICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0ZSBUYWJsZSAoUEFUKSBiaXQg
LSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKLSAqICByZWZlciB0byBJbnRlbCBTRE0gMTAuMTIu
IFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRyaWJ1dGVzIG9mCi0gKiAgcGFn
ZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KLSAqCi0gKiAgVGhlIFBBVCBNU1IgaXMgYXMgZm9s
bG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkgaXMgOCBiaXRzKToKLSAqICAg
ICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQQVQwCi0gKiAgKy0tLS0tKy0t
LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKLSAqICB8IFVDICB8IFVDLSB8IFdD
IHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgKLSAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICogIHwgVUMgIHwgVUMtIHwgV1QgfCBX
QiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZhdWx0IHdoZW4gbWFjaGluZSBi
b290cykKLSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwot
ICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBYZW4K
LSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICoKLSAq
ICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0byBsb29raW5nIHVw
Ci0gKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVudHJ5OgotICoKLSAqICBQQVQv
UFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0IDMpLgotICoKLSAqICBJZiBh
bGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQwLiBJZiBiaXQgMyB0dXJuZWQg
b24sCi0gKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0IDMgYW5kIGJpdCA0LCB0aGVu
IFBBVDIuLgotICoKLSAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExpbnV4IFBBVDEgdHJhbnNsYXRl
cyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKLSAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhh
dCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQot
ICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQgZW50cnkuIE1lYW5pbmcgdGhh
dCBCaXQgNyAoUEFHRV9QQVQpIGlzCi0gKiAgc2V0LiBGb3IgZXhhbXBsZSwgdW5kZXIgTGludXgg
aXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0aGUKLSAqICBjYWNoaW5nIGFz
OgotICoKLSAqICAgV0IgPSBub25lIChzbyBQQVQwKQotICogICBXQyA9IFBXVCAoYml0IDMgb24p
Ci0gKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUgb24pLgotICoKLSAqIFRvIG1h
a2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMg
c286Ci0gKgotICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQgKHNvIGJpdCA3IGlzIG9uKSBh
bmQgY2xlYXIgYml0IDMKLSAqCi0gKiBBbmQgdG8gdHJhbnNsYXRlIGJhY2sgaXQgd291bGQ6Ci0g
KgotICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQgNy4K
LSAqLwotI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAgIDAgLyogY2hlY2tlZCAnKnB0
ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLwotI2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRF
ICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZvciAqLwotI2Rl
ZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZh
bCB8ICgqcHRyJihBfEQpKSAqLwotCi0vKgotICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMKLSAq
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4
dF9vcF90IHVvcHNbXSwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50LAotICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLAotICog
YCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkKLSAqLwotLyog
SFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVleHRfb3Agc3RydWN0
dXJlcy4KLSAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZpZWQgKG9yIERPTUlEX1NF
TEYgZm9yIG5vbmUpLgotICogV2hlcmUgdGhlIEZEIGhhcyBzb21lIGVmZmVjdCwgaXQgaXMgZGVz
Y3JpYmVkIGJlbG93LgotICoKLSAqIGNtZDogTU1VRVhUXyhVTilQSU5fKl9UQUJMRQotICogbWZu
OiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLgot
ICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lm
aWVkLgotICoKLSAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCi0gKiBtZm46IE1hY2hpbmUgZnJh
bWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCi0gKgot
ICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldCi0gKiBtZm46IE1h
Y2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBN
TVUKLSAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgotICoKLSAqIGNtZDogTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwgVExC
LgotICoKLSAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAotICogbGluZWFyX2FkZHI6IExpbmVh
ciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9NVUxUSQotICogdmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9m
IFZDUFVzIHRvIGJlIGZsdXNoZWQuCi0gKgotICogY21kOiBNTVVFWFRfSU5WTFBHX01VTFRJCi0g
KiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZC4KLSAqIHZjcHVtYXNr
OiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVzaGVkLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9BTEwKLSAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVz
IGFsbCBWQ1BVcycgVExCcy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMCi0gKiBsaW5l
YXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExC
cy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQotICogTm8gYWRkaXRpb25hbCBhcmd1
bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLgotICoKLSAqIGNt
ZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzCi0gKiBvbiBhbGwgQ1BVcyBp
biB0aGUgc3lzdGVtLgotICoKLSAqIGNtZDogTU1VRVhUX1NFVF9MRFQKLSAqIGxpbmVhcl9hZGRy
OiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4K
LSAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4KLSAqCi0gKiBjbWQ6IE1NVUVY
VF9DTEVBUl9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQu
Ci0gKgotICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgotICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBu
dW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgotICoKLSAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NV
UEVSCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRv
IGJlIFt1bl1tYXJrZWQuCi0gKi8KLS8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8KLSNkZWZpbmUg
TU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKLSNkZWZpbmUgTU1VRVhUX1BJTl9MMl9UQUJMRSAg
ICAgIDEKLSNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAgIDIKLSNkZWZpbmUgTU1VRVhU
X1BJTl9MNF9UQUJMRSAgICAgIDMKLSNkZWZpbmUgTU1VRVhUX1VOUElOX1RBQkxFICAgICAgIDQK
LSNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKLSNkZWZpbmUgTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTCAgIDYKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19MT0NBTCAgICAgIDcKLSNkZWZp
bmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxU
SSAgICAgIDkKLSNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTAKLSNkZWZpbmUgTU1V
RVhUX0lOVkxQR19BTEwgICAgICAgMTEKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAg
MTIKLSNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMKLSNkZWZpbmUgTU1VRVhUX05F
V19VU0VSX0JBU0VQVFIgMTUKLSNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYKLSNk
ZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NB
Q0hFX0dMT0JBTCAxOAotI2RlZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQotI2RlZmlu
ZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAotLyogYCB9ICovCi0KLSNpZm5kZWYgX19BU1NF
TUJMWV9fCi1zdHJ1Y3QgbW11ZXh0X29wIHsKLSAgICB1bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBl
bnVtIG1tdWV4dF9jbWQgKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIC8qIFtVTl1QSU5fVEFCTEUs
IE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCi0gICAgICAgICAqIENMRUFSX1BBR0UsIENP
UFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KLSAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47Ci0g
ICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLwotICAgICAgICBV
TE9OR19QVFIgbGluZWFyX2FkZHI7Ci0gICAgfSBhcmcxOwotICAgIHVuaW9uIHsKLSAgICAgICAg
LyogU0VUX0xEVCAqLwotICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsKLSAgICAgICAgLyog
VExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDUKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lk
KSB2Y3B1bWFzazsKLSNlbHNlCi0gICAgICAgIGNvbnN0IHZvaWQgKnZjcHVtYXNrOwotI2VuZGlm
Ci0gICAgICAgIC8qIENPUFlfUEFHRSAqLwotICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKLSAg
ICB9IGFyZzI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOwotI2VuZGlmCi0KLS8qCi0gKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdf
UFRSIHZhLCB1NjQgdmFsLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g
dXZtX2ZsYWdzIGZsYWdzKQotICogYAotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBF
UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0IHZh
bCwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2
bV9mbGFncyBmbGFncywKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb21pZF90IGRvbWlkKQotICogYAotICogYCBAdmE6IFRoZSB2aXJ0dWFsIGFkZHJlc3Mg
d2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQotICogYCBAdmFsOiBUaGUgbmV3IHBhZ2Ug
dGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRkcmVzcwotICogYCBAZmxhZ3M6
IENvbnRyb2wgVExCIGZsdXNoZXMKLSAqLwotLyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3Mn
IHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVkLiAqLwotLyogV2hlbiBzcGVj
aWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4g
ICAqLwotLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRt
YXAgcG9pbnRlci4gICAgICAgICAqLwotLyogYCBlbnVtIHV2bV9mbGFncyB7ICovCi0jZGVmaW5l
IFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5vIGZsdXNoaW5nIGF0IGFsbC4g
ICAqLwotI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAoMVVMPDwwKSAvKiBGbHVzaCBl
bnRpcmUgVExCKHMpLiAgKi8KLSNkZWZpbmUgVVZNRl9JTlZMUEcgICAgICAgICAgICAgKDJVTDw8
MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCi0jZGVmaW5lIFVWTUZfRkxVU0hUWVBFX01B
U0sgICAgICgzVUw8PDApCi0jZGVmaW5lIFVWTUZfTVVMVEkgICAgICAgICAgICAgICgwVUw8PDIp
IC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLwotI2RlZmluZSBVVk1GX0xPQ0FMICAgICAgICAg
ICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAgKi8KLSNkZWZpbmUgVVZNRl9B
TEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxsIFRMQnMuICAgICAgICovCi0v
KiBgIH0gKi8KLQotLyoKLSAqIENvbW1hbmRzIHRvIEhZUEVSVklTT1JfY29uc29sZV9pbygpLgot
ICovCi0jZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAKLSNkZWZpbmUgQ09OU09MRUlP
X3JlYWQgICAgICAgICAgMQotCi0vKgotICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl92bV9hc3Np
c3QoKS4KLSAqLwotI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAgICAgICAgICAgICAgICAwCi0j
ZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAgIDEKLQotLyogeDg2LzMyIGd1
ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMuICovCi0jZGVmaW5lIFZNQVNT
VF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKLQotLyogeDg2LzMyIGd1ZXN0czogdHJhcCAo
dmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1c2VkLiAqLwotI2RlZmluZSBW
TUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCi0KLS8qCi0gKiB4ODYgZ3Vlc3RzOiBz
dXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KLSAqIE5CMS4gUGFnZS1kaXJlY3Rv
cnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KLSAqIE5CMi4gR3Vlc3QgbXVzdCBjb250aW51
ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBURXMuCi0gKi8KLSNkZWZpbmUg
Vk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgotCi0vKiB4ODYvUEFFIGd1ZXN0czog
c3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCi0jZGVmaW5lIFZNQVNTVF9UWVBFX3BhZV9leHRl
bmRlZF9jcjMgICAgIDMKLQotI2RlZmluZSBNQVhfVk1BU1NUX1RZUEUgICAgICAgICAgICAgICAg
ICAzCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgdWludDE2X3QgZG9taWRfdDsK
LQotLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZFRCBjYW5ub3QgYmUgdXNlZCBm
b3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KLSNkZWZpbmUgRE9NSURfRklSU1RfUkVTRVJWRUQgKDB4
N0ZGMFUpCi0KLS8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0YWluIGNvbnRleHRzIHRvIHJl
ZmVyIHRvIG9uZXNlbGYuICovCi0jZGVmaW5lIERPTUlEX1NFTEYgKDB4N0ZGMFUpCi0KLS8qCi0g
KiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFibGUgdXBkYXRlcyB0byBtYXBw
aW5nIEkvTyBtZW1vcnkuCi0gKiBBbHRob3VnaCBubyBGb3JlaWduIERvbWFpbiBuZWVkIGJlIHNw
ZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTwotICogaXMgdXNlZnVsIHRvIGVuc3Vy
ZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFwIGFyZSBhY2NpZGVudGFsbHkK
LSAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291bGQgY2F1c2UgaGF2b2MgYXMg
cmVmZXJlbmNlIGNvdW50cwotICogYXJlbid0IGFkanVzdGVkIG9uIHRoZSBJL08tbWFwcGluZyBj
b2RlIHBhdGgpLgotICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIE1NVUVYVF9TRVRfRk9SRUlH
TkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KLSAqIGJlIHNwZWNpZmllZCBieSBhbnkgY2Fs
bGluZyBkb21haW4uCi0gKi8KLSNkZWZpbmUgRE9NSURfSU8gICAoMHg3RkYxVSkKLQotLyoKLSAq
IERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0byBtYXAgcmVz
dHJpY3RlZCBwYXJ0cyBvZgotICogWGVuJ3MgaGVhcCBzcGFjZSAoZS5nLiwgdGhlIG1hY2hpbmVf
dG9fcGh5cyB0YWJsZSkuCi0gKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NFVF9G
T1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKLSAqIHRoZSBjYWxsZXIgaXMgcHJp
dmlsZWdlZC4KLSAqLwotI2RlZmluZSBET01JRF9YRU4gICgweDdGRjJVKQotCi0vKgotICogRE9N
SURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxlIHBhZ2VzICovCi0jZGVmaW5l
IERPTUlEX0NPVyAgKDB4N0ZGM1UpCi0KLS8qIERPTUlEX0lOVkFMSUQgaXMgdXNlZCB0byBpZGVu
dGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCi0jZGVmaW5lIERPTUlEX0lOVkFMSUQg
KDB4N0ZGNFUpCi0KLS8qIElkbGUgZG9tYWluLiAqLwotI2RlZmluZSBET01JRF9JRExFICgweDdG
RkZVKQotCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX21tdV91
cGRhdGUoKS4KLSAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFsIHBvaW50ZXIvYWRkcmVzcyBz
aXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KLSAqLwotc3RydWN0IG1tdV91cGRhdGUgewotICAg
IHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNzIG9mIFBURS4gKi8KLSAgICB1
aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQVEUuICAgICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtbXVfdXBkYXRlX3QpOwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBI
WVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBjYWxsX2xpc3RbXSwKLSAqIGAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfY2FsbHMpOwotICoKLSAqIE5CLiBUaGUg
ZmllbGRzIGFyZSBsb2dpY2FsbHkgdGhlIG5hdHVyYWwgcmVnaXN0ZXIgc2l6ZSBmb3IgdGhpcwot
ICogYXJjaGl0ZWN0dXJlLiBJbiBjYXNlcyB3aGVyZSB4ZW5fdWxvbmdfdCBpcyBsYXJnZXIgdGhh
biB0aGlzIHRoZW4KLSAqIGFueSB1bnVzZWQgYml0cyBpbiB0aGUgdXBwZXIgcG9ydGlvbiBtdXN0
IGJlIHplcm8uCi0gKi8KLXN0cnVjdCBtdWx0aWNhbGxfZW50cnkgewotICAgIHhlbl91bG9uZ190
IG9wLCByZXN1bHQ7Ci0gICAgeGVuX3Vsb25nX3QgYXJnc1s2XTsKLX07Ci10eXBlZGVmIHN0cnVj
dCBtdWx0aWNhbGxfZW50cnkgbXVsdGljYWxsX2VudHJ5X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtdWx0aWNhbGxfZW50cnlfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9f
IDwgMHgwMDA0MDQwMAotLyoKLSAqIEV2ZW50IGNoYW5uZWwgZW5kcG9pbnRzIHBlciBkb21haW4g
KHdoZW4gdXNpbmcgdGhlIDItbGV2ZWwgQUJJKToKLSAqICAxMDI0IGlmIGEgTE9OR19QVFIgaXMg
MzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRSIGlzIDY0IGJpdHMuCi0gKi8KLSNkZWZpbmUgTlJf
RVZFTlRfQ0hBTk5FTFMgRVZUQ0hOXzJMX05SX0NIQU5ORUxTCi0jZW5kaWYKLQotc3RydWN0IHZj
cHVfdGltZV9pbmZvIHsKLSAgICAvKgotICAgICAqIFVwZGF0ZXMgdG8gdGhlIGZvbGxvd2luZyB2
YWx1ZXMgYXJlIHByZWNlZGVkIGFuZCBmb2xsb3dlZCBieSBhbgotICAgICAqIGluY3JlbWVudCBv
ZiAndmVyc2lvbicuIFRoZSBndWVzdCBjYW4gdGhlcmVmb3JlIGRldGVjdCB1cGRhdGVzIGJ5Ci0g
ICAgICogbG9va2luZyBmb3IgY2hhbmdlcyB0byAndmVyc2lvbicuIElmIHRoZSBsZWFzdC1zaWdu
aWZpY2FudCBiaXQgb2YKLSAgICAgKiB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IHRoZW4gYW4g
dXBkYXRlIGlzIGluIHByb2dyZXNzIGFuZCB0aGUgZ3Vlc3QKLSAgICAgKiBtdXN0IHdhaXQgdG8g
cmVhZCBhIGNvbnNpc3RlbnQgc2V0IG9mIHZhbHVlcy4KLSAgICAgKiBUaGUgY29ycmVjdCB3YXkg
dG8gaW50ZXJhY3Qgd2l0aCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2ltaWxhciB0bwotICAgICAq
IExpbnV4J3Mgc2VxbG9jazogc2VlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgcmVhZF9zZXFiZWdp
bi9yZWFkX3NlcXJldHJ5LgotICAgICAqLwotICAgIHVpbnQzMl90IHZlcnNpb247Ci0gICAgdWlu
dDMyX3QgcGFkMDsKLSAgICB1aW50NjRfdCB0c2NfdGltZXN0YW1wOyAgIC8qIFRTQyBhdCBsYXN0
IHVwZGF0ZSBvZiB0aW1lIHZhbHMuICAqLwotICAgIHVpbnQ2NF90IHN5c3RlbV90aW1lOyAgICAg
LyogVGltZSwgaW4gbmFub3NlY3MsIHNpbmNlIGJvb3QuICAgICovCi0gICAgLyoKLSAgICAgKiBD
dXJyZW50IHN5c3RlbSB0aW1lOgotICAgICAqICAgc3lzdGVtX3RpbWUgKwotICAgICAqICAgKCgo
KHRzYyAtIHRzY190aW1lc3RhbXApIDw8IHRzY19zaGlmdCkgKiB0c2NfdG9fc3lzdGVtX211bCkg
Pj4gMzIpCi0gICAgICogQ1BVIGZyZXF1ZW5jeSAoSHopOgotICAgICAqICAgKCgxMF45IDw8IDMy
KSAvIHRzY190b19zeXN0ZW1fbXVsKSA+PiB0c2Nfc2hpZnQKLSAgICAgKi8KLSAgICB1aW50MzJf
dCB0c2NfdG9fc3lzdGVtX211bDsKLSAgICBpbnQ4X3QgICB0c2Nfc2hpZnQ7Ci0gICAgaW50OF90
ICAgcGFkMVszXTsKLX07IC8qIDMyIGJ5dGVzICovCi10eXBlZGVmIHN0cnVjdCB2Y3B1X3RpbWVf
aW5mbyB2Y3B1X3RpbWVfaW5mb190OwotCi1zdHJ1Y3QgdmNwdV9pbmZvIHsKLSAgICAvKgotICAg
ICAqICdldnRjaG5fdXBjYWxsX3BlbmRpbmcnIGlzIHdyaXR0ZW4gbm9uLXplcm8gYnkgWGVuIHRv
IGluZGljYXRlCi0gICAgICogYSBwZW5kaW5nIG5vdGlmaWNhdGlvbiBmb3IgYSBwYXJ0aWN1bGFy
IFZDUFUuIEl0IGlzIHRoZW4gY2xlYXJlZCAKLSAgICAgKiBieSB0aGUgZ3Vlc3QgT1MgL2JlZm9y
ZS8gY2hlY2tpbmcgZm9yIHBlbmRpbmcgd29yaywgdGh1cyBhdm9pZGluZwotICAgICAqIGEgc2V0
LWFuZC1jaGVjayByYWNlLiBOb3RlIHRoYXQgdGhlIG1hc2sgaXMgb25seSBhY2Nlc3NlZCBieSBY
ZW4KLSAgICAgKiBvbiB0aGUgQ1BVIHRoYXQgaXMgY3VycmVudGx5IGhvc3RpbmcgdGhlIFZDUFUu
IFRoaXMgbWVhbnMgdGhhdCB0aGUKLSAgICAgKiBwZW5kaW5nIGFuZCBtYXNrIGZsYWdzIGNhbiBi
ZSB1cGRhdGVkIGJ5IHRoZSBndWVzdCB3aXRob3V0IHNwZWNpYWwKLSAgICAgKiBzeW5jaHJvbmlz
YXRpb24gKGkuZS4sIG5vIG5lZWQgZm9yIHRoZSB4ODYgTE9DSyBwcmVmaXgpLgotICAgICAqIFRo
aXMgbWF5IHNlZW0gc3Vib3B0aW1hbCBiZWNhdXNlIGlmIHRoZSBwZW5kaW5nIGZsYWcgaXMgc2V0
IGJ5Ci0gICAgICogYSBkaWZmZXJlbnQgQ1BVIHRoZW4gYW4gSVBJIG1heSBiZSBzY2hlZHVsZWQg
ZXZlbiB3aGVuIHRoZSBtYXNrCi0gICAgICogaXMgc2V0LiBIb3dldmVyLCBub3RlOgotICAgICAq
ICAxLiBUaGUgdGFzayBvZiAnaW50ZXJydXB0IGhvbGRvZmYnIGlzIGNvdmVyZWQgYnkgdGhlIHBl
ci1ldmVudC0KLSAgICAgKiAgICAgY2hhbm5lbCBtYXNrIGJpdHMuIEEgJ25vaXN5JyBldmVudCB0
aGF0IGlzIGNvbnRpbnVhbGx5IGJlaW5nCi0gICAgICogICAgIHRyaWdnZXJlZCBjYW4gYmUgbWFz
a2VkIGF0IHNvdXJjZSBhdCB0aGlzIHZlcnkgcHJlY2lzZQotICAgICAqICAgICBncmFudWxhcml0
eS4KLSAgICAgKiAgMi4gVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgcGVyLVZDUFUgbWFzayBpcyB0
aGVyZWZvcmUgdG8gcmVzdHJpY3QKLSAgICAgKiAgICAgcmVlbnRyYW50IGV4ZWN1dGlvbjogd2hl
dGhlciBmb3IgY29uY3VycmVuY3kgY29udHJvbCwgb3IgdG8KLSAgICAgKiAgICAgcHJldmVudCB1
bmJvdW5kZWQgc3RhY2sgdXNhZ2UuIFdoYXRldmVyIHRoZSBwdXJwb3NlLCB3ZSBleHBlY3QKLSAg
ICAgKiAgICAgdGhhdCB0aGUgbWFzayB3aWxsIGJlIGFzc2VydGVkIG9ubHkgZm9yIHNob3J0IHBl
cmlvZHMgYXQgYSB0aW1lLAotICAgICAqICAgICBhbmQgc28gdGhlIGxpa2VsaWhvb2Qgb2YgYSAn
c3B1cmlvdXMnIElQSSBpcyBzdWl0YWJseSBzbWFsbC4KLSAgICAgKiBUaGUgbWFzayBpcyByZWFk
IGJlZm9yZSBtYWtpbmcgYW4gZXZlbnQgdXBjYWxsIHRvIHRoZSBndWVzdDogYQotICAgICAqIG5v
bi16ZXJvIG1hc2sgdGhlcmVmb3JlIGd1YXJhbnRlZXMgdGhhdCB0aGUgVkNQVSB3aWxsIG5vdCBy
ZWNlaXZlCi0gICAgICogYW4gdXBjYWxsIGFjdGl2YXRpb24uIFRoZSBtYXNrIGlzIGNsZWFyZWQg
d2hlbiB0aGUgVkNQVSByZXF1ZXN0cwotICAgICAqIHRvIGJsb2NrOiB0aGlzIGF2b2lkcyB3YWtl
dXAtd2FpdGluZyByYWNlcy4KLSAgICAgKi8KLSAgICB1aW50OF90IGV2dGNobl91cGNhbGxfcGVu
ZGluZzsKLSNpZmRlZiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSwotICAgIHVpbnQ4X3QgZXZ0Y2hu
X3VwY2FsbF9tYXNrOwotI2Vsc2UgLyogWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sgKi8KLSAgICB1
aW50OF90IHBhZDA7Ci0jZW5kaWYgLyogWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sgKi8KLSAgICB4
ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGluZ19zZWw7Ci0gICAgc3RydWN0IGFyY2hfdmNwdV9pbmZv
IGFyY2g7Ci0gICAgc3RydWN0IHZjcHVfdGltZV9pbmZvIHRpbWU7Ci19OyAvKiA2NCBieXRlcyAo
eDg2KSAqLwotI2lmbmRlZiBfX1hFTl9fCi10eXBlZGVmIHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9p
bmZvX3Q7Ci0jZW5kaWYKLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5X3NoYXJl
ZCBTdGFydC1vZi1kYXkgc2hhcmVkIGRhdGEgc3RydWN0dXJlCi0gKiBYZW4va2VybmVsIHNoYXJl
ZCBkYXRhIC0tIHBvaW50ZXIgcHJvdmlkZWQgaW4gc3RhcnRfaW5mby4KLSAqCi0gKiBUaGlzIHN0
cnVjdHVyZSBpcyBkZWZpbmVkIHRvIGJlIGJvdGggc21hbGxlciB0aGFuIGEgcGFnZSwgYW5kIHRo
ZQotICogb25seSBkYXRhIG9uIHRoZSBzaGFyZWQgcGFnZSwgYnV0IG1heSB2YXJ5IGluIGFjdHVh
bCBzaXplIGV2ZW4gd2l0aGluCi0gKiBjb21wYXRpYmxlIFhlbiB2ZXJzaW9uczsgZ3Vlc3RzIHNo
b3VsZCBub3QgcmVseSBvbiB0aGUgc2l6ZQotICogb2YgdGhpcyBzdHJ1Y3R1cmUgcmVtYWluaW5n
IGNvbnN0YW50LgotICovCi1zdHJ1Y3Qgc2hhcmVkX2luZm8gewotICAgIHN0cnVjdCB2Y3B1X2lu
Zm8gdmNwdV9pbmZvW1hFTl9MRUdBQ1lfTUFYX1ZDUFVTXTsKLQotICAgIC8qCi0gICAgICogQSBk
b21haW4gY2FuIGNyZWF0ZSAiZXZlbnQgY2hhbm5lbHMiIG9uIHdoaWNoIGl0IGNhbiBzZW5kIGFu
ZCByZWNlaXZlCi0gICAgICogYXN5bmNocm9ub3VzIGV2ZW50IG5vdGlmaWNhdGlvbnMuIFRoZXJl
IGFyZSB0aHJlZSBjbGFzc2VzIG9mIGV2ZW50IHRoYXQKLSAgICAgKiBhcmUgZGVsaXZlcmVkIGJ5
IHRoaXMgbWVjaGFuaXNtOgotICAgICAqICAxLiBCaS1kaXJlY3Rpb25hbCBpbnRlci0gYW5kIGlu
dHJhLWRvbWFpbiBjb25uZWN0aW9ucy4gRG9tYWlucyBtdXN0Ci0gICAgICogICAgIGFycmFuZ2Ug
b3V0LW9mLWJhbmQgdG8gc2V0IHVwIGEgY29ubmVjdGlvbiAodXN1YWxseSBieSBhbGxvY2F0aW5n
Ci0gICAgICogICAgIGFuIHVuYm91bmQgJ2xpc3RlbmVyJyBwb3J0IGFuZCBhdmVydGlzaW5nIHRo
YXQgdmlhIGEgc3RvcmFnZSBzZXJ2aWNlCi0gICAgICogICAgIHN1Y2ggYXMgeGVuc3RvcmUpLgot
ICAgICAqICAyLiBQaHlzaWNhbCBpbnRlcnJ1cHRzLiBBIGRvbWFpbiB3aXRoIHN1aXRhYmxlIGhh
cmR3YXJlLWFjY2VzcwotICAgICAqICAgICBwcml2aWxlZ2VzIGNhbiBiaW5kIGFuIGV2ZW50LWNo
YW5uZWwgcG9ydCB0byBhIHBoeXNpY2FsIGludGVycnVwdAotICAgICAqICAgICBzb3VyY2UuCi0g
ICAgICogIDMuIFZpcnR1YWwgaW50ZXJydXB0cyAoJ2V2ZW50cycpLiBBIGRvbWFpbiBjYW4gYmlu
ZCBhbiBldmVudC1jaGFubmVsCi0gICAgICogICAgIHBvcnQgdG8gYSB2aXJ0dWFsIGludGVycnVw
dCBzb3VyY2UsIHN1Y2ggYXMgdGhlIHZpcnR1YWwtdGltZXIKLSAgICAgKiAgICAgZGV2aWNlIG9y
IHRoZSBlbWVyZ2VuY3kgY29uc29sZS4KLSAgICAgKiAKLSAgICAgKiBFdmVudCBjaGFubmVscyBh
cmUgYWRkcmVzc2VkIGJ5IGEgInBvcnQgaW5kZXgiLiBFYWNoIGNoYW5uZWwgaXMKLSAgICAgKiBh
c3NvY2lhdGVkIHdpdGggdHdvIGJpdHMgb2YgaW5mb3JtYXRpb246Ci0gICAgICogIDEuIFBFTkRJ
TkcgLS0gbm90aWZpZXMgdGhlIGRvbWFpbiB0aGF0IHRoZXJlIGlzIGEgcGVuZGluZyBub3RpZmlj
YXRpb24KLSAgICAgKiAgICAgdG8gYmUgcHJvY2Vzc2VkLiBUaGlzIGJpdCBpcyBjbGVhcmVkIGJ5
IHRoZSBndWVzdC4KLSAgICAgKiAgMi4gTUFTSyAtLSBpZiB0aGlzIGJpdCBpcyBjbGVhciB0aGVu
IGEgMC0+MSB0cmFuc2l0aW9uIG9mIFBFTkRJTkcKLSAgICAgKiAgICAgd2lsbCBjYXVzZSBhbiBh
c3luY2hyb25vdXMgdXBjYWxsIHRvIGJlIHNjaGVkdWxlZC4gVGhpcyBiaXQgaXMgb25seQotICAg
ICAqICAgICB1cGRhdGVkIGJ5IHRoZSBndWVzdC4gSXQgaXMgcmVhZC1vbmx5IHdpdGhpbiBYZW4u
IElmIGEgY2hhbm5lbAotICAgICAqICAgICBiZWNvbWVzIHBlbmRpbmcgd2hpbGUgdGhlIGNoYW5u
ZWwgaXMgbWFza2VkIHRoZW4gdGhlICdlZGdlJyBpcyBsb3N0Ci0gICAgICogICAgIChpLmUuLCB3
aGVuIHRoZSBjaGFubmVsIGlzIHVubWFza2VkLCB0aGUgZ3Vlc3QgbXVzdCBtYW51YWxseSBoYW5k
bGUKLSAgICAgKiAgICAgcGVuZGluZyBub3RpZmljYXRpb25zIGFzIG5vIHVwY2FsbCB3aWxsIGJl
IHNjaGVkdWxlZCBieSBYZW4pLgotICAgICAqIAotICAgICAqIFRvIGV4cGVkaXRlIHNjYW5uaW5n
IG9mIHBlbmRpbmcgbm90aWZpY2F0aW9ucywgYW55IDAtPjEgcGVuZGluZwotICAgICAqIHRyYW5z
aXRpb24gb24gYW4gdW5tYXNrZWQgY2hhbm5lbCBjYXVzZXMgYSBjb3JyZXNwb25kaW5nIGJpdCBp
biBhCi0gICAgICogcGVyLXZjcHUgc2VsZWN0b3Igd29yZCB0byBiZSBzZXQuIEVhY2ggYml0IGlu
IHRoZSBzZWxlY3RvciBjb3ZlcnMgYQotICAgICAqICdDIExPTkdfUFRSJyBpbiB0aGUgUEVORElO
RyBiaXRmaWVsZCBhcnJheS4KLSAgICAgKi8KLSAgICB4ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGlu
Z1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07Ci0gICAgeGVuX3Vsb25nX3QgZXZ0Y2huX21hc2tb
c2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOwotCi0gICAgLyoKLSAgICAgKiBXYWxsY2xvY2sgdGlt
ZTogdXBkYXRlZCBvbmx5IGJ5IGNvbnRyb2wgc29mdHdhcmUuIEd1ZXN0cyBzaG91bGQgYmFzZQot
ICAgICAqIHRoZWlyIGdldHRpbWVvZmRheSgpIHN5c2NhbGwgb24gdGhpcyB3YWxsY2xvY2stYmFz
ZSB2YWx1ZS4KLSAgICAgKi8KLSAgICB1aW50MzJfdCB3Y192ZXJzaW9uOyAgICAgIC8qIFZlcnNp
b24gY291bnRlcjogc2VlIHZjcHVfdGltZV9pbmZvX3QuICovCi0gICAgdWludDMyX3Qgd2Nfc2Vj
OyAgICAgICAgICAvKiBTZWNzICAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8KLSAgICB1
aW50MzJfdCB3Y19uc2VjOyAgICAgICAgIC8qIE5zZWNzIDAwOjAwOjAwIFVUQywgSmFuIDEsIDE5
NzAuICAqLwotCi0gICAgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaDsKLQotfTsKLSNpZm5k
ZWYgX19YRU5fXwotdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVkX2luZm8gc2hhcmVkX2luZm9fdDsKLSNl
bmRpZgotCi0vKgotICogYGluY29udGVudHMgMjAwIHN0YXJ0b2ZkYXkgU3RhcnQtb2YtZGF5IG1l
bW9yeSBsYXlvdXQKLSAqCi0gKiAgMS4gVGhlIGRvbWFpbiBpcyBzdGFydGVkIHdpdGhpbiBjb250
aWd1b3VzIHZpcnR1YWwtbWVtb3J5IHJlZ2lvbi4KLSAqICAyLiBUaGUgY29udGlndW91cyByZWdp
b24gZW5kcyBvbiBhbiBhbGlnbmVkIDRNQiBib3VuZGFyeS4KLSAqICAzLiBUaGlzIHRoZSBvcmRl
ciBvZiBib290c3RyYXAgZWxlbWVudHMgaW4gdGhlIGluaXRpYWwgdmlydHVhbCByZWdpb246Ci0g
KiAgICAgIGEuIHJlbG9jYXRlZCBrZXJuZWwgaW1hZ2UKLSAqICAgICAgYi4gaW5pdGlhbCByYW0g
ZGlzayAgICAgICAgICAgICAgW21vZF9zdGFydCwgbW9kX2xlbl0KLSAqICAgICAgYy4gbGlzdCBv
ZiBhbGxvY2F0ZWQgcGFnZSBmcmFtZXMgW21mbl9saXN0LCBucl9wYWdlc10KLSAqICAgICAgICAg
KHVubGVzcyByZWxvY2F0ZWQgZHVlIHRvIFhFTl9FTEZOT1RFX0lOSVRfUDJNKQotICogICAgICBk
LiBzdGFydF9pbmZvX3Qgc3RydWN0dXJlICAgICAgICBbcmVnaXN0ZXIgRVNJICh4ODYpXQotICog
ICAgICBlLiBib290c3RyYXAgcGFnZSB0YWJsZXMgICAgICAgICBbcHRfYmFzZSBhbmQgQ1IzICh4
ODYpXQotICogICAgICBmLiBib290c3RyYXAgc3RhY2sgICAgICAgICAgICAgICBbcmVnaXN0ZXIg
RVNQICh4ODYpXQotICogIDQuIEJvb3RzdHJhcCBlbGVtZW50cyBhcmUgcGFja2VkIHRvZ2V0aGVy
LCBidXQgZWFjaCBpcyA0a0ItYWxpZ25lZC4KLSAqICA1LiBUaGUgaW5pdGlhbCByYW0gZGlzayBt
YXkgYmUgb21pdHRlZC4KLSAqICA2LiBUaGUgbGlzdCBvZiBwYWdlIGZyYW1lcyBmb3JtcyBhIGNv
bnRpZ3VvdXMgJ3BzZXVkby1waHlzaWNhbCcgbWVtb3J5Ci0gKiAgICAgbGF5b3V0IGZvciB0aGUg
ZG9tYWluLiBJbiBwYXJ0aWN1bGFyLCB0aGUgYm9vdHN0cmFwIHZpcnR1YWwtbWVtb3J5Ci0gKiAg
ICAgcmVnaW9uIGlzIGEgMToxIG1hcHBpbmcgdG8gdGhlIGZpcnN0IHNlY3Rpb24gb2YgdGhlIHBz
ZXVkby1waHlzaWNhbCBtYXAuCi0gKiAgNy4gQWxsIGJvb3RzdHJhcCBlbGVtZW50cyBhcmUgbWFw
cGVkIHJlYWQtd3JpdGFibGUgZm9yIHRoZSBndWVzdCBPUy4gVGhlCi0gKiAgICAgb25seSBleGNl
cHRpb24gaXMgdGhlIGJvb3RzdHJhcCBwYWdlIHRhYmxlLCB3aGljaCBpcyBtYXBwZWQgcmVhZC1v
bmx5LgotICogIDguIFRoZXJlIGlzIGd1YXJhbnRlZWQgdG8gYmUgYXQgbGVhc3QgNTEya0IgcGFk
ZGluZyBhZnRlciB0aGUgZmluYWwKLSAqICAgICBib290c3RyYXAgZWxlbWVudC4gSWYgbmVjZXNz
YXJ5LCB0aGUgYm9vdHN0cmFwIHZpcnR1YWwgcmVnaW9uIGlzCi0gKiAgICAgZXh0ZW5kZWQgYnkg
YW4gZXh0cmEgNE1CIHRvIGVuc3VyZSB0aGlzLgotICoKLSAqIE5vdGU6IFByaW9yIHRvIDI1ODMz
OmJiODViYmNjYjFjOS4gKCJ4ODYvMzItb24tNjQgYWRqdXN0IERvbTAgaW5pdGlhbCBwYWdlCi0g
KiB0YWJsZSBsYXlvdXQiKSBhIGJ1ZyBjYXVzZWQgdGhlIHB0X2Jhc2UgKDMuZSBhYm92ZSkgYW5k
IGNyMyB0byBub3QgcG9pbnQKLSAqIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3Vlc3QgcGFnZSB0YWJs
ZXMgKGl0IHdhcyBvZmZzZXQgYnkgdHdvIHBhZ2VzKS4KLSAqIFRoaXMgb25seSBtYW5pZmVzdGVk
IGl0c2VsZiBvbiAzMi1vbi02NCBkb20wIGtlcm5lbHMgYW5kIG5vdCAzMi1vbi02NCBkb21VCi0g
KiBvciA2NC1iaXQga2VybmVscyBvZiBhbnkgY29sb3VyLiBUaGUgcGFnZSB0YWJsZXMgZm9yIGEg
MzItb24tNjQgZG9tMCBnb3QKLSAqIGFsbG9jYXRlZCBpbiB0aGUgb3JkZXI6ICdmaXJzdCBMMScs
J2ZpcnN0IEwyJywgJ2ZpcnN0IEwzJywgc28gdGhlIG9mZnNldAotICogdG8gdGhlIHBhZ2UgdGFi
bGUgYmFzZSBpcyBieSB0d28gcGFnZXMgYmFjay4gVGhlIGluaXRpYWwgZG9tYWluIGlmIGl0IGlz
Ci0gKiAzMi1iaXQgYW5kIHJ1bnMgdW5kZXIgYSA2NC1iaXQgaHlwZXJ2aXNvciBzaG91bGQgX05P
VF8gdXNlIHR3byBvZiB0aGUKLSAqIHBhZ2VzIHByZWNlZGluZyBwdF9iYXNlIGFuZCBtYXJrIHRo
ZW0gYXMgcmVzZXJ2ZWQvdW51c2VkLgotICovCi0jaWZkZWYgWEVOX0hBVkVfUFZfR1VFU1RfRU5U
UlkKLXN0cnVjdCBzdGFydF9pbmZvIHsKLSAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBGSUxMRUQg
SU4gQk9USCBPTiBJTklUSUFMIEJPT1QgQU5EIE9OIFJFU1VNRS4gICAgKi8KLSAgICBjaGFyIG1h
Z2ljWzMyXTsgICAgICAgICAgICAgLyogInhlbi08dmVyc2lvbj4tPHBsYXRmb3JtPiIuICAgICAg
ICAgICAgKi8KLSAgICBVTE9OR19QVFIgbnJfcGFnZXM7ICAgICAvKiBUb3RhbCBwYWdlcyBhbGxv
Y2F0ZWQgdG8gdGhpcyBkb21haW4uICAqLwotICAgIFVMT05HX1BUUiBzaGFyZWRfaW5mbzsgIC8q
IE1BQ0hJTkUgYWRkcmVzcyBvZiBzaGFyZWQgaW5mbyBzdHJ1Y3QuICovCi0gICAgdWludDMyX3Qg
ZmxhZ3M7ICAgICAgICAgICAgIC8qIFNJRl94eHggZmxhZ3MuICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgeGVuX3Bmbl90IHN0b3JlX21mbjsgICAgICAgIC8qIE1BQ0hJTkUgcGFnZSBu
dW1iZXIgb2Ygc2hhcmVkIHBhZ2UuICAgICovCi0gICAgdWludDMyX3Qgc3RvcmVfZXZ0Y2huOyAg
ICAgIC8qIEV2ZW50IGNoYW5uZWwgZm9yIHN0b3JlIGNvbW11bmljYXRpb24uICovCi0gICAgdW5p
b24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgeGVuX3Bmbl90IG1mbjsgICAgICAv
KiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9mIGNvbnNvbGUgcGFnZS4gICAqLwotICAgICAgICAgICAg
dWludDMyX3QgIGV2dGNobjsgICAvKiBFdmVudCBjaGFubmVsIGZvciBjb25zb2xlIHBhZ2UuICAg
ICAgICAqLwotICAgICAgICB9IGRvbVU7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1
aW50MzJfdCBpbmZvX29mZjsgIC8qIE9mZnNldCBvZiBjb25zb2xlX2luZm8gc3RydWN0LiAgICAg
ICAgICovCi0gICAgICAgICAgICB1aW50MzJfdCBpbmZvX3NpemU7IC8qIFNpemUgb2YgY29uc29s
ZV9pbmZvIHN0cnVjdCBmcm9tIHN0YXJ0LiovCi0gICAgICAgIH0gZG9tMDsKLSAgICB9IGNvbnNv
bGU7Ci0gICAgLyogVEhFIEZPTExPV0lORyBBUkUgT05MWSBGSUxMRUQgSU4gT04gSU5JVElBTCBC
T09UIChOT1QgUkVTVU1FKS4gICAgICovCi0gICAgVUxPTkdfUFRSIHB0X2Jhc2U7ICAgICAgLyog
VklSVFVBTCBhZGRyZXNzIG9mIHBhZ2UgZGlyZWN0b3J5LiAgICAgKi8KLSAgICBVTE9OR19QVFIg
bnJfcHRfZnJhbWVzOyAvKiBOdW1iZXIgb2YgYm9vdHN0cmFwIHAudC4gZnJhbWVzLiAgICAgICAq
LwotICAgIFVMT05HX1BUUiBtZm5fbGlzdDsgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdl
LWZyYW1lIGxpc3QuICAgICovCi0gICAgVUxPTkdfUFRSIG1vZF9zdGFydDsgICAgLyogVklSVFVB
TCBhZGRyZXNzIG9mIHByZS1sb2FkZWQgbW9kdWxlICAgKi8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogKFBGTiBvZiBwcmUtbG9hZGVkIG1vZHVsZSBpZiAgICAgICAgICAgKi8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFNJRl9NT0RfU1RBUlRfUEZOIHNl
dCBpbiBmbGFncykuICAgICAgKi8KLSAgICBVTE9OR19QVFIgbW9kX2xlbjsgICAgICAvKiBTaXpl
IChieXRlcykgb2YgcHJlLWxvYWRlZCBtb2R1bGUuICAgICAqLwotI2RlZmluZSBNQVhfR1VFU1Rf
Q01ETElORSAxMDI0Ci0gICAgaW50OF90IGNtZF9saW5lW01BWF9HVUVTVF9DTURMSU5FXTsKLSAg
ICAvKiBUaGUgcGZuIHJhbmdlIGhlcmUgY292ZXJzIGJvdGggcGFnZSB0YWJsZSBhbmQgcC0+bSB0
YWJsZSBmcmFtZXMuICAgKi8KLSAgICBVTE9OR19QVFIgZmlyc3RfcDJtX3BmbjsvKiAxc3QgcGZu
IGZvcm1pbmcgaW5pdGlhbCBQLT5NIHRhYmxlLiAgICAqLwotICAgIFVMT05HX1BUUiBucl9wMm1f
ZnJhbWVzOy8qICMgb2YgcGZucyBmb3JtaW5nIGluaXRpYWwgUC0+TSB0YWJsZS4gICovCi19Owot
dHlwZWRlZiBzdHJ1Y3Qgc3RhcnRfaW5mbyBzdGFydF9pbmZvX3Q7Ci0KLS8qIE5ldyBjb25zb2xl
IHVuaW9uIGZvciBkb20wIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMy4gKi8KLSNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMwotI2RlZmluZSBjb25zb2xlX21mbiAgICBj
b25zb2xlLmRvbVUubWZuCi0jZGVmaW5lIGNvbnNvbGVfZXZ0Y2huIGNvbnNvbGUuZG9tVS5ldnRj
aG4KLSNlbmRpZgotI2VuZGlmIC8qIFhFTl9IQVZFX1BWX0dVRVNUX0VOVFJZICovCi0KLS8qIFRo
ZXNlIGZsYWdzIGFyZSBwYXNzZWQgaW4gdGhlICdmbGFncycgZmllbGQgb2Ygc3RhcnRfaW5mb190
LiAqLwotI2RlZmluZSBTSUZfUFJJVklMRUdFRCAgICAoMTw8MCkgIC8qIElzIHRoZSBkb21haW4g
cHJpdmlsZWdlZD8gKi8KLSNkZWZpbmUgU0lGX0lOSVRET01BSU4gICAgKDE8PDEpICAvKiBJcyB0
aGlzIHRoZSBpbml0aWFsIGNvbnRyb2wgZG9tYWluPyAqLwotI2RlZmluZSBTSUZfTVVMVElCT09U
X01PRCAoMTw8MikgIC8qIElzIG1vZF9zdGFydCBhIG11bHRpYm9vdCBtb2R1bGU/ICovCi0jZGVm
aW5lIFNJRl9NT0RfU1RBUlRfUEZOICgxPDwzKSAgLyogSXMgbW9kX3N0YXJ0IGEgUEZOPyAqLwot
I2RlZmluZSBTSUZfUE1fTUFTSyAgICAgICAoMHhGRjw8OCkgLyogcmVzZXJ2ZSAxIGJ5dGUgZm9y
IHhlbi1wbSBvcHRpb25zICovCi0KLS8qCi0gKiBBIG11bHRpYm9vdCBtb2R1bGUgaXMgYSBwYWNr
YWdlIGNvbnRhaW5pbmcgbW9kdWxlcyB2ZXJ5IHNpbWlsYXIgdG8gYQotICogbXVsdGlib290IG1v
ZHVsZSBhcnJheS4gVGhlIG9ubHkgZGlmZmVyZW5jZXMgYXJlOgotICogLSB0aGUgYXJyYXkgb2Yg
bW9kdWxlIGRlc2NyaXB0b3JzIGlzIGJ5IGNvbnZlbnRpb24gc2ltcGx5IGF0IHRoZSBiZWdpbm5p
bmcKLSAqICAgb2YgdGhlIG11bHRpYm9vdCBtb2R1bGUsCi0gKiAtIGFkZHJlc3NlcyBpbiB0aGUg
bW9kdWxlIGRlc2NyaXB0b3JzIGFyZSBiYXNlZCBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICog
ICBtdWx0aWJvb3QgbW9kdWxlLAotICogLSB0aGUgbnVtYmVyIG9mIG1vZHVsZXMgaXMgZGV0ZXJt
aW5lZCBieSBhIHRlcm1pbmF0aW9uIGRlc2NyaXB0b3IgdGhhdCBoYXMKLSAqICAgbW9kX3N0YXJ0
ID09IDAuCi0gKgotICogVGhpcyBwZXJtaXRzIHRvIGJvdGggYnVpbGQgaXQgc3RhdGljYWxseSBh
bmQgcmVmZXJlbmNlIGl0IGluIGEgY29uZmlndXJhdGlvbgotICogZmlsZSwgYW5kIGxldCB0aGUg
UFYgZ3Vlc3QgZWFzaWx5IHJlYmFzZSB0aGUgYWRkcmVzc2VzIHRvIHZpcnR1YWwgYWRkcmVzc2Vz
Ci0gKiBhbmQgYXQgdGhlIHNhbWUgdGltZSBjb3VudCB0aGUgbnVtYmVyIG9mIG1vZHVsZXMuCi0g
Ki8KLXN0cnVjdCB4ZW5fbXVsdGlib290X21vZF9saXN0Ci17Ci0gICAgLyogQWRkcmVzcyBvZiBm
aXJzdCBieXRlIG9mIHRoZSBtb2R1bGUgKi8KLSAgICB1aW50MzJfdCBtb2Rfc3RhcnQ7Ci0gICAg
LyogQWRkcmVzcyBvZiBsYXN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAoaW5jbHVzaXZlKSAqLwotICAg
IHVpbnQzMl90IG1vZF9lbmQ7Ci0gICAgLyogQWRkcmVzcyBvZiB6ZXJvLXRlcm1pbmF0ZWQgY29t
bWFuZCBsaW5lICovCi0gICAgdWludDMyX3QgY21kbGluZTsKLSAgICAvKiBVbnVzZWQsIG11c3Qg
YmUgemVybyAqLwotICAgIHVpbnQzMl90IHBhZDsKLX07Ci0vKgotICogYGluY29udGVudHMgMjAw
IHN0YXJ0b2ZkYXlfZG9tMF9jb25zb2xlIERvbTBfY29uc29sZQotICoKLSAqIFRoZSBjb25zb2xl
IHN0cnVjdHVyZSBpbiBzdGFydF9pbmZvLmNvbnNvbGUuZG9tMAotICoKLSAqIFRoaXMgc3RydWN0
dXJlIGluY2x1ZGVzIGEgdmFyaWV0eSBvZiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0bwotICogaGF2
ZSBhIHdvcmtpbmcgVkdBL1ZFU0EgY29uc29sZS4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgZG9tMF92
Z2FfY29uc29sZV9pbmZvIHsKLSAgICB1aW50OF90IHZpZGVvX3R5cGU7IC8qIERPTTBfVkdBX0NP
TlNPTEVfPz8/ICovCi0jZGVmaW5lIFhFTl9WR0FUWVBFX1RFWFRfTU9ERV8zIDB4MDMKLSNkZWZp
bmUgWEVOX1ZHQVRZUEVfVkVTQV9MRkIgICAgMHgyMwotI2RlZmluZSBYRU5fVkdBVFlQRV9FRklf
TEZCICAgICAweDcwCi0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAg
ICAvKiBGb250IGhlaWdodCwgaW4gcGl4ZWxzLiAqLwotICAgICAgICAgICAgdWludDE2X3QgZm9u
dF9oZWlnaHQ7Ci0gICAgICAgICAgICAvKiBDdXJzb3IgbG9jYXRpb24gKGNvbHVtbiwgcm93KS4g
Ki8KLSAgICAgICAgICAgIHVpbnQxNl90IGN1cnNvcl94LCBjdXJzb3JfeTsKLSAgICAgICAgICAg
IC8qIE51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIChkaW1lbnNpb25zIGluIGNoYXJhY3RlcnMp
LiAqLwotICAgICAgICAgICAgdWludDE2X3Qgcm93cywgY29sdW1uczsKLSAgICAgICAgfSB0ZXh0
X21vZGVfMzsKLQotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogV2lkdGggYW5kIGhl
aWdodCwgaW4gcGl4ZWxzLiAqLwotICAgICAgICAgICAgdWludDE2X3Qgd2lkdGgsIGhlaWdodDsK
LSAgICAgICAgICAgIC8qIEJ5dGVzIHBlciBzY2FuIGxpbmUuICovCi0gICAgICAgICAgICB1aW50
MTZfdCBieXRlc19wZXJfbGluZTsKLSAgICAgICAgICAgIC8qIEJpdHMgcGVyIHBpeGVsLiAqLwot
ICAgICAgICAgICAgdWludDE2X3QgYml0c19wZXJfcGl4ZWw7Ci0gICAgICAgICAgICAvKiBMRkIg
cGh5c2ljYWwgYWRkcmVzcywgYW5kIHNpemUgKGluIHVuaXRzIG9mIDY0a0IpLiAqLwotICAgICAg
ICAgICAgdWludDMyX3QgbGZiX2Jhc2U7Ci0gICAgICAgICAgICB1aW50MzJfdCBsZmJfc2l6ZTsK
LSAgICAgICAgICAgIC8qIFJHQiBtYXNrIG9mZnNldHMgYW5kIHNpemVzLCBhcyBkZWZpbmVkIGJ5
IFZCRSAxLjIrICovCi0gICAgICAgICAgICB1aW50OF90ICByZWRfcG9zLCByZWRfc2l6ZTsKLSAg
ICAgICAgICAgIHVpbnQ4X3QgIGdyZWVuX3BvcywgZ3JlZW5fc2l6ZTsKLSAgICAgICAgICAgIHVp
bnQ4X3QgIGJsdWVfcG9zLCBibHVlX3NpemU7Ci0gICAgICAgICAgICB1aW50OF90ICByc3ZkX3Bv
cywgcnN2ZF9zaXplOwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIw
NgotICAgICAgICAgICAgLyogVkVTQSBjYXBhYmlsaXRpZXMgKG9mZnNldCAweGEsIFZFU0EgY29t
bWFuZCAweDRmMDApLiAqLwotICAgICAgICAgICAgdWludDMyX3QgZ2JsX2NhcHM7Ci0gICAgICAg
ICAgICAvKiBNb2RlIGF0dHJpYnV0ZXMgKG9mZnNldCAweDAsIFZFU0EgY29tbWFuZCAweDRmMDEp
LiAqLwotICAgICAgICAgICAgdWludDE2X3QgbW9kZV9hdHRyczsKLSNlbmRpZgotICAgICAgICB9
IHZlc2FfbGZiOwotICAgIH0gdTsKLX0gZG9tMF92Z2FfY29uc29sZV9pbmZvX3Q7Ci0jZGVmaW5l
IHhlbl92Z2FfY29uc29sZV9pbmZvIGRvbTBfdmdhX2NvbnNvbGVfaW5mbwotI2RlZmluZSB4ZW5f
dmdhX2NvbnNvbGVfaW5mb190IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190Ci0KLXR5cGVkZWYgdWlu
dDhfdCB4ZW5fZG9tYWluX2hhbmRsZV90WzE2XTsKLQotLyogVHVybiBhIHBsYWluIG51bWJlciBp
bnRvIGEgQyBVTE9OR19QVFIgY29uc3RhbnQuICovCi0jZGVmaW5lIF9fbWtfdW5zaWduZWRfbG9u
Zyh4KSB4ICMjIFVMCi0jZGVmaW5lIG1rX3Vuc2lnbmVkX2xvbmcoeCkgX19ta191bnNpZ25lZF9s
b25nKHgpCi0KLV9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDgsICB1aW50OF90KTsKLV9f
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDE2LCB1aW50MTZfdCk7Ci1fX0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQzMiwgdWludDMyX3QpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1aW50NjQsIHVpbnQ2NF90KTsKLQotI2Vsc2UgLyogX19BU1NFTUJMWV9fICovCi0KLS8qIElu
IGFzc2VtYmx5IGNvZGUgd2UgY2Fubm90IHVzZSBDIG51bWVyaWMgY29uc3RhbnQgc3VmZml4ZXMu
ICovCi0jZGVmaW5lIG1rX3Vuc2lnbmVkX2xvbmcoeCkgeAotCi0jZW5kaWYgLyogIV9fQVNTRU1C
TFlfXyAqLwotCi0vKiBEZWZhdWx0IGRlZmluaXRpb25zIGZvciBtYWNyb3MgdXNlZCBieSBkb21j
dGwvc3lzY3RsLiAqLwotI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09M
U19fKQotCi0jaWZuZGVmIHVpbnQ2NF9hbGlnbmVkX3QKLSNkZWZpbmUgdWludDY0X2FsaWduZWRf
dCB1aW50NjRfdAotI2VuZGlmCi0jaWZuZGVmIFhFTl9HVUVTVF9IQU5ETEVfNjQKLSNkZWZpbmUg
WEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBYRU5fR1VFU1RfSEFORExFKG5hbWUpCi0jZW5kaWYK
LQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXN0cnVjdCB4ZW5jdGxfYml0bWFwIHsKLSAgICBYRU5f
R1VFU1RfSEFORExFXzY0KHVpbnQ4KSBiaXRtYXA7Ci0gICAgdWludDMyX3QgbnJfYml0czsKLX07
Ci0jZW5kaWYKLQotI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9U
T09MU19fKSAqLwotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX1hFTl9IX18gKi8KLQotLyoKLSAq
IExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIKLSAq
IGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6
IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaCBi
L2luY2x1ZGUveGVuL3hlbi9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMxNzg0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaApA
QCAtMCwwICsxLDIwIEBACisjaWZuZGVmIF9fWEVOX0VSUk5PX0hfXworI2RlZmluZSBfX1hFTl9F
UlJOT19IX18KKworI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorCisjaWZuZGVmIF9fQVNTRU1C
TFlfXworCisjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1ZSkgbmFtZSA9IFhFTl8jI25hbWUs
CitlbnVtIHsKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KK307CisKKyNlbHNlIC8qICFfX0FT
U0VNQkxZX18gKi8KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIC5lcXUgbmFtZSwg
WEVOXyMjbmFtZQorI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorCisjZW5kaWYgLyogX19BU1NF
TUJMWV9fICovCisKKyNlbmRpZiAvKiAgX19YRU5fRVJSTk9fSF9fICovCmRpZmYgLS1naXQgYS9z
cmMveGVuL2RyaXZlci5jIGIvc3JjL3hlbi9kcml2ZXIuYwppbmRleCBhNGU5MWFhLi43MTYzNjdj
IDEwMDY0NAotLS0gYS9zcmMveGVuL2RyaXZlci5jCisrKyBiL3NyYy94ZW4vZHJpdmVyLmMKQEAg
LTc2LDEwICs3NiwxMSBAQCBYZW5Ub3VjaCgKICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMp
KTsKIAogICAgIExvZ1ByaW50ZihMT0dfTEVWRUxfSU5GTywKLSAgICAgICAgICAgICAgIlhFTjog
JXUuJXUlc1xuIiwKKyAgICAgICAgICAgICAgIlhFTjogJXUuJXUlcyAoX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXyA9ICUwOHgpXG4iLAogICAgICAgICAgICAgICBNYWpvciwKICAgICAgICAgICAg
ICAgTWlub3IsCi0gICAgICAgICAgICAgIEV4dHJhKTsKKyAgICAgICAgICAgICAgRXh0cmEsCisg
ICAgICAgICAgICAgIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18pOwogfQogCiBzdGF0aWMgVk9J
RApkaWZmIC0tZ2l0IGEvc3JjL3hlbi9odm0uYyBiL3NyYy94ZW4vaHZtLmMKaW5kZXggM2UzZTEy
Yy4uYWVhZWRhZCAxMDA2NDQKLS0tIGEvc3JjL3hlbi9odm0uYworKysgYi9zcmMveGVuL2h2bS5j
CkBAIC0xNzEsMTMgKzE3MSwxMyBAQCBfX2NoZWNrUmV0dXJuCiBYRU5fQVBJCiBOVFNUQVRVUwog
SHZtU2V0RXZ0Y2huVXBjYWxsVmVjdG9yKAotICAgIElOICB1bnNpZ25lZCBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICB2Y3B1X2lkLAotICAgIElOICBVQ0hBUiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZWN0b3IKKyAgICBJTiAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAg
ICB2Y3B1X2lkLAorICAgIElOICBVQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rv
cgogICAgICkKIHsKLSAgICBzdHJ1Y3QgeGVuX2h2bV9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3Ig
b3A7Ci0gICAgTE9OR19QVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOwotICAg
IE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM7CisgICAgc3Ry
dWN0IHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3Igb3A7CisgICAgTE9OR19QVFIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzOwogCiAgICAgb3AudmNwdSA9IHZjcHVfaWQ7CiAgICAgb3AudmVjdG9y
ID0gVmVjdG9yOwpkaWZmIC0tZ2l0IGEvc3JjL3hlbi9oeXBlcmNhbGwuaCBiL3NyYy94ZW4vaHlw
ZXJjYWxsLmgKaW5kZXggMDY2N2IzMS4uYjIwMWQxMiAxMDA2NDQKLS0tIGEvc3JjL3hlbi9oeXBl
cmNhbGwuaAorKysgYi9zcmMveGVuL2h5cGVyY2FsbC5oCkBAIC0zMyw5ICszMywxMSBAQAogI2Rl
ZmluZSAgX1hFTl9IWVBFUkNBTExfSAogCiAjaW5jbHVkZSA8bnRkZGsuaD4KKwogI2luY2x1ZGUg
PHhlbi10eXBlcy5oPgogI2luY2x1ZGUgPHhlbi13YXJuaW5ncy5oPgotI2luY2x1ZGUgPHhlbi94
ZW4uaD4KKworI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KIAogZXh0ZXJuIE5UU1RBVFVTCiBIeXBl
cmNhbGxJbml0aWFsaXplKApkaWZmIC0tZ2l0IGEvc3JjL3hlbmJ1cy9jYWNoZS5jIGIvc3JjL3hl
bmJ1cy9jYWNoZS5jCmluZGV4IGUyYzgzYTguLjM2MjBmODggMTAwNjQ0Ci0tLSBhL3NyYy94ZW5i
dXMvY2FjaGUuYworKysgYi9zcmMveGVuYnVzL2NhY2hlLmMKQEAgLTMyLDEyICszMiwxMiBAQAog
I2luY2x1ZGUgPG50ZGRrLmg+CiAjaW5jbHVkZSA8bnRzdHJzYWZlLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+Ci0jaW5jbHVkZSA8dXRpbC5oPgogCiAjaW5jbHVkZSAidGhyZWFkLmgiCiAjaW5jbHVk
ZSAiY2FjaGUuaCIKICNpbmNsdWRlICJkYmdfcHJpbnQuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIK
KyNpbmNsdWRlICJ1dGlsLmgiCiAKIGV4dGVybiBVTE9ORwogTlRBUEkKZGlmZiAtLWdpdCBhL3Zz
MjAxMi94ZW4veGVuLnZjeHByb2ogYi92czIwMTIveGVuL3hlbi52Y3hwcm9qCmluZGV4IDllZmVh
ZjEuLmU3MTgzZTMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW4veGVuLnZjeHByb2oKKysrIGIvdnMy
MDEyL3hlbi94ZW4udmN4cHJvagpAQCAtMjQsNyArMjQsNyBAQAogCTxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPiAKIAogCTxQcm9wZXJ0eUdy
b3VwPgotCQk8SW5jbHVkZVBhdGg+Li5cLi5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5j
bHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5c
Li5caW5jbHVkZVx4ZW47Li5cLi5cc3JjXGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+CiAJCTxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwvUnVuQ29kZUFuYWx5c2lzPgogICAgICAgICA8
RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5hYmxlSW5mMmNhdD4KICAgICAgICAgPEN1c3RvbUJ1aWxk
QmVmb3JlVGFyZ2V0cz5DbENvbXBpbGU8L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KZGlmZiAt
LWdpdCBhL3ZzMjAxMi94ZW5idXMveGVuYnVzLnZjeHByb2ogYi92czIwMTIveGVuYnVzL3hlbmJ1
cy52Y3hwcm9qCmluZGV4IDNjMTg0ZTAuLjlhMWVjNjkgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW5i
dXMveGVuYnVzLnZjeHByb2oKKysrIGIvdnMyMDEyL3hlbmJ1cy94ZW5idXMudmN4cHJvagpAQCAt
MjQsNyArMjQsNyBAQAogCTxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPiAKIAogCTxQcm9wZXJ0eUdyb3VwPgotCQk8SW5jbHVkZVBhdGg+Li5c
Li5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4K
KwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5caW5jbHVkZVx4ZW47Li5cLi5cc3Jj
XGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CiAJCTxSdW5Db2RlQW5hbHlzaXM+
dHJ1ZTwvUnVuQ29kZUFuYWx5c2lzPgogICAgICAgICA8RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5h
YmxlSW5mMmNhdD4KICAgICAgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz5TdGFtcEluZjwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgpkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmZpbHQveGVu
ZmlsdC52Y3hwcm9qIGIvdnMyMDEyL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCmluZGV4IDA2ZTlk
YjUuLmFhNDM2NDMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW5maWx0L3hlbmZpbHQudmN4cHJvagor
KysgYi92czIwMTIveGVuZmlsdC94ZW5maWx0LnZjeHByb2oKQEAgLTI0LDcgKzI0LDcgQEAKIAk8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4g
CiAKIAk8UHJvcGVydHlHcm91cD4KLQkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5c
c3JjXGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CisJCTxJbmNsdWRlUGF0aD4u
LlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVuOy4uXC4uXHNyY1xjb21tb247JChJbmNsdWRl
UGF0aCk8L0luY2x1ZGVQYXRoPgogCQk8UnVuQ29kZUFuYWx5c2lzPnRydWU8L1J1bkNvZGVBbmFs
eXNpcz4KIAkJPEVuYWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+CiAJCTxJbnREaXI+
Li5cJChQcm9qZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9JbnRE
aXI+CmRpZmYgLS1naXQgYS92czIwMTMveGVuL3hlbi52Y3hwcm9qIGIvdnMyMDEzL3hlbi94ZW4u
dmN4cHJvagppbmRleCA3YTA5OTYwLi43MTk0MWRiIDEwMDY0NAotLS0gYS92czIwMTMveGVuL3hl
bi52Y3hwcm9qCisrKyBiL3ZzMjAxMy94ZW4veGVuLnZjeHByb2oKQEAgLTU0LDcgKzU0LDYgQEAK
ICAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPFByb3BlcnR5
R3JvdXA+Ci0gICAgPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5cc3JjXGNvbW1vbjsk
KEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CiAgICAgPFJ1bkNvZGVBbmFseXNpcz50cnVlPC9S
dW5Db2RlQW5hbHlzaXM+CiAgICAgPEVuYWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+
CiAgICAgPEludERpcj4uLlwkKFByb2plY3ROYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBs
YXRmb3JtKVw8L0ludERpcj4KQEAgLTcwLDEyICs2OSwxNiBAQAogICAgICAgICA8SW5wdXRzPi4u
XC4uXGluY2x1ZGVcdmVyc2lvbi5oeDwvSW5wdXRzPgogICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+
CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQo
V2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVu
Oy4uXC4uXHNyY1xjb21tb247JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
X01PRFVMRV9fPSJYRU4iO1BPT0xfTlhfT1BUSU49MTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8V2FybmluZ0xldmVsPkVuYWJsZUFs
bFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
NDcxMTs0NTQ4OzQ4MjA7NDY2ODs0MjU1OzYwMDE7NjA1NDsyODE5NjslKERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+CiAgICAgICA8TXVsdGlQcm9jZXNz
b3JDb21waWxhdGlvbj50cnVlPC9NdWx0aVByb2Nlc3NvckNvbXBpbGF0aW9uPgogICAgICAgPEVu
YWJsZVBSRWZhc3Q+dHJ1ZTwvRW5hYmxlUFJFZmFzdD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
UmVzb3VyY2VDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5c
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgogICAg
ICAgPEltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPmZhbHNlPC9JbWFnZUhhc1NhZmVFeGNl
cHRpb25IYW5kbGVycz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoRERLX0xJQl9Q
QVRIKS9saWJjbnRwci5saWI7JChEREtfTElCX1BBVEgpL2F1eF9rbGliLmxpYjslKEFkZGl0aW9u
YWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgpAQCAtOTIsMTIgKzk1LDYg
QEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2lu
MzInIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9f
aTM4Nl9fOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO19YODZfPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzIn
Ij4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxr
bTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA3IFJlbGVhc2V8V2luMzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVc
a207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+
JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxJbmY+CiAgICAgICA8QXJjaGl0ZWN0dXJlPng4Njwv
QXJjaGl0ZWN0dXJlPgpAQCAtMTA2LDEyICsxMDMsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj4KICAgICA8Q2xDb21waWxlPgogICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9feDg2XzY0X187JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk7X0FNRDY0XzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfHg2NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVk
ZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIERlYnVnfHg2
NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRl
XGttOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNlfHg2NCci
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDcgRGVidWd8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8SW5mPgogICAg
ICAgPEFyY2hpdGVjdHVyZT5hbWQ2NDwvQXJjaGl0ZWN0dXJlPgpkaWZmIC0tZ2l0IGEvdnMyMDEz
L3hlbmJ1cy94ZW5idXMudmN4cHJvaiBiL3ZzMjAxMy94ZW5idXMveGVuYnVzLnZjeHByb2oKaW5k
ZXggZWNiNjAyYi4uNDk4OGQ3ZCAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbmJ1cy94ZW5idXMudmN4
cHJvagorKysgYi92czIwMTMveGVuYnVzL3hlbmJ1cy52Y3hwcm9qCkBAIC01NCw3ICs1NCw2IEBA
CiAgIDxJbXBvcnQgUHJvamVjdD0iLi5cdGFyZ2V0cy5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxQcm9wZXJ0
eUdyb3VwPgotICAgIDxJbmNsdWRlUGF0aD4uLlwuLlxpbmNsdWRlOy4uXC4uXHNyY1xjb21tb247
JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPgogICAgIDxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwv
UnVuQ29kZUFuYWx5c2lzPgogICAgIDxFbmFibGVJbmYyY2F0PmZhbHNlPC9FbmFibGVJbmYyY2F0
PgogICAgIDxJbnREaXI+Li5cJChQcm9qZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQ
bGF0Zm9ybSlcPC9JbnREaXI+CkBAIC03MSwxMSArNzAsMTUgQEAKICAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9f
TU9EVUxFX189IlhFTkJVUyI7UE9PTF9OWF9PUFRJTj0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4u
XGluY2x1ZGVceGVuOy4uXC4uXHNyY1xjb21tb247PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgogICAgICAgPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJuaW5nczwvV2FybmluZ0xldmVs
PgogICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7NDU0ODs0ODIwOzQ2Njg7NDI1
NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPgogICAgICAgPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRpb24+dHJ1ZTwvTXVs
dGlQcm9jZXNzb3JDb21waWxhdGlvbj4KICAgICAgIDxFbmFibGVQUkVmYXN0PnRydWU8L0VuYWJs
ZVBSRWZhc3Q+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8
L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRp
b25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CiAgICAgICA8
QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKFByb2plY3REaXIpLi5cJChDb25maWd1cmF0aW9uTmFt
ZSlcJChQbGF0Zm9ybSlceGVuLmxpYjskKERES19MSUJfUEFUSCkvbGliY250cHIubGliOyUoQWRk
aXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CkBAIC05MSwxMiAr
OTQsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSdXaW4zMiciPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X19pMzg2X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X1g4Nl88L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXxX
aW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMici
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3xXaW4zMiciPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nk
a0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPEluZj4KICAgICAgIDxBcmNoaXRlY3R1cmU+eDg2PC9BcmNoaXRlY3R1
cmU+CkBAIC0xMDUsMTIgKzEwMiw2IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+X194ODZfNjRfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtf
QU1ENjRfPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJl
bGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfHg2
NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4kKFdp
bmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgog
ICAgIDwvQ2xDb21waWxlPgogICAgIDxJbmY+CiAgICAgICA8QXJjaGl0ZWN0dXJlPmFtZDY0PC9B
cmNoaXRlY3R1cmU+CmRpZmYgLS1naXQgYS92czIwMTMveGVuZmlsdC94ZW5maWx0LnZjeHByb2og
Yi92czIwMTMveGVuZmlsdC94ZW5maWx0LnZjeHByb2oKaW5kZXggMTY2MjNjZS4uZWNmYWVjOCAx
MDA2NDQKLS0tIGEvdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCisrKyBiL3ZzMjAxMy94
ZW5maWx0L3hlbmZpbHQudmN4cHJvagpAQCAtNTQsNyArNTQsNiBAQAogICA8SW1wb3J0IFByb2pl
Y3Q9Ii4uXHRhcmdldHMucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cD4KLSAgICA8SW5j
bHVkZVBhdGg+Li5cLi5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5jbHVkZVBhdGgpPC9J
bmNsdWRlUGF0aD4KICAgICA8UnVuQ29kZUFuYWx5c2lzPnRydWU8L1J1bkNvZGVBbmFseXNpcz4K
ICAgICA8RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5hYmxlSW5mMmNhdD4KICAgICA8SW50RGlyPi4u
XCQoUHJvamVjdE5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGly
PgpAQCAtNjMsMTEgKzYyLDE1IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENv
bXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19NT0RVTEVfXz0iWEVORklM
VCI7UE9PTF9OWF9PUFRJTj0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVuOy4u
XC4uXHNyY1xjb21tb247PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFdh
cm5pbmdMZXZlbD5FbmFibGVBbGxXYXJuaW5nczwvV2FybmluZ0xldmVsPgogICAgICAgPERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7NDU0ODs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7Mjgx
OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgog
ICAgICAgPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRpb24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21w
aWxhdGlvbj4KICAgICAgIDxFbmFibGVQUkVmYXN0PnRydWU8L0VuYWJsZVBSRWZhc3Q+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGls
ZT4KICAgICA8TGluaz4KICAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxz
ZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CiAgICAgICA8QWRkaXRpb25hbERlcGVu
ZGVuY2llcz4kKFByb2plY3REaXIpLi5cJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlc
eGVuLmxpYjskKERES19MSUJfUEFUSCkvbGliY250cHIubGliOyUoQWRkaXRpb25hbERlcGVuZGVu
Y2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CkBAIC04MywxMiArODYsNiBAQAogICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgogICAg
IDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19pMzg2X187JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X1g4Nl88L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXxXaW4zMiciPiQoV2luZG93
c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2luMzInIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzInIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiciPiQoV2luZG93c1Nka0Rp
cilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5j
bHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxr
bTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAg
PEluZj4KICAgICAgIDxBcmNoaXRlY3R1cmU+eDg2PC9BcmNoaXRlY3R1cmU+CkBAIC05NywxMiAr
OTQsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSd4NjQnIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
Pl9feDg2XzY0X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X0FNRDY0XzwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNl
fHg2NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8eDY0
JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCci
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNlfHg2NCciPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NTZGtE
aXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNs
dWRlXGttOzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8SW5mPgogICAgICAgPEFyY2hpdGVjdHVyZT5hbWQ2NDwvQXJjaGl0ZWN0dXJlPgotLSAK
Mi4xLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3
aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 13:15:38 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 13:15:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYaIU-0006m5-Cn; Thu, 19 Mar 2015 13:15:38 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYaIR-0006ls-Ja
	for win-pv-devel@lists.xenproject.org; Thu, 19 Mar 2015 13:15:36 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
	F1/2C-24916-6FBCA055; Thu, 19 Mar 2015 13:15:34 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1426770921!11856148!1
X-Originating-IP: [74.125.82.171]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19379 invoked from network); 19 Mar 2015 13:15:21 -0000
Received: from mail-we0-f171.google.com (HELO mail-we0-f171.google.com)
	(74.125.82.171)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 13:15:21 -0000
Received: by wetk59 with SMTP id k59so56960044wet.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=lDTDx6tlmGH2vuy5V3tWgk8xhN5eION1wlAZlVpUBvY=;
	b=fmIbBs+Dv+YhRZWXJen+NzdLbpbJ2bjzukroTCPVKoU/pqptKnIS3JqJQzYeU4V+WX
	AjcwIP8bK8apUYdqXx/GPTQlQ0kmtQEBd/KQqrQXpuE1k1zMG9DKrIyq3ABzTFSYo4Mp
	iF9XXdpAdM8ldvnlm5hS3zoXa+P6d3hlgXYByFXZ4GSQ9Z01Fi+/7mFZf/YoAVZe0Ntj
	z4HjmKDKWSdz9YhOklyBI4rM9Mrr4zK90lhsPxN7PWGP6+GCB9OHWHvN8Kg7oSC6WSL+
	2vCtvm3WHZ0RrcvpBhHsT+a/gyBaMbnIPILu9SbRaZZKvFWCf8UoPy2eHQxaTkoHYegS
	XQJw==
X-Received: by 10.180.73.9 with SMTP id h9mr16098416wiv.63.1426770921128;
	Thu, 19 Mar 2015 06:15:21 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id hn8sm2449533wib.18.2015.03.19.06.15.18
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 19 Mar 2015 06:15:20 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 19 Mar 2015 13:15:18 +0000
Message-Id: <1426770921-14080-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
References: <1426770921-14080-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 547025
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/6] Update headers to
	xen.git:f919dbc0583797d1c5c09da815518084ce77eb81
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

VGhlIGNvZGUgcmVsaWVzIG9uIHBvc3QtNC41LjAgaGVhZGVyIGNoYW5nZXMgc28gd2UgbmVlZCBh
IG1vcmUgcmVjZW50CnJlcG9zaXRvcnkuIFRoZSBjb21taXQgaWQgaGVyZSBpcyBqdXN0IG1hc3Rl
ciBvbiB0aGUgZGF5IHRoaXMgdXBkYXRlIHdhcwpkb25lLiBUaGUgaGVhZGVycyB3aWxsIGJlIHVw
ZGF0ZWQgdG8gYSB0YWcgb25jZSBhIHN1aXRhYmxlIG9uZSBpcwphdmFpbGFibGUuCgpTaWduZWQt
b2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KIGdldF94
ZW5faGVhZGVycy5weSAgICAgICAgICAgICAgICAgICAgICAgfCAgNzIgKystCiBpbmNsdWRlL3hl
bi1lcnJuby5oICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGluY2x1ZGUveGVuLmggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKy0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hl
bi14ODZfMzIuaCAgICAgICAgfCAxNzEgLS0tLS0tCiBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4t
eDg2XzY0LmggICAgICAgIHwgMjAyIC0tLS0tLS0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5o
ICAgICAgICAgICAgICAgfCAyNzMgLS0tLS0tLS0tLQogaW5jbHVkZS94ZW4vZXJybm8uaCAgICAg
ICAgICAgICAgICAgICAgICB8IDEzNyAtLS0tLQogaW5jbHVkZS94ZW4vZXZlbnRfY2hhbm5lbC5o
ICAgICAgICAgICAgICB8IDM4NSAtLS0tLS0tLS0tLS0tCiBpbmNsdWRlL3hlbi9mZWF0dXJlcy5o
ICAgICAgICAgICAgICAgICAgIHwgMTE0IC0tLS0KIGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgg
ICAgICAgICAgICAgICAgfCA2ODIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVu
L2h2bS9odm1fb3AuaCAgICAgICAgICAgICAgICAgfCA0MDIgLS0tLS0tLS0tLS0tLS0KIGluY2x1
ZGUveGVuL2h2bS9wYXJhbXMuaCAgICAgICAgICAgICAgICAgfCAxOTQgLS0tLS0tLQogaW5jbHVk
ZS94ZW4vaW8veHNfd2lyZS5oICAgICAgICAgICAgICAgICB8IDE0OSAtLS0tLQogaW5jbHVkZS94
ZW4vbWVtb3J5LmggICAgICAgICAgICAgICAgICAgICB8IDU4OCAtLS0tLS0tLS0tLS0tLS0tLS0t
LQogaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCB8IDE3MiArKysrKysK
IGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggfCAyMDIgKysrKysrKwog
aW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oICAgICAgICB8IDMwNyArKysrKysrKysr
KwogaW5jbHVkZS94ZW4vcHVibGljL2Vycm5vLmggICAgICAgICAgICAgICB8ICA5MyArKysrCiBp
bmNsdWRlL3hlbi9wdWJsaWMvZXZlbnRfY2hhbm5lbC5oICAgICAgIHwgMzg1ICsrKysrKysrKysr
KysKIGluY2x1ZGUveGVuL3B1YmxpYy9mZWF0dXJlcy5oICAgICAgICAgICAgfCAxMTQgKysrKwog
aW5jbHVkZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmggICAgICAgICB8IDY4MiArKysrKysrKysr
KysrKysrKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2h2bS9odm1faW5mb190YWJsZS5oICB8
ICA3MiArKysKIGluY2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX29wLmggICAgICAgICAgfCA0MDIg
KysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9odm0vcGFyYW1zLmggICAgICAgICAg
fCAxOTkgKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dpcmUuaCAgICAgICAgICB8
IDE0OSArKysrKwogaW5jbHVkZS94ZW4vcHVibGljL21lbW9yeS5oICAgICAgICAgICAgICB8IDU4
NyArKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL3NjaGVkLmggICAgICAg
ICAgICAgICB8IDE3NSArKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy90cmFjZS5oICAgICAgICAg
ICAgICAgfCAzMzEgKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy92ZXJzaW9uLmggICAg
ICAgICAgICAgfCAgOTYgKysrKwogaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaCAgICAg
ICAgICB8ICA0NCArKwogaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oICAgICAgICAgICAgICAgICB8
IDkwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3hlbi9zY2hlZC5o
ICAgICAgICAgICAgICAgICAgICAgIHwgMTc1IC0tLS0tLQogaW5jbHVkZS94ZW4vdHJhY2UuaCAg
ICAgICAgICAgICAgICAgICAgICB8IDMzMSAtLS0tLS0tLS0tLQogaW5jbHVkZS94ZW4vdmVyc2lv
bi5oICAgICAgICAgICAgICAgICAgICB8ICA5NiAtLS0tCiBpbmNsdWRlL3hlbi94ZW4tY29tcGF0
LmggICAgICAgICAgICAgICAgIHwgIDQ0IC0tCiBpbmNsdWRlL3hlbi94ZW4uaCAgICAgICAgICAg
ICAgICAgICAgICAgIHwgODk5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVk
ZS94ZW4veGVuL2Vycm5vLmggICAgICAgICAgICAgICAgICB8ICAyMCArCiBzcmMveGVuL2RyaXZl
ci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMveGVuL2h2bS5jICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMveGVuL2h5cGVyY2FsbC5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMveGVuYnVzL2NhY2hlLmMgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyICstCiB2czIwMTIveGVuL3hlbi52Y3hwcm9qICAgICAgICAgICAgICAg
ICAgIHwgICAyICstCiB2czIwMTIveGVuYnVzL3hlbmJ1cy52Y3hwcm9qICAgICAgICAgICAgIHwg
ICAyICstCiB2czIwMTIveGVuZmlsdC94ZW5maWx0LnZjeHByb2ogICAgICAgICAgIHwgICAyICst
CiB2czIwMTMveGVuL3hlbi52Y3hwcm9qICAgICAgICAgICAgICAgICAgIHwgIDE3ICstCiB2czIw
MTMveGVuYnVzL3hlbmJ1cy52Y3hwcm9qICAgICAgICAgICAgIHwgIDE3ICstCiB2czIwMTMveGVu
ZmlsdC94ZW5maWx0LnZjeHByb2ogICAgICAgICAgIHwgIDE3ICstCiA0NyBmaWxlcyBjaGFuZ2Vk
LCA1MDI4IGluc2VydGlvbnMoKyksIDQ5MzAgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCiBkZWxldGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl82NC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5j
bHVkZS94ZW4vYXJjaC14ODYveGVuLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9l
cnJuby5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vZXZlbnRfY2hhbm5lbC5oCiBk
ZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vZmVhdHVyZXMuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3hlbi9odm0vaHZtX29wLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9odm0vcGFy
YW1zLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9pby94c193aXJlLmgKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9tZW1vcnkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGlu
Y2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl82NC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vcHVibGljL2Vycm5vLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3hlbi9wdWJsaWMvZXZlbnRfY2hhbm5lbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94
ZW4vcHVibGljL2ZlYXR1cmVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJs
aWMvZ3JhbnRfdGFibGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9o
dm0vaHZtX2luZm9fdGFibGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy9odm0vaHZtX29wLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvaHZt
L3BhcmFtcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dp
cmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9tZW1vcnkuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS94ZW4vcHVibGljL3RyYWNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL3hlbi9wdWJsaWMvdmVyc2lvbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4v
cHVibGljL3hlbi1jb21wYXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy94ZW4uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3NjaGVkLmgKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi90cmFjZS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVk
ZS94ZW4vdmVyc2lvbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4veGVuLWNvbXBh
dC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4veGVuLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBpbmNsdWRlL3hlbi94ZW4vZXJybm8uaAoKZGlmZiAtLWdpdCBhL2dldF94ZW5faGVhZGVy
cy5weSBiL2dldF94ZW5faGVhZGVycy5weQppbmRleCAzYjcyNThlLi5jZWMwYjE0IDEwMDc1NQot
LS0gYS9nZXRfeGVuX2hlYWRlcnMucHkKKysrIGIvZ2V0X3hlbl9oZWFkZXJzLnB5CkBAIC01LDM0
ICs1LDM5IEBAIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcmUKIAot
ZGVmIHNoZWxsKGNvbW1hbmQpOgotICAgIHByaW50KGNvbW1hbmQpCitkZWYgc2hlbGwoY29tbWFu
ZCwgZGlyID0gJy4nKToKKyAgICBwcmludCgiaW4gJyVzJyBleGVjdXRlICclcyciICUgKGRpciwg
JyAnLmpvaW4oY29tbWFuZCkpKQogICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCi0gICAgcGlwZSA9
IG9zLnBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCAncicsIDEpCisgICAgc3ViID0gc3VicHJvY2Vz
cy5Qb3BlbignICcuam9pbihjb21tYW5kKSwgY3dkPWRpciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKLSAgICBmb3IgbGluZSBpbiBwaXBlOgotICAg
ICAgICBwcmludChsaW5lLnJzdHJpcCgpKQorICAgIGZvciBsaW5lIGluIHN1Yi5zdGRvdXQ6Cisg
ICAgICAgIHByaW50KGxpbmUuZGVjb2RlKHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKSkucnN0cmlw
KCkpCiAKLSAgICByZXR1cm4gcGlwZS5jbG9zZSgpCisgICAgc3ViLndhaXQoKQorCisgICAgcmV0
dXJuIHN1Yi5yZXR1cm5jb2RlCiAKIGRlZiBnZXRfcmVwbyh1cmwsIHdvcmtpbmcpOgogICAgIHNo
ZWxsKFsnZ2l0JywgJ2Nsb25lJywgJy0tbm8tY2hlY2tvdXQnLCB1cmwsIHdvcmtpbmddKQogCiBk
ZWYgZ2V0X2JyYW5jaCh0YWcsIHdvcmtpbmcpOgotICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAg
b3MuY2hkaXIod29ya2luZykKLSAgICBzaGVsbChbJ2dpdCcsICdjaGVja291dCcsICctYicsIHRh
Z10pCi0gICAgb3MuY2hkaXIoY3dkKQorICAgIHNoZWxsKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1i
JywgJ3RtcCcsIHRhZ10sIHdvcmtpbmcpCisKK2RlZiBwdXRfYnJhbmNoKHdvcmtpbmcpOgorICAg
IHNoZWxsKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ21hc3RlciddLCB3b3JraW5nKQorICAgIHNoZWxs
KFsnZ2l0JywgJ2JyYW5jaCcsICctZCcsICd0bXAnXSwgd29ya2luZykKIAotZGVmIGNvcHlfZmls
ZSh3b3JraW5nLCBzcmNfZGlyLCBkc3RfZGlyLCBuYW1lKToKK2RlZiBjb3B5X2ZpbGUod29ya2lu
ZywgZGlyLCBuYW1lKToKICAgICB0cnk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKCdpbmNsdWRlXFx4
ZW5cXCVzJyAlIGRzdF9kaXIpCisgICAgICAgIG9zLm1ha2VkaXJzKCdpbmNsdWRlXFx4ZW5cXCVz
JyAlIGRpcikKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgTm9uZQogCi0gICAgc3JjID0g
b3BlbignJXNcXHhlblxcaW5jbHVkZVxcJXNcXCVzJyAlICh3b3JraW5nLCBzcmNfZGlyLCBuYW1l
KSwgJ3InKQotICAgIGRzdCA9IG9wZW4oJ2luY2x1ZGVcXHhlblxcJXNcXCVzJyAlIChkc3RfZGly
LCBuYW1lKSwgJ3cnLCBuZXdsaW5lPSdcbicpCisgICAgc3JjID0gb3BlbignJXNcXHhlblxcaW5j
bHVkZVxcJXNcXCVzJyAlICh3b3JraW5nLCBkaXIsIG5hbWUpLCAncicpCisgICAgZHN0ID0gb3Bl
bignaW5jbHVkZVxceGVuXFwlc1xcJXMnICUgKGRpciwgbmFtZSksICd3JywgbmV3bGluZT0nXG4n
KQogCiAgICAgcHJpbnQobmFtZSkKIApAQCAtNTMsMjQgKzU4LDMxIEBAIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CiAgICAgZ2V0X3JlcG8oJ2dpdDovL3hlbmJpdHMueGVuLm9yZy94ZW4uZ2l0
Jywgd29ya2luZykKICAgICBnZXRfYnJhbmNoKHRhZywgd29ya2luZykKIAotICAgIGNvcHlfZmls
ZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAneGVuLmgnKQorICAgIHNoZWxsKFsnZ2l0JywgJ3Jt
JywgJy1yJywgJy1mJywgJ3hlbiddLCAnaW5jbHVkZScpCisKKyAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpYycsICd4ZW4uaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAn
eGVuLWNvbXBhdC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICd0cmFjZS5o
JykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICdtZW1vcnkuaCcpCisgICAgY29w
eV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnc2NoZWQuaCcpCisgICAgY29weV9maWxlKHdvcmtp
bmcsICdwdWJsaWMnLCAnZXZlbnRfY2hhbm5lbC5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpYycsICdncmFudF90YWJsZS5oJykKKyAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICd2ZXJzaW9uLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2ZlYXR1
cmVzLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2Vycm5vLmgnKQorCisg
ICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnZXJybm8uaCcpCiAKLSAgICBjb3B5X2ZpbGUo
d29ya2luZywgJ3B1YmxpYycsICcuJywgJ3hlbi1jb21wYXQuaCcpCi0gICAgY29weV9maWxlKHdv
cmtpbmcsICdwdWJsaWMnLCAnLicsICd0cmFjZS5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywg
J3B1YmxpYycsICcuJywgJ21lbW9yeS5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1Ymxp
YycsICcuJywgJ3NjaGVkLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAnZXZlbnRfY2hhbm5lbC5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcu
JywgJ2dyYW50X3RhYmxlLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4n
LCAndmVyc2lvbi5oJykKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpYycsICcuJywgJ2Zl
YXR1cmVzLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4
ZW4uaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ3hlbi14
ODZfMzIuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ3hl
bi14ODZfNjQuaCcpCiAKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3hlbicsICcuJywgJ2Vycm5v
LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAnaHZtX29wLmgnKQor
ICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAncGFyYW1zLmgnKQorICAgIGNv
cHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxodm0nLCAnaHZtX2luZm9fdGFibGUuaCcpCiAKLSAg
ICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAnYXJjaC14ODYnLCAneGVu
LmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICdhcmNoLXg4
NicsICd4ZW4teDg2XzMyLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNo
LXg4NicsICdhcmNoLXg4NicsICd4ZW4teDg2XzY0LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5n
LCAncHVibGljXFxpbycsICd4c193aXJlLmgnKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGh2bScsICdodm0nLCAnaHZtX29wLmgnKQotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAn
cHVibGljXFxodm0nLCAnaHZtJywgJ3BhcmFtcy5oJykKKyAgICBwdXRfYnJhbmNoKHdvcmtpbmcp
CiAKLSAgICBjb3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcaW8nLCAnaW8nLCAneHNfd2lyZS5o
JykKKyAgICBzaGVsbChbJ2dpdCcsICdhZGQnLCAneGVuJ10sICdpbmNsdWRlJykKZGlmZiAtLWdp
dCBhL2luY2x1ZGUveGVuLWVycm5vLmggYi9pbmNsdWRlL3hlbi1lcnJuby5oCmluZGV4IDEwNGZk
NjcuLjliODU4OGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuLWVycm5vLmgKKysrIGIvaW5jbHVk
ZS94ZW4tZXJybm8uaApAQCAtMzYsNiArMzYsMTAgQEAKIAogI2luY2x1ZGUgPHhlbi9lcnJuby5o
PgogCisjZGVmaW5lIEVJU0RJUiAgICAgIDIxCisjZGVmaW5lIEVST0ZTICAgICAgIDMwCisjZGVm
aW5lIEVOT1RFTVBUWSAgIDM5CisKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgLy8g
Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAogCiAjZGVmaW5lIEVSUk5PX1RPX1NU
QVRVUyhfZXJybm8sIF9zdGF0dXMpICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi5oIGIvaW5jbHVkZS94ZW4uaAppbmRleCBmYTk1ZWRkLi4wYzc2ZmU3IDEwMDY0
NAotLS0gYS9pbmNsdWRlL3hlbi5oCisrKyBiL2luY2x1ZGUveGVuLmgKQEAgLTM4LDEzICszOCwy
MyBAQAogI2luY2x1ZGUgPHhlbi10eXBlcy5oPgogI2luY2x1ZGUgPHhlbi13YXJuaW5ncy5oPgog
I2luY2x1ZGUgPHhlbi1lcnJuby5oPgotI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRl
IDx4ZW4vZXZlbnRfY2hhbm5lbC5oPgotI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgotI2lu
Y2x1ZGUgPHhlbi9zY2hlZC5oPgotI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Ci0jaW5jbHVk
ZSA8eGVuL2lvL3hzX3dpcmUuaD4KLSNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5oPgorCisjaW5jbHVk
ZSA8cHVibGljL3hlbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvZXZlbnRfY2hhbm5lbC5oPgorI2luY2x1ZGUgPHB1YmxpYy9ncmFudF90YWJsZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9zY2hlZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+
CisKKy8vIHhzX3dpcmUuaCBnYXRlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgeHNkX2Vycm9ycyBl
bnVtZXJhdGlvbgorLy8gb24gd2hldGhlciBFSU5WQUwgaXMgZGVmaW5lZC4gVW5mb3J0dW5hdGVs
eSBFSU5WQUwgaXMgYWN0dWFsbHkKKy8vIHBhcnQgb2YgYW4gZW51bWVyYXRpb24gYW5kIHRoZSAj
aWZkZWYgdGVzdCB0aHVzIGZhaWxzLgorLy8gT3ZlcnJpZGUgdGhlIGVudW1lcmF0aW9uIHZhbHVl
IGhlcmUgd2l0aCBhICNkZWZpbmUuCisKKyNkZWZpbmUgRUlOVkFMICBYRU5fRUlOVkFMCisKKyNp
bmNsdWRlIDxwdWJsaWMvaW8veHNfd2lyZS5oPgorI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+
CiAKICNpZm5kZWYgWEVOX0FQSQogI2RlZmluZSBYRU5fQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oIGIvaW5jbHVk
ZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMWVkZjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfMzIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4teDg2XzMyLmgKLSAqIAotICogR3Vlc3QgT1MgaW50ZXJmYWNlIHRvIHg4NiAzMi1i
aXQgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K
LSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIEsgQSBG
cmFzZXIKLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hf
XwotI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9IX18KLQotLyoKLSAq
IEh5cGVyY2FsbCBpbnRlcmZhY2U6Ci0gKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAlZXNp
LCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQotICogIE91dHB1dDogJWVheAotICogQWNjZXNz
IGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBY
ZW4gTVNSKToKLSAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMy
Ci0gKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxs
IGNsb2JiZXJzICVlYngsJWVjeCkKLSAqLwotCi0vKgotICogVGhlc2UgZmxhdCBzZWdtZW50cyBh
cmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0aGVzZQot
ICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxsIGJl
IGFibGUgdG8gYXZvaWQKLSAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KLSAqLwotI2RlZmlu
ZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICovCi0jZGVmaW5lIEZM
QVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KLSNkZWZpbmUgRkxBVF9S
SU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwotI2RlZmluZSBGTEFUX1JJTkcz
X0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCi0jZGVmaW5lIEZMQVRfUklORzNfRFMg
MHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19TUyAweGUw
MzMgICAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0NTIEZMQVRf
UklORzFfQ1MKLSNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9SSU5HMV9EUwotI2RlZmluZSBG
TEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCi0jZGVmaW5lIEZMQVRfVVNFUl9DUyAgICBGTEFU
X1JJTkczX0NTCi0jZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFUX1JJTkczX0RTCi0jZGVmaW5l
IEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX1ZJ
UlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFS
VF9QQUUgICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFICAg
ICAgIDB4RjY4MDAwMDAKLSNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAgIFwK
LSAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKLSNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25n
KF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQotI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRf
UEFFICAgICAgICAgXAotICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9FTkRf
UEFFKQotCi0vKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlT
X1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRf
RU5EX05PTlBBRSAgICAweEZDNDAwMDAwCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9O
T05QQUUpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgICBcCi0gICAgbWtf
dW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKLSNkZWZpbmUgTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25nKF9fTUFD
SDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKLQotI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFS
VCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9T
VEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUgX19NQUNIMlBIWVNfVklS
VF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCi0KLSNpZm5kZWYgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25n
KF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQotI2VuZGlmCi0KLSNkZWZpbmUgTUFDSDJQSFlTX1ZJ
UlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKLSNkZWZp
bmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklS
VF9FTkQpCi0jZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VO
RC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCi0jaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19tYXBw
aW5nCi0jZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUxPTkdfUFRSICopTUFDSDJQ
SFlTX1ZJUlRfU1RBUlQpCi0jZW5kaWYKLQotLyogMzItLzY0LWJpdCBpbnZhcmlhYmlsaXR5IGZv
ciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAqLwotI2lmIGRlZmluZWQoX19Y
RU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQotI3VuZGVmIF9fX0RFRklORV9YRU5fR1VF
U1RfSEFORExFCi0jZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUp
ICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMj
IG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBzdHJ1
Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3QgcTsgfTsgfSAgXAotICAgICAg
ICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQotI3VuZGVmIHNldF94ZW5fZ3Vlc3RfaGFuZGxl
X3JhdwotI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9PSA4ICkgKih1aW50NjRfdCAq
KSYoaG5kKSA9IDA7ICAgXAotICAgICAgICAgKGhuZCkucCA9IHZhbDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKCAwICkKLSNkZWZpbmUgdWludDY0
X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSNkZWZpbmUg
X19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCi0j
ZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5fR1VFU1RfSEFORExFXzY0KG5h
bWUpCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3RydWN0IGNwdV91c2VyX3Jl
Z3MgewotICAgIHVpbnQzMl90IGVieDsKLSAgICB1aW50MzJfdCBlY3g7Ci0gICAgdWludDMyX3Qg
ZWR4OwotICAgIHVpbnQzMl90IGVzaTsKLSAgICB1aW50MzJfdCBlZGk7Ci0gICAgdWludDMyX3Qg
ZWJwOwotICAgIHVpbnQzMl90IGVheDsKLSAgICB1aW50MTZfdCBlcnJvcl9jb2RlOyAgICAvKiBw
cml2YXRlICovCi0gICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAg
IHVpbnQzMl90IGVpcDsKLSAgICB1aW50MTZfdCBjczsKLSAgICB1aW50OF90ICBzYXZlZF91cGNh
bGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMDsKLSAgICB1aW50MzJfdCBlZmxhZ3M7ICAgICAg
ICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgdWludDMyX3QgZXNw
OwotICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKLSAgICB1aW50MTZfdCBlcywgX3BhZDI7Ci0gICAg
dWludDE2X3QgZHMsIF9wYWQzOwotICAgIHVpbnQxNl90IGZzLCBfcGFkNDsKLSAgICB1aW50MTZf
dCBncywgX3BhZDU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBjcHVfdXNlcl9y
ZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3QpOwotCi0vKgot
ICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0IGludG8gYXJj
aGl0ZWN0dXJhbCAlY3IzLgotICogV2hlbiBhY2Nlc3NpbmcgJWNyMywgb3IgZXF1aXZhbGVudCBm
aWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cwotICogbXVzdCB1c2UgdGhlIGZvbGxv
d2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFsaWQgTUZOcy4KLSAqLwotI2Rl
ZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShwZm4pIDw8IDEyKSB8ICgodW5z
aWduZWQpKHBmbikgPj4gMjApKQotI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMpICgoKHVuc2ln
bmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwgMjApKQotCi1zdHJ1Y3QgYXJj
aF92Y3B1X2luZm8gewotICAgIFVMT05HX1BUUiBjcjI7Ci0gICAgVUxPTkdfUFRSIHBhZFs1XTsg
Lyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hf
dmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7Ci0KLXN0cnVjdCB4ZW5fY2FsbGJhY2sgewotICAg
IFVMT05HX1BUUiBjczsKLSAgICBVTE9OR19QVFIgZWlwOwotfTsKLXR5cGVkZWYgc3RydWN0IHhl
bl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKLQotI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8K
LQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hfXyAqLwotCi0v
KgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNE
IgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMt
bW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2FyY2gteDg2
L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfNjQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhNDMzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hl
bi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAot
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotICogeGVuLXg4Nl82NC5oCi0gKiAKLSAqIEd1ZXN0IE9T
IGludGVyZmFjZSB0byB4ODYgNjQtYml0IFhlbi4KLSAqIAotICogUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmlnaHRzIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICog
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENvcHlyaWdo
dCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJMSUNf
QVJDSF9YODZfWEVOX1g4Nl82NF9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hF
Tl9YODZfNjRfSF9fCi0KLS8qCi0gKiBIeXBlcmNhbGwgaW50ZXJmYWNlOgotICogIElucHV0OiAg
JXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkgKGFyZ3VtZW50cyAxLTYpCi0gKiAgT3V0
cHV0OiAlcmF4Ci0gKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vl
c3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgotICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBo
eXBlcmNhbGwtbnVtYmVyICogMzIKLSAqIENsb2JiZXJlZDogYXJndW1lbnQgcmVnaXN0ZXJzIChl
LmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJkaSwlcnNpKQotICovCi0KLS8qCi0gKiA2
NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKLSAqIFRoZXNlIGZsYXQgc2VnbWVudHMgYXJlIGluIHRo
ZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdEVC4gU2luY2UgdGhlc2UKLSAqIGFyZSBh
bHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBtYW55IE9TZXMgd2lsbCBiZSBhYmxlIHRv
IGF2b2lkCi0gKiBpbnN0YWxsaW5nIHRoZWlyIG93biBHRFQuCi0gKi8KLQotI2RlZmluZSBGTEFU
X1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXggMjYwICovCi0jZGVmaW5lIEZMQVRfUklO
RzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19E
UzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotI2RlZmluZSBGTEFUX1JJTkczX0RTNjQg
MHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCi0jZGVmaW5lIEZMQVRfUklORzNfU1MzMiAweGUw
MmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9SSU5HM19TUzY0IDB4ZTAyYiAg
LyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTNjQgRkxBVF9SSU5H
M19EUzY0Ci0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIgRkxBVF9SSU5HM19EUzMyCi0jZGVmaW5l
IEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2NAotI2RlZmluZSBGTEFUX0tFUk5FTF9D
UzY0IEZMQVRfUklORzNfQ1M2NAotI2RlZmluZSBGTEFUX0tFUk5FTF9DUzMyIEZMQVRfUklORzNf
Q1MzMgotI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZMQVRfS0VSTkVMX0NTNjQKLSNkZWZpbmUg
RkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1Mz
MiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1MgICBGTEFUX0tFUk5FTF9T
UzY0Ci0KLSNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxBVF9SSU5HM19EUzY0Ci0jZGVmaW5lIEZM
QVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgotI2RlZmluZSBGTEFUX1VTRVJfRFMgICBGTEFU
X1VTRVJfRFM2NAotI2RlZmluZSBGTEFUX1VTRVJfQ1M2NCBGTEFUX1JJTkczX0NTNjQKLSNkZWZp
bmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMyCi0jZGVmaW5lIEZMQVRfVVNFUl9DUyAg
IEZMQVRfVVNFUl9DUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9TUzY0IEZMQVRfUklORzNfU1M2NAot
I2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9VU0VS
X1NTICAgRkxBVF9VU0VSX1NTNjQKLQotI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFSVCAw
eEZGRkY4MDAwMDAwMDAwMDAKLSNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfRU5EICAgMHhGRkZG
ODgwMDAwMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIDB4RkZGRjgwMDAw
MDAwMDAwMAotI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORCAgICAweEZGRkY4MDQwMDAwMDAw
MDAKLQotI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKLSNkZWZpbmUgSFlQRVJWSVNPUl9W
SVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQpCi0jZGVm
aW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9W
SVJUX0VORCkKLSNlbmRpZgotCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUICBta191bnNp
Z25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJU
X0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EKQotI2RlZmluZSBN
QUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNfVklSVF9FTkQtTUFDSDJQSFlTX1ZJUlRf
U1RBUlQpPj4zKQotI2lmbmRlZiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZwotI2RlZmluZSBtYWNo
aW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAqKUhZUEVSVklTT1JfVklSVF9TVEFSVCkK
LSNlbmRpZgotCi0vKgotICogaW50IEhZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFzZSh1bnNpZ25l
ZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQotICogIEB3aGljaCA9PSBTRUdCQVNFXyogIDsg
IEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzLgot
ICovCi0jZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAgMAotI2RlZmluZSBTRUdCQVNFX0dTX1VT
RVIgICAgIDEKLSNkZWZpbmUgU0VHQkFTRV9HU19LRVJORUwgICAyCi0jZGVmaW5lIFNFR0JBU0Vf
R1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3BlY2lmaWVkIGluIGJhc2VbMTU6MF0gKi8K
LQotLyoKLSAqIGludCBIWVBFUlZJU09SX2lyZXQodm9pZCkKLSAqIEFsbCBhcmd1bWVudHMgYXJl
IG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0LgotICogTmV2ZXIg
cmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtlcm5lbCBjb250ZXh0IGlzIGxvc3QuCi0g
KiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxvd3M6Ci0gKiAgIFJJTkcwIC0+IFJJTkcz
IGtlcm5lbCBtb2RlLgotICogICBSSU5HMSAtPiBSSU5HMyBrZXJuZWwgbW9kZS4KLSAqICAgUklO
RzIgLT4gUklORzMga2VybmVsIG1vZGUuCi0gKiAgIFJJTkczIC0+IFJJTkczIHVzZXIgbW9kZS4K
LSAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQgdGhlIGd1ZXN0IGtlcm5lbCBzaG91bGQg
cmV0dXJuIHRvIGl0ZXNlbGYKLSAqIGRpcmVjdGx5IHdpdGgKLSAqICAgICAgb3JiICAgJDMsMSo4
KCVyc3ApCi0gKiAgICAgIGlyZXRxCi0gKiBJZiBmbGFncyBjb250YWlucyBWR0NGX2luX3N5c2Nh
bGw6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFHUywgUlNQLgotICogICBEaXNjYXJkIFIx
MSwgUkNYLCBDUywgU1MuCi0gKiBPdGhlcndpc2U6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSMTEsIFJD
WCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KLSAqIEFsbCBvdGhlciByZWdpc3RlcnMgYXJlIHNh
dmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9yZWQgdG8gdXNlci4KLSAqLwotLyogR3Vl
c3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0dXJuIHRvIGd1ZXN0IHdpdGggU1lTUkVU
PyAqLwotI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgKLSNkZWZpbmUgVkdDRl9pbl9zeXNjYWxs
ICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKLSNkZWZpbmUgVkdDRl9JTl9TWVNDQUxMICBWR0NGX2lu
X3N5c2NhbGwKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3RydWN0IGlyZXRfY29udGV4dCB7
Ci0gICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9mIGh5cGVyY2FsbCkuICovCi0g
ICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3MsIHJpcCwgY3MsIHJmbGFncywgcnNwLCBz
czsKLSAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBmcmFtZS4gKi8KLX07Ci0KLSNpZiBkZWZp
bmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCi0vKiBBbm9ueW1vdXMg
dW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJpdCBuYW1lcyAoZS5nLiwgZWF4L3JheCku
ICovCi0jZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5pb24geyBcCi0gICAgdWludDY0X3QgciAj
IyBuYW1lLCBlICMjIG5hbWU7IFwKLSAgICB1aW50MzJfdCBfZSAjIyBuYW1lOyBcCi19Ci0jZWxz
ZQotLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlzIHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBu
YW1lIChlLmcuLCByYXgpLiAqLwotI2RlZmluZSBfX0RFQ0xfUkVHKG5hbWUpIHVpbnQ2NF90IHIg
IyMgbmFtZQotI2VuZGlmCi0KLXN0cnVjdCBjcHVfdXNlcl9yZWdzIHsKLSAgICB1aW50NjRfdCBy
MTU7Ci0gICAgdWludDY0X3QgcjE0OwotICAgIHVpbnQ2NF90IHIxMzsKLSAgICB1aW50NjRfdCBy
MTI7Ci0gICAgX19ERUNMX1JFRyhicCk7Ci0gICAgX19ERUNMX1JFRyhieCk7Ci0gICAgdWludDY0
X3QgcjExOwotICAgIHVpbnQ2NF90IHIxMDsKLSAgICB1aW50NjRfdCByOTsKLSAgICB1aW50NjRf
dCByODsKLSAgICBfX0RFQ0xfUkVHKGF4KTsKLSAgICBfX0RFQ0xfUkVHKGN4KTsKLSAgICBfX0RF
Q0xfUkVHKGR4KTsKLSAgICBfX0RFQ0xfUkVHKHNpKTsKLSAgICBfX0RFQ0xfUkVHKGRpKTsKLSAg
ICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCi0gICAgdWludDMyX3QgZW50
cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAgIF9fREVDTF9SRUcoaXApOwotICAgIHVpbnQx
Nl90IGNzLCBfcGFkMFsxXTsKLSAgICB1aW50OF90ICBzYXZlZF91cGNhbGxfbWFzazsKLSAgICB1
aW50OF90ICBfcGFkMVszXTsKLSAgICBfX0RFQ0xfUkVHKGZsYWdzKTsgICAgICAvKiByZmxhZ3Mu
SUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgX19ERUNMX1JFRyhzcCk7Ci0gICAgdWlu
dDE2X3Qgc3MsIF9wYWQyWzNdOwotICAgIHVpbnQxNl90IGVzLCBfcGFkM1szXTsKLSAgICB1aW50
MTZfdCBkcywgX3BhZDRbM107Ci0gICAgdWludDE2X3QgZnMsIF9wYWQ1WzNdOyAvKiBOb24temVy
byA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFzZS4gICAgICovCi0gICAgdWludDE2X3Qg
Z3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZ3NfYmFz
ZV91c3IuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBjcHVfdXNlcl9yZWdz
X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3QpOwotCi0jdW5kZWYg
X19ERUNMX1JFRwotCi0jZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBmbikgKChVTE9OR19QVFIpKHBm
bikgPDwgMTIpCi0jZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykgKChVTE9OR19QVFIpKGNyMykg
Pj4gMTIpCi0KLXN0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7Ci0gICAgVUxPTkdfUFRSIGNyMjsKLSAg
ICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKLQotdHlwZWRlZiBV
TE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7Ci0KLSNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCi0K
LSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18gKi8KLQotLyoK
LSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIK
LSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1v
ZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9hcmNoLXg4Ni94
ZW4uaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxODgwZjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMjczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
LSAqIGFyY2gteDg2L3hlbi5oCi0gKiAKLSAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgWGVu
LgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIK
LSAqLwotCi0jaW5jbHVkZSAiLi4veGVuLmgiCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hf
WDg2X1hFTl9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KLQotLyog
U3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDEKLSNkZWZpbmUgX19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAgIHR5cGVkZWYgc3RydWN0IHsg
dHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQotI2Vsc2UKLSNkZWZpbmUgX19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAgIHR5cGVkZWYgdHlwZSAqIF9f
Z3Vlc3RfaGFuZGxlXyAjIyBuYW1lCi0jZW5kaWYKLQotLyoKLSAqIFhFTl9HVUVTVF9IQU5ETEUg
cmVwcmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKLSAqIGlu
IGEgc3RydWN0IGluIG1lbW9yeS4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50
IGEgZ3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KLSAqIGh5cGVyY2FsbCBhcmd1bWVu
dC4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRo
ZSBzYW1lIG9uIFg4NiBidXQKLSAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVj
dHVyZXMuCi0gKi8KLSNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBl
KSBcCi0gICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAotICAg
IF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKLSNk
ZWZpbmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKG5hbWUsIG5hbWUpCi0jZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAg
ICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKLSNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1l
KSAgICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKLSNkZWZpbmUgWEVOX0dVRVNUX0hB
TkRMRV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCi0jZGVmaW5lIHNldF94
ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGls
ZSAoMCkKLSNpZmRlZiBfX1hFTl9UT09MU19fCi0jZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxl
KHZhbCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQotI2VuZGlmCi0jZGVm
aW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9y
YXcoaG5kLCB2YWwpCi0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotI2luY2x1ZGUgInhlbi14ODZf
MzIuaCIKLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLSNpbmNsdWRlICJ4ZW4teDg2XzY0Lmgi
Ci0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl9w
Zm5fdDsKLSNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgotI2VuZGlmCi0KLSNkZWZpbmUgWEVOX0hB
VkVfUFZfR1VFU1RfRU5UUlkgMQotCi0jZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEK
LQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJs
ZXMKLSAqLwotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zZXRf
Z2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOwotICog
YAotICovCi0vKgotICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhl
bi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKLSAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVj
YXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcwot
ICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIg
dGhlIHN0YXJ0IG9mIHRoZSBHRFQsCi0gKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhl
IHdheSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KLSAqCi0gKiBOQiBUaGUgTERUIGlzIHNl
dCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKLSAq
LwotI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQKLSNkZWZpbmUgRklSU1RfUkVT
RVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCi0jZGVmaW5l
IEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQot
Ci0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rl
c2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7Ci0gKiBgCi0gKiBgIEBwYSAgIFRoZSBtYWNoaW5l
IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8KLSAqIGAgICAgICAgdXBkYXRl
LiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KLSAqIGAgQGRl
c2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMg
YQotICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KLSAqLwotCi0vKiBN
YXhpbXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBn
dWVzdHMuICovCi0jZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCi0KLSNpZm5kZWYgX19B
U1NFTUJMWV9fCi0KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OwotI2RlZmluZSBQUklf
eGVuX3Vsb25nICJseCIKLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJW
SVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKLSAqIGAKLSAq
IFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUu
Ci0gKi8KLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zZXRf
dHJhcF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOwotICogYAotICovCi0v
KgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxl
KCkuCi0gKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0
cmFwc1tdLmFkZHJlc3M9PTAuCi0gKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGlj
aCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJlCi0gKiBpbnRlcnJ1cHQuIE9u
IHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRl
Ci0gKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6Ci0gKiAgTGV2ZWwgPT0gMDogTm9vbmUg
bWF5IGVudGVyCi0gKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgotICogIExldmVsID09
IDI6IEtlcm5lbCBtYXkgZW50ZXIKLSAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIK
LSAqLwotI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKLSNk
ZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCi0jZGVmaW5lIFRJ
X1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQotI2RlZmluZSBUSV9T
RVRfSUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQotc3RydWN0
IHRyYXBfaW5mbyB7Ci0gICAgdWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVj
dG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1aW50OF90ICAgICAgIGZs
YWdzOyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAq
LwotICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUg
b2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotfTsKLXR5cGVkZWYg
c3RydWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHRy
YXBfaW5mb190KTsKLQotdHlwZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFND
IHRpbWVzdGFtcCAqLwotCi0vKgotICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQu
IE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVkIAotICogaW4gYnkgRlhTQVZF
IGlmIHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNlIEZTQVZFIGlzIHVzZWQuCi0g
KgotICogQWxzbyBub3RlIHRoYXQgd2hlbiBjYWxsaW5nIERPTUNUTF9zZXR2Y3B1Y29udGV4dCBh
bmQgVkNQVV9pbml0aWFsaXNlCi0gKiBmb3IgSFZNIGFuZCBQVkggZ3Vlc3RzLCBub3QgYWxsIGlu
Zm9ybWF0aW9uIGluIHRoaXMgc3RydWN0dXJlIGlzIHVwZGF0ZWQ6Ci0gKgotICogLSBGb3IgSFZN
IGd1ZXN0cywgdGhlIHN0cnVjdHVyZXMgcmVhZCBpbmNsdWRlOiBmcHVfY3R4dCAoaWYKLSAqIFZH
Q1RfSTM4N19WQUxJRCBpcyBzZXQpLCBmbGFncywgdXNlcl9yZWdzLCBkZWJ1Z3JlZ1sqXQotICoK
LSAqIC0gUFZIIGd1ZXN0cyBhcmUgdGhlIHNhbWUgYXMgSFZNIGd1ZXN0cywgYnV0IGFkZGl0aW9u
YWxseSB1c2UgY3RybHJlZ1szXSB0bwotICogc2V0IGNyMy4gQWxsIG90aGVyIGZpZWxkcyBub3Qg
dXNlZCBzaG91bGQgYmUgc2V0IHRvIDAuCi0gKi8KLXN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQg
ewotICAgIC8qIEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVk
IGZvciBGWFNBVkUvRlhSU1RPUi4gKi8KLSAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVf
Y3R4dDsgICAgICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLwotI2RlZmluZSBW
R0NGX0kzODdfVkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCi0jZGVmaW5lIFZHQ0ZfSU5fS0VS
TkVMICAgICAgICAgICAgICAgICAoMTw8MikKLSNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAg
ICAgICAgICAgIDAKLSNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxf
VkdDRl9pMzg3X3ZhbGlkKQotI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAg
MgotI2RlZmluZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tl
cm5lbCkKLSNkZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKLSNkZWZpbmUg
VkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxl
c19ldmVudHMpCi0jZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0Ci0jZGVm
aW5lIFZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNh
Ymxlc19ldmVudHMpCi0jZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1Ci0j
ZGVmaW5lIFZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQot
ICAgIFVMT05HX1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAg
ICAgICAgICAgICAgICAgKi8KLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAg
ICAgICAgLyogVXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLwotICAgIHN0cnVjdCB0cmFw
X2luZm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAg
ICAgICovCi0gICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChs
aW5lYXIgYWRkcmVzcywgIyBlbnRzKSAqLwotICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwg
Z2R0X2VudHM7IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KLSAgICBVTE9OR19Q
VFIga2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1Ax
KSAgICovCi0gICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4g
Y3RybHJlZ1sxXS4gKi8KLSAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAv
KiBDUjAtQ1I3IChjb250cm9sIHJlZ2lzdGVycykgICovCi0gICAgVUxPTkdfUFRSIGRlYnVncmVn
WzhdOyAgICAgICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLwotI2lm
ZGVmIF9faTM4Nl9fCi0gICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyog
Q1M6RUlQIG9mIGV2ZW50IGNhbGxiYWNrICAgICAqLwotICAgIFVMT05HX1BUUiBldmVudF9jYWxs
YmFja19laXA7Ci0gICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6
RUlQIG9mIGZhaWxzYWZlIGNhbGxiYWNrICAqLwotICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxs
YmFja19laXA7Ci0jZWxzZQotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7Ci0gICAg
VUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKLSNpZmRlZiBfX1hFTl9fCi0gICAgdW5p
b24gewotICAgICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7Ci0gICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8q
IGNvbXBhdCBDUyBvZiBldmVudCBjYiAgICAgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBm
YWlsc2FmZV9jYWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLwotICAg
ICAgICB9OwotICAgIH07Ci0jZWxzZQotICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2Vp
cDsKLSNlbmRpZgotI2VuZGlmCi0gICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAg
ICAgLyogVk1BU1NUX1RZUEVfKiBiaXRtYXAgKi8KLSNpZmRlZiBfX3g4Nl82NF9fCi0gICAgLyog
U2VnbWVudCBiYXNlIGFkZHJlc3Nlcy4gKi8KLSAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7Ci0g
ICAgdWludDY0X3QgICAgICBnc19iYXNlX2tlcm5lbDsKLSAgICB1aW50NjRfdCAgICAgIGdzX2Jh
c2VfdXNlcjsKLSNlbmRpZgotfTsKLXR5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2
Y3B1X2d1ZXN0X2NvbnRleHRfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3Rf
Y29udGV4dF90KTsKLQotc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gewotICAgIFVMT05HX1BUUiBt
YXhfcGZuOyAgICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRhYmxl
ICovCi0gICAgLyogRnJhbWUgY29udGFpbmluZyBsaXN0IG9mIG1mbnMgY29udGFpbmluZyBsaXN0
IG9mIG1mbnMgY29udGFpbmluZyBwMm0uICovCi0gICAgeGVuX3Bmbl90ICAgICBwZm5fdG9fbWZu
X2ZyYW1lX2xpc3RfbGlzdDsKLSAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsKLSAgICB1aW50NjRf
dCBwYWRbMzJdOwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaF9zaGFy
ZWRfaW5mb190OwotCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwotCi0vKgotICogYCBlbnVt
IG5lZ19lcnJub3ZhbAotICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOwot
ICogYAotICogU2V0cyAoaWYgc2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgot
ICovCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jfc2V0X2Rl
YnVncmVnKGludCByZWdubywgVUxPTkdfUFRSIHZhbHVlKTsKLSAqCi0gKiBgIFVMT05HX1BUUgot
ICogYCBIWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOwotICogRm9yIDA8PXJlZzw9
NywgcmV0dXJucyB0aGUgZGVidWcgcmVnaXN0ZXIgdmFsdWUuCi0gKiBGb3Igb3RoZXIgdmFsdWVz
IG9mIHJlZywgcmV0dXJucyAoKFVMT05HX1BUUiktRUlOVkFMKS4KLSAqIChVbmZvcnR1bmF0ZWx5
LCB0aGlzIGludGVyZmFjZSBpcyBkZWZlY3RpdmUuKQotICovCi0KLS8qCi0gKiBQcmVmaXggZm9y
Y2VzIGVtdWxhdGlvbiBvZiBzb21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCi0gKiBDdXJy
ZW50bHkgb25seSBDUFVJRC4KLSAqLwotI2lmZGVmIF9fQVNTRU1CTFlfXwotI2RlZmluZSBYRU5f
RU1VTEFURV9QUkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKLSNkZWZpbmUg
WEVOX0NQVUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAotI2Vsc2UKLSNkZWZp
bmUgWEVOX0VNVUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAi
Ci0jZGVmaW5lIFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgot
I2VuZGlmCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLwotCi0v
KgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNE
IgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMt
bW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2Vycm5vLmgg
Yi9pbmNsdWRlL3hlbi9lcnJuby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2M2
YzQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2Vycm5vLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzcgKzAsMCBAQAotI2lmbmRlZiBfSTM4Nl9FUlJOT19ICi0jZGVmaW5lIF9JMzg2X0VSUk5P
X0gKLQotLyogYCBlbnVtIG5lZ19lcnJub3ZhbCB7ICBbIC1FZm9vIGZvciBlYWNoIEVmb28gaW4g
dGhlIGxpc3QgYmVsb3cgXSAgfSAqLwotLyogYCBlbnVtIGVycm5vdmFsIHsgKi8KLQotI2RlZmlu
ZQlFUEVSTQkJIDEJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8KLSNkZWZpbmUJRU5PRU5U
CQkgMgkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovCi0jZGVmaW5lCUVTUkNICQkgMwkv
KiBObyBzdWNoIHByb2Nlc3MgKi8KLSNkZWZpbmUJRUlOVFIJCSA0CS8qIEludGVycnVwdGVkIHN5
c3RlbSBjYWxsICovCi0jZGVmaW5lCUVJTwkJIDUJLyogSS9PIGVycm9yICovCi0jZGVmaW5lCUVO
WElPCQkgNgkvKiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCi0jZGVmaW5lCUUyQklHCQkg
NwkvKiBBcmcgbGlzdCB0b28gTE9OR19QVFIgKi8KLSNkZWZpbmUJRU5PRVhFQwkJIDgJLyogRXhl
YyBmb3JtYXQgZXJyb3IgKi8KLSNkZWZpbmUJRUJBREYJCSA5CS8qIEJhZCBmaWxlIG51bWJlciAq
LwotI2RlZmluZQlFQ0hJTEQJCTEwCS8qIE5vIGNoaWxkIHByb2Nlc3NlcyAqLwotI2RlZmluZQlF
QUdBSU4JCTExCS8qIFRyeSBhZ2FpbiAqLwotI2RlZmluZQlFTk9NRU0JCTEyCS8qIE91dCBvZiBt
ZW1vcnkgKi8KLSNkZWZpbmUJRUFDQ0VTCQkxMwkvKiBQZXJtaXNzaW9uIGRlbmllZCAqLwotI2Rl
ZmluZQlFRkFVTFQJCTE0CS8qIEJhZCBhZGRyZXNzICovCi0jZGVmaW5lCUVOT1RCTEsJCTE1CS8q
IEJsb2NrIGRldmljZSByZXF1aXJlZCAqLwotI2RlZmluZQlFQlVTWQkJMTYJLyogRGV2aWNlIG9y
IHJlc291cmNlIGJ1c3kgKi8KLSNkZWZpbmUJRUVYSVNUCQkxNwkvKiBGaWxlIGV4aXN0cyAqLwot
I2RlZmluZQlFWERFVgkJMTgJLyogQ3Jvc3MtZGV2aWNlIGxpbmsgKi8KLSNkZWZpbmUJRU5PREVW
CQkxOQkvKiBObyBzdWNoIGRldmljZSAqLwotI2RlZmluZQlFTk9URElSCQkyMAkvKiBOb3QgYSBk
aXJlY3RvcnkgKi8KLSNkZWZpbmUJRUlTRElSCQkyMQkvKiBJcyBhIGRpcmVjdG9yeSAqLwotI2Rl
ZmluZQlFSU5WQUwJCTIyCS8qIEludmFsaWQgYXJndW1lbnQgKi8KLSNkZWZpbmUJRU5GSUxFCQky
MwkvKiBGaWxlIHRhYmxlIG92ZXJmbG93ICovCi0jZGVmaW5lCUVNRklMRQkJMjQJLyogVG9vIG1h
bnkgb3BlbiBmaWxlcyAqLwotI2RlZmluZQlFTk9UVFkJCTI1CS8qIE5vdCBhIHR5cGV3cml0ZXIg
Ki8KLSNkZWZpbmUJRVRYVEJTWQkJMjYJLyogVGV4dCBmaWxlIGJ1c3kgKi8KLSNkZWZpbmUJRUZC
SUcJCTI3CS8qIEZpbGUgdG9vIGxhcmdlICovCi0jZGVmaW5lCUVOT1NQQwkJMjgJLyogTm8gc3Bh
Y2UgbGVmdCBvbiBkZXZpY2UgKi8KLSNkZWZpbmUJRVNQSVBFCQkyOQkvKiBJbGxlZ2FsIHNlZWsg
Ki8KLSNkZWZpbmUJRVJPRlMJCTMwCS8qIFJlYWQtb25seSBmaWxlIHN5c3RlbSAqLwotI2RlZmlu
ZQlFTUxJTksJCTMxCS8qIFRvbyBtYW55IGxpbmtzICovCi0jZGVmaW5lCUVQSVBFCQkzMgkvKiBC
cm9rZW4gcGlwZSAqLwotI2RlZmluZQlFRE9NCQkzMwkvKiBNYXRoIGFyZ3VtZW50IG91dCBvZiBk
b21haW4gb2YgZnVuYyAqLwotI2RlZmluZQlFUkFOR0UJCTM0CS8qIE1hdGggcmVzdWx0IG5vdCBy
ZXByZXNlbnRhYmxlICovCi0jZGVmaW5lCUVERUFETEsJCTM1CS8qIFJlc291cmNlIGRlYWRsb2Nr
IHdvdWxkIG9jY3VyICovCi0jZGVmaW5lCUVOQU1FVE9PTE9ORwkzNgkvKiBGaWxlIG5hbWUgdG9v
IExPTkdfUFRSICovCi0jZGVmaW5lCUVOT0xDSwkJMzcJLyogTm8gcmVjb3JkIGxvY2tzIGF2YWls
YWJsZSAqLwotI2RlZmluZQlFTk9TWVMJCTM4CS8qIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCAq
LwotI2RlZmluZQlFTk9URU1QVFkJMzkJLyogRGlyZWN0b3J5IG5vdCBlbXB0eSAqLwotI2RlZmlu
ZQlFTE9PUAkJNDAJLyogVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgKi8KLSNk
ZWZpbmUJRVdPVUxEQkxPQ0sJRUFHQUlOCS8qIE9wZXJhdGlvbiB3b3VsZCBibG9jayAqLwotI2Rl
ZmluZQlFTk9NU0cJCTQyCS8qIE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlICovCi0jZGVmaW5l
CUVJRFJNCQk0MwkvKiBJZGVudGlmaWVyIHJlbW92ZWQgKi8KLSNkZWZpbmUJRUNIUk5HCQk0NAkv
KiBDaGFubmVsIG51bWJlciBvdXQgb2YgcmFuZ2UgKi8KLSNkZWZpbmUJRUwyTlNZTkMJNDUJLyog
TGV2ZWwgMiBub3Qgc3luY2hyb25pemVkICovCi0jZGVmaW5lCUVMM0hMVAkJNDYJLyogTGV2ZWwg
MyBoYWx0ZWQgKi8KLSNkZWZpbmUJRUwzUlNUCQk0NwkvKiBMZXZlbCAzIHJlc2V0ICovCi0jZGVm
aW5lCUVMTlJORwkJNDgJLyogTGluayBudW1iZXIgb3V0IG9mIHJhbmdlICovCi0jZGVmaW5lCUVV
TkFUQ0gJCTQ5CS8qIFByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQgKi8KLSNkZWZpbmUJRU5P
Q1NJCQk1MAkvKiBObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSAqLwotI2RlZmluZQlFTDJITFQJ
CTUxCS8qIExldmVsIDIgaGFsdGVkICovCi0jZGVmaW5lCUVCQURFCQk1MgkvKiBJbnZhbGlkIGV4
Y2hhbmdlICovCi0jZGVmaW5lCUVCQURSCQk1MwkvKiBJbnZhbGlkIHJlcXVlc3QgZGVzY3JpcHRv
ciAqLwotI2RlZmluZQlFWEZVTEwJCTU0CS8qIEV4Y2hhbmdlIGZ1bGwgKi8KLSNkZWZpbmUJRU5P
QU5PCQk1NQkvKiBObyBhbm9kZSAqLwotI2RlZmluZQlFQkFEUlFDCQk1NgkvKiBJbnZhbGlkIHJl
cXVlc3QgY29kZSAqLwotI2RlZmluZQlFQkFEU0xUCQk1NwkvKiBJbnZhbGlkIHNsb3QgKi8KLQot
I2RlZmluZQlFREVBRExPQ0sJRURFQURMSwotCi0jZGVmaW5lCUVCRk9OVAkJNTkJLyogQmFkIGZv
bnQgZmlsZSBmb3JtYXQgKi8KLSNkZWZpbmUJRU5PU1RSCQk2MAkvKiBEZXZpY2Ugbm90IGEgc3Ry
ZWFtICovCi0jZGVmaW5lCUVOT0RBVEEJCTYxCS8qIE5vIGRhdGEgYXZhaWxhYmxlICovCi0jZGVm
aW5lCUVUSU1FCQk2MgkvKiBUaW1lciBleHBpcmVkICovCi0jZGVmaW5lCUVOT1NSCQk2MwkvKiBP
dXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMgKi8KLSNkZWZpbmUJRU5PTkVUCQk2NAkvKiBNYWNoaW5l
IGlzIG5vdCBvbiB0aGUgbmV0d29yayAqLwotI2RlZmluZQlFTk9QS0cJCTY1CS8qIFBhY2thZ2Ug
bm90IGluc3RhbGxlZCAqLwotI2RlZmluZQlFUkVNT1RFCQk2NgkvKiBPYmplY3QgaXMgcmVtb3Rl
ICovCi0jZGVmaW5lCUVOT0xJTksJCTY3CS8qIExpbmsgaGFzIGJlZW4gc2V2ZXJlZCAqLwotI2Rl
ZmluZQlFQURWCQk2OAkvKiBBZHZlcnRpc2UgZXJyb3IgKi8KLSNkZWZpbmUJRVNSTU5UCQk2OQkv
KiBTcm1vdW50IGVycm9yICovCi0jZGVmaW5lCUVDT01NCQk3MAkvKiBDb21tdW5pY2F0aW9uIGVy
cm9yIG9uIHNlbmQgKi8KLSNkZWZpbmUJRVBST1RPCQk3MQkvKiBQcm90b2NvbCBlcnJvciAqLwot
I2RlZmluZQlFTVVMVElIT1AJNzIJLyogTXVsdGlob3AgYXR0ZW1wdGVkICovCi0jZGVmaW5lCUVE
T1RET1QJCTczCS8qIFJGUyBzcGVjaWZpYyBlcnJvciAqLwotI2RlZmluZQlFQkFETVNHCQk3NAkv
KiBOb3QgYSBkYXRhIG1lc3NhZ2UgKi8KLSNkZWZpbmUJRU9WRVJGTE9XCTc1CS8qIFZhbHVlIHRv
byBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUgKi8KLSNkZWZpbmUJRU5PVFVOSVEJNzYJLyog
TmFtZSBub3QgdW5pcXVlIG9uIG5ldHdvcmsgKi8KLSNkZWZpbmUJRUJBREZECQk3NwkvKiBGaWxl
IGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlICovCi0jZGVmaW5lCUVSRU1DSEcJCTc4CS8qIFJlbW90
ZSBhZGRyZXNzIGNoYW5nZWQgKi8KLSNkZWZpbmUJRUxJQkFDQwkJNzkJLyogQ2FuIG5vdCBhY2Nl
c3MgYSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkgKi8KLSNkZWZpbmUJRUxJQkJBRAkJODAJLyogQWNj
ZXNzaW5nIGEgY29ycnVwdGVkIHNoYXJlZCBsaWJyYXJ5ICovCi0jZGVmaW5lCUVMSUJTQ04JCTgx
CS8qIC5saWIgc2VjdGlvbiBpbiBhLm91dCBjb3JydXB0ZWQgKi8KLSNkZWZpbmUJRUxJQk1BWAkJ
ODIJLyogQXR0ZW1wdGluZyB0byBsaW5rIGluIHRvbyBtYW55IHNoYXJlZCBsaWJyYXJpZXMgKi8K
LSNkZWZpbmUJRUxJQkVYRUMJODMJLyogQ2Fubm90IGV4ZWMgYSBzaGFyZWQgbGlicmFyeSBkaXJl
Y3RseSAqLwotI2RlZmluZQlFSUxTRVEJCTg0CS8qIElsbGVnYWwgYnl0ZSBzZXF1ZW5jZSAqLwot
I2RlZmluZQlFUkVTVEFSVAk4NQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUg
cmVzdGFydGVkICovCi0jZGVmaW5lCUVTVFJQSVBFCTg2CS8qIFN0cmVhbXMgcGlwZSBlcnJvciAq
LwotI2RlZmluZQlFVVNFUlMJCTg3CS8qIFRvbyBtYW55IHVzZXJzICovCi0jZGVmaW5lCUVOT1RT
T0NLCTg4CS8qIFNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCAqLwotI2RlZmluZQlFREVT
VEFERFJSRVEJODkJLyogRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCAqLwotI2RlZmluZQlF
TVNHU0laRQk5MAkvKiBNZXNzYWdlIHRvbyBMT05HX1BUUiAqLwotI2RlZmluZQlFUFJPVE9UWVBF
CTkxCS8qIFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCAqLwotI2RlZmluZQlFTk9QUk9U
T09QVAk5MgkvKiBQcm90b2NvbCBub3QgYXZhaWxhYmxlICovCi0jZGVmaW5lCUVQUk9UT05PU1VQ
UE9SVAk5MwkvKiBQcm90b2NvbCBub3Qgc3VwcG9ydGVkICovCi0jZGVmaW5lCUVTT0NLVE5PU1VQ
UE9SVAk5NAkvKiBTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkICovCi0jZGVmaW5lCUVPUE5PVFNV
UFAJOTUJLyogT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdHJhbnNwb3J0IGVuZHBvaW50ICov
Ci0jZGVmaW5lCUVQRk5PU1VQUE9SVAk5NgkvKiBQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRl
ZCAqLwotI2RlZmluZQlFQUZOT1NVUFBPUlQJOTcJLyogQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBv
cnRlZCBieSBwcm90b2NvbCAqLwotI2RlZmluZQlFQUREUklOVVNFCTk4CS8qIEFkZHJlc3MgYWxy
ZWFkeSBpbiB1c2UgKi8KLSNkZWZpbmUJRUFERFJOT1RBVkFJTAk5OQkvKiBDYW5ub3QgYXNzaWdu
IHJlcXVlc3RlZCBhZGRyZXNzICovCi0jZGVmaW5lCUVORVRET1dOCTEwMAkvKiBOZXR3b3JrIGlz
IGRvd24gKi8KLSNkZWZpbmUJRU5FVFVOUkVBQ0gJMTAxCS8qIE5ldHdvcmsgaXMgdW5yZWFjaGFi
bGUgKi8KLSNkZWZpbmUJRU5FVFJFU0VUCTEwMgkvKiBOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlv
biBiZWNhdXNlIG9mIHJlc2V0ICovCi0jZGVmaW5lCUVDT05OQUJPUlRFRAkxMDMJLyogU29mdHdh
cmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQgKi8KLSNkZWZpbmUJRUNPTk5SRVNFVAkxMDQJLyog
Q29ubmVjdGlvbiByZXNldCBieSBwZWVyICovCi0jZGVmaW5lCUVOT0JVRlMJCTEwNQkvKiBObyBi
dWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCi0jZGVmaW5lCUVJU0NPTk4JCTEwNgkvKiBUcmFuc3Bv
cnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KLSNkZWZpbmUJRU5PVENPTk4JMTA3
CS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICovCi0jZGVmaW5lCUVTSFVU
RE9XTgkxMDgJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVuZHBvaW50IHNodXRkb3du
ICovCi0jZGVmaW5lCUVUT09NQU5ZUkVGUwkxMDkJLyogVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fu
bm90IHNwbGljZSAqLwotI2RlZmluZQlFVElNRURPVVQJMTEwCS8qIENvbm5lY3Rpb24gdGltZWQg
b3V0ICovCi0jZGVmaW5lCUVDT05OUkVGVVNFRAkxMTEJLyogQ29ubmVjdGlvbiByZWZ1c2VkICov
Ci0jZGVmaW5lCUVIT1NURE9XTgkxMTIJLyogSG9zdCBpcyBkb3duICovCi0jZGVmaW5lCUVIT1NU
VU5SRUFDSAkxMTMJLyogTm8gcm91dGUgdG8gaG9zdCAqLwotI2RlZmluZQlFQUxSRUFEWQkxMTQJ
LyogT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MgKi8KLSNkZWZpbmUJRUlOUFJPR1JFU1MJ
MTE1CS8qIE9wZXJhdGlvbiBub3cgaW4gcHJvZ3Jlc3MgKi8KLSNkZWZpbmUJRVNUQUxFCQkxMTYJ
LyogU3RhbGUgTkZTIGZpbGUgaGFuZGxlICovCi0jZGVmaW5lCUVVQ0xFQU4JCTExNwkvKiBTdHJ1
Y3R1cmUgbmVlZHMgY2xlYW5pbmcgKi8KLSNkZWZpbmUJRU5PVE5BTQkJMTE4CS8qIE5vdCBhIFhF
TklYIG5hbWVkIHR5cGUgZmlsZSAqLwotI2RlZmluZQlFTkFWQUlMCQkxMTkJLyogTm8gWEVOSVgg
c2VtYXBob3JlcyBhdmFpbGFibGUgKi8KLSNkZWZpbmUJRUlTTkFNCQkxMjAJLyogSXMgYSBuYW1l
ZCB0eXBlIGZpbGUgKi8KLSNkZWZpbmUJRVJFTU9URUlPCTEyMQkvKiBSZW1vdGUgSS9PIGVycm9y
ICovCi0jZGVmaW5lCUVEUVVPVAkJMTIyCS8qIFF1b3RhIGV4Y2VlZGVkICovCi0KLSNkZWZpbmUJ
RU5PTUVESVVNCTEyMwkvKiBObyBtZWRpdW0gZm91bmQgKi8KLSNkZWZpbmUJRU1FRElVTVRZUEUJ
MTI0CS8qIFdyb25nIG1lZGl1bSB0eXBlICovCi0KLS8qIGAgfSAqLwotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuL2V2ZW50X2NoYW5uZWwuaCBiL2luY2x1ZGUveGVuL2V2ZW50X2No
YW5uZWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlNTMxZC4uMDAwMDAwMAot
LS0gYS9pbmNsdWRlL3hlbi9ldmVudF9jaGFubmVsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzODUg
KzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogZXZlbnRfY2hhbm5lbC5oCi0gKgot
ICogRXZlbnQgY2hhbm5lbHMgYmV0d2VlbiBkb21haW5zLgotICoKLSAqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0
cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAq
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK
LSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMDMtMjAwNCwgSyBBIEZyYXNlci4KLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BV
QkxJQ19FVkVOVF9DSEFOTkVMX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfRVZFTlRfQ0hBTk5F
TF9IX18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogYGluY29udGVudHMgMTUwIGV2dGNo
biBFdmVudCBDaGFubmVscwotICoKLSAqIEV2ZW50IGNoYW5uZWxzIGFyZSB0aGUgYmFzaWMgcHJp
bWl0aXZlIHByb3ZpZGVkIGJ5IFhlbiBmb3IgZXZlbnQKLSAqIG5vdGlmaWNhdGlvbnMuIEFuIGV2
ZW50IGlzIHRoZSBYZW4gZXF1aXZhbGVudCBvZiBhIGhhcmR3YXJlCi0gKiBpbnRlcnJ1cHQuIFRo
ZXkgZXNzZW50aWFsbHkgc3RvcmUgb25lIGJpdCBvZiBpbmZvcm1hdGlvbiwgdGhlIGV2ZW50Ci0g
KiBvZiBpbnRlcmVzdCBpcyBzaWduYWxsZWQgYnkgdHJhbnNpdGlvbmluZyB0aGlzIGJpdCBmcm9t
IDAgdG8gMS4KLSAqCi0gKiBOb3RpZmljYXRpb25zIGFyZSByZWNlaXZlZCBieSBhIGd1ZXN0IHZp
YSBhbiB1cGNhbGwgZnJvbSBYZW4sCi0gKiBpbmRpY2F0aW5nIHdoZW4gYW4gZXZlbnQgYXJyaXZl
cyAoc2V0dGluZyB0aGUgYml0KS4gRnVydGhlcgotICogbm90aWZpY2F0aW9ucyBhcmUgbWFza2Vk
IHVudGlsIHRoZSBiaXQgaXMgY2xlYXJlZCBhZ2FpbiAodGhlcmVmb3JlLAotICogZ3Vlc3RzIG11
c3QgY2hlY2sgdGhlIHZhbHVlIG9mIHRoZSBiaXQgYWZ0ZXIgcmUtZW5hYmxpbmcgZXZlbnQKLSAq
IGRlbGl2ZXJ5IHRvIGVuc3VyZSBubyBtaXNzZWQgbm90aWZpY2F0aW9ucykuCi0gKgotICogRXZl
bnQgbm90aWZpY2F0aW9ucyBjYW4gYmUgbWFza2VkIGJ5IHNldHRpbmcgYSBmbGFnOyB0aGlzIGlz
Ci0gKiBlcXVpdmFsZW50IHRvIGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZCBjYW4gYmUgdXNlZCB0
byBlbnN1cmUKLSAqIGF0b21pY2l0eSBvZiBjZXJ0YWluIG9wZXJhdGlvbnMgaW4gdGhlIGd1ZXN0
IGtlcm5lbC4KLSAqCi0gKiBFdmVudCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGV2
dGNobl8qIGZpZWxkcyBpbgotICogc3RydWN0IHNoYXJlZF9pbmZvIGFuZCBzdHJ1Y3QgdmNwdV9p
bmZvLgotICovCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jf
ZXZlbnRfY2hhbm5lbF9vcChlbnVtIGV2ZW50X2NoYW5uZWxfb3AgY21kLCB2b2lkICphcmdzKQot
ICogYAotICogQGNtZCAgPT0gRVZUQ0hOT1BfKiAoZXZlbnQtY2hhbm5lbCBvcGVyYXRpb24pLgot
ICogQGFyZ3MgPT0gc3RydWN0IGV2dGNobl8qIE9wZXJhdGlvbi1zcGVjaWZpYyBleHRyYSBhcmd1
bWVudHMgKE5VTEwgaWYgbm9uZSkuCi0gKi8KLQotLyogYCBlbnVtIGV2ZW50X2NoYW5uZWxfb3Ag
eyAvLyBFVlRDSE5PUF8qID0+IHN0cnVjdCBldnRjaG5fKiAqLwotI2RlZmluZSBFVlRDSE5PUF9i
aW5kX2ludGVyZG9tYWluIDAKLSNkZWZpbmUgRVZUQ0hOT1BfYmluZF92aXJxICAgICAgICAxCi0j
ZGVmaW5lIEVWVENITk9QX2JpbmRfcGlycSAgICAgICAgMgotI2RlZmluZSBFVlRDSE5PUF9jbG9z
ZSAgICAgICAgICAgIDMKLSNkZWZpbmUgRVZUQ0hOT1Bfc2VuZCAgICAgICAgICAgICA0Ci0jZGVm
aW5lIEVWVENITk9QX3N0YXR1cyAgICAgICAgICAgNQotI2RlZmluZSBFVlRDSE5PUF9hbGxvY191
bmJvdW5kICAgIDYKLSNkZWZpbmUgRVZUQ0hOT1BfYmluZF9pcGkgICAgICAgICA3Ci0jZGVmaW5l
IEVWVENITk9QX2JpbmRfdmNwdSAgICAgICAgOAotI2RlZmluZSBFVlRDSE5PUF91bm1hc2sgICAg
ICAgICAgIDkKLSNkZWZpbmUgRVZUQ0hOT1BfcmVzZXQgICAgICAgICAgIDEwCi0jZGVmaW5lIEVW
VENITk9QX2luaXRfY29udHJvbCAgICAxMQotI2RlZmluZSBFVlRDSE5PUF9leHBhbmRfYXJyYXkg
ICAgMTIKLSNkZWZpbmUgRVZUQ0hOT1Bfc2V0X3ByaW9yaXR5ICAgIDEzCi0vKiBgIH0gKi8KLQot
dHlwZWRlZiB1aW50MzJfdCBldnRjaG5fcG9ydF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
ZXZ0Y2huX3BvcnRfdCk7Ci0KLS8qCi0gKiBFVlRDSE5PUF9hbGxvY191bmJvdW5kOiBBbGxvY2F0
ZSBhIHBvcnQgaW4gZG9tYWluIDxkb20+IGFuZCBtYXJrIGFzCi0gKiBhY2NlcHRpbmcgaW50ZXJk
b21haW4gYmluZGluZ3MgZnJvbSBkb21haW4gPHJlbW90ZV9kb20+LiBBIGZyZXNoIHBvcnQKLSAq
IGlzIGFsbG9jYXRlZCBpbiA8ZG9tPiBhbmQgcmV0dXJuZWQgYXMgPHBvcnQ+LgotICogTk9URVM6
Ci0gKiAgMS4gSWYgdGhlIGNhbGxlciBpcyB1bnByaXZpbGVnZWQgdGhlbiA8ZG9tPiBtdXN0IGJl
IERPTUlEX1NFTEYuCi0gKiAgMi4gPHJkb20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBs
b29wYmFjayBjb25uZWN0aW9ucy4KLSAqLwotc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIHsK
LSAgICAvKiBJTiBwYXJhbWV0ZXJzICovCi0gICAgZG9taWRfdCBkb20sIHJlbW90ZV9kb207Ci0g
ICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci19OwotdHlw
ZWRlZiBzdHJ1Y3QgZXZ0Y2huX2FsbG9jX3VuYm91bmQgZXZ0Y2huX2FsbG9jX3VuYm91bmRfdDsK
LQotLyoKLSAqIEVWVENITk9QX2JpbmRfaW50ZXJkb21haW46IENvbnN0cnVjdCBhbiBpbnRlcmRv
bWFpbiBldmVudCBjaGFubmVsIGJldHdlZW4KLSAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgPHJl
bW90ZV9kb20+LiA8cmVtb3RlX2RvbSxyZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQotICogYSBw
b3J0IHRoYXQgaXMgdW5ib3VuZCBhbmQgbWFya2VkIGFzIGFjY2VwdGluZyBiaW5kaW5ncyBmcm9t
IHRoZSBjYWxsaW5nCi0gKiBkb21haW4uIEEgZnJlc2ggcG9ydCBpcyBhbGxvY2F0ZWQgaW4gdGhl
IGNhbGxpbmcgZG9tYWluIGFuZCByZXR1cm5lZCBhcwotICogPGxvY2FsX3BvcnQ+LgotICoKLSAq
IEluIGNhc2UgdGhlIHBlZXIgZG9tYWluIGhhcyBhbHJlYWR5IHRyaWVkIHRvIHNldCBvdXIgZXZl
bnQgY2hhbm5lbAotICogcGVuZGluZywgYmVmb3JlIGl0IHdhcyBib3VuZCwgRVZUQ0hOT1BfYmlu
ZF9pbnRlcmRvbWFpbiBhbHdheXMgc2V0cwotICogdGhlIGxvY2FsIGV2ZW50IGNoYW5uZWwgcGVu
ZGluZy4KLSAqCi0gKiBUaGUgdXN1YWwgcGF0dGVybiBvZiB1c2UsIGluIHRoZSBndWVzdCdzIHVw
Y2FsbCAob3Igc3Vic2VxdWVudAotICogaGFuZGxlcikgaXMgYXMgZm9sbG93czogKFJlLWVuYWJs
ZSB0aGUgZXZlbnQgY2hhbm5lbCBmb3Igc3Vic2VxdWVudAotICogc2lnbmFsbGluZyBhbmQgdGhl
bikgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2Ygd2hhdGV2ZXIgY29uZGl0aW9uCi0gKiBpcyBi
ZWluZyB3YWl0ZWQgZm9yIGJ5IG90aGVyIG1lYW5zLCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24g
aXMKLSAqIG5lZWRlZCAoaWYgYW55KS4KLSAqCi0gKiBOT1RFUzoKLSAqICAxLiA8cmVtb3RlX2Rv
bT4gbWF5IGJlIERPTUlEX1NFTEYsIGFsbG93aW5nIGxvb3BiYWNrIGNvbm5lY3Rpb25zLgotICov
Ci1zdHJ1Y3QgZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gewotICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovCi0gICAgZG9taWRfdCByZW1vdGVfZG9tOwotICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3Bv
cnQ7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9w
b3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX2ludGVyZG9tYWluIGV2dGNobl9i
aW5kX2ludGVyZG9tYWluX3Q7Ci0KLS8qCi0gKiBFVlRDSE5PUF9iaW5kX3ZpcnE6IEJpbmQgYSBs
b2NhbCBldmVudCBjaGFubmVsIHRvIFZJUlEgPGlycT4gb24gc3BlY2lmaWVkCi0gKiB2Y3B1Lgot
ICogTk9URVM6Ci0gKiAgMS4gVmlydHVhbCBJUlFzIGFyZSBjbGFzc2lmaWVkIGFzIHBlci12Y3B1
IG9yIGdsb2JhbC4gU2VlIHRoZSBWSVJRIGxpc3QKLSAqICAgICBpbiB4ZW4uaCBmb3IgdGhlIGNs
YXNzaWZpY2F0aW9uIG9mIGVhY2ggVklSUS4KLSAqICAyLiBHbG9iYWwgVklSUXMgbXVzdCBiZSBh
bGxvY2F0ZWQgb24gVkNQVTAgYnV0IGNhbiBzdWJzZXF1ZW50bHkgYmUKLSAqICAgICByZS1ib3Vu
ZCB2aWEgRVZUQ0hOT1BfYmluZF92Y3B1LgotICogIDMuIFBlci12Y3B1IFZJUlFzIG1heSBiZSBi
b3VuZCB0byBhdCBtb3N0IG9uZSBldmVudCBjaGFubmVsIHBlciB2Y3B1LgotICogICAgIFRoZSBh
bGxvY2F0ZWQgZXZlbnQgY2hhbm5lbCBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUgYW5k
IHRoZQotICogICAgIGJpbmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCi0gKi8KLXN0cnVjdCBldnRj
aG5fYmluZF92aXJxIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIHVpbnQzMl90IHZp
cnE7IC8qIGVudW0gdmlycSAqLwotICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VUIHBhcmFt
ZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2
dGNobl9iaW5kX3ZpcnEgZXZ0Y2huX2JpbmRfdmlycV90OwotCi0vKgotICogRVZUQ0hOT1BfYmlu
ZF9waXJxOiBCaW5kIGEgbG9jYWwgZXZlbnQgY2hhbm5lbCB0byBhIHJlYWwgSVJRIChQSVJRIDxp
cnE+KS4KLSAqIE5PVEVTOgotICogIDEuIEEgcGh5c2ljYWwgSVJRIG1heSBiZSBib3VuZCB0byBh
dCBtb3N0IG9uZSBldmVudCBjaGFubmVsIHBlciBkb21haW4uCi0gKiAgMi4gT25seSBhIHN1ZmZp
Y2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgYmluZCB0byBhIHBoeXNpY2FsIElSUS4KLSAq
Lwotc3RydWN0IGV2dGNobl9iaW5kX3BpcnEgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0g
ICAgdWludDMyX3QgcGlycTsKLSNkZWZpbmUgQklORF9QSVJRX19XSUxMX1NIQVJFIDEKLSAgICB1
aW50MzJfdCBmbGFnczsgLyogQklORF9QSVJRX18qICovCi0gICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9i
aW5kX3BpcnEgZXZ0Y2huX2JpbmRfcGlycV90OwotCi0vKgotICogRVZUQ0hOT1BfYmluZF9pcGk6
IEJpbmQgYSBsb2NhbCBldmVudCBjaGFubmVsIHRvIHJlY2VpdmUgZXZlbnRzLgotICogTk9URVM6
Ci0gKiAgMS4gVGhlIGFsbG9jYXRlZCBldmVudCBjaGFubmVsIGlzIGJvdW5kIHRvIHRoZSBzcGVj
aWZpZWQgdmNwdS4gVGhlIGJpbmRpbmcKLSAqICAgICBtYXkgbm90IGJlIGNoYW5nZWQuCi0gKi8K
LXN0cnVjdCBldnRjaG5fYmluZF9pcGkgewotICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYgc3Ry
dWN0IGV2dGNobl9iaW5kX2lwaSBldnRjaG5fYmluZF9pcGlfdDsKLQotLyoKLSAqIEVWVENITk9Q
X2Nsb3NlOiBDbG9zZSBhIGxvY2FsIGV2ZW50IGNoYW5uZWwgPHBvcnQ+LiBJZiB0aGUgY2hhbm5l
bCBpcwotICogaW50ZXJkb21haW4gdGhlbiB0aGUgcmVtb3RlIGVuZCBpcyBwbGFjZWQgaW4gdGhl
IHVuYm91bmQgc3RhdGUKLSAqIChFVlRDSE5TVEFUX3VuYm91bmQpLCBhd2FpdGluZyBhIG5ldyBj
b25uZWN0aW9uLgotICovCi1zdHJ1Y3QgZXZ0Y2huX2Nsb3NlIHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLX07Ci10eXBlZGVmIHN0cnVjdCBldnRj
aG5fY2xvc2UgZXZ0Y2huX2Nsb3NlX3Q7Ci0KLS8qCi0gKiBFVlRDSE5PUF9zZW5kOiBTZW5kIGFu
IGV2ZW50IHRvIHRoZSByZW1vdGUgZW5kIG9mIHRoZSBjaGFubmVsIHdob3NlIGxvY2FsCi0gKiBl
bmRwb2ludCBpcyA8cG9ydD4uCi0gKi8KLXN0cnVjdCBldnRjaG5fc2VuZCB7Ci0gICAgLyogSU4g
cGFyYW1ldGVycy4gKi8KLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgZXZ0Y2huX3NlbmQgZXZ0Y2huX3NlbmRfdDsKLQotLyoKLSAqIEVWVENITk9QX3N0YXR1czog
R2V0IHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdoaWNo
Ci0gKiBoYXMgYW4gZW5kcG9pbnQgYXQgPGRvbSwgcG9ydD4uCi0gKiBOT1RFUzoKLSAqICAxLiA8
ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCi0gKiAgMi4gT25seSBhIHN1ZmZp
Y2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgb2J0YWluIHRoZSBzdGF0dXMgb2YgYW4gZXZl
bnQKLSAqICAgICBjaGFubmVsIGZvciB3aGljaCA8ZG9tPiBpcyBub3QgRE9NSURfU0VMRi4KLSAq
Lwotc3RydWN0IGV2dGNobl9zdGF0dXMgewotICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KLSAgICBk
b21pZF90ICBkb207Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgIC8qIE9VVCBwYXJhbWV0
ZXJzICovCi0jZGVmaW5lIEVWVENITlNUQVRfY2xvc2VkICAgICAgIDAgIC8qIENoYW5uZWwgaXMg
bm90IGluIHVzZS4gICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEVWVENITlNUQVRfdW5ib3Vu
ZCAgICAgIDEgIC8qIENoYW5uZWwgaXMgd2FpdGluZyBpbnRlcmRvbSBjb25uZWN0aW9uLiovCi0j
ZGVmaW5lIEVWVENITlNUQVRfaW50ZXJkb21haW4gIDIgIC8qIENoYW5uZWwgaXMgY29ubmVjdGVk
IHRvIHJlbW90ZSBkb21haW4uICovCi0jZGVmaW5lIEVWVENITlNUQVRfcGlycSAgICAgICAgIDMg
IC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSBwaHlzIElSUSBsaW5lLiAgICovCi0jZGVmaW5lIEVW
VENITlNUQVRfdmlycSAgICAgICAgIDQgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFs
IElSUSBsaW5lICovCi0jZGVmaW5lIEVWVENITlNUQVRfaXBpICAgICAgICAgIDUgIC8qIENoYW5u
ZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFsIElQSSBsaW5lICovCi0gICAgdWludDMyX3Qgc3RhdHVz
OwotICAgIHVpbnQzMl90IHZjcHU7ICAgICAgICAgICAgICAgICAvKiBWQ1BVIHRvIHdoaWNoIHRo
aXMgY2hhbm5lbCBpcyBib3VuZC4gICAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIGRvbWlkX3QgZG9tOwotICAgICAgICB9IHVuYm91bmQ7ICAgICAgICAgICAg
ICAgICAvKiBFVlRDSE5TVEFUX3VuYm91bmQgKi8KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIGRvbWlkX3QgZG9tOwotICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgICAg
ICB9IGludGVyZG9tYWluOyAgICAgICAgICAgICAvKiBFVlRDSE5TVEFUX2ludGVyZG9tYWluICov
Ci0gICAgICAgIHVpbnQzMl90IHBpcnE7ICAgICAgICAgICAgIC8qIEVWVENITlNUQVRfcGlycSAg
ICAgICAgKi8KLSAgICAgICAgdWludDMyX3QgdmlycTsgICAgICAgICAgICAgLyogRVZUQ0hOU1RB
VF92aXJxICAgICAgICAqLwotICAgIH0gdTsKLX07Ci10eXBlZGVmIHN0cnVjdCBldnRjaG5fc3Rh
dHVzIGV2dGNobl9zdGF0dXNfdDsKLQotLyoKLSAqIEVWVENITk9QX2JpbmRfdmNwdTogU3BlY2lm
eSB3aGljaCB2Y3B1IGEgY2hhbm5lbCBzaG91bGQgbm90aWZ5IHdoZW4gYW4KLSAqIGV2ZW50IGlz
IHBlbmRpbmcuCi0gKiBOT1RFUzoKLSAqICAxLiBJUEktYm91bmQgY2hhbm5lbHMgYWx3YXlzIG5v
dGlmeSB0aGUgdmNwdSBzcGVjaWZpZWQgYXQgYmluZCB0aW1lLgotICogICAgIFRoaXMgYmluZGlu
ZyBjYW5ub3QgYmUgY2hhbmdlZC4KLSAqICAyLiBQZXItVkNQVSBWSVJRIGNoYW5uZWxzIGFsd2F5
cyBub3RpZnkgdGhlIHZjcHUgc3BlY2lmaWVkIGF0IGJpbmQgdGltZS4KLSAqICAgICBUaGlzIGJp
bmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCi0gKiAgMy4gQWxsIG90aGVyIGNoYW5uZWxzIG5vdGlm
eSB2Y3B1MCBieSBkZWZhdWx0LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdoZW4KLSAqICAgICB0aGUg
Y2hhbm5lbCBpcyBhbGxvY2F0ZWQgKGEgcG9ydCB0aGF0IGlzIGZyZWVkIGFuZCBzdWJzZXF1ZW50
bHkgcmV1c2VkCi0gKiAgICAgaGFzIGl0cyBiaW5kaW5nIHJlc2V0IHRvIHZjcHUwKS4KLSAqLwot
c3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAg
ZXZ0Y2huX3BvcnRfdCBwb3J0OwotICAgIHVpbnQzMl90IHZjcHU7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgZXZ0Y2huX2JpbmRfdmNwdSBldnRjaG5fYmluZF92Y3B1X3Q7Ci0KLS8qCi0gKiBFVlRDSE5P
UF91bm1hc2s6IFVubWFzayB0aGUgc3BlY2lmaWVkIGxvY2FsIGV2ZW50LWNoYW5uZWwgcG9ydCBh
bmQgZGVsaXZlcgotICogYSBub3RpZmljYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIFZDUFUgaWYg
YW4gZXZlbnQgaXMgcGVuZGluZy4KLSAqLwotc3RydWN0IGV2dGNobl91bm1hc2sgewotICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCi0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotfTsKLXR5cGVkZWYg
c3RydWN0IGV2dGNobl91bm1hc2sgZXZ0Y2huX3VubWFza190OwotCi0vKgotICogRVZUQ0hOT1Bf
cmVzZXQ6IENsb3NlIGFsbCBldmVudCBjaGFubmVscyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWVk
IGRvbWFpbi4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9N
SURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1h
eSBzcGVjaWZ5IG90aGVyIHRoYW4gRE9NSURfU0VMRi4KLSAqICAzLiBEZXN0cm95cyBhbGwgY29u
dHJvbCBibG9ja3MgYW5kIGV2ZW50IGFycmF5LCByZXNldHMgZXZlbnQgY2hhbm5lbAotICogICAg
IG9wZXJhdGlvbnMgdG8gMi1sZXZlbCBBQkkgaWYgY2FsbGVkIHdpdGggPGRvbT4gPT0gRE9NSURf
U0VMRiBhbmQgRklGTwotICogICAgIEFCSSB3YXMgdXNlZC4gR3Vlc3RzIHNob3VsZCBub3QgYmlu
ZCBldmVudHMgZHVyaW5nIEVWVENITk9QX3Jlc2V0IGNhbGwKLSAqICAgICBhcyB0aGVzZSBldmVu
dHMgYXJlIGxpa2VseSB0byBiZSBsb3N0LgotICovCi1zdHJ1Y3QgZXZ0Y2huX3Jlc2V0IHsKLSAg
ICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIGRvbWlkX3QgZG9tOwotfTsKLXR5cGVkZWYgc3Ry
dWN0IGV2dGNobl9yZXNldCBldnRjaG5fcmVzZXRfdDsKLQotLyoKLSAqIEVWVENITk9QX2luaXRf
Y29udHJvbDogaW5pdGlhbGl6ZSB0aGUgY29udHJvbCBibG9jayBmb3IgdGhlIEZJRk8gQUJJLgot
ICoKLSAqIE5vdGU6IGFueSBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IHBlbmRpbmcgd2lsbCBu
b3QgYmUgcmVzZW50IGFuZAotICogd2lsbCBiZSBsb3N0LiAgR3Vlc3RzIHNob3VsZCBjYWxsIHRo
aXMgYmVmb3JlIGJpbmRpbmcgYW55IGV2ZW50IHRvCi0gKiBhdm9pZCBsb3NpbmcgYW55IGV2ZW50
cy4KLSAqLwotc3RydWN0IGV2dGNobl9pbml0X2NvbnRyb2wgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDY0X3QgY29udHJvbF9nZm47Ci0gICAgdWludDMyX3Qgb2Zmc2V0Owot
ICAgIHVpbnQzMl90IHZjcHU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgdWludDhf
dCBsaW5rX2JpdHM7Ci0gICAgdWludDhfdCBfcGFkWzddOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2
dGNobl9pbml0X2NvbnRyb2wgZXZ0Y2huX2luaXRfY29udHJvbF90OwotCi0vKgotICogRVZUQ0hO
T1BfZXhwYW5kX2FycmF5OiBhZGQgYW4gYWRkaXRpb25hbCBwYWdlIHRvIHRoZSBldmVudCBhcnJh
eS4KLSAqLwotc3RydWN0IGV2dGNobl9leHBhbmRfYXJyYXkgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDY0X3QgYXJyYXlfZ2ZuOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNo
bl9leHBhbmRfYXJyYXkgZXZ0Y2huX2V4cGFuZF9hcnJheV90OwotCi0vKgotICogRVZUQ0hOT1Bf
c2V0X3ByaW9yaXR5OiBzZXQgdGhlIHByaW9yaXR5IGZvciBhbiBldmVudCBjaGFubmVsLgotICov
Ci1zdHJ1Y3QgZXZ0Y2huX3NldF9wcmlvcml0eSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
LSAgICB1aW50MzJfdCBwb3J0OwotICAgIHVpbnQzMl90IHByaW9yaXR5OwotfTsKLXR5cGVkZWYg
c3RydWN0IGV2dGNobl9zZXRfcHJpb3JpdHkgZXZ0Y2huX3NldF9wcmlvcml0eV90OwotCi0vKgot
ICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3Bf
Y29tcGF0KHN0cnVjdCBldnRjaG5fb3AgKm9wKQotICogYAotICogU3VwZXJjZWRlZCBieSBuZXcg
ZXZlbnRfY2hhbm5lbF9vcCgpIGh5cGVyY2FsbCBzaW5jZSAweDAwMDMwMjAyLgotICovCi1zdHJ1
Y3QgZXZ0Y2huX29wIHsKLSAgICB1aW50MzJfdCBjbWQ7IC8qIGVudW0gZXZlbnRfY2hhbm5lbF9v
cCAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kICAg
IGFsbG9jX3VuYm91bmQ7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBi
aW5kX2ludGVyZG9tYWluOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSAgICAgICAg
YmluZF92aXJxOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfcGlycSAgICAgICAgYmluZF9w
aXJxOwotICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpICAgICAgICAgYmluZF9pcGk7Ci0g
ICAgICAgIHN0cnVjdCBldnRjaG5fY2xvc2UgICAgICAgICAgICBjbG9zZTsKLSAgICAgICAgc3Ry
dWN0IGV2dGNobl9zZW5kICAgICAgICAgICAgIHNlbmQ7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5f
c3RhdHVzICAgICAgICAgICBzdGF0dXM7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92Y3B1
ICAgICAgICBiaW5kX3ZjcHU7Ci0gICAgICAgIHN0cnVjdCBldnRjaG5fdW5tYXNrICAgICAgICAg
ICB1bm1hc2s7Ci0gICAgfSB1OwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNobl9vcCBldnRjaG5f
b3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGV2dGNobl9vcF90KTsKLQotLyoKLSAqIDIt
bGV2ZWwgQUJJCi0gKi8KLQotI2RlZmluZSBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMgKHNpemVvZih4
ZW5fdWxvbmdfdCkgKiBzaXplb2YoeGVuX3Vsb25nX3QpICogNjQpCi0KLS8qCi0gKiBGSUZPIEFC
SQotICovCi0KLS8qIEV2ZW50cyBtYXkgaGF2ZSBwcmlvcml0aWVzIGZyb20gMCAoaGlnaGVzdCkg
dG8gMTUgKGxvd2VzdCkuICovCi0jZGVmaW5lIEVWVENITl9GSUZPX1BSSU9SSVRZX01BWCAgICAg
MAotI2RlZmluZSBFVlRDSE5fRklGT19QUklPUklUWV9ERUZBVUxUIDcKLSNkZWZpbmUgRVZUQ0hO
X0ZJRk9fUFJJT1JJVFlfTUlOICAgICAxNQotCi0jZGVmaW5lIEVWVENITl9GSUZPX01BWF9RVUVV
RVMgKEVWVENITl9GSUZPX1BSSU9SSVRZX01JTiArIDEpCi0KLXR5cGVkZWYgdWludDMyX3QgZXZl
bnRfd29yZF90OwotCi0jZGVmaW5lIEVWVENITl9GSUZPX1BFTkRJTkcgMzEKLSNkZWZpbmUgRVZU
Q0hOX0ZJRk9fTUFTS0VEICAzMAotI2RlZmluZSBFVlRDSE5fRklGT19MSU5LRUQgIDI5Ci0jZGVm
aW5lIEVWVENITl9GSUZPX0JVU1kgICAgMjgKLQotI2RlZmluZSBFVlRDSE5fRklGT19MSU5LX0JJ
VFMgMTcKLSNkZWZpbmUgRVZUQ0hOX0ZJRk9fTElOS19NQVNLICgoMSA8PCBFVlRDSE5fRklGT19M
SU5LX0JJVFMpIC0gMSkKLQotI2RlZmluZSBFVlRDSE5fRklGT19OUl9DSEFOTkVMUyAoMSA8PCBF
VlRDSE5fRklGT19MSU5LX0JJVFMpCi0KLXN0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2Nr
IHsKLSAgICB1aW50MzJfdCByZWFkeTsKLSAgICB1aW50MzJfdCBfcnN2ZDsKLSAgICB1aW50MzJf
dCBoZWFkW0VWVENITl9GSUZPX01BWF9RVUVVRVNdOwotfTsKLXR5cGVkZWYgc3RydWN0IGV2dGNo
bl9maWZvX2NvbnRyb2xfYmxvY2sgZXZ0Y2huX2ZpZm9fY29udHJvbF9ibG9ja190OwotCi0jZW5k
aWYgLyogX19YRU5fUFVCTElDX0VWRU5UX0NIQU5ORUxfSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vZmVhdHVyZXMuaCBiL2luY2x1ZGUv
eGVuL2ZlYXR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZDkyYWEuLjAw
MDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vZmVhdHVyZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEx
NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBmZWF0dXJlcy5oCi0gKiAKLSAq
IEZlYXR1cmUgZmxhZ3MsIHJlcG9ydGVkIGJ5IFhFTlZFUl9nZXRfZmVhdHVyZXMuCi0gKiAKLSAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUKLSAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0g
KgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS
RS4KLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJj
ZS5jb20+Ci0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJMSUNfRkVBVFVSRVNfSF9fCi0jZGVmaW5l
IF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18KLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBlbGZu
b3Rlc19mZWF0dXJlcyBYRU5fRUxGTk9URV9GRUFUVVJFUwotICoKLSAqIFRoZSBsaXN0IG9mIGFs
bCB0aGUgZmVhdHVyZXMgdGhlIGd1ZXN0IHN1cHBvcnRzLiBUaGV5IGFyZSBzZXQgYnkKLSAqIHBh
cnNpbmcgdGhlIFhFTl9FTEZOT1RFX0ZFQVRVUkVTIGFuZCBYRU5fRUxGTk9URV9TVVBQT1JURURf
RkVBVFVSRVMKLSAqIHN0cmluZy4gVGhlIGZvcm1hdCBpcyB0aGUgIGZlYXR1cmUgbmFtZXMgKGFz
IGdpdmVuIGhlcmUgd2l0aG91dCB0aGUKLSAqICJYRU5GRUFUXyIgcHJlZml4KSBzZXBhcmF0ZWQg
YnkgJ3wnIGNoYXJhY3RlcnMuCi0gKiBJZiBhIGZlYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBr
ZXJuZWwgdG8gZnVuY3Rpb24gdGhlbiB0aGUgZmVhdHVyZSBuYW1lCi0gKiBtdXN0IGJlIHByZWNl
ZGVkIGJ5IGEgJyEnIGNoYXJhY3Rlci4KLSAqCi0gKiBOb3RlIHRoYXQgaWYgWEVOX0VMRk5PVEVf
U1VQUE9SVEVEX0ZFQVRVUkVTIGlzIHVzZWQsIHRoZW4gaW4gdGhlCi0gKiBYRU5GRUFUX2RvbTAg
TVVTVCBiZSBzZXQgaWYgdGhlIGd1ZXN0IGlzIHRvIGJlIGJvb3RlZCBhcyBkb20wLAotICovCi0K
LS8qCi0gKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIHdyaXRlLXByb3RlY3Qg
aXRzIHBhZ2V0YWJsZXMsIGFuZCBjYW4KLSAqIHVwZGF0ZSB0aGVtIHZpYSBkaXJlY3Qgd3JpdGVz
LgotICovCi0jZGVmaW5lIFhFTkZFQVRfd3JpdGFibGVfcGFnZV90YWJsZXMgICAgICAgMAotCi0v
KgotICogSWYgc2V0LCB0aGUgZ3Vlc3QgZG9lcyBub3QgbmVlZCB0byB3cml0ZS1wcm90ZWN0IGl0
cyBzZWdtZW50IGRlc2NyaXB0b3IKLSAqIHRhYmxlcywgYW5kIGNhbiB1cGRhdGUgdGhlbSB2aWEg
ZGlyZWN0IHdyaXRlcy4KLSAqLwotI2RlZmluZSBYRU5GRUFUX3dyaXRhYmxlX2Rlc2NyaXB0b3Jf
dGFibGVzIDEKLQotLyoKLSAqIElmIHNldCwgdHJhbnNsYXRpb24gYmV0d2VlbiB0aGUgZ3Vlc3Qn
cyAncHNldWRvLXBoeXNpY2FsJyBhZGRyZXNzIHNwYWNlCi0gKiBhbmQgdGhlIGhvc3QncyBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UgYXJlIGhhbmRsZWQgYnkgdGhlIGh5cGVydmlzb3IuIEluIHRoaXMK
LSAqIG1vZGUgdGhlIGd1ZXN0IGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybSBwaHlzLXRvL2Zyb20t
bWFjaGluZSB0cmFuc2xhdGlvbnMKLSAqIHdoZW4gcGVyZm9ybWluZyBwYWdlIHRhYmxlIG9wZXJh
dGlvbnMuCi0gKi8KLSNkZWZpbmUgWEVORkVBVF9hdXRvX3RyYW5zbGF0ZWRfcGh5c21hcCAgICAy
Ci0KLS8qIElmIHNldCwgdGhlIGd1ZXN0IGlzIHJ1bm5pbmcgaW4gc3VwZXJ2aXNvciBtb2RlIChl
LmcuLCB4ODYgcmluZyAwKS4gKi8KLSNkZWZpbmUgWEVORkVBVF9zdXBlcnZpc29yX21vZGVfa2Vy
bmVsICAgICAzCi0KLS8qCi0gKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIGFs
bG9jYXRlIHg4NiBQQUUgcGFnZSBkaXJlY3RvcmllcwotICogYmVsb3cgNEdCLiBUaGlzIGZsYWcg
aXMgdXN1YWxseSBpbXBsaWVkIGJ5IGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwLgotICovCi0jZGVm
aW5lIFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRnYiAgICAgICAgNAotCi0vKiB4ODY6IERvZXMg
dGhpcyBYZW4gaG9zdCBzdXBwb3J0IHRoZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIGh5cGVy
Y2FsbD8gKi8KLSNkZWZpbmUgWEVORkVBVF9tbXVfcHRfdXBkYXRlX3ByZXNlcnZlX2FkICA1Ci0K
LS8qIHg4NjogRG9lcyB0aGlzIFhlbiBob3N0IHN1cHBvcnQgdGhlIE1NVV97Q0xFQVIsQ09QWX1f
UEFHRSBoeXBlcmNhbGw/ICovCi0jZGVmaW5lIFhFTkZFQVRfaGlnaG1lbV9hc3Npc3QgICAgICAg
ICAgICAgNgotCi0vKgotICogSWYgc2V0LCBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGhvbm9ycyBm
bGFncyB0byBiZSBwbGFjZWQgaW50byBndWVzdCBrZXJuZWwKLSAqIGF2YWlsYWJsZSBwdGUgYml0
cy4KLSAqLwotI2RlZmluZSBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyAgICAgIDcKLQot
LyogeDg2OiBEb2VzIHRoaXMgWGVuIGhvc3Qgc3VwcG9ydCB0aGUgSFZNIGNhbGxiYWNrIHZlY3Rv
ciB0eXBlPyAqLwotI2RlZmluZSBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IgICAgICAgIDgK
LQotLyogeDg2OiBwdmNsb2NrIGFsZ29yaXRobSBpcyBzYWZlIHRvIHVzZSBvbiBIVk0gKi8KLSNk
ZWZpbmUgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrICAgICAgICAgICA5Ci0KLS8qIHg4NjogcGly
cSBjYW4gYmUgdXNlZCBieSBIVk0gZ3Vlc3RzICovCi0jZGVmaW5lIFhFTkZFQVRfaHZtX3BpcnFz
ICAgICAgICAgICAgICAgICAxMAotCi0vKiBvcGVyYXRpb24gYXMgRG9tMCBpcyBzdXBwb3J0ZWQg
Ki8KLSNkZWZpbmUgWEVORkVBVF9kb20wICAgICAgICAgICAgICAgICAgICAgIDExCi0KLS8qIFhl
biBhbHNvIG1hcHMgZ3JhbnQgcmVmZXJlbmNlcyBhdCBwZm4gPSBtZm4uCi0gKiBUaGlzIGZlYXR1
cmUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCi0jZGVmaW5lIFhF
TkZFQVRfZ3JhbnRfbWFwX2lkZW50aXR5ICAgICAgICAxMgotICovCi0KLSNkZWZpbmUgWEVORkVB
VF9OUl9TVUJNQVBTIDEKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18gKi8K
LQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTog
IkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10
YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9ncmFu
dF90YWJsZS5oIGIvaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDViMjliYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi9ncmFudF90YWJs
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSAqIGdyYW50X3RhYmxlLmgKLSAqCi0gKiBJbnRlcmZhY2UgZm9yIGdyYW50aW5nIGZvcmVp
Z24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVjZWl2aW5nCi0gKiBwYWdlLW93bmVyc2hp
cCB0cmFuc2ZlcnMuCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCi0gKiBzZWxs
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0g
KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVB
TElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgSyBBIEZy
YXNlcgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXwotI2RlZmlu
ZSBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCi0KLSNpbmNsdWRlICJ4ZW4uaCIKLQotLyoK
LSAqIGBpbmNvbnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQgVGFibGVzCi0gKgotICogWGVuJ3MgZ3Jh
bnQgdGFibGVzIHByb3ZpZGUgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBtZW1vcnkgc2hhcmluZwot
ICogYmV0d2VlbiBkb21haW5zLiBUaGlzIHNoYXJlZCBtZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlu
cyB0aGUgc3BsaXQKLSAqIGRldmljZSBkcml2ZXJzIGZvciBibG9jayBhbmQgbmV0d29yayBJTy4K
LSAqCi0gKiBFYWNoIGRvbWFpbiBoYXMgaXRzIG93biBncmFudCB0YWJsZS4gVGhpcyBpcyBhIGRh
dGEgc3RydWN0dXJlIHRoYXQKLSAqIGlzIHNoYXJlZCB3aXRoIFhlbjsgaXQgYWxsb3dzIHRoZSBk
b21haW4gdG8gdGVsbCBYZW4gd2hhdCBraW5kIG9mCi0gKiBwZXJtaXNzaW9ucyBvdGhlciBkb21h
aW5zIGhhdmUgb24gaXRzIHBhZ2VzLiBFbnRyaWVzIGluIHRoZSBncmFudAotICogdGFibGUgYXJl
IGlkZW50aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4gQSBncmFudCByZWZlcmVuY2UgaXMgYW4K
LSAqIGludGVnZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMg
YXMgYQotICogY2FwYWJpbGl0eSB3aGljaCB0aGUgZ3JhbnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0g
b3BlcmF0aW9ucyBvbiB0aGUKLSAqIGdyYW50ZXLigJlzIG1lbW9yeS4KLSAqCi0gKiBUaGlzIGNh
cGFiaWxpdHktYmFzZWQgc3lzdGVtIGFsbG93cyBzaGFyZWQtbWVtb3J5IGNvbW11bmljYXRpb25z
Ci0gKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBkb21haW5zLiBBIGdyYW50IHJlZmVyZW5jZSBhbHNv
IGVuY2Fwc3VsYXRlcwotICogdGhlIGRldGFpbHMgb2YgYSBzaGFyZWQgcGFnZSwgcmVtb3Zpbmcg
dGhlIG5lZWQgZm9yIGEgZG9tYWluIHRvCi0gKiBrbm93IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVz
cyBvZiBhIHBhZ2UgaXQgaXMgc2hhcmluZy4gVGhpcyBtYWtlcwotICogaXQgcG9zc2libGUgdG8g
c2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRoIGRvbWFpbnMgcnVubmluZyBpbgotICogZnVsbHkg
dmlydHVhbGlzZWQgbWVtb3J5LgotICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICogR1JBTlQgVEFCTEUgUkVQUkVTRU5UQVRJT04KLSAqLwotCi0vKiBTb21lIHJv
dWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5nIGFuZCB1cGRhdGluZyBncmFudC10YWJsZSBlbnRy
aWVzCi0gKiBpbiBhIGNvbmN1cnJlbmN5LXNhZmUgbWFubmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgTGludXggY29udGFpbnMgYQotICogcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBndWVz
dCBPU2VzIChkcml2ZXJzL3hlbi9ncmFudF90YWJsZS5jLCBzZWUKLSAqIGh0dHA6Ly9naXQua2Vy
bmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1k
cml2ZXJzL3hlbi9ncmFudC10YWJsZS5jO2hiPUhFQUQKLSAqCi0gKiBOQi4gV01CIGlzIGEgbm8t
b3Agb24gY3VycmVudC1nZW5lcmF0aW9uIHg4NiBwcm9jZXNzb3JzLiBIb3dldmVyLCBhCi0gKiAg
ICAgY29tcGlsZXIgYmFycmllciB3aWxsIHN0aWxsIGJlIHJlcXVpcmVkLgotICoKLSAqIEludHJv
ZHVjaW5nIGEgdmFsaWQgZW50cnkgaW50byB0aGUgZ3JhbnQgdGFibGU6Ci0gKiAgMS4gV3JpdGUg
ZW50LT5kb21pZC4KLSAqICAyLiBXcml0ZSBlbnQtPmZyYW1lOgotICogICAgICBHVEZfcGVybWl0
X2FjY2VzczogICBGcmFtZSB0byB3aGljaCBhY2Nlc3MgaXMgcGVybWl0dGVkLgotICogICAgICBH
VEZfYWNjZXB0X3RyYW5zZmVyOiBQc2V1ZG8tcGh5cyBmcmFtZSBzbG90IGJlaW5nIGZpbGxlZCBi
eSBuZXcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIG9yIHplcm8gaWYgbm9u
ZS4KLSAqICAzLiBXcml0ZSBtZW1vcnkgYmFycmllciAoV01CKS4KLSAqICA0LiBXcml0ZSBlbnQt
PmZsYWdzLCBpbmMuIHZhbGlkIHR5cGUuCi0gKgotICogSW52YWxpZGF0aW5nIGFuIHVudXNlZCBH
VEZfcGVybWl0X2FjY2VzcyBlbnRyeToKLSAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCi0gKiAg
Mi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3JlYWRpbmd8R1RGX3dyaXRpbmcpKS4KLSAq
ICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNhZmUgQ01QWENIRygmZW50LT5mbGFncywgZmxhZ3Ms
IDApLgotICogIE5CLiBObyBuZWVkIGZvciBXTUIgYXMgcmV1c2Ugb2YgZW50cnkgaXMgY29udHJv
bC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgotICogICAgICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0
ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3RybC1kZXAgd3JpdGVzLgotICoKLSAqIElu
dmFsaWRhdGluZyBhbiBpbi11c2UgR1RGX3Blcm1pdF9hY2Nlc3MgZW50cnk6Ci0gKiAgVGhpcyBj
YW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBhc3Npc3RhbmNlIGZyb20gdGhlIGRvbWFp
biBjb250cm9sbGVyCi0gKiAgd2hpY2ggY2FuIHNldCBhIHRpbWVvdXQgb24gdGhlIHVzZSBvZiBh
IGdyYW50IGVudHJ5IGFuZCB0YWtlIG5lY2Vzc2FyeQotICogIGFjdGlvbi4gKE5CLiBUaGlzIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQhKS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdU
Rl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6Ci0gKiAgMS4gZmxhZ3MgPSBlbnQtPmZsYWdzLgotICog
IDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkuIFsqXQot
ICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFn
cywgMCkuCi0gKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250
cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCi0gKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNo
aXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCi0gKiAgWypd
IElmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQgaXMgc2V0IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlz
ICdjb21taXR0ZWQnLgotICogICAgICBUaGUgZ3Vlc3QgbXVzdCAvbm90LyBtb2RpZnkgdGhlIGdy
YW50IGVudHJ5IHVudGlsIHRoZSBhZGRyZXNzIG9mIHRoZQotICogICAgICB0cmFuc2ZlcnJlZCBm
cmFtZSBpcyB3cml0dGVuLiBJdCBpcyBzYWZlIGZvciB0aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5n
Ci0gKiAgICAgIGZvciB0aGlzIHRvIG9jY3VyIChkZXRlY3QgYnkgb2JzZXJ2aW5nIEdURl90cmFu
c2Zlcl9jb21wbGV0ZWQgaW4KLSAqICAgICAgZW50LT5mbGFncykuCi0gKgotICogSW52YWxpZGF0
aW5nIGEgY29tbWl0dGVkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6Ci0gKiAgMS4gV2FpdCBm
b3IgKGVudC0+ZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tcGxldGVkKS4KLSAqCi0gKiBDaGFuZ2lu
ZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gd3JpdGFibGUgdG8gcmVhZC1vbmx5OgotICogIFVz
ZSBTTVAtc2FmZSBDTVBYQ0hHIHRvIHNldCBHVEZfcmVhZG9ubHksIHdoaWxlIGNoZWNraW5nICFH
VEZfd3JpdGluZy4KLSAqCi0gKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gcmVh
ZC1vbmx5IHRvIHdyaXRhYmxlOgotICogIFVzZSBTTVAtc2FmZSBiaXQtc2V0dGluZyBpbnN0cnVj
dGlvbi4KLSAqLwotCi0vKgotICogUmVmZXJlbmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVj
aWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUuCi0gKi8KLXR5cGVkZWYgdWludDMyX3QgZ3JhbnRf
cmVmX3Q7Ci0KLS8qCi0gKiBBIGdyYW50IHRhYmxlIGNvbXByaXNlcyBhIHBhY2tlZCBhcnJheSBv
ZiBncmFudCBlbnRyaWVzIGluIG9uZSBvciBtb3JlCi0gKiBwYWdlIGZyYW1lcyBzaGFyZWQgYmV0
d2VlbiBYZW4gYW5kIGEgZ3Vlc3QuCi0gKiBbWEVOXTogVGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5
IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmluZyBndWVzdC4KLSAqIFtHU1RdOiBUaGlzIGZpZWxk
IGlzIHdyaXR0ZW4gYnkgdGhlIGd1ZXN0IGFuZCByZWFkIGJ5IFhlbi4KLSAqLwotCi0vKgotICog
VmVyc2lvbiAxIG9mIHRoZSBncmFudCB0YWJsZSBlbnRyeSBzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5l
ZCBwdXJlbHkKLSAqIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hv
dWxkIHVzZSB2ZXJzaW9uIDIuCi0gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDAzMDIwYQotI2RlZmluZSBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeQotI2RlZmluZSBn
cmFudF9lbnRyeV92MV90IGdyYW50X2VudHJ5X3QKLSNlbmRpZgotc3RydWN0IGdyYW50X2VudHJ5
X3YxIHsKLSAgICAvKiBHVEZfeHh4OiB2YXJpb3VzIHR5cGUgYW5kIGZsYWcgaW5mb3JtYXRpb24u
ICBbWEVOLEdTVF0gKi8KLSAgICB1aW50MTZfdCBmbGFnczsKLSAgICAvKiBUaGUgZG9tYWluIGJl
aW5nIGdyYW50ZWQgZm9yZWlnbiBwcml2aWxlZ2VzLiBbR1NUXSAqLwotICAgIGRvbWlkX3QgIGRv
bWlkOwotICAgIC8qCi0gICAgICogR1RGX3Blcm1pdF9hY2Nlc3M6IEZyYW1lIHRoYXQgQGRvbWlk
IGlzIGFsbG93ZWQgdG8gbWFwIGFuZCBhY2Nlc3MuIFtHU1RdCi0gICAgICogR1RGX2FjY2VwdF90
cmFuc2ZlcjogRnJhbWUgd2hvc2Ugb3duZXJzaGlwIHRyYW5zZmVycmVkIGJ5IEBkb21pZC4gW1hF
Tl0KLSAgICAgKi8KLSAgICB1aW50MzJfdCBmcmFtZTsKLX07Ci10eXBlZGVmIHN0cnVjdCBncmFu
dF9lbnRyeV92MSBncmFudF9lbnRyeV92MV90OwotCi0vKiBUaGUgZmlyc3QgZmV3IGdyYW50IHRh
YmxlIGVudHJpZXMgd2lsbCBiZSBwcmVzZXJ2ZWQgYWNyb3NzIGdyYW50IHRhYmxlCi0gKiB2ZXJz
aW9uIGNoYW5nZXMgYW5kIG1heSBiZSBwcmUtcG9wdWxhdGVkIGF0IGRvbWFpbiBjcmVhdGlvbiBi
eSB0b29scy4KLSAqLwotI2RlZmluZSBHTlRUQUJfTlJfUkVTRVJWRURfRU5UUklFUyAgICAgOAot
I2RlZmluZSBHTlRUQUJfUkVTRVJWRURfQ09OU09MRSAgICAgICAgMAotI2RlZmluZSBHTlRUQUJf
UkVTRVJWRURfWEVOU1RPUkUgICAgICAgMQotCi0vKgotICogVHlwZSBvZiBncmFudCBlbnRyeS4K
LSAqICBHVEZfaW52YWxpZDogVGhpcyBncmFudCBlbnRyeSBncmFudHMgbm8gcHJpdmlsZWdlcy4K
LSAqICBHVEZfcGVybWl0X2FjY2VzczogQWxsb3cgQGRvbWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1l
LgotICogIEdURl9hY2NlcHRfdHJhbnNmZXI6IEFsbG93IEBkb21pZCB0byB0cmFuc2ZlciBvd25l
cnNoaXAgb2Ygb25lIHBhZ2UgZnJhbWUKLSAqICAgICAgICAgICAgICAgICAgICAgICB0byB0aGlz
IGd1ZXN0LiBYZW4gd3JpdGVzIHRoZSBwYWdlIG51bWJlciB0byBAZnJhbWUuCi0gKiAgR1RGX3Ry
YW5zaXRpdmU6IEFsbG93IEBkb21pZCB0byB0cmFuc2l0aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ug
b2YKLSAqICAgICAgICAgICAgICAgICAgQHRyYW5zX2dyYW50IGluIEB0cmFuc19kb21pZC4gIE5v
IG1hcHBpbmdzIGFyZSBhbGxvd2VkLgotICovCi0jZGVmaW5lIEdURl9pbnZhbGlkICAgICAgICAg
KDBVPDwwKQotI2RlZmluZSBHVEZfcGVybWl0X2FjY2VzcyAgICgxVTw8MCkKLSNkZWZpbmUgR1RG
X2FjY2VwdF90cmFuc2ZlciAoMlU8PDApCi0jZGVmaW5lIEdURl90cmFuc2l0aXZlICAgICAgKDNV
PDwwKQotI2RlZmluZSBHVEZfdHlwZV9tYXNrICAgICAgICgzVTw8MCkKLQotLyoKLSAqIFN1YmZs
YWdzIGZvciBHVEZfcGVybWl0X2FjY2Vzcy4KLSAqICBHVEZfcmVhZG9ubHk6IFJlc3RyaWN0IEBk
b21pZCB0byByZWFkLW9ubHkgbWFwcGluZ3MgYW5kIGFjY2Vzc2VzLiBbR1NUXQotICogIEdURl9y
ZWFkaW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciByZWFkaW5nIGJ5IEBk
b21pZC4gW1hFTl0KLSAqICBHVEZfd3JpdGluZzogR3JhbnQgZW50cnkgaXMgY3VycmVudGx5IG1h
cHBlZCBmb3Igd3JpdGluZyBieSBAZG9taWQuIFtYRU5dCi0gKiAgR1RGX1BBVCwgR1RGX1BXVCwg
R1RGX1BDRDogKHg4NikgY2FjaGUgYXR0cmlidXRlIGZsYWdzIGZvciB0aGUgZ3JhbnQgW0dTVF0K
LSAqICBHVEZfc3ViX3BhZ2U6IEdyYW50IGFjY2VzcyB0byBvbmx5IGEgc3VicmFuZ2Ugb2YgdGhl
IHBhZ2UuICBAZG9taWQKLSAqICAgICAgICAgICAgICAgIHdpbGwgb25seSBiZSBhbGxvd2VkIHRv
IGNvcHkgZnJvbSB0aGUgZ3JhbnQsIGFuZCBub3QKLSAqICAgICAgICAgICAgICAgIG1hcCBpdC4g
W0dTVF0KLSAqLwotI2RlZmluZSBfR1RGX3JlYWRvbmx5ICAgICAgICgyKQotI2RlZmluZSBHVEZf
cmVhZG9ubHkgICAgICAgICgxVTw8X0dURl9yZWFkb25seSkKLSNkZWZpbmUgX0dURl9yZWFkaW5n
ICAgICAgICAoMykKLSNkZWZpbmUgR1RGX3JlYWRpbmcgICAgICAgICAoMVU8PF9HVEZfcmVhZGlu
ZykKLSNkZWZpbmUgX0dURl93cml0aW5nICAgICAgICAoNCkKLSNkZWZpbmUgR1RGX3dyaXRpbmcg
ICAgICAgICAoMVU8PF9HVEZfd3JpdGluZykKLSNkZWZpbmUgX0dURl9QV1QgICAgICAgICAgICAo
NSkKLSNkZWZpbmUgR1RGX1BXVCAgICAgICAgICAgICAoMVU8PF9HVEZfUFdUKQotI2RlZmluZSBf
R1RGX1BDRCAgICAgICAgICAgICg2KQotI2RlZmluZSBHVEZfUENEICAgICAgICAgICAgICgxVTw8
X0dURl9QQ0QpCi0jZGVmaW5lIF9HVEZfUEFUICAgICAgICAgICAgKDcpCi0jZGVmaW5lIEdURl9Q
QVQgICAgICAgICAgICAgKDFVPDxfR1RGX1BBVCkKLSNkZWZpbmUgX0dURl9zdWJfcGFnZSAgICAg
ICAoOCkKLSNkZWZpbmUgR1RGX3N1Yl9wYWdlICAgICAgICAoMVU8PF9HVEZfc3ViX3BhZ2UpCi0K
LS8qCi0gKiBTdWJmbGFncyBmb3IgR1RGX2FjY2VwdF90cmFuc2ZlcjoKLSAqICBHVEZfdHJhbnNm
ZXJfY29tbWl0dGVkOiBYZW4gc2V0cyB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBj
b21taXR0ZWQKLSAqICAgICAgdG8gdHJhbnNmZXJyaW5nIG93bmVyc2hpcCBvZiBhIHBhZ2UgZnJh
bWUuIFdoZW4gYSBndWVzdCBzZWVzIHRoaXMgZmxhZwotICogICAgICBpdCBtdXN0IC9ub3QvIG1v
ZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpcwotICog
ICAgICBzZXQgYnkgWGVuLgotICogIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQ6IEl0IGlzIHNhZmUg
Zm9yIHRoZSBndWVzdCB0byBzcGluLXdhaXQgb24gdGhpcyBmbGFnCi0gKiAgICAgIGFmdGVyIHJl
YWRpbmcgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZC4gWGVuIHdpbGwgYWx3YXlzIHdyaXRlIHRoZSBm
cmFtZQotICogICAgICBhZGRyZXNzLCBmb2xsb3dlZCBieSBPUmluZyB0aGlzIGZsYWcsIGluIGEg
dGltZWx5IG1hbm5lci4KLSAqLwotI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAoMikK
LSNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbW1p
dHRlZCkKLSNkZWZpbmUgX0dURl90cmFuc2Zlcl9jb21wbGV0ZWQgKDMpCi0jZGVmaW5lIEdURl90
cmFuc2Zlcl9jb21wbGV0ZWQgICgxVTw8X0dURl90cmFuc2Zlcl9jb21wbGV0ZWQpCi0KLS8qCi0g
KiBWZXJzaW9uIDIgZ3JhbnQgdGFibGUgZW50cmllcy4gIFRoZXNlIGZ1bGZpbCB0aGUgc2FtZSBy
b2xlIGFzCi0gKiB2ZXJzaW9uIDEgZW50cmllcywgYnV0IGNhbiByZXByZXNlbnQgbW9yZSBjb21w
bGljYXRlZCBvcGVyYXRpb25zLgotICogQW55IGdpdmVuIGRvbWFpbiB3aWxsIGhhdmUgZWl0aGVy
IGEgdmVyc2lvbiAxIG9yIGEgdmVyc2lvbiAyIHRhYmxlLAotICogYW5kIGV2ZXJ5IGVudHJ5IGlu
IHRoZSB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIHZlcnNpb24uCi0gKgotICogVGhlIGludGVyZmFj
ZSBieSB3aGljaCBkb21haW5zIHVzZSBncmFudCByZWZlcmVuY2VzIGRvZXMgbm90IGRlcGVuZAot
ICogb24gdGhlIGdyYW50IHRhYmxlIHZlcnNpb24gaW4gdXNlIGJ5IHRoZSBvdGhlciBkb21haW4u
Ci0gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKLS8qCi0g
KiBWZXJzaW9uIDEgYW5kIHZlcnNpb24gMiBncmFudCBlbnRyaWVzIHNoYXJlIGEgY29tbW9uIHBy
ZWZpeC4gIFRoZQotICogZmllbGRzIG9mIHRoZSBwcmVmaXggYXJlIGRvY3VtZW50ZWQgYXMgcGFy
dCBvZiBzdHJ1Y3QKLSAqIGdyYW50X2VudHJ5X3YxLgotICovCi1zdHJ1Y3QgZ3JhbnRfZW50cnlf
aGVhZGVyIHsKLSAgICB1aW50MTZfdCBmbGFnczsKLSAgICBkb21pZF90ICBkb21pZDsKLX07Ci10
eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgZ3JhbnRfZW50cnlfaGVhZGVyX3Q7Ci0K
LS8qCi0gKiBWZXJzaW9uIDIgb2YgdGhlIGdyYW50IGVudHJ5IHN0cnVjdHVyZS4KLSAqLwotdW5p
b24gZ3JhbnRfZW50cnlfdjIgewotICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKLQotICAg
IC8qCi0gICAgICogVGhpcyBtZW1iZXIgaXMgdXNlZCBmb3IgVjEtc3R5bGUgZnVsbCBwYWdlIGdy
YW50cywgd2hlcmUgZWl0aGVyOgotICAgICAqCi0gICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX2Fj
Y2VwdF90cmFuc2Zlciwgb3IKLSAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfcGVybWl0X2FjY2Vz
cyBhbmQgR1RGX3N1Yl9wYWdlIGlzIG5vdCBzZXQuCi0gICAgICoKLSAgICAgKiBJbiB0aGF0IGNh
c2UsIHRoZSBmcmFtZSBmaWVsZCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZQotICAgICAq
IGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIFYxIGVudHJ5IHN0cnVjdHVyZS4KLSAgICAg
Ki8KLSAgICBzdHJ1Y3QgewotICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7Ci0gICAg
ICAgIHVpbnQzMl90IHBhZDA7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lOwotICAgIH0gZnVsbF9w
YWdlOwotCi0gICAgLyoKLSAgICAgKiBJZiB0aGUgZ3JhbnQgdHlwZSBpcyBHVEZfZ3JhbnRfYWNj
ZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgc2V0LAotICAgICAqIEBkb21pZCBpcyBhbGxvd2VkIHRv
IGFjY2VzcyBieXRlcyBbQHBhZ2Vfb2ZmLEBwYWdlX29mZitAbGVuZ3RoKQotICAgICAqIGluIGZy
YW1lIEBmcmFtZS4KLSAgICAgKi8KLSAgICBzdHJ1Y3QgewotICAgICAgICBncmFudF9lbnRyeV9o
ZWFkZXJfdCBoZHI7Ci0gICAgICAgIHVpbnQxNl90IHBhZ2Vfb2ZmOwotICAgICAgICB1aW50MTZf
dCBsZW5ndGg7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lOwotICAgIH0gc3ViX3BhZ2U7Ci0KLSAg
ICAvKgotICAgICAqIElmIHRoZSBncmFudCBpcyBHVEZfdHJhbnNpdGl2ZSwgQGRvbWlkIGlzIGFs
bG93ZWQgdG8gdXNlIHRoZQotICAgICAqIGdyYW50IEBncmVmIGluIGRvbWFpbiBAdHJhbnNfZG9t
aWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKLSAgICAgKiBkb21haW4uICBPYnZpb3VzbHksIHRo
ZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJlIGNvbXBhdGlibGUKLSAgICAgKiB3aXRoIHRoZSBv
cmlnaW5hbCBncmFudC4KLSAgICAgKgotICAgICAqIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgWGVu
IGRvZXMgbm90IGFsbG93IHRyYW5zaXRpdmUgZ3JhbnRzCi0gICAgICogdG8gYmUgbWFwcGVkLgot
ICAgICAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsK
LSAgICAgICAgZG9taWRfdCB0cmFuc19kb21pZDsKLSAgICAgICAgdWludDE2X3QgcGFkMDsKLSAg
ICAgICAgZ3JhbnRfcmVmX3QgZ3JlZjsKLSAgICB9IHRyYW5zaXRpdmU7Ci0KLSAgICB1aW50MzJf
dCBfX3NwYWNlcls0XTsgLyogUGFkIHRvIGEgcG93ZXIgb2YgdHdvICovCi19OwotdHlwZWRlZiB1
bmlvbiBncmFudF9lbnRyeV92MiBncmFudF9lbnRyeV92Ml90OwotCi10eXBlZGVmIHVpbnQxNl90
IGdyYW50X3N0YXR1c190OwotCi0jZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAq
LwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdSQU5UIFRBQkxF
IFFVRVJJRVMgQU5EIFVTRVMKLSAqLwotCi0vKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZ
UEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFudF90YWJsZV9vcCBjbWQsCi0gKiBgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJncywKLSAqIGAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCi0gKiBgCi0gKgotICogQGFyZ3MgcG9pbnRz
IHRvIGFuIGFycmF5IG9mIGEgcGVyLWNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBhcnJheQot
ICogaGFzIEBjb3VudCBtZW1iZXJzCi0gKi8KLQotLyogYCBlbnVtIGdyYW50X3RhYmxlX29wIHsg
Ly8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyogKi8KLSNkZWZpbmUgR05UVEFCT1BfbWFw
X2dyYW50X3JlZiAgICAgICAgMAotI2RlZmluZSBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYgICAg
ICAxCi0jZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxlICAgICAgICAgIDIKLSNkZWZpbmUgR05U
VEFCT1BfZHVtcF90YWJsZSAgICAgICAgICAgMwotI2RlZmluZSBHTlRUQUJPUF90cmFuc2ZlciAg
ICAgICAgICAgICA0Ci0jZGVmaW5lIEdOVFRBQk9QX2NvcHkgICAgICAgICAgICAgICAgIDUKLSNk
ZWZpbmUgR05UVEFCT1BfcXVlcnlfc2l6ZSAgICAgICAgICAgNgotI2RlZmluZSBHTlRUQUJPUF91
bm1hcF9hbmRfcmVwbGFjZSAgICA3Ci0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAw
eDAwMDMwMjBhCi0jZGVmaW5lIEdOVFRBQk9QX3NldF92ZXJzaW9uICAgICAgICAgIDgKLSNkZWZp
bmUgR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXMgICAgOQotI2RlZmluZSBHTlRUQUJPUF9nZXRf
dmVyc2lvbiAgICAgICAgICAxMAotI2RlZmluZSBHTlRUQUJPUF9zd2FwX2dyYW50X3JlZgkgICAg
ICAxMQotI2RlZmluZSBHTlRUQUJPUF9jYWNoZV9mbHVzaAkgICAgICAxMgotI2VuZGlmIC8qIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KLS8qIGAgfSAqLwotCi0vKgotICogSGFuZGxlIHRv
IHRyYWNrIGEgbWFwcGluZyBjcmVhdGVkIHZpYSBhIGdyYW50IHJlZmVyZW5jZS4KLSAqLwotdHlw
ZWRlZiB1aW50MzJfdCBncmFudF9oYW5kbGVfdDsKLQotLyoKLSAqIEdOVFRBQk9QX21hcF9ncmFu
dF9yZWY6IE1hcCB0aGUgZ3JhbnQgZW50cnkgKDxkb20+LDxyZWY+KSBmb3IgYWNjZXNzCi0gKiBi
eSBkZXZpY2VzIGFuZC9vciBob3N0IENQVXMuIElmIHN1Y2Nlc3NmdWwsIDxoYW5kbGU+IGlzIGEg
dHJhY2tpbmcgbnVtYmVyCi0gKiB0aGF0IG11c3QgYmUgcHJlc2VudGVkIGxhdGVyIHRvIGRlc3Ry
b3kgdGhlIG1hcHBpbmcocykuIE9uIGVycm9yLCA8aGFuZGxlPgotICogaXMgYSBuZWdhdGl2ZSBz
dGF0dXMgY29kZS4KLSAqIE5PVEVTOgotICogIDEuIElmIEdOVE1BUF9kZXZpY2VfbWFwIGlzIHNw
ZWNpZmllZCB0aGVuIDxkZXZfYnVzX2FkZHI+IGlzIHRoZSBhZGRyZXNzCi0gKiAgICAgdmlhIHdo
aWNoIEkvTyBkZXZpY2VzIG1heSBhY2Nlc3MgdGhlIGdyYW50ZWQgZnJhbWUuCi0gKiAgMi4gSWYg
R05UTUFQX2hvc3RfbWFwIGlzIHNwZWNpZmllZCB0aGVuIGEgbWFwcGluZyB3aWxsIGJlIGFkZGVk
IGF0Ci0gKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQg
YWRkcmVzcyBzcGFjZSwgb3IgYXQKLSAqICAgICBhIFBURSBhdCB0aGUgc3BlY2lmaWVkIG1hY2hp
bmUgYWRkcmVzcy4gIFRoZSB0eXBlIG9mIG1hcHBpbmcgdG8KLSAqICAgICBwZXJmb3JtIGlzIHNl
bGVjdGVkIHRocm91Z2ggdGhlIEdOVE1BUF9jb250YWluc19wdGUgZmxhZywgYW5kIHRoZQotICog
ICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+LgotICogIDMuIE1hcHBpbmdz
IHNob3VsZCBvbmx5IGJlIGRlc3Ryb3llZCB2aWEgR05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmLiBJ
ZiBhCi0gKiAgICAgaG9zdCBtYXBwaW5nIGlzIGRlc3Ryb3llZCBieSBvdGhlciBtZWFucyB0aGVu
IGl0IGlzICpOT1QqIGd1YXJhbnRlZWQKLSAqICAgICB0byBiZSBhY2NvdW50ZWQgdG8gdGhlIGNv
cnJlY3QgZ3JhbnQgcmVmZXJlbmNlIQotICovCi1zdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYg
ewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAgdWludDY0X3QgaG9zdF9hZGRyOwotICAg
IHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAgIC8qIEdOVE1BUF8qICovCi0gICAgZ3JhbnRf
cmVmX3QgcmVmOwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8K
LSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1
cyAqLwotICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsKLSAgICB1aW50NjRfdCBkZXZfYnVzX2Fk
ZHI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgZ250dGFiX21hcF9n
cmFudF9yZWZfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9tYXBfZ3JhbnRfcmVm
X3QpOwotCi0vKgotICogR05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmOiBEZXN0cm95IG9uZSBvciBt
b3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncwotICogdHJhY2tlZCBieSA8aGFuZGxlPi4gSWYg
PGhvc3RfYWRkcj4gb3IgPGRldl9idXNfYWRkcj4gaXMgemVybywgdGhhdAotICogZmllbGQgaXMg
aWdub3JlZC4gSWYgbm9uLXplcm8sIHRoZXkgbXVzdCByZWZlciB0byBhIGRldmljZS9ob3N0IG1h
cHBpbmcKLSAqIHRoYXQgaXMgdHJhY2tlZCBieSA8aGFuZGxlPgotICogTk9URVM6Ci0gKiAgMS4g
VGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4gdW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGlu
ZyBpcyBub3QKLSAqICAgICB0cmFja2VkIGJ5IDxoYW5kbGU+LgotICogIDMuIEFmdGVyIGV4ZWN1
dGluZyBhIGJhdGNoIG9mIHVubWFwcywgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIHN0YWxlCi0g
KiAgICAgbWFwcGluZ3Mgd2lsbCByZW1haW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCi0g
Ki8KLXN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLwotICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKLSAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7
Ci0gICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwot
ICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVz
ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiBnbnR0YWJfdW5t
YXBfZ3JhbnRfcmVmX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdW5tYXBfZ3Jh
bnRfcmVmX3QpOwotCi0vKgotICogR05UVEFCT1Bfc2V0dXBfdGFibGU6IFNldCB1cCBhIGdyYW50
IHRhYmxlIGZvciA8ZG9tPiBjb21wcmlzaW5nIGF0IGxlYXN0Ci0gKiA8bnJfZnJhbWVzPiBwYWdl
cy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRlbiB0byB0aGUgPGZyYW1lX2xpc3Q+Lgot
ICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHdyaXR0ZW4sIGV2ZW4gaWYgdGhlIHRh
YmxlIGlzIGxhcmdlci4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQg
YXMgRE9NSURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9t
YWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCi0gKiAgMy4gWGVuIG1heSBub3Qg
c3VwcG9ydCBtb3JlIHRoYW4gYSBzaW5nbGUgZ3JhbnQtdGFibGUgcGFnZSBwZXIgZG9tYWluLgot
ICovCi1zdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAq
LwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCi0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4g
ZW51bSBncmFudF9zdGF0dXMgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgw
MDA0MDMwMAotICAgIFhFTl9HVUVTVF9IQU5ETEUodWxvbmcpIGZyYW1lX2xpc3Q7Ci0jZWxzZQot
ICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Bmbl90KSBmcmFtZV9saXN0OwotI2VuZGlmCi19Owot
dHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIGdudHRhYl9zZXR1cF90YWJsZV90Owot
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldHVwX3RhYmxlX3QpOwotCi0vKgotICog
R05UVEFCT1BfZHVtcF90YWJsZTogRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGdyYW50IHRhYmxl
IHRvIHRoZQotICogeGVuIGNvbnNvbGUuIERlYnVnZ2luZyB1c2Ugb25seS4KLSAqLwotc3RydWN0
IGdudHRhYl9kdW1wX3RhYmxlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLwotICAgIGRvbWlk
X3QgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2X3Qgc3RhdHVzOyAg
ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19OwotdHlwZWRlZiBzdHJ1
Y3QgZ250dGFiX2R1bXBfdGFibGUgZ250dGFiX2R1bXBfdGFibGVfdDsKLURFRklORV9YRU5fR1VF
U1RfSEFORExFKGdudHRhYl9kdW1wX3RhYmxlX3QpOwotCi0vKgotICogR05UVEFCT1BfdHJhbnNm
ZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRvIGEgZm9yZWlnbiBkb21haW4uIFRoZQot
ICogZm9yZWlnbiBkb21haW4gaGFzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBpdHMgaW50ZXJlc3Qg
aW4gdGhlIHRyYW5zZmVyIHZpYQotICogPGRvbWlkLCByZWY+LgotICoKLSAqIE5vdGUgdGhhdCwg
ZXZlbiBpZiB0aGUgdHJhbnNmZXIgZmFpbHMsIHRoZSBzcGVjaWZpZWQgcGFnZSBubyBMT05HX1BU
UmVyIGJlbG9uZ3MKLSAqIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiAqdW5sZXNzKiB0aGUgZXJyb3Ig
aXMgR05UU1RfYmFkX3BhZ2UuCi0gKi8KLXN0cnVjdCBnbnR0YWJfdHJhbnNmZXIgewotICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCi0gICAgeGVuX3Bmbl90ICAgICBtZm47Ci0gICAgZG9taWRfdCAg
ICAgICBkb21pZDsKLSAgICBncmFudF9yZWZfdCAgIHJlZjsKLSAgICAvKiBPVVQgcGFyYW1ldGVy
cy4gKi8KLSAgICBpbnQxNl90ICAgICAgIHN0YXR1czsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0
YWJfdHJhbnNmZXIgZ250dGFiX3RyYW5zZmVyX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfdHJhbnNmZXJfdCk7Ci0KLQotLyoKLSAqIEdOVFRBQk9QX2NvcHk6IEh5cGVydmlzb3Ig
YmFzZWQgY29weQotICogc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgY2FuIGJlIGVpdGhlcnMgTUZO
cyBvciwgZm9yIGZvcmVpZ24gZG9tYWlucywKLSAqIGdyYW50IHJlZmVyZW5jZXMuIHRoZSBmb3Jl
aWduIGRvbWFpbiBoYXMgdG8gZ3JhbnQgcmVhZC93cml0ZSBhY2Nlc3MKLSAqIGluIGl0cyBncmFu
dCB0YWJsZS4KLSAqCi0gKiBUaGUgZmxhZ3Mgc3BlY2lmeSB3aGF0IHR5cGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbnMgYXJlIChlaXRoZXIgTUZOCi0gKiBvciBncmFudCByZWZlcmVuY2UpLgotICoK
LSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgdG8gY29weSBkYXRhIGJldHdlZW4g
dHdvIGRvbWFpbnMKLSAqIHZpYSBhIHRoaXJkIHBhcnR5IGlmIHRoZSBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIGRvbWFpbnMgaGFkIHByZXZpb3VzbHkKLSAqIGdyYW50IGFwcHJvcHJpYXRlIGFjY2Vz
cyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFydHkuCi0gKgotICogc291cmNlX29mZnNl
dCBzcGVjaWZpZXMgYW4gb2Zmc2V0IGluIHRoZSBzb3VyY2UgZnJhbWUsIGRlc3Rfb2Zmc2V0Ci0g
KiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUgYW5kICBsZW4gc3BlY2lmaWVzIHRoZSBu
dW1iZXIgb2YKLSAqIGJ5dGVzIHRvIGJlIGNvcGllZC4KLSAqLwotCi0jZGVmaW5lIF9HTlRDT1BZ
X3NvdXJjZV9ncmVmICAgICAgKDApCi0jZGVmaW5lIEdOVENPUFlfc291cmNlX2dyZWYgICAgICAg
KDE8PF9HTlRDT1BZX3NvdXJjZV9ncmVmKQotI2RlZmluZSBfR05UQ09QWV9kZXN0X2dyZWYgICAg
ICAgICgxKQotI2RlZmluZSBHTlRDT1BZX2Rlc3RfZ3JlZiAgICAgICAgICgxPDxfR05UQ09QWV9k
ZXN0X2dyZWYpCi0KLXN0cnVjdCBnbnR0YWJfY29weSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4g
Ki8KLSAgICBzdHJ1Y3QgewotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBncmFudF9yZWZf
dCByZWY7Ci0gICAgICAgICAgICB4ZW5fcGZuX3QgICBnbWZuOwotICAgICAgICB9IHU7Ci0gICAg
ICAgIGRvbWlkX3QgIGRvbWlkOwotICAgICAgICB1aW50MTZfdCBvZmZzZXQ7Ci0gICAgfSBzb3Vy
Y2UsIGRlc3Q7Ci0gICAgdWludDE2X3QgICAgICBsZW47Ci0gICAgdWludDE2X3QgICAgICBmbGFn
czsgICAgICAgICAgLyogR05UQ09QWV8qICovCi0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0g
ICAgaW50MTZfdCAgICAgICBzdGF0dXM7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NvcHkg
IGdudHRhYl9jb3B5X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsK
LQotLyoKLSAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhp
bXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKLSAqIGdyYW50IHRhYmxlLgotICogTk9URVM6Ci0gKiAg
MS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBz
dWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURf
U0VMRi4KLSAqLwotc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KLSAg
ICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgdWludDMyX3QgbWF4X25yX2ZyYW1lczsKLSAgICBp
bnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwot
fTsKLXR5cGVkZWYgc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIGdudHRhYl9xdWVyeV9zaXplX3Q7
Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfcXVlcnlfc2l6ZV90KTsKLQotLyoKLSAq
IEdOVFRBQk9QX3VubWFwX2FuZF9yZXBsYWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJl
ZmVyZW5jZSBtYXBwaW5ncwotICogdHJhY2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSBy
ZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVudHJ5IHdpdGggb25lCi0gKiBwb2ludGluZyB0byB0aGUg
bWFjaGluZSBhZGRyZXNzIHVuZGVyIDxuZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKLSAq
IHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwgZW50cnkuCi0gKiBOT1RFUzoKLSAqICAxLiBUaGUgY2Fs
bCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5v
dAotICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCi0gKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEg
YmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKLSAqICAgICBt
YXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KLSAqLwotc3Ry
dWN0IGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZSB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
LSAgICB1aW50NjRfdCBob3N0X2FkZHI7Ci0gICAgdWludDY0X3QgbmV3X2FkZHI7Ci0gICAgZ3Jh
bnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2
X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19Owot
dHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIGdudHRhYl91bm1hcF9hbmRf
cmVwbGFjZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2FuZF9yZXBs
YWNlX3QpOwotCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCi0v
KgotICogR05UVEFCT1Bfc2V0X3ZlcnNpb246IFJlcXVlc3QgYSBwYXJ0aWN1bGFyIHZlcnNpb24g
b2YgdGhlIGdyYW50Ci0gKiB0YWJsZSBzaGFyZWQgdGFibGUgc3RydWN0dXJlLiAgVGhpcyBvcGVy
YXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkCi0gKiBvbmNlIGluIGFueSBnaXZlbiBkb21haW4u
ICBJdCBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgYW55IGdyYW50cwotICogYXJlIGFjdGl2YXRl
ZDsgb3RoZXJ3aXNlLCB0aGUgZG9tYWluIHdpbGwgYmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDEuCi0g
KiBUaGUgb25seSBkZWZpbmVkIHZlcnNpb25zIGFyZSAxIGFuZCAyLgotICovCi1zdHJ1Y3QgZ250
dGFiX3NldF92ZXJzaW9uIHsKLSAgICAvKiBJTi9PVVQgcGFyYW1ldGVycyAqLwotICAgIHVpbnQz
Ml90IHZlcnNpb247Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIGdudHRh
Yl9zZXRfdmVyc2lvbl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldF92ZXJz
aW9uX3QpOwotCi0KLS8qCi0gKiBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lczogR2V0IHRoZSBs
aXN0IG9mIGZyYW1lcyB1c2VkIHRvIHN0b3JlIGdyYW50Ci0gKiBzdGF0dXMgZm9yIDxkb20+LiBJ
biBncmFudCBmb3JtYXQgdmVyc2lvbiAyLCB0aGUgc3RhdHVzIGlzIHNlcGFyYXRlZAotICogZnJv
bSB0aGUgb3RoZXIgc2hhcmVkIGdyYW50IGZpZWxkcyB0byBhbGxvdyBtb3JlIGVmZmljaWVudCBz
eW5jaHJvbml6YXRpb24KLSAqIHVzaW5nIGJhcnJpZXJzIGluc3RlYWQgb2YgYXRvbWljIGNtcGV4
Y2ggb3BlcmF0aW9ucy4KLSAqIDxucl9mcmFtZXM+IHNwZWNpZnkgdGhlIHNpemUgb2YgdmVjdG9y
IDxmcmFtZV9saXN0Pi4KLSAqIFRoZSBmcmFtZSBhZGRyZXNzZXMgYXJlIHJldHVybmVkIGluIHRo
ZSA8ZnJhbWVfbGlzdD4uCi0gKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgcmV0dXJu
ZWQsIGV2ZW4gaWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KLSAqIE5PVEVTOgotICogIDEuIDxkb20+
IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KLSAqICAyLiBPbmx5IGEgc3VmZmljaWVu
dGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCi0g
Ki8KLXN0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgdWludDMyX3QgbnJfZnJhbWVzOwotICAgIGRvbWlkX3QgIGRvbTsKLSAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAv
KiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwotICAgIFhFTl9HVUVTVF9IQU5ETEUodWludDY0X3Qp
IGZyYW1lX2xpc3Q7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVz
IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250
dGFiX2dldF9zdGF0dXNfZnJhbWVzX3QpOwotCi0vKgotICogR05UVEFCT1BfZ2V0X3ZlcnNpb246
IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiB3aGljaCBpcyBpbgotICogZWZmZWN0IGZvciBk
b21haW4gPGRvbT4uCi0gKi8KLXN0cnVjdCBnbnR0YWJfZ2V0X3ZlcnNpb24gewotICAgIC8qIElO
IHBhcmFtZXRlcnMgKi8KLSAgICBkb21pZF90IGRvbTsKLSAgICB1aW50MTZfdCBwYWQ7Ci0gICAg
LyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICB1aW50MzJfdCB2ZXJzaW9uOwotfTsKLXR5cGVkZWYg
c3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiBnbnR0YWJfZ2V0X3ZlcnNpb25fdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfdmVyc2lvbl90KTsKLQotLyoKLSAqIEdOVFRBQk9Q
X3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRoZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4K
LSAqLwotc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiB7Ci0gICAgLyogSU4gcGFyYW1ldGVy
cyAqLwotICAgIGdyYW50X3JlZl90IHJlZl9hOwotICAgIGdyYW50X3JlZl90IHJlZl9iOwotICAg
IC8qIE9VVCBwYXJhbWV0ZXJzICovCi0gICAgaW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgIC8q
ID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3N3YXBf
Z3JhbnRfcmVmIGdudHRhYl9zd2FwX2dyYW50X3JlZl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3QpOwotCi0vKgotICogSXNzdWUgb25lIG9yIG1vcmUg
Y2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBvbiBhIHBvcnRpb24gb2YgYQotICogcGFnZSBn
cmFudGVkIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiBieSBhIGZvcmVpZ24gZG9tYWluLgotICovCi1z
dHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNoIHsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHVpbnQ2NF90
IGRldl9idXNfYWRkcjsKLSAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOwotICAgIH0gYTsKLSAgICB1
aW50MTZfdCBvZmZzZXQ7IC8qIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGdyYW50ICovCi0gICAgdWlu
dDE2X3QgbGVuZ3RoOyAvKiBzaXplIHdpdGhpbiB0aGUgZ3JhbnQgKi8KLSNkZWZpbmUgR05UVEFC
X0NBQ0hFX0NMRUFOICAgICAgICAgICgxPDwwKQotI2RlZmluZSBHTlRUQUJfQ0FDSEVfSU5WQUwg
ICAgICAgICAgKDE8PDEpCi0jZGVmaW5lIEdOVFRBQl9DQUNIRV9TT1VSQ0VfR1JFRiAgICAoMTw8
MzEpCi0gICAgdWludDMyX3Qgb3A7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NhY2hlX2Zs
dXNoIGdudHRhYl9jYWNoZV9mbHVzaF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFi
X2NhY2hlX2ZsdXNoX3QpOwotCi0jZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAq
LwotCi0vKgotICogQml0ZmllbGQgdmFsdWVzIGZvciBnbnR0YWJfbWFwX2dyYW50X3JlZi5mbGFn
cy4KLSAqLwotIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFjY2VzcyBieSBJL08gZGV2aWNl
cy4gKi8KLSNkZWZpbmUgX0dOVE1BUF9kZXZpY2VfbWFwICAgICAgKDApCi0jZGVmaW5lIEdOVE1B
UF9kZXZpY2VfbWFwICAgICAgICgxPDxfR05UTUFQX2RldmljZV9tYXApCi0gLyogTWFwIHRoZSBn
cmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5IGhvc3QgQ1BVcy4gKi8KLSNkZWZpbmUgX0dOVE1BUF9o
b3N0X21hcCAgICAgICAgKDEpCi0jZGVmaW5lIEdOVE1BUF9ob3N0X21hcCAgICAgICAgICgxPDxf
R05UTUFQX2hvc3RfbWFwKQotIC8qIEFjY2Vzc2VzIHRvIHRoZSBncmFudGVkIGZyYW1lIHdpbGwg
YmUgcmVzdHJpY3RlZCB0byByZWFkLW9ubHkgYWNjZXNzLiAqLwotI2RlZmluZSBfR05UTUFQX3Jl
YWRvbmx5ICAgICAgICAoMikKLSNkZWZpbmUgR05UTUFQX3JlYWRvbmx5ICAgICAgICAgKDE8PF9H
TlRNQVBfcmVhZG9ubHkpCi0gLyoKLSAgKiBHTlRNQVBfaG9zdF9tYXAgc3ViZmxhZzoKLSAgKiAg
MCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBvbmx5IGJ5IHRoZSBndWVzdCBPUy4KLSAg
KiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBieSBndWVzdCBPUyArIGN1cnJlbnQg
YXBwbGljYXRpb24uCi0gICovCi0jZGVmaW5lIF9HTlRNQVBfYXBwbGljYXRpb25fbWFwICgzKQot
I2RlZmluZSBHTlRNQVBfYXBwbGljYXRpb25fbWFwICAoMTw8X0dOVE1BUF9hcHBsaWNhdGlvbl9t
YXApCi0KLSAvKgotICAqIEdOVE1BUF9jb250YWluc19wdGUgc3ViZmxhZzoKLSAgKiAgMCA9PiBU
aGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuCi0gICogIDEg
PT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyB0aGUgbWFjaGluZSBhZGRlc3Mgb2YgdGhlIFBU
RSB0byB1cGRhdGUuCi0gICovCi0jZGVmaW5lIF9HTlRNQVBfY29udGFpbnNfcHRlICAgICg0KQot
I2RlZmluZSBHTlRNQVBfY29udGFpbnNfcHRlICAgICAoMTw8X0dOVE1BUF9jb250YWluc19wdGUp
Ci0KLSNkZWZpbmUgX0dOVE1BUF9jYW5fZmFpbCAgICAgICAgKDUpCi0jZGVmaW5lIEdOVE1BUF9j
YW5fZmFpbCAgICAgICAgICgxPDxfR05UTUFQX2Nhbl9mYWlsKQotCi0vKgotICogQml0cyB0byBi
ZSBwbGFjZWQgaW4gZ3Vlc3Qga2VybmVsIGF2YWlsYWJsZSBQVEUgYml0cyAoYXJjaGl0ZWN0dXJl
Ci0gKiBkZXBlbmRlbnQ7IG9ubHkgc3VwcG9ydGVkIHdoZW4gWEVORkVBVF9nbnR0YWJfbWFwX2F2
YWlsX2JpdHMgaXMgc2V0KS4KLSAqLwotI2RlZmluZSBfR05UTUFQX2d1ZXN0X2F2YWlsMCAgICAo
MTYpCi0jZGVmaW5lIEdOVE1BUF9ndWVzdF9hdmFpbF9tYXNrICgodWludDMyX3QpfjAgPDwgX0dO
VE1BUF9ndWVzdF9hdmFpbDApCi0KLS8qCi0gKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1
cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUuCi0gKi8KLS8qIGAgZW51bSBncmFudF9zdGF0dXMgeyAq
LwotI2RlZmluZSBHTlRTVF9va2F5ICAgICAgICAgICAgICgwKSAgLyogTm9ybWFsIHJldHVybi4g
ICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9nZW5lcmFsX2Vycm9yICAg
ICgtMSkgLyogR2VuZXJhbCB1bmRlZmluZWQgZXJyb3IuICAgICAgICAgICAgICAqLwotI2RlZmlu
ZSBHTlRTVF9iYWRfZG9tYWluICAgICAgICgtMikgLyogVW5yZWNvZ25zZWQgZG9tYWluIGlkLiAg
ICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9iYWRfZ250cmVmICAgICAgICgtMykgLyog
VW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgZ250cmVmLiAqLwotI2RlZmluZSBHTlRTVF9i
YWRfaGFuZGxlICAgICAgICgtNCkgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgaGFu
ZGxlLiAqLwotI2RlZmluZSBHTlRTVF9iYWRfdmlydF9hZGRyICAgICgtNSkgLyogSW5hcHByb3By
aWF0ZSB2aXJ0dWFsIGFkZHJlc3MgdG8gbWFwLiAqLwotI2RlZmluZSBHTlRTVF9iYWRfZGV2X2Fk
ZHIgICAgICgtNikgLyogSW5hcHByb3ByaWF0ZSBkZXZpY2UgYWRkcmVzcyB0byB1bm1hcC4qLwot
I2RlZmluZSBHTlRTVF9ub19kZXZpY2Vfc3BhY2UgICgtNykgLyogT3V0IG9mIHNwYWNlIGluIEkv
TyBNTVUuICAgICAgICAgICAgICAqLwotI2RlZmluZSBHTlRTVF9wZXJtaXNzaW9uX2RlbmllZCAo
LTgpIC8qIE5vdCBlbm91Z2ggcHJpdmlsZWdlIGZvciBvcGVyYXRpb24uICAqLwotI2RlZmluZSBH
TlRTVF9iYWRfcGFnZSAgICAgICAgICgtOSkgLyogU3BlY2lmaWVkIHBhZ2Ugd2FzIGludmFsaWQg
Zm9yIG9wLiAgICAqLwotI2RlZmluZSBHTlRTVF9iYWRfY29weV9hcmcgICAgKC0xMCkgLyogY29w
eSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeS4gICAqLwotI2RlZmluZSBHTlRTVF9hZGRy
ZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJhbnNmZXIgcGFnZSBhZGRyZXNzIHRvbyBsYXJnZS4gICAg
ICAqLwotI2RlZmluZSBHTlRTVF9lYWdhaW4gICAgICAgICAgKC0xMikgLyogT3BlcmF0aW9uIG5v
dCBkb25lOyB0cnkgYWdhaW4uICAgICAgICAqLwotLyogYCB9ICovCi0KLSNkZWZpbmUgR05UVEFC
T1BfZXJyb3JfbXNncyB7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAib2theSIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAidW5kZWZpbmVkIGVycm9yIiwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAidW5yZWNvZ25pc2VkIGRvbWFpbiBpZCIsICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAiaW52YWxpZCBncmFudCByZWZlcmVuY2UiLCAgICAgICAg
ICAgICAgICAgIFwKLSAgICAiaW52YWxpZCBtYXBwaW5nIGhhbmRsZSIsICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAiaW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgIFwK
LSAgICAiaW52YWxpZCBkZXZpY2UgYWRkcmVzcyIsICAgICAgICAgICAgICAgICAgIFwKLSAgICAi
bm8gc3BhcmUgdHJhbnNsYXRpb24gc2xvdCBpbiB0aGUgSS9PIE1NVSIsIFwKLSAgICAicGVybWlz
c2lvbiBkZW5pZWQiLCAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAiYmFkIHBhZ2UiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAiY29weSBhcmd1bWVudHMgY3Jv
c3MgcGFnZSBib3VuZGFyeSIsICAgICAgIFwKLSAgICAicGFnZSBhZGRyZXNzIHNpemUgdG9vIGxh
cmdlIiwgICAgICAgICAgICAgIFwKLSAgICAib3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4i
ICAgICAgICAgICAgIFwKLX0KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9I
X18gKi8KLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1z
dHlsZTogIkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGlu
ZGVudC10YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hl
bi9odm0vaHZtX29wLmggYi9pbmNsdWRlL3hlbi9odm0vaHZtX29wLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNmYmY4NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vaHZtL2h2
bV9vcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAyICswLDAgQEAKLS8qCi0gKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKi8KLQot
I2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElD
X0hWTV9IVk1fT1BfSF9fCi0KLSNpbmNsdWRlICIuLi94ZW4uaCIKLSNpbmNsdWRlICIuLi90cmFj
ZS5oIgotI2luY2x1ZGUgIi4uL2V2ZW50X2NoYW5uZWwuaCIKLQotLyogR2V0L3NldCBzdWJjb21t
YW5kczogZXh0cmEgYXJndW1lbnQgPT0gcG9pbnRlciB0byB4ZW5faHZtX3BhcmFtIHN0cnVjdC4g
Ki8KLSNkZWZpbmUgSFZNT1Bfc2V0X3BhcmFtICAgICAgICAgICAwCi0jZGVmaW5lIEhWTU9QX2dl
dF9wYXJhbSAgICAgICAgICAgMQotc3RydWN0IHhlbl9odm1fcGFyYW0gewotICAgIGRvbWlkX3Qg
IGRvbWlkOyAgICAvKiBJTiAqLwotICAgIHVpbnQzMl90IGluZGV4OyAgICAvKiBJTiAqLwotICAg
IHVpbnQ2NF90IHZhbHVlOyAgICAvKiBJTi9PVVQgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5f
aHZtX3BhcmFtIHhlbl9odm1fcGFyYW1fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fcGFyYW1fdCk7Ci0KLS8qIFNldCB0aGUgbG9naWNhbCBsZXZlbCBvZiBvbmUgb2YgYSBkb21h
aW4ncyBQQ0kgSU5UeCB3aXJlcy4gKi8KLSNkZWZpbmUgSFZNT1Bfc2V0X3BjaV9pbnR4X2xldmVs
ICAyCi1zdHJ1Y3QgeGVuX2h2bV9zZXRfcGNpX2ludHhfbGV2ZWwgewotICAgIC8qIERvbWFpbiB0
byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIC8qIFBDSSBJTlR4IGlk
ZW50aWZpY2F0aW9uIGluIFBDSSB0b3BvbG9neSAoZG9tYWluOmJ1czpkZXZpY2U6aW50eCkuICov
Ci0gICAgdWludDhfdCAgZG9tYWluLCBidXMsIGRldmljZSwgaW50eDsKLSAgICAvKiBBc3NlcnRp
b24gbGV2ZWwgKDAgPSB1bmFzc2VydGVkLCAxID0gYXNzZXJ0ZWQpLiAqLwotICAgIHVpbnQ4X3Qg
IGxldmVsOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X3BjaV9pbnR4X2xldmVsIHhl
bl9odm1fc2V0X3BjaV9pbnR4X2xldmVsX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
aHZtX3NldF9wY2lfaW50eF9sZXZlbF90KTsKLQotLyogU2V0IHRoZSBsb2dpY2FsIGxldmVsIG9m
IG9uZSBvZiBhIGRvbWFpbidzIElTQSBJUlEgd2lyZXMuICovCi0jZGVmaW5lIEhWTU9QX3NldF9p
c2FfaXJxX2xldmVsICAgMwotc3RydWN0IHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWwgewotICAg
IC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIC8q
IElTQSBkZXZpY2UgaWRlbnRpZmljYXRpb24sIGJ5IElTQSBJUlEgKDAtMTUpLiAqLwotICAgIHVp
bnQ4X3QgIGlzYV9pcnE7Ci0gICAgLyogQXNzZXJ0aW9uIGxldmVsICgwID0gdW5hc3NlcnRlZCwg
MSA9IGFzc2VydGVkKS4gKi8KLSAgICB1aW50OF90ICBsZXZlbDsKLX07Ci10eXBlZGVmIHN0cnVj
dCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsIHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWxfdDsK
LURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X2lzYV9pcnFfbGV2ZWxfdCk7Ci0K
LSNkZWZpbmUgSFZNT1Bfc2V0X3BjaV9saW5rX3JvdXRlICA0Ci1zdHJ1Y3QgeGVuX2h2bV9zZXRf
cGNpX2xpbmtfcm91dGUgewotICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRv
bWlkX3QgIGRvbWlkOwotICAgIC8qIFBDSSBsaW5rIGlkZW50aWZpZXIgKDAtMykuICovCi0gICAg
dWludDhfdCAgbGluazsKLSAgICAvKiBJU0EgSVJRICgxLTE1KSwgb3IgMCAoZGlzYWJsZSBsaW5r
KS4gKi8KLSAgICB1aW50OF90ICBpc2FfaXJxOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1f
c2V0X3BjaV9saW5rX3JvdXRlIHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlX3Q7Ci1ERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0ZV90KTsKLQotLyogRmx1
c2hlcyBhbGwgVkNQVSBUTEJzOiBAYXJnIG11c3QgYmUgTlVMTC4gKi8KLSNkZWZpbmUgSFZNT1Bf
Zmx1c2hfdGxicyAgICAgICAgICA1Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgSFZNTUVNX3JhbV9y
dywgICAgICAgICAgICAgLyogTm9ybWFsIHJlYWQvd3JpdGUgZ3Vlc3QgUkFNICovCi0gICAgSFZN
TUVNX3JhbV9ybywgICAgICAgICAgICAgLyogUmVhZC1vbmx5OyB3cml0ZXMgYXJlIGRpc2NhcmRl
ZCAqLwotICAgIEhWTU1FTV9tbWlvX2RtLCAgICAgICAgICAgIC8qIFJlYWRzIGFuZCB3cml0ZSBn
byB0byB0aGUgZGV2aWNlIG1vZGVsICovCi19IGh2bW1lbV90eXBlX3Q7Ci0KLS8qIEZvbGxvd2lu
ZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCi0jaWYgZGVm
aW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCi0KLS8qIFRyYWNrIGRpcnR5
IFZSQU0uICovCi0jZGVmaW5lIEhWTU9QX3RyYWNrX2RpcnR5X3ZyYW0gICAgNgotc3RydWN0IHhl
bl9odm1fdHJhY2tfZGlydHlfdnJhbSB7Ci0gICAgLyogRG9tYWluIHRvIGJlIHRyYWNrZWQuICov
Ci0gICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgLyogTnVtYmVyIG9mIHBhZ2VzIHRvIHRyYWNrLiAq
LwotICAgIHVpbnQzMl90IG5yOwotICAgIC8qIEZpcnN0IHBmbiB0byB0cmFjay4gKi8KLSAgICB1
aW50NjRfYWxpZ25lZF90IGZpcnN0X3BmbjsKLSAgICAvKiBPVVQgdmFyaWFibGUuICovCi0gICAg
LyogRGlydHkgYml0bWFwIGJ1ZmZlci4gKi8KLSAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4
KSBkaXJ0eV9iaXRtYXA7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV90cmFja19kaXJ0eV92
cmFtIHhlbl9odm1fdHJhY2tfZGlydHlfdnJhbV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX2h2bV90cmFja19kaXJ0eV92cmFtX3QpOwotCi0vKiBOb3RpZnkgdGhhdCBzb21lIHBhZ2Vz
IGdvdCBtb2RpZmllZCBieSB0aGUgRGV2aWNlIE1vZGVsLiAqLwotI2RlZmluZSBIVk1PUF9tb2Rp
ZmllZF9tZW1vcnkgICAgNwotc3RydWN0IHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5IHsKLSAgICAv
KiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8KLSAgICBkb21pZF90ICBkb21pZDsKLSAgICAvKiBO
dW1iZXIgb2YgcGFnZXMuICovCi0gICAgdWludDMyX3QgbnI7Ci0gICAgLyogRmlyc3QgcGZuLiAq
LwotICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwotfTsKLXR5cGVkZWYgc3RydWN0IHhl
bl9odm1fbW9kaWZpZWRfbWVtb3J5IHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5X3Q7Ci1ERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX21vZGlmaWVkX21lbW9yeV90KTsKLQotI2RlZmluZSBI
Vk1PUF9zZXRfbWVtX3R5cGUgICAgOAotLyogTm90aWZ5IHRoYXQgYSByZWdpb24gb2YgbWVtb3J5
IGlzIHRvIGJlIHRyZWF0ZWQgaW4gYSBzcGVjaWZpYyB3YXkuICovCi1zdHJ1Y3QgeGVuX2h2bV9z
ZXRfbWVtX3R5cGUgewotICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLwotICAgIGRvbWlk
X3QgZG9taWQ7Ci0gICAgLyogTWVtb3J5IHR5cGUgKi8KLSAgICB1aW50MTZfdCBodm1tZW1fdHlw
ZTsKLSAgICAvKiBOdW1iZXIgb2YgcGFnZXMuICovCi0gICAgdWludDMyX3QgbnI7Ci0gICAgLyog
Rmlyc3QgcGZuLiAqLwotICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOwotfTsKLXR5cGVk
ZWYgc3RydWN0IHhlbl9odm1fc2V0X21lbV90eXBlIHhlbl9odm1fc2V0X21lbV90eXBlX3Q7Ci1E
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9tZW1fdHlwZV90KTsKLQotI2VuZGlm
IC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLwotCi0vKiBI
aW50IGZyb20gUFYgZHJpdmVycyBmb3IgcGFnZXRhYmxlIGRlc3RydWN0aW9uLiAqLwotI2RlZmlu
ZSBIVk1PUF9wYWdldGFibGVfZHlpbmcgICAgICAgIDkKLXN0cnVjdCB4ZW5faHZtX3BhZ2V0YWJs
ZV9keWluZyB7Ci0gICAgLyogRG9tYWluIHdpdGggYSBwYWdldGFibGUgYWJvdXQgdG8gYmUgZGVz
dHJveWVkLiAqLwotICAgIGRvbWlkX3QgIGRvbWlkOwotICAgIHVpbnQxNl90IHBhZFszXTsgLyog
YWxpZ24gbmV4dCBmaWVsZCBvbiA4LWJ5dGUgYm91bmRhcnkgKi8KLSAgICAvKiBndWVzdCBwaHlz
aWNhbCBhZGRyZXNzIG9mIHRoZSB0b3BsZXZlbCBwYWdldGFibGUgZHlpbmcgKi8KLSAgICB1aW50
NjRfdCBncGE7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9wYWdldGFibGVfZHlpbmcgeGVu
X2h2bV9wYWdldGFibGVfZHlpbmdfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1f
cGFnZXRhYmxlX2R5aW5nX3QpOwotCi0vKiBHZXQgdGhlIGN1cnJlbnQgWGVuIHRpbWUsIGluIG5h
bm9zZWNvbmRzIHNpbmNlIHN5c3RlbSBib290LiAqLwotI2RlZmluZSBIVk1PUF9nZXRfdGltZSAg
ICAgICAgICAgICAgMTAKLXN0cnVjdCB4ZW5faHZtX2dldF90aW1lIHsKLSAgICB1aW50NjRfdCBu
b3c7ICAgICAgLyogT1VUICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfdGltZSB4
ZW5faHZtX2dldF90aW1lX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF90
aW1lX3QpOwotCi0jZGVmaW5lIEhWTU9QX3hlbnRyYWNlICAgICAgICAgICAgICAxMQotc3RydWN0
IHhlbl9odm1feGVudHJhY2UgewotICAgIHVpbnQxNl90IGV2ZW50LCBleHRyYV9ieXRlczsKLSAg
ICB1aW50OF90IGV4dHJhW1RSQUNFX0VYVFJBX01BWCAqIHNpemVvZih1aW50MzJfdCldOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9odm1feGVudHJhY2UgeGVuX2h2bV94ZW50cmFjZV90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV94ZW50cmFjZV90KTsKLQotLyogRm9sbG93aW5n
IHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KLSNpZiBkZWZp
bmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQotLyogRGVwcmVjYXRlZCBi
eSBYRU5NRU1fYWNjZXNzX29wX3NldF9hY2Nlc3MgKi8KLSNkZWZpbmUgSFZNT1Bfc2V0X21lbV9h
Y2Nlc3MgICAgICAgIDEyCi0KLS8qIERlcHJlY2F0ZWQgYnkgWEVOTUVNX2FjY2Vzc19vcF9nZXRf
YWNjZXNzICovCi0jZGVmaW5lIEhWTU9QX2dldF9tZW1fYWNjZXNzICAgICAgICAxMwotCi0jZGVm
aW5lIEhWTU9QX2luamVjdF90cmFwICAgICAgICAgICAgMTQKLS8qIEluamVjdCBhIHRyYXAgaW50
byBhIFZDUFUsIHdoaWNoIHdpbGwgZ2V0IHRha2VuIHVwIG9uIHRoZSBuZXh0Ci0gKiBzY2hlZHVs
aW5nIG9mIGl0LiBOb3RlIHRoYXQgdGhlIGNhbGxlciBzaG91bGQga25vdyBlbm91Z2ggb2YgdGhl
Ci0gKiBzdGF0ZSBvZiB0aGUgQ1BVIGJlZm9yZSBpbmplY3RpbmcsIHRvIGtub3cgd2hhdCB0aGUg
ZWZmZWN0IG9mCi0gKiBpbmplY3RpbmcgdGhlIHRyYXAgd2lsbCBiZS4KLSAqLwotc3RydWN0IHhl
bl9odm1faW5qZWN0X3RyYXAgewotICAgIC8qIERvbWFpbiB0byBiZSBxdWVyaWVkLiAqLwotICAg
IGRvbWlkX3QgZG9taWQ7Ci0gICAgLyogVkNQVSAqLwotICAgIHVpbnQzMl90IHZjcHVpZDsKLSAg
ICAvKiBWZWN0b3IgbnVtYmVyICovCi0gICAgdWludDMyX3QgdmVjdG9yOwotICAgIC8qIFRyYXAg
dHlwZSAoSFZNT1BfVFJBUF8qKSAqLwotICAgIHVpbnQzMl90IHR5cGU7Ci0vKiBOQi4gVGhpcyBl
bnVtZXJhdGlvbiBwcmVjaXNlbHkgbWF0Y2hlcyBodm0uaDpYODZfRVZFTlRUWVBFXyogKi8KLSMg
ZGVmaW5lIEhWTU9QX1RSQVBfZXh0X2ludCAgICAwIC8qIGV4dGVybmFsIGludGVycnVwdCAqLwot
IyBkZWZpbmUgSFZNT1BfVFJBUF9ubWkgICAgICAgIDIgLyogbm1pICovCi0jIGRlZmluZSBIVk1P
UF9UUkFQX2h3X2V4YyAgICAgMyAvKiBoYXJkd2FyZSBleGNlcHRpb24gKi8KLSMgZGVmaW5lIEhW
TU9QX1RSQVBfc3dfaW50ICAgICA0IC8qIHNvZnR3YXJlIGludGVycnVwdCAoQ0Qgbm4pICovCi0j
IGRlZmluZSBIVk1PUF9UUkFQX3ByaV9zd19leGMgNSAvKiBJQ0VCUCAoRjEpICovCi0jIGRlZmlu
ZSBIVk1PUF9UUkFQX3N3X2V4YyAgICAgNiAvKiBJTlQzIChDQyksIElOVE8gKENFKSAqLwotICAg
IC8qIEVycm9yIGNvZGUsIG9yIH4wdSB0byBza2lwICovCi0gICAgdWludDMyX3QgZXJyb3JfY29k
ZTsKLSAgICAvKiBJbnRydWN0aW9uIGxlbmd0aCAqLwotICAgIHVpbnQzMl90IGluc25fbGVuOwot
ICAgIC8qIENSMiBmb3IgcGFnZSBmYXVsdHMgKi8KLSAgICB1aW50NjRfYWxpZ25lZF90IGNyMjsK
LX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2luamVjdF90cmFwIHhlbl9odm1faW5qZWN0X3Ry
YXBfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1faW5qZWN0X3RyYXBfdCk7Ci0K
LSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8K
LQotI2RlZmluZSBIVk1PUF9nZXRfbWVtX3R5cGUgICAgMTUKLS8qIFJldHVybiBodm1tZW1fdHlw
ZV90IGZvciB0aGUgc3BlY2lmaWVkIHBmbi4gKi8KLXN0cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlw
ZSB7Ci0gICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICovCi0gICAgZG9taWRfdCBkb21pZDsK
LSAgICAvKiBPVVQgdmFyaWFibGUuICovCi0gICAgdWludDE2X3QgbWVtX3R5cGU7Ci0gICAgdWlu
dDE2X3QgcGFkWzJdOyAvKiBhbGlnbiBuZXh0IGZpZWxkIG9uIDgtYnl0ZSBib3VuZGFyeSAqLwot
ICAgIC8qIElOIHZhcmlhYmxlLiAqLwotICAgIHVpbnQ2NF90IHBmbjsKLX07Ci10eXBlZGVmIHN0
cnVjdCB4ZW5faHZtX2dldF9tZW1fdHlwZSB4ZW5faHZtX2dldF9tZW1fdHlwZV90OwotREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9nZXRfbWVtX3R5cGVfdCk7Ci0KLS8qIEZvbGxvd2lu
ZyB0b29scy1vbmx5IGludGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCi0jaWYgZGVm
aW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCi0KLS8qIE1TSSBpbmplY3Rp
b24gZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KLSNkZWZpbmUgSFZNT1BfaW5qZWN0X21zaSAgICAg
ICAgIDE2Ci1zdHJ1Y3QgeGVuX2h2bV9pbmplY3RfbXNpIHsKLSAgICAvKiBEb21haW4gdG8gYmUg
aW5qZWN0ZWQgKi8KLSAgICBkb21pZF90ICAgZG9taWQ7Ci0gICAgLyogRGF0YSAtLSBsb3dlciAz
MiBiaXRzICovCi0gICAgdWludDMyX3QgIGRhdGE7Ci0gICAgLyogQWRkcmVzcyAoMHhmZWV4eHh4
eCkgKi8KLSAgICB1aW50NjRfdCAgYWRkcjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2lu
amVjdF9tc2kgeGVuX2h2bV9pbmplY3RfbXNpX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5faHZtX2luamVjdF9tc2lfdCk7Ci0KLS8qCi0gKiBJT1JFUSBTZXJ2ZXJzCi0gKgotICogVGhl
IGludGVyZmFjZSBiZXR3ZWVuIGFuIEkvTyBlbXVsYXRvciBhbiBYZW4gaXMgY2FsbGVkIGFuIElP
UkVRIFNlcnZlci4KLSAqIEEgZG9tYWluIHN1cHBvcnRzIGEgc2luZ2xlICdsZWdhY3knIElPUkVR
IFNlcnZlciB3aGljaCBpcyBpbnN0YW50aWF0ZWQgaWYKLSAqIHBhcmFtZXRlci4uLgotICoKLSAq
IEhWTV9QQVJBTV9JT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcg
dGhlIHN5bmNocm9ub3VzCi0gKiBpb3JlcSBzdHJ1Y3R1cmVzKSwgb3IuLi4KLSAqIEhWTV9QQVJB
TV9CVUZJT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcgdGhlIGJ1
ZmZlcmVkCi0gKiBpb3JlcSByaW5nKSwgb3IuLi4KLSAqIEhWTV9QQVJBTV9CVUZJT1JFUV9FVlRD
SE4gaXMgcmVhZCAodG8gZ2V0IHRoZSBldmVudCBjaGFubmVsIHRoYXQgWGVuIHVzZXMKLSAqIHRv
IHJlcXVlc3QgYnVmZmVyZWQgSS9PIGVtdWxhdGlvbikuCi0gKiAKLSAqIFRoZSBmb2xsb3dpbmcg
aHlwZXJjYWxscyBmYWNpbGl0YXRlIHRoZSBjcmVhdGlvbiBvZiBJT1JFUSBTZXJ2ZXJzIGZvcgot
ICogJ3NlY29uZGFyeScgZW11bGF0b3JzIHdoaWNoIGFyZSBpbnZva2VkIHRvIGltcGxlbWVudCBw
b3J0IEkvTywgbWVtb3J5LCBvcgotICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgd2hpY2ggdGhl
eSBleHBsaWNpdGx5IHJlZ2lzdGVyLgotICovCi0KLXR5cGVkZWYgdWludDE2X3QgaW9zZXJ2aWRf
dDsKLQotLyoKLSAqIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3
IElPUkVRIFNlcnZlciBmb3IgYSBzZWNvbmRhcnkKLSAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVtdWxhdG9yIHNlcnZpY2luZyBkb21haW4gPGRvbWlkPi4KLSAqCi0gKiBUaGUgPGlkPiBo
YW5kZWQgYmFjayBpcyB1bmlxdWUgZm9yIDxkb21pZD4uIElmIDxoYW5kbGVfYnVmaW9yZXE+IGlz
IHplcm8KLSAqIHRoZSBidWZmZXJlZCBpb3JlcSByaW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBh
bmQgaGVuY2UgYWxsIGVtdWxhdGlvbgotICogcmVxdWVzdGVzIHRvIHRoaXMgc2VydmVyIHdpbGwg
YmUgc3luY2hyb25vdXMuCi0gKi8KLSNkZWZpbmUgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlciAx
Nwotc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21p
ZDsgICAgICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgdWludDhf
dCBoYW5kbGVfYnVmaW9yZXE7IC8qIElOIC0gc2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQg
aW9yZXFzICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAgICAgICAgIC8qIE9VVCAtIHNlcnZlciBp
ZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB4ZW5f
aHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX2dldF9pb3JlcV9zZXJ2
ZXJfaW5mbzogR2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGFjY2VzcwotICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPi4gCi0gKgotICog
VGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJl
cyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNl
cyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCi0gKiBob3N0ZWQgaW4gZG9tYWluIDxk
b21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KLSAqIHJlc3BlY3Rp
dmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVy
ZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8g
ZXZlbnQgY2hhbm5lbAotICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRo
ZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgotICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVl
c3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVyZXMgaW4g
PGlvcmVxX3Bmbj4pLgotICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVm
ZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVkIGJhY2sg
aW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KLSAq
LwotI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMTgKLXN0cnVjdCB4ZW5faHZt
X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgICAg
ICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsg
ICAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCi0gICAgZXZ0Y2huX3BvcnRfdCBi
dWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KLSAgICB1aW50
NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8KLSAg
ICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9yZXEg
cGZuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8g
eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpOwotCi0vKgotICogSFZNX21hcF9pb19y
YW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4gPGRv
bWlkPgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbXVsYXRpb24g
YnkgdGhlIGNsaWVudCBvZiBJT1JFUQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcnZlciA8aWQ+Ci0gKiBIVk1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6
IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIDxkb21pZD4KLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElPUkVR
Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+Ci0g
KgotICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRlZDog
cG9ydCBJL08sIG1lbW9yeSBhY2Nlc3NlcwotICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNjZXNz
ZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3RlcyB3aGljaCB0eXBlIG9mIHJhbmdlCi0gKiB0aGUg
PHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgotICog
UENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJlIHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9kZXZp
Y2UvZnVuY3Rpb24gdmFsdWVzCi0gKiB3aGljaCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0aGUg
SFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3JvIGJlbG93LgotICoKLSAqIE5PVEU6IHVubGVzcyBh
biBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBwZWQK
LSAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gdGhh
dCBlbXVsYXRvci4KLSAqLwotI2RlZmluZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2Vy
dmVyIDE5Ci0jZGVmaW5lIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDIw
Ci1zdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAg
ICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7
ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KLSAgICB1aW50MzJfdCB0eXBlOyAg
ICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9f
UkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JB
TkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX1BD
SSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLwotICAgIHVpbnQ2NF9h
bGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBvZiBy
YW5nZSAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9pb19y
YW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsKLQot
I2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIsZCxmKSAgICAgICAgICAgICAgICAgXAotCSgoKChz
KSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgXAotCSAoKChiKSAmIDB4ZmYp
IDw8IDgpIHwgICAgICAgICAgICAgICAgICAgICAgXAotCSAoKChkKSAmIDB4MWYpIDw8IDMpIHwg
ICAgICAgICAgICAgICAgICAgICAgXAotCSAoKGYpICYgMHgwNykpCi0KLS8qCi0gKiBIVk1PUF9k
ZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2Vydmlj
aW5nIGRvbWFpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb21pZD4uCi0gKgot
ICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVyZWdp
c3RlcmVkLgotICovCi0jZGVmaW5lIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCi1zdHJ1
Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsgLyog
SU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAvKiBJTiAt
IHNlcnZlciBpZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3JlcV9z
ZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90OwotREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX3Nl
dF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2ZXIg
PGlkPiBzZXJ2aWNpbmcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiA8
ZG9taWQ+LgotICoKLSAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFueSBl
bXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMgaW4gdGhlCi0gKiBlbmFibGVkIHN0YXRlLgot
ICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3JlcV9m
biAoc2VlCi0gKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmluZ2Z1
bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlzIGluCi0gKiB0aGUgZW5hYmxlZCBzdGF0ZS4KLSAq
LwotI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDIyCi1zdHJ1Y3QgeGVuX2h2
bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKLSAgICBkb21pZF90IGRvbWlkOyAgIC8qIElOIC0g
ZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAtIHNl
cnZlciBpZCAqLwotICAgIHVpbnQ4X3QgZW5hYmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLyAgICAK
LX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeGVuX2h2
bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
aHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCk7Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVO
X18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KLQotI2lmIGRlZmluZWQoX19pMzg2X18p
IHx8IGRlZmluZWQoX194ODZfNjRfXykKLQotLyoKLSAqIEhWTU9QX3NldF9ldnRjaG5fdXBjYWxs
X3ZlY3RvcjogU2V0IGEgPHZlY3Rvcj4gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgZXZlbnQKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCB1cGNhbGxzIG9uIHRoZSBz
cGVjaWZpZWQgPHZjcHU+LiBJZiBzZXQsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMgdmVjdG9yIHdpbGwgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZQotICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gY2FsbGJhY2sgdmlhIChzZWUgSFZN
X1BBUkFNX0NBTExCQUNLX0lSUSkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5kIGhlbmNlIGFsbG93cyBIVk0gZ3Vlc3RzIHRvIGJpbmQgZXZlbnQKLSAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnQgY2hhbm5lbHMgdG8gYSB2Y3B1IG90aGVyIHRoYW4g
MC4KLSAqLwotI2RlZmluZSBIVk1PUF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3IgMjMKLXN0cnVj
dCB4ZW5faHZtX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3RvciB7Ci0gICAgdWludDMyX3QgdmNwdTsK
LSAgICB1aW50OF90IHZlY3RvcjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9ldnRj
aG5fdXBjYWxsX3ZlY3RvciB4ZW5faHZtX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3Rvcl90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdCk7
Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICov
Ci0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18gKi8KLQotLyoKLSAqIExv
Y2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIKLSAqIGMt
YmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6IG5p
bAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9odm0vcGFyYW1zLmggYi9p
bmNsdWRlL3hlbi9odm0vcGFyYW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNj
NTEwNzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vaHZtL3BhcmFtcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
LSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0g
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
Ci0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSFZNX1BBUkFNU19IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fCi0K
LSNpbmNsdWRlICJodm1fb3AuaCIKLQotLyoKLSAqIFBhcmFtZXRlciBzcGFjZSBmb3IgSFZNT1Bf
e3NldCxnZXR9X3BhcmFtLgotICovCi0KLS8qCi0gKiBIb3cgc2hvdWxkIENQVTAgZXZlbnQtY2hh
bm5lbCBub3RpZmljYXRpb25zIGJlIGRlbGl2ZXJlZD8KLSAqIHZhbFs2Mzo1Nl0gPT0gMDogdmFs
WzU1OjBdIGlzIGEgZGVsaXZlcnkgR1NJIChHbG9iYWwgU3lzdGVtIEludGVycnVwdCkuCi0gKiB2
YWxbNjM6NTZdID09IDE6IHZhbFs1NTowXSBpcyBhIGRlbGl2ZXJ5IFBDSSBJTlR4IGxpbmUsIGFz
IGZvbGxvd3M6Ci0gKiAgICAgICAgICAgICAgICAgIERvbWFpbiA9IHZhbFs0NzozMl0sIEJ1cyAg
PSB2YWxbMzE6MTZdLAotICogICAgICAgICAgICAgICAgICBEZXZGbiAgPSB2YWxbMTU6IDhdLCBJ
bnRYID0gdmFsWyAxOiAwXQotICogdmFsWzYzOjU2XSA9PSAyOiB2YWxbNzowXSBpcyBhIHZlY3Rv
ciBudW1iZXIsIGNoZWNrIGZvcgotICogICAgICAgICAgICAgICAgICBYRU5GRUFUX2h2bV9jYWxs
YmFja192ZWN0b3IgdG8ga25vdyBpZiB0aGlzIGRlbGl2ZXJ5Ci0gKiAgICAgICAgICAgICAgICAg
IG1ldGhvZCBpcyBhdmFpbGFibGUuCi0gKiBJZiB2YWwgPT0gMCB0aGVuIENQVTAgZXZlbnQtY2hh
bm5lbCBub3RpZmljYXRpb25zIGFyZSBub3QgZGVsaXZlcmVkLgotICovCi0jZGVmaW5lIEhWTV9Q
QVJBTV9DQUxMQkFDS19JUlEgMAotCi0vKgotICogVGhlc2UgYXJlIG5vdCB1c2VkIGJ5IFhlbi4g
VGhleSBhcmUgaGVyZSBmb3IgY29udmVuaWVuY2Ugb2YgSFZNLWd1ZXN0Ci0gKiB4ZW5idXMgaW1w
bGVtZW50YXRpb25zLgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9QRk4gICAgMQotI2Rl
ZmluZSBIVk1fUEFSQU1fU1RPUkVfRVZUQ0hOIDIKLQotI2RlZmluZSBIVk1fUEFSQU1fUEFFX0VO
QUJMRUQgIDQKLQotI2RlZmluZSBIVk1fUEFSQU1fSU9SRVFfUEZOICAgIDUKLQotI2RlZmluZSBI
Vk1fUEFSQU1fQlVGSU9SRVFfUEZOIDYKLSNkZWZpbmUgSFZNX1BBUkFNX0JVRklPUkVRX0VWVENI
TiAyNgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotCi0v
KgotICogVmlyaWRpYW4gZW5saWdodGVubWVudHMKLSAqCi0gKiAoU2VlIGh0dHA6Ly9kb3dubG9h
ZC5taWNyb3NvZnQuY29tL2Rvd25sb2FkL0EvQi80L0FCNDNBMzRFLUJERDAtNEZBNi1CREVGLTc5
RUVGMTZFODgwQi9IeXBlcnZpc29yJTIwVG9wJTIwTGV2ZWwlMjBGdW5jdGlvbmFsJTIwU3BlY2lm
aWNhdGlvbiUyMHY0LjAuZG9jeCkKLSAqCi0gKiBUbyBleHBvc2UgdmlyaWRpYW4gZW5saWdodGVu
bWVudHMgdG8gdGhlIGd1ZXN0IHNldCB0aGlzIHBhcmFtZXRlcgotICogdG8gdGhlIGRlc2lyZWQg
ZmVhdHVyZSBtYXNrLiBUaGUgYmFzZSBmZWF0dXJlIHNldCBtdXN0IGJlIHByZXNlbnQKLSAqIGlu
IGFueSB2YWxpZCBmZWF0dXJlIG1hc2suCi0gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX1ZJUklESUFO
ICAgICA5Ci0KLS8qIEJhc2UrRnJlcSB2aXJpZGlhbiBmZWF0dXJlIHNldHM6Ci0gKgotICogLSBI
eXBlcmNhbGwgTVNScyAoSFZfWDY0X01TUl9HVUVTVF9PU19JRCBhbmQgSFZfWDY0X01TUl9IWVBF
UkNBTEwpCi0gKiAtIEFQSUMgYWNjZXNzIE1TUnMgKEhWX1g2NF9NU1JfRU9JLCBIVl9YNjRfTVNS
X0lDUiBhbmQgSFZfWDY0X01TUl9UUFIpCi0gKiAtIFZpcnR1YWwgUHJvY2Vzc29yIGluZGV4IE1T
UiAoSFZfWDY0X01TUl9WUF9JTkRFWCkKLSAqIC0gVGltZXIgZnJlcXVlbmN5IE1TUnMgKEhWX1g2
NF9NU1JfVFNDX0ZSRVFVRU5DWSBhbmQKLSAqICAgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWSkK
LSAqLwotI2RlZmluZSBfSFZNUFZfYmFzZV9mcmVxIDAKLSNkZWZpbmUgSFZNUFZfYmFzZV9mcmVx
ICAoMSA8PCBfSFZNUFZfYmFzZV9mcmVxKQotCi0vKiBGZWF0dXJlIHNldCBtb2RpZmljYXRpb25z
ICovCi0KLS8qIERpc2FibGUgdGltZXIgZnJlcXVlbmN5IE1TUnMgKEhWX1g2NF9NU1JfVFNDX0ZS
RVFVRU5DWSBhbmQKLSAqIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1kpLgotICogVGhpcyBtb2Rp
ZmljYXRpb24gcmVzdG9yZXMgdGhlIHZpcmlkaWFuIGZlYXR1cmUgc2V0IHRvIHRoZQotICogb3Jp
Z2luYWwgJ2Jhc2UnIHNldCBleHBvc2VkIGluIHJlbGVhc2VzIHByaW9yIHRvIFhlbiA0LjQuCi0g
Ki8KLSNkZWZpbmUgX0hWTVBWX25vX2ZyZXEgMQotI2RlZmluZSBIVk1QVl9ub19mcmVxICAoMSA8
PCBfSFZNUFZfbm9fZnJlcSkKLQotLyogRW5hYmxlIFBhcnRpdGlvbiBUaW1lIFJlZmVyZW5jZSBD
b3VudGVyIChIVl9YNjRfTVNSX1RJTUVfUkVGX0NPVU5UKSAqLwotI2RlZmluZSBfSFZNUFZfdGlt
ZV9yZWZfY291bnQgMgotI2RlZmluZSBIVk1QVl90aW1lX3JlZl9jb3VudCAgKDEgPDwgX0hWTVBW
X3RpbWVfcmVmX2NvdW50KQotCi0jZGVmaW5lIEhWTVBWX2ZlYXR1cmVfbWFzayBcCi0JKEhWTVBW
X2Jhc2VfZnJlcSB8IFwKLQkgSFZNUFZfbm9fZnJlcSB8IFwKLQkgSFZNUFZfdGltZV9yZWZfY291
bnQpCi0KLSNlbmRpZgotCi0vKgotICogU2V0IG1vZGUgZm9yIHZpcnR1YWwgdGltZXJzIChjdXJy
ZW50bHkgeDg2IG9ubHkpOgotICogIGRlbGF5X2Zvcl9taXNzZWRfdGlja3MgKGRlZmF1bHQpOgot
ICogICBEbyBub3QgYWR2YW5jZSBhIHZjcHUncyB0aW1lIGJleW9uZCB0aGUgY29ycmVjdCBkZWxp
dmVyeSB0aW1lIGZvcgotICogICBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUg
dG8gcHJlZW1wdGlvbi4gRGVsaXZlciBtaXNzZWQKLSAqICAgaW50ZXJydXB0cyB3aGVuIHRoZSB2
Y3B1IGlzIHJlc2NoZWR1bGVkIGFuZCBhZHZhbmNlIHRoZSB2Y3B1J3MgdmlydHVhbAotICogICB0
aW1lIHN0ZXB3aXNlIGZvciBlYWNoIG9uZS4KLSAqICBub19kZWxheV9mb3JfbWlzc2VkX3RpY2tz
OgotICogICBBcyBhYm92ZSwgbWlzc2VkIGludGVycnVwdHMgYXJlIGRlbGl2ZXJlZCwgYnV0IGd1
ZXN0IHRpbWUgYWx3YXlzIHRyYWNrcwotICogICB3YWxsY2xvY2sgKGkuZS4sIHJlYWwpIHRpbWUg
d2hpbGUgZG9pbmcgc28uCi0gKiAgbm9fbWlzc2VkX3RpY2tzX3BlbmRpbmc6Ci0gKiAgIE5vIG1p
c3NlZCBpbnRlcnJ1cHRzIGFyZSBoZWxkIHBlbmRpbmcuIEluc3RlYWQsIHRvIGVuc3VyZSB0aWNr
cyBhcmUKLSAqICAgZGVsaXZlcmVkIGF0IHNvbWUgbm9uLXplcm8gcmF0ZSwgaWYgd2UgZGV0ZWN0
IG1pc3NlZCB0aWNrcyB0aGVuIHRoZQotICogICBpbnRlcm5hbCB0aWNrIGFsYXJtIGlzIG5vdCBk
aXNhYmxlZCBpZiB0aGUgVkNQVSBpcyBwcmVlbXB0ZWQgZHVyaW5nIHRoZQotICogICBuZXh0IHRp
Y2sgcGVyaW9kLgotICogIG9uZV9taXNzZWRfdGlja19wZW5kaW5nOgotICogICBNaXNzZWQgaW50
ZXJydXB0cyBhcmUgY29sbGFwc2VkIHRvZ2V0aGVyIGFuZCBkZWxpdmVyZWQgYXMgb25lICdsYXRl
IHRpY2snLgotICogICBHdWVzdCB0aW1lIGFsd2F5cyB0cmFja3Mgd2FsbGNsb2NrIChpLmUuLCBy
ZWFsKSB0aW1lLgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9USU1FUl9NT0RFICAgMTAKLSNkZWZp
bmUgSFZNUFRNX2RlbGF5X2Zvcl9taXNzZWRfdGlja3MgICAgMAotI2RlZmluZSBIVk1QVE1fbm9f
ZGVsYXlfZm9yX21pc3NlZF90aWNrcyAxCi0jZGVmaW5lIEhWTVBUTV9ub19taXNzZWRfdGlja3Nf
cGVuZGluZyAgIDIKLSNkZWZpbmUgSFZNUFRNX29uZV9taXNzZWRfdGlja19wZW5kaW5nICAgMwot
Ci0vKiBCb29sZWFuOiBFbmFibGUgdmlydHVhbCBIUEVUIChoaWdoLXByZWNpc2lvbiBldmVudCB0
aW1lcik/ICh4ODYtb25seSkgKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0hQRVRfRU5BQkxFRCAxMQot
Ci0vKiBJZGVudGl0eS1tYXAgcGFnZSBkaXJlY3RvcnkgdXNlZCBieSBJbnRlbCBFUFQgd2hlbiBD
UjAuUEc9MC4gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0lERU5UX1BUICAgICAxMgotCi0vKiBEZXZp
Y2UgTW9kZWwgZG9tYWluLCBkZWZhdWx0cyB0byAwLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fRE1f
RE9NQUlOICAgIDEzCi0KLS8qIEFDUEkgUyBzdGF0ZTogY3VycmVudGx5IHN1cHBvcnQgUzAgYW5k
IFMzIG9uIHg4Ni4gKi8KLSNkZWZpbmUgSFZNX1BBUkFNX0FDUElfU19TVEFURSAxNAotCi0vKiBU
U1MgdXNlZCBvbiBJbnRlbCB3aGVuIENSMC5QRT0wLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fVk04
Nl9UU1MgICAgIDE1Ci0KLS8qIEJvb2xlYW46IEVuYWJsZSBhbGlnbmluZyBhbGwgcGVyaW9kaWMg
dnB0cyB0byByZWR1Y2UgaW50ZXJydXB0cyAqLwotI2RlZmluZSBIVk1fUEFSQU1fVlBUX0FMSUdO
ICAgIDE2Ci0KLS8qIENvbnNvbGUgZGVidWcgc2hhcmVkIG1lbW9yeSByaW5nIGFuZCBldmVudCBj
aGFubmVsICovCi0jZGVmaW5lIEhWTV9QQVJBTV9DT05TT0xFX1BGTiAgICAxNwotI2RlZmluZSBI
Vk1fUEFSQU1fQ09OU09MRV9FVlRDSE4gMTgKLQotLyoKLSAqIFNlbGVjdCBsb2NhdGlvbiBvZiBB
Q1BJIFBNMWEgYW5kIFRNUiBjb250cm9sIGJsb2Nrcy4gQ3VycmVudGx5IHR3byBsb2NhdGlvbnMK
LSAqIGFyZSBzdXBwb3J0ZWQsIHNwZWNpZmllZCBieSB2ZXJzaW9uIDAgb3IgMSBpbiB0aGlzIHBh
cmFtZXRlcjoKLSAqICAgLSAwOiBkZWZhdWx0LCB1c2UgdGhlIG9sZCBhZGRyZXNzZXMKLSAqICAg
ICAgICBQTTFBX0VWVCA9PSAweDFmNDA7IFBNMUFfQ05UID09IDB4MWY0NDsgUE1fVE1SID09IDB4
MWY0OAotICogICAtIDE6IHVzZSB0aGUgbmV3IGRlZmF1bHQgcWVtdSBhZGRyZXNzZXMKLSAqICAg
ICAgICBQTTFBX0VWVCA9PSAweGIwMDA7IFBNMUFfQ05UID09IDB4YjAwNDsgUE1fVE1SID09IDB4
YjAwOAotICogWW91IGNhbiBmaW5kIHRoZXNlIGFkZHJlc3MgZGVmaW5pdGlvbnMgaW4gPGh2bS9p
b3JlcS5oPgotICovCi0jZGVmaW5lIEhWTV9QQVJBTV9BQ1BJX0lPUE9SVFNfTE9DQVRJT04gMTkK
LQotLyogRW5hYmxlIGJsb2NraW5nIG1lbW9yeSBldmVudHMsIGFzeW5jIG9yIHN5bmMgKHBhdXNl
IHZjcHUgdW50aWwgcmVzcG9uc2UpIAotICogb25jaGFuZ2Vvbmx5IGluZGljYXRlcyBtZXNzYWdl
cyBvbmx5IG9uIGEgY2hhbmdlIG9mIHZhbHVlICovCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllf
RVZFTlRfQ1IwICAgICAgICAgIDIwCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1Iz
ICAgICAgICAgIDIxCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1I0ICAgICAgICAg
IDIyCi0jZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfSU5UMyAgICAgICAgIDIzCi0jZGVm
aW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfU0lOR0xFX1NURVAgIDI1Ci0jZGVmaW5lIEhWTV9Q
QVJBTV9NRU1PUllfRVZFTlRfTVNSICAgICAgICAgIDMwCi0KLSNkZWZpbmUgSFZNUE1FX01PREVf
TUFTSyAgICAgICAoMyA8PCAwKQotI2RlZmluZSBIVk1QTUVfbW9kZV9kaXNhYmxlZCAgIDAKLSNk
ZWZpbmUgSFZNUE1FX21vZGVfYXN5bmMgICAgICAxCi0jZGVmaW5lIEhWTVBNRV9tb2RlX3N5bmMg
ICAgICAgMgotI2RlZmluZSBIVk1QTUVfb25jaGFuZ2Vvbmx5ICAgICgxIDw8IDIpCi0KLS8qIEJv
b2xlYW46IEVuYWJsZSBuZXN0ZWRodm0gKGh2bSBvbmx5KSAqLwotI2RlZmluZSBIVk1fUEFSQU1f
TkVTVEVESFZNICAgIDI0Ci0KLS8qIFBhcmFtcyBmb3IgdGhlIG1lbSBldmVudCByaW5ncyAqLwot
I2RlZmluZSBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOICAgMjcKLSNkZWZpbmUgSFZNX1BBUkFN
X0FDQ0VTU19SSU5HX1BGTiAgIDI4Ci0jZGVmaW5lIEhWTV9QQVJBTV9TSEFSSU5HX1JJTkdfUEZO
ICAyOQotCi0vKiBTSFVURE9XTl8qIGFjdGlvbiBpbiBjYXNlIG9mIGEgdHJpcGxlIGZhdWx0ICov
Ci0jZGVmaW5lIEhWTV9QQVJBTV9UUklQTEVfRkFVTFRfUkVBU09OIDMxCi0KLSNkZWZpbmUgSFZN
X1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4gMzIKLSNkZWZpbmUgSFZNX1BBUkFNX05SX0lPUkVRX1NF
UlZFUl9QQUdFUyAzMwotCi0vKiBMb2NhdGlvbiBvZiB0aGUgVk0gR2VuZXJhdGlvbiBJRCBpbiBn
dWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAqLwotI2RlZmluZSBIVk1fUEFSQU1fVk1fR0VO
RVJBVElPTl9JRF9BRERSIDM0Ci0KLSNkZWZpbmUgSFZNX05SX1BBUkFNUyAgICAgICAgICAzNQot
Ci0jZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fICovCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi9pby94c193aXJlLmggYi9pbmNsdWRlL3hlbi9pby94c193aXJlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMGNkYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94
ZW4vaW8veHNfd2lyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBE
ZXRhaWxzIG9mIHRoZSAid2lyZSIgcHJvdG9jb2wgYmV0d2VlbiBYZW4gU3RvcmUgRGFlbW9uIGFu
ZCBjbGllbnQKLSAqIGxpYnJhcnkgb3IgZ3Vlc3Qga2VybmVsLgotICoKLSAqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJp
Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
LSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgUnVzdHkgUnVzc2VsbCBJQk0gQ29ycG9yYXRpb24KLSAqLwotCi0j
aWZuZGVmIF9YU19XSVJFX0gKLSNkZWZpbmUgX1hTX1dJUkVfSAotCi1lbnVtIHhzZF9zb2NrbXNn
X3R5cGUKLXsKLSAgICBYU19ERUJVRywKLSAgICBYU19ESVJFQ1RPUlksCi0gICAgWFNfUkVBRCwK
LSAgICBYU19HRVRfUEVSTVMsCi0gICAgWFNfV0FUQ0gsCi0gICAgWFNfVU5XQVRDSCwKLSAgICBY
U19UUkFOU0FDVElPTl9TVEFSVCwKLSAgICBYU19UUkFOU0FDVElPTl9FTkQsCi0gICAgWFNfSU5U
Uk9EVUNFLAotICAgIFhTX1JFTEVBU0UsCi0gICAgWFNfR0VUX0RPTUFJTl9QQVRILAotICAgIFhT
X1dSSVRFLAotICAgIFhTX01LRElSLAotICAgIFhTX1JNLAotICAgIFhTX1NFVF9QRVJNUywKLSAg
ICBYU19XQVRDSF9FVkVOVCwKLSAgICBYU19FUlJPUiwKLSAgICBYU19JU19ET01BSU5fSU5UUk9E
VUNFRCwKLSAgICBYU19SRVNVTUUsCi0gICAgWFNfU0VUX1RBUkdFVCwKLSAgICBYU19SRVNUUklD
VCwKLSAgICBYU19SRVNFVF9XQVRDSEVTLAotCi0gICAgWFNfSU5WQUxJRCA9IDB4ZmZmZiAvKiBH
dWFyYW50ZWVkIHRvIHJlbWFpbiBhbiBpbnZhbGlkIHR5cGUgKi8KLX07Ci0KLSNkZWZpbmUgWFNf
V1JJVEVfTk9ORSAiTk9ORSIKLSNkZWZpbmUgWFNfV1JJVEVfQ1JFQVRFICJDUkVBVEUiCi0jZGVm
aW5lIFhTX1dSSVRFX0NSRUFURV9FWENMICJDUkVBVEV8RVhDTCIKLQotLyogV2UgaGFuZCBlcnJv
cnMgYXMgc3RyaW5ncywgZm9yIHBvcnRhYmlsaXR5LiAqLwotc3RydWN0IHhzZF9lcnJvcnMKLXsK
LSAgICBpbnQgZXJybnVtOwotICAgIGNvbnN0IGNoYXIgKmVycnN0cmluZzsKLX07Ci0jaWZkZWYg
RUlOVkFMCi0jZGVmaW5lIFhTRF9FUlJPUih4KSB7IHgsICN4IH0KLS8qIExJTlRFRDogc3RhdGlj
IHVudXNlZCAqLwotc3RhdGljIHN0cnVjdCB4c2RfZXJyb3JzIHhzZF9lcnJvcnNbXQotI2lmIGRl
ZmluZWQoX19HTlVDX18pCi1fX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQotI2VuZGlmCi0gICAgPSB7
Ci0gICAgWFNEX0VSUk9SKEVJTlZBTCksCi0gICAgWFNEX0VSUk9SKEVBQ0NFUyksCi0gICAgWFNE
X0VSUk9SKEVFWElTVCksCi0gICAgWFNEX0VSUk9SKEVJU0RJUiksCi0gICAgWFNEX0VSUk9SKEVO
T0VOVCksCi0gICAgWFNEX0VSUk9SKEVOT01FTSksCi0gICAgWFNEX0VSUk9SKEVOT1NQQyksCi0g
ICAgWFNEX0VSUk9SKEVJTyksCi0gICAgWFNEX0VSUk9SKEVOT1RFTVBUWSksCi0gICAgWFNEX0VS
Uk9SKEVOT1NZUyksCi0gICAgWFNEX0VSUk9SKEVST0ZTKSwKLSAgICBYU0RfRVJST1IoRUJVU1kp
LAotICAgIFhTRF9FUlJPUihFQUdBSU4pLAotICAgIFhTRF9FUlJPUihFSVNDT05OKSwKLSAgICBY
U0RfRVJST1IoRTJCSUcpCi19OwotI2VuZGlmCi0KLXN0cnVjdCB4c2Rfc29ja21zZwotewotICAg
IHVpbnQzMl90IHR5cGU7ICAvKiBYU18/Pz8gKi8KLSAgICB1aW50MzJfdCByZXFfaWQ7LyogUmVx
dWVzdCBpZGVudGlmaWVyLCBlY2hvZWQgaW4gZGFlbW9uJ3MgcmVzcG9uc2UuICAqLwotICAgIHVp
bnQzMl90IHR4X2lkOyAvKiBUcmFuc2FjdGlvbiBpZCAoMCBpZiBub3QgcmVsYXRlZCB0byBhIHRy
YW5zYWN0aW9uKS4gKi8KLSAgICB1aW50MzJfdCBsZW47ICAgLyogTGVuZ3RoIG9mIGRhdGEgZm9s
bG93aW5nIHRoaXMuICovCi0KLSAgICAvKiBHZW5lcmFsbHkgZm9sbG93ZWQgYnkgbnVsLXRlcm1p
bmF0ZWQgc3RyaW5nKHMpLiAqLwotfTsKLQotZW51bSB4c193YXRjaF90eXBlCi17Ci0gICAgWFNf
V0FUQ0hfUEFUSCA9IDAsCi0gICAgWFNfV0FUQ0hfVE9LRU4KLX07Ci0KLS8qCi0gKiBgaW5jb250
ZW50cyAxNTAgeGVuc3RvcmVfc3RydWN0IFhlblN0b3JlIHdpcmUgcHJvdG9jb2wuCi0gKgotICog
SW50ZXItZG9tYWluIHNoYXJlZCBtZW1vcnkgY29tbXVuaWNhdGlvbnMuICovCi0jZGVmaW5lIFhF
TlNUT1JFX1JJTkdfU0laRSAxMDI0Ci10eXBlZGVmIHVpbnQzMl90IFhFTlNUT1JFX1JJTkdfSURY
OwotI2RlZmluZSBNQVNLX1hFTlNUT1JFX0lEWChpZHgpICgoaWR4KSAmIChYRU5TVE9SRV9SSU5H
X1NJWkUtMSkpCi1zdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVyZmFjZSB7Ci0gICAgY2hhciBy
ZXFbWEVOU1RPUkVfUklOR19TSVpFXTsgLyogUmVxdWVzdHMgdG8geGVuc3RvcmUgZGFlbW9uLiAq
LwotICAgIGNoYXIgcnNwW1hFTlNUT1JFX1JJTkdfU0laRV07IC8qIFJlcGxpZXMgYW5kIGFzeW5j
IHdhdGNoIGV2ZW50cy4gKi8KLSAgICBYRU5TVE9SRV9SSU5HX0lEWCByZXFfY29ucywgcmVxX3By
b2Q7Ci0gICAgWEVOU1RPUkVfUklOR19JRFggcnNwX2NvbnMsIHJzcF9wcm9kOwotICAgIHVpbnQz
Ml90IHNlcnZlcl9mZWF0dXJlczsgLyogQml0bWFwIG9mIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0
aGUgc2VydmVyICovCi0gICAgdWludDMyX3QgY29ubmVjdGlvbjsKLX07Ci0KLS8qIFZpb2xhdGlu
ZyB0aGlzIGlzIHZlcnkgYmFkLiAgU2VlIGRvY3MvbWlzYy94ZW5zdG9yZS50eHQuICovCi0jZGVm
aW5lIFhFTlNUT1JFX1BBWUxPQURfTUFYIDQwOTYKLQotLyogVmlvbGF0aW5nIHRoZXNlIGp1c3Qg
Z2V0cyB5b3UgYW4gZXJyb3IgYmFjayAqLwotI2RlZmluZSBYRU5TVE9SRV9BQlNfUEFUSF9NQVgg
MzA3MgotI2RlZmluZSBYRU5TVE9SRV9SRUxfUEFUSF9NQVggMjA0OAotCi0vKiBUaGUgYWJpbGl0
eSB0byByZWNvbm5lY3QgYSByaW5nICovCi0jZGVmaW5lIFhFTlNUT1JFX1NFUlZFUl9GRUFUVVJF
X1JFQ09OTkVDVElPTiAxCi0KLS8qIFZhbGlkIHZhbHVlcyBmb3IgdGhlIGNvbm5lY3Rpb24gZmll
bGQgKi8KLSNkZWZpbmUgWEVOU1RPUkVfQ09OTkVDVEVEIDAgLyogdGhlIHN0ZWFkeS1zdGF0ZSAq
LwotI2RlZmluZSBYRU5TVE9SRV9SRUNPTk5FQ1QgMSAvKiBndWVzdCBoYXMgaW5pdGlhdGVkIGEg
cmVjb25uZWN0ICovCi0KLSNlbmRpZiAvKiBfWFNfV0lSRV9IICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vbWVtb3J5LmggYi9pbmNsdWRlL3hl
bi9tZW1vcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAyMTk1OC4uMDAwMDAw
MAotLS0gYS9pbmNsdWRlL3hlbi9tZW1vcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4OCArMCww
IEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBtZW1vcnkuaAotICogCi0gKiBNZW1vcnkg
cmVzZXJ2YXRpb24gYW5kIGluZm9ybWF0aW9uLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0
IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29tPgotICovCi0KLSNpZm5k
ZWYgX19YRU5fUFVCTElDX01FTU9SWV9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX01FTU9SWV9I
X18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogSW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhl
IHNwZWNpZmllZCBkb21haW4ncyBtZW1vcnkgcmVzZXJ2YXRpb24uIFJldHVybnMgdGhlCi0gKiBu
dW1iZXIgb2YgZXh0ZW50cyBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIG9yIGZyZWVkLgotICogYXJn
ID09IGFkZHIgb2Ygc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24uCi0gKi8KLSNkZWZpbmUg
WEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIDAKLSNkZWZpbmUgWEVOTUVNX2RlY3JlYXNlX3Jl
c2VydmF0aW9uIDEKLSNkZWZpbmUgWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAgICAgIDYKLQotI2lm
IF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwOQotLyoKLSAqIE1heGltdW0g
IyBiaXRzIGFkZHJlc3NhYmxlIGJ5IHRoZSB1c2VyIG9mIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIChl
LmcuLCBJL08gCi0gKiBkZXZpY2VzIG9mdGVuIGhhdmUgYSAzMi1iaXQgbGltaXRhdGlvbiBldmVu
IGluIDY0LWJpdCBzeXN0ZW1zKS4gSWYgemVybyAKLSAqIHRoZW4gdGhlIHVzZXIgaGFzIG5vIGFk
ZHJlc3NpbmcgcmVzdHJpY3Rpb24uIFRoaXMgZmllbGQgaXMgbm90IHVzZWQgYnkgCi0gKiBYRU5N
RU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24uCi0gKi8KLSNkZWZpbmUgWEVOTUVNRl9hZGRyZXNzX2Jp
dHMoeCkgICAgICh4KQotI2RlZmluZSBYRU5NRU1GX2dldF9hZGRyZXNzX2JpdHMoeCkgKCh4KSAm
IDB4ZmZ1KQotLyogTlVNQSBub2RlIHRvIGFsbG9jYXRlIGZyb20uICovCi0jZGVmaW5lIFhFTk1F
TUZfbm9kZSh4KSAgICAgKCgoeCkgKyAxKSA8PCA4KQotI2RlZmluZSBYRU5NRU1GX2dldF9ub2Rl
KHgpICgoKCh4KSA+PiA4KSAtIDEpICYgMHhmZnUpCi0vKiBGbGFnIHRvIHBvcHVsYXRlIHBoeXNt
YXAgd2l0aCBwb3B1bGF0ZS1vbi1kZW1hbmQgZW50cmllcyAqLwotI2RlZmluZSBYRU5NRU1GX3Bv
cHVsYXRlX29uX2RlbWFuZCAoMTw8MTYpCi0vKiBGbGFnIHRvIHJlcXVlc3QgYWxsb2NhdGlvbiBv
bmx5IGZyb20gdGhlIG5vZGUgc3BlY2lmaWVkICovCi0jZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9k
ZV9yZXF1ZXN0ICAoMTw8MTcpCi0jZGVmaW5lIFhFTk1FTUZfZXhhY3Rfbm9kZShuKSAoWEVOTUVN
Rl9ub2RlKG4pIHwgWEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QpCi0jZW5kaWYKLQotc3RydWN0
IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gewotCi0gICAgLyoKLSAgICAgKiBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb246Ci0gICAgICogICBPVVQ6IE1GTiAoKm5vdCogR01GTikgYmFzZXMgb2Yg
ZXh0ZW50cyB0aGF0IHdlcmUgYWxsb2NhdGVkCi0gICAgICogWEVOTUVNX2RlY3JlYXNlX3Jlc2Vy
dmF0aW9uOgotICAgICAqICAgSU46ICBHTUZOIGJhc2VzIG9mIGV4dGVudHMgdG8gZnJlZQotICAg
ICAqIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwOgotICAgICAqICAgSU46ICBHUEZOIGJhc2VzIG9m
IGV4dGVudHMgdG8gcG9wdWxhdGUgd2l0aCBtZW1vcnkKLSAgICAgKiAgIE9VVDogR01GTiBiYXNl
cyBvZiBleHRlbnRzIHRoYXQgd2VyZSBhbGxvY2F0ZWQKLSAgICAgKiAgIChOQi4gVGhpcyBjb21t
YW5kIGFsc28gdXBkYXRlcyB0aGUgbWFjaF90b19waHlzIHRyYW5zbGF0aW9uIHRhYmxlKQotICAg
ICAqIFhFTk1FTV9jbGFpbV9wYWdlczoKLSAgICAgKiAgIElOOiBtdXN0IGJlIHplcm8KLSAgICAg
Ki8KLSAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0YXJ0OwotCi0gICAg
LyogTnVtYmVyIG9mIGV4dGVudHMsIGFuZCBzaXplL2FsaWdubWVudCBvZiBlYWNoICgyXmV4dGVu
dF9vcmRlciBwYWdlcykuICovCi0gICAgeGVuX3Vsb25nX3QgICAgbnJfZXh0ZW50czsKLSAgICB1
bnNpZ25lZCBpbnQgICBleHRlbnRfb3JkZXI7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lP
Tl9fID49IDB4MDAwMzAyMDkKLSAgICAvKiBYRU5NRU1GIGZsYWdzLiAqLwotICAgIHVuc2lnbmVk
IGludCAgIG1lbV9mbGFnczsKLSNlbHNlCi0gICAgdW5zaWduZWQgaW50ICAgYWRkcmVzc19iaXRz
OwotI2VuZGlmCi0KLSAgICAvKgotICAgICAqIERvbWFpbiB3aG9zZSByZXNlcnZhdGlvbiBpcyBi
ZWluZyBjaGFuZ2VkLgotICAgICAqIFVucHJpdmlsZWdlZCBkb21haW5zIGNhbiBzcGVjaWZ5IG9u
bHkgRE9NSURfU0VMRi4KLSAgICAgKi8KLSAgICBkb21pZF90ICAgICAgICBkb21pZDsKLX07Ci10
eXBlZGVmIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHhlbl9tZW1vcnlfcmVzZXJ2YXRp
b25fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1vcnlfcmVzZXJ2YXRpb25fdCk7
Ci0KLS8qCi0gKiBBbiBhdG9taWMgZXhjaGFuZ2Ugb2YgbWVtb3J5IHBhZ2VzLiBJZiByZXR1cm4g
Y29kZSBpcyB6ZXJvIHRoZW4KLSAqIEBvdXQuZXh0ZW50X2xpc3QgcHJvdmlkZXMgR01GTnMgb2Yg
dGhlIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuCi0gKiBSZXR1cm5zIHplcm8gb24gY29tcGxldGUg
c3VjY2Vzcywgb3RoZXJ3aXNlIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KLSAqIE9uIGNvbXBsZXRl
IHN1Y2Nlc3MgdGhlbiBhbHdheXMgQG5yX2V4Y2hhbmdlZCA9PSBAaW4ubnJfZXh0ZW50cy4KLSAq
IE9uIHBhcnRpYWwgc3VjY2VzcyBAbnJfZXhjaGFuZ2VkIGluZGljYXRlcyBob3cgbXVjaCB3b3Jr
IHdhcyBkb25lLgotICovCi0jZGVmaW5lIFhFTk1FTV9leGNoYW5nZSAgICAgICAgICAgICAxMQot
c3RydWN0IHhlbl9tZW1vcnlfZXhjaGFuZ2UgewotICAgIC8qCi0gICAgICogW0lOXSBEZXRhaWxz
IG9mIG1lbW9yeSBleHRlbnRzIHRvIGJlIGV4Y2hhbmdlZCAoR01GTiBiYXNlcykuCi0gICAgICog
Tm90ZSB0aGF0IEBpbi5hZGRyZXNzX2JpdHMgaXMgaWdub3JlZCBhbmQgdW51c2VkLgotICAgICAq
LwotICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIGluOwotCi0gICAgLyoKLSAgICAg
KiBbSU4vT1VUXSBEZXRhaWxzIG9mIG5ldyBtZW1vcnkgZXh0ZW50cy4KLSAgICAgKiBXZSByZXF1
aXJlIHRoYXQ6Ci0gICAgICogIDEuIEBpbi5kb21pZCA9PSBAb3V0LmRvbWlkCi0gICAgICogIDIu
IEBpbi5ucl9leHRlbnRzICA8PCBAaW4uZXh0ZW50X29yZGVyID09IAotICAgICAqICAgICBAb3V0
Lm5yX2V4dGVudHMgPDwgQG91dC5leHRlbnRfb3JkZXIKLSAgICAgKiAgMy4gQGluLmV4dGVudF9z
dGFydCBhbmQgQG91dC5leHRlbnRfc3RhcnQgbGlzdHMgbXVzdCBub3Qgb3ZlcmxhcAotICAgICAq
ICA0LiBAb3V0LmV4dGVudF9zdGFydCBsaXN0cyBHUEZOIGJhc2VzIHRvIGJlIHBvcHVsYXRlZAot
ICAgICAqICA1LiBAb3V0LmV4dGVudF9zdGFydCBpcyBvdmVyd3JpdHRlbiB3aXRoIGFsbG9jYXRl
ZCBHTUZOIGJhc2VzCi0gICAgICovCi0gICAgc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24g
b3V0OwotCi0gICAgLyoKLSAgICAgKiBbT1VUXSBOdW1iZXIgb2YgaW5wdXQgZXh0ZW50cyB0aGF0
IHdlcmUgc3VjY2Vzc2Z1bGx5IGV4Y2hhbmdlZDoKLSAgICAgKiAgMS4gVGhlIGZpcnN0IEBucl9l
eGNoYW5nZWQgaW5wdXQgZXh0ZW50cyB3ZXJlIHN1Y2Nlc3NmdWxseQotICAgICAqICAgICBkZWFs
bG9jYXRlZC4KLSAgICAgKiAgMi4gVGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgZW50cmllcyBpbiB0
aGUgb3V0cHV0IGV4dGVudCBsaXN0IGNvcnJlY3RseQotICAgICAqICAgICBpbmRpY2F0ZSB0aGUg
R01GTnMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBleGNoYW5nZWQuCi0gICAgICogIDMuIEFsbCBv
dGhlciBpbnB1dCBhbmQgb3V0cHV0IGV4dGVudHMgYXJlIHVudG91Y2hlZC4KLSAgICAgKiAgNC4g
SWYgbm90IGFsbCBpbnB1dCBleGVudHMgYXJlIGV4Y2hhbmdlZCB0aGVuIHRoZSByZXR1cm4gY29k
ZSBvZiB0aGlzCi0gICAgICogICAgIGNvbW1hbmQgd2lsbCBiZSBub24temVyby4KLSAgICAgKiAg
NS4gVEhJUyBGSUVMRCBNVVNUIEJFIElOSVRJQUxJU0VEIFRPIFpFUk8gQlkgVEhFIENBTExFUiEK
LSAgICAgKi8KLSAgICB4ZW5fdWxvbmdfdCBucl9leGNoYW5nZWQ7Ci19OwotdHlwZWRlZiBzdHJ1
Y3QgeGVuX21lbW9yeV9leGNoYW5nZSB4ZW5fbWVtb3J5X2V4Y2hhbmdlX3Q7Ci1ERUZJTkVfWEVO
X0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X2V4Y2hhbmdlX3QpOwotCi0vKgotICogUmV0dXJucyB0
aGUgbWF4aW11bSBtYWNoaW5lIGZyYW1lIG51bWJlciBvZiBtYXBwZWQgUkFNIGluIHRoaXMgc3lz
dGVtLgotICogVGhpcyBjb21tYW5kIGFsd2F5cyBzdWNjZWVkcyAoaXQgbmV2ZXIgcmV0dXJucyBh
biBlcnJvciBjb2RlKS4KLSAqIGFyZyA9PSBOVUxMLgotICovCi0jZGVmaW5lIFhFTk1FTV9tYXhp
bXVtX3JhbV9wYWdlICAgICAyCi0KLS8qCi0gKiBSZXR1cm5zIHRoZSBjdXJyZW50IG9yIG1heGlt
dW0gbWVtb3J5IHJlc2VydmF0aW9uLCBpbiBwYWdlcywgb2YgdGhlCi0gKiBzcGVjaWZpZWQgZG9t
YWluIChtYXkgYmUgRE9NSURfU0VMRikuIFJldHVybnMgLXZlIGVycmNvZGUgb24gZmFpbHVyZS4K
LSAqIGFyZyA9PSBhZGRyIG9mIGRvbWlkX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX2N1cnJlbnRf
cmVzZXJ2YXRpb24gIDMKLSNkZWZpbmUgWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24gIDQKLQot
LyoKLSAqIFJldHVybnMgdGhlIG1heGltdW0gR1BGTiBpbiB1c2UgYnkgdGhlIGd1ZXN0LCBvciAt
dmUgZXJyY29kZSBvbiBmYWlsdXJlLgotICovCi0jZGVmaW5lIFhFTk1FTV9tYXhpbXVtX2dwZm4g
ICAgICAgICAxNAotCi0vKgotICogUmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzIG9mIDJNQiBl
eHRlbnRzIGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cwotICogbWFwcGluZyB0YWJsZS4g
QXJjaGl0ZWN0dXJlcyB3aGljaCBkbyBub3QgaGF2ZSBhIG0ycCB0YWJsZSBkbyBub3QgaW1wbGVt
ZW50Ci0gKiB0aGlzIGNvbW1hbmQuCi0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWZu
X2xpc3RfdC4KLSAqLwotI2RlZmluZSBYRU5NRU1fbWFjaHBoeXNfbWZuX2xpc3QgICAgNQotc3Ry
dWN0IHhlbl9tYWNocGh5c19tZm5fbGlzdCB7Ci0gICAgLyoKLSAgICAgKiBTaXplIG9mIHRoZSAn
ZXh0ZW50X3N0YXJ0JyBhcnJheS4gRmV3ZXIgZW50cmllcyB3aWxsIGJlIGZpbGxlZCBpZiB0aGUK
LSAgICAgKiBtYWNocGh5cyB0YWJsZSBpcyBzbWFsbGVyIHRoYW4gbWF4X2V4dGVudHMgKiAyTUIu
Ci0gICAgICovCi0gICAgdW5zaWduZWQgaW50IG1heF9leHRlbnRzOwotCi0gICAgLyoKLSAgICAg
KiBQb2ludGVyIHRvIGJ1ZmZlciB0byBmaWxsIHdpdGggbGlzdCBvZiBleHRlbnQgc3RhcnRzLiBJ
ZiB0aGVyZSBhcmUKLSAgICAgKiBhbnkgbGFyZ2UgZGlzY29udGlndWl0aWVzIGluIHRoZSBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UsIDJNQiBnYXBzIGluCi0gICAgICogdGhlIG1hY2hwaHlzIHRhYmxl
IHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgYW4gTUZOIGJhc2Ugb2YgemVyby4KLSAgICAgKi8KLSAg
ICBYRU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCkgZXh0ZW50X3N0YXJ0OwotCi0gICAgLyoKLSAg
ICAgKiBOdW1iZXIgb2YgZXh0ZW50cyB3cml0dGVuIHRvIHRoZSBhYm92ZSBhcnJheS4gVGhpcyB3
aWxsIGJlIHNtYWxsZXIKLSAgICAgKiB0aGFuICdtYXhfZXh0ZW50cycgaWYgdGhlIG1hY2hwaHlz
IHRhYmxlIGlzIHNtYWxsZXIgdGhhbiBtYXhfZSAqIDJNQi4KLSAgICAgKi8KLSAgICB1bnNpZ25l
ZCBpbnQgbnJfZXh0ZW50czsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fbWFjaHBoeXNfbWZuX2xp
c3QgeGVuX21hY2hwaHlzX21mbl9saXN0X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
bWFjaHBoeXNfbWZuX2xpc3RfdCk7Ci0KLS8qCi0gKiBGb3IgYSBjb21wYXQgY2FsbGVyLCB0aGlz
IGlzIGlkZW50aWNhbCB0byBYRU5NRU1fbWFjaHBoeXNfbWZuX2xpc3QuCi0gKgotICogRm9yIGEg
bm9uIGNvbXBhdCBjYWxsZXIsIHRoaXMgZnVuY3Rpb25zIHNpbWlsYXJseSB0bwotICogWEVOTUVN
X21hY2hwaHlzX21mbl9saXN0LCBidXQgcmV0dXJucyB0aGUgbWZucyBtYWtpbmcgdXAgdGhlIGNv
bXBhdGliaWxpdHkKLSAqIG0ycCB0YWJsZS4KLSAqLwotI2RlZmluZSBYRU5NRU1fbWFjaHBoeXNf
Y29tcGF0X21mbl9saXN0ICAgICAyNQotCi0vKgotICogUmV0dXJucyB0aGUgbG9jYXRpb24gaW4g
dmlydHVhbCBhZGRyZXNzIHNwYWNlIG9mIHRoZSBtYWNoaW5lX3RvX3BoeXMKLSAqIG1hcHBpbmcg
dGFibGUuIEFyY2hpdGVjdHVyZXMgd2hpY2ggZG8gbm90IGhhdmUgYSBtMnAgdGFibGUsIG9yIHdo
aWNoIGRvIG5vdAotICogbWFwIGl0IGJ5IGRlZmF1bHQgaW50byBndWVzdCBhZGRyZXNzIHNwYWNl
LCBkbyBub3QgaW1wbGVtZW50IHRoaXMgY29tbWFuZC4KLSAqIGFyZyA9PSBhZGRyIG9mIHhlbl9t
YWNocGh5c19tYXBwaW5nX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX21hcHBpbmcg
ICAgIDEyCi1zdHJ1Y3QgeGVuX21hY2hwaHlzX21hcHBpbmcgewotICAgIHhlbl91bG9uZ190IHZf
c3RhcnQsIHZfZW5kOyAvKiBTdGFydCBhbmQgZW5kIHZpcnR1YWwgYWRkcmVzc2VzLiAgICovCi0g
ICAgeGVuX3Vsb25nX3QgbWF4X21mbjsgICAgICAgIC8qIE1heGltdW0gTUZOIHRoYXQgY2FuIGJl
IGxvb2tlZCB1cC4gKi8KLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fbWFjaHBoeXNfbWFwcGluZyB4
ZW5fbWFjaHBoeXNfbWFwcGluZ190OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21hY2hw
aHlzX21hcHBpbmdfdCk7Ci0KLS8qIFNvdXJjZSBtYXBwaW5nIHNwYWNlLiAqLwotLyogYCBlbnVt
IHBoeXNfbWFwX3NwYWNlIHsgKi8KLSNkZWZpbmUgWEVOTUFQU1BBQ0Vfc2hhcmVkX2luZm8gIDAg
Lyogc2hhcmVkIGluZm8gcGFnZSAqLwotI2RlZmluZSBYRU5NQVBTUEFDRV9ncmFudF90YWJsZSAg
MSAvKiBncmFudCB0YWJsZSBwYWdlICovCi0jZGVmaW5lIFhFTk1BUFNQQUNFX2dtZm4gICAgICAg
ICAyIC8qIEdNRk4gKi8KLSNkZWZpbmUgWEVOTUFQU1BBQ0VfZ21mbl9yYW5nZSAgIDMgLyogR01G
TiByYW5nZSwgWEVOTUVNX2FkZF90b19waHlzbWFwIG9ubHkuICovCi0jZGVmaW5lIFhFTk1BUFNQ
QUNFX2dtZm5fZm9yZWlnbiA0IC8qIEdNRk4gZnJvbSBhbm90aGVyIGRvbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogWEVOTUVNX2FkZF90b19waHlzbWFwX2JhdGNoIG9u
bHkuICovCi0vKiBgIH0gKi8KLQotLyoKLSAqIFNldHMgdGhlIEdQRk4gYXQgd2hpY2ggYSBwYXJ0
aWN1bGFyIHBhZ2UgYXBwZWFycyBpbiB0aGUgc3BlY2lmaWVkIGd1ZXN0J3MKLSAqIHBzZXVkb3Bo
eXNpY2FsIGFkZHJlc3Mgc3BhY2UuCi0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fYWRkX3RvX3BoeXNt
YXBfdC4KLSAqLwotI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXAgICAgICA3Ci1zdHJ1Y3Qg
eGVuX2FkZF90b19waHlzbWFwIHsKLSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBt
YXBwaW5nIGZvci4gKi8KLSAgICBkb21pZF90IGRvbWlkOwotCi0gICAgLyogTnVtYmVyIG9mIHBh
Z2VzIHRvIGdvIHRocm91Z2ggZm9yIGdtZm5fcmFuZ2UgKi8KLSAgICB1aW50MTZfdCAgICBzaXpl
OwotCi0gICAgdW5zaWduZWQgaW50IHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFwX3NwYWNlICov
Ci0KLSNkZWZpbmUgWEVOTUFQSURYX2dyYW50X3RhYmxlX3N0YXR1cyAweDgwMDAwMDAwCi0KLSAg
ICAvKiBJbmRleCBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KLSAgICB4ZW5fdWxvbmdfdCBp
ZHg7Ci0KLSAgICAvKiBHUEZOIGluIGRvbWlkIHdoZXJlIHRoZSBzb3VyY2UgbWFwcGluZyBwYWdl
IHNob3VsZCBhcHBlYXIuICovCi0gICAgeGVuX3Bmbl90ICAgICBncGZuOwotfTsKLXR5cGVkZWYg
c3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcCB4ZW5fYWRkX3RvX3BoeXNtYXBfdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9hZGRfdG9fcGh5c21hcF90KTsKLQotLyogQSBiYXRjaGVkIHZl
cnNpb24gb2YgYWRkX3RvX3BoeXNtYXAuICovCi0jZGVmaW5lIFhFTk1FTV9hZGRfdG9fcGh5c21h
cF9iYXRjaCAyMwotc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9iYXRjaCB7Ci0gICAgLyogSU4g
Ki8KLSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGZvci4gKi8KLSAg
ICBkb21pZF90IGRvbWlkOwotICAgIHVpbnQxNl90IHNwYWNlOyAvKiA9PiBlbnVtIHBoeXNfbWFw
X3NwYWNlICovCi0KLSAgICAvKiBOdW1iZXIgb2YgcGFnZXMgdG8gZ28gdGhyb3VnaCAqLwotICAg
IHVpbnQxNl90IHNpemU7Ci0gICAgZG9taWRfdCBmb3JlaWduX2RvbWlkOyAvKiBJRkYgZ21mbl9m
b3JlaWduICovCi0KLSAgICAvKiBJbmRleGVzIGludG8gc3BhY2UgYmVpbmcgbWFwcGVkLiAqLwot
ICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3QpIGlkeHM7Ci0KLSAgICAvKiBHUEZOIGlu
IGRvbWlkIHdoZXJlIHRoZSBzb3VyY2UgbWFwcGluZyBwYWdlIHNob3VsZCBhcHBlYXIuICovCi0g
ICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGdwZm5zOwotCi0gICAgLyogT1VUICovCi0K
LSAgICAvKiBQZXIgaW5kZXggZXJyb3IgY29kZS4gKi8KLSAgICBYRU5fR1VFU1RfSEFORExFKGlu
dCkgZXJyczsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeGVu
X2FkZF90b19waHlzbWFwX2JhdGNoX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRk
X3RvX3BoeXNtYXBfYmF0Y2hfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDA0MDQwMAotI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXBfcmFuZ2UgWEVOTUVNX2Fk
ZF90b19waHlzbWFwX2JhdGNoCi0jZGVmaW5lIHhlbl9hZGRfdG9fcGh5c21hcF9yYW5nZSB4ZW5f
YWRkX3RvX3BoeXNtYXBfYmF0Y2gKLXR5cGVkZWYgc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcF9i
YXRjaCB4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2VfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9hZGRfdG9fcGh5c21hcF9yYW5nZV90KTsKLSNlbmRpZgotCi0vKgotICogVW5tYXBzIHRo
ZSBwYWdlIGFwcGVhcmluZyBhdCBhIHBhcnRpY3VsYXIgR1BGTiBmcm9tIHRoZSBzcGVjaWZpZWQg
Z3Vlc3QncwotICogcHNldWRvcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KLSAqIGFyZyA9PSBhZGRy
IG9mIHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX3JlbW92
ZV9mcm9tX3BoeXNtYXAgICAgICAxNQotc3RydWN0IHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwIHsK
LSAgICAvKiBXaGljaCBkb21haW4gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGZvci4gKi8KLSAgICBk
b21pZF90IGRvbWlkOwotCi0gICAgLyogR1BGTiBvZiB0aGUgY3VycmVudCBtYXBwaW5nIG9mIHRo
ZSBwYWdlLiAqLwotICAgIHhlbl9wZm5fdCAgICAgZ3BmbjsKLX07Ci10eXBlZGVmIHN0cnVjdCB4
ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcCB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcF90OwotREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXBfdCk7Ci0KLS8qKiogUkVN
T1ZFRCAqKiovCi0vKiNkZWZpbmUgWEVOTUVNX3RyYW5zbGF0ZV9ncGZuX2xpc3QgIDgqLwotCi0v
KgotICogUmV0dXJucyB0aGUgcHNldWRvLXBoeXNpY2FsIG1lbW9yeSBtYXAgYXMgaXQgd2FzIHdo
ZW4gdGhlIGRvbWFpbgotICogd2FzIHN0YXJ0ZWQgKHNwZWNpZmllZCBieSBYRU5NRU1fc2V0X21l
bW9yeV9tYXApLgotICogYXJnID09IGFkZHIgb2YgeGVuX21lbW9yeV9tYXBfdC4KLSAqLwotI2Rl
ZmluZSBYRU5NRU1fbWVtb3J5X21hcCAgICAgICAgICAgOQotc3RydWN0IHhlbl9tZW1vcnlfbWFw
IHsKLSAgICAvKgotICAgICAqIE9uIGNhbGwgdGhlIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIGNh
biBiZSBzdG9yZWQgaW4gYnVmZmVyLiBPbgotICAgICAqIHJldHVybiB0aGUgbnVtYmVyIG9mIGVu
dHJpZXMgd2hpY2ggaGF2ZSBiZWVuIHN0b3JlZCBpbgotICAgICAqIGJ1ZmZlci4KLSAgICAgKi8K
LSAgICB1bnNpZ25lZCBpbnQgbnJfZW50cmllczsKLQotICAgIC8qCi0gICAgICogRW50cmllcyBp
biB0aGUgYnVmZmVyIGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgcmV0dXJuZWQgYnkgdGhlCi0g
ICAgICogQklPUyBJTlQgMHgxNSBFQVg9MHhFODIwIGNhbGwuCi0gICAgICovCi0gICAgWEVOX0dV
RVNUX0hBTkRMRSh2b2lkKSBidWZmZXI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbW9yeV9t
YXAgeGVuX21lbW9yeV9tYXBfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1vcnlf
bWFwX3QpOwotCi0vKgotICogUmV0dXJucyB0aGUgcmVhbCBwaHlzaWNhbCBtZW1vcnkgbWFwLiBQ
YXNzZXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzCi0gKiBYRU5NRU1fbWVtb3J5X21hcC4KLSAqIGFy
ZyA9PSBhZGRyIG9mIHhlbl9tZW1vcnlfbWFwX3QuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX21hY2hp
bmVfbWVtb3J5X21hcCAgIDEwCi0KLS8qCi0gKiBTZXQgdGhlIHBzZXVkby1waHlzaWNhbCBtZW1v
cnkgbWFwIG9mIGEgZG9tYWluLCBhcyByZXR1cm5lZCBieQotICogWEVOTUVNX21lbW9yeV9tYXAu
Ci0gKiBhcmcgPT0gYWRkciBvZiB4ZW5fZm9yZWlnbl9tZW1vcnlfbWFwX3QuCi0gKi8KLSNkZWZp
bmUgWEVOTUVNX3NldF9tZW1vcnlfbWFwICAgICAgIDEzCi1zdHJ1Y3QgeGVuX2ZvcmVpZ25fbWVt
b3J5X21hcCB7Ci0gICAgZG9taWRfdCBkb21pZDsKLSAgICBzdHJ1Y3QgeGVuX21lbW9yeV9tYXAg
bWFwOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9mb3JlaWduX21lbW9yeV9tYXAgeGVuX2ZvcmVp
Z25fbWVtb3J5X21hcF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2ZvcmVpZ25fbWVt
b3J5X21hcF90KTsKLQotI2RlZmluZSBYRU5NRU1fc2V0X3BvZF90YXJnZXQgICAgICAgMTYKLSNk
ZWZpbmUgWEVOTUVNX2dldF9wb2RfdGFyZ2V0ICAgICAgIDE3Ci1zdHJ1Y3QgeGVuX3BvZF90YXJn
ZXQgewotICAgIC8qIElOICovCi0gICAgdWludDY0X3QgdGFyZ2V0X3BhZ2VzOwotICAgIC8qIE9V
VCAqLwotICAgIHVpbnQ2NF90IHRvdF9wYWdlczsKLSAgICB1aW50NjRfdCBwb2RfY2FjaGVfcGFn
ZXM7Ci0gICAgdWludDY0X3QgcG9kX2VudHJpZXM7Ci0gICAgLyogSU4gKi8KLSAgICBkb21pZF90
IGRvbWlkOwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9wb2RfdGFyZ2V0IHhlbl9wb2RfdGFyZ2V0
X3Q7Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQot
I2lmbmRlZiB1aW50NjRfYWxpZ25lZF90Ci0jZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0
X3QKLSNlbmRpZgotCi0vKgotICogR2V0IHRoZSBudW1iZXIgb2YgTUZOcyBzYXZlZCB0aHJvdWdo
IG1lbW9yeSBzaGFyaW5nLgotICogVGhlIGNhbGwgbmV2ZXIgZmFpbHMuIAotICovCi0jZGVmaW5l
IFhFTk1FTV9nZXRfc2hhcmluZ19mcmVlZF9wYWdlcyAgICAxOAotI2RlZmluZSBYRU5NRU1fZ2V0
X3NoYXJpbmdfc2hhcmVkX3BhZ2VzICAgMTkKLQotI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wICAg
ICAgICAgICAgICAgICAgICAyMAotI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX25vbWluYXRlICAg
ICAgICAgICAwCi0jZGVmaW5lIFhFTk1FTV9wYWdpbmdfb3BfZXZpY3QgICAgICAgICAgICAgIDEK
LSNkZWZpbmUgWEVOTUVNX3BhZ2luZ19vcF9wcmVwICAgICAgICAgICAgICAgMgotCi1zdHJ1Y3Qg
eGVuX21lbV9ldmVudF9vcCB7Ci0gICAgdWludDhfdCAgICAgb3A7ICAgICAgICAgLyogWEVOTUVN
Xypfb3BfKiAqLwotICAgIGRvbWlkX3QgICAgIGRvbWFpbjsKLSAgICAKLQotICAgIC8qIFBBR0lO
R19QUkVQIElOOiBidWZmZXIgdG8gaW1tZWRpYXRlbHkgZmlsbCBwYWdlIGluICovCi0gICAgdWlu
dDY0X2FsaWduZWRfdCAgICBidWZmZXI7Ci0gICAgLyogT3RoZXIgT1BzICovCi0gICAgdWludDY0
X2FsaWduZWRfdCAgICBnZm47ICAgICAgICAgICAvKiBJTjogIGdmbiBvZiBwYWdlIGJlaW5nIG9w
ZXJhdGVkIG9uICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbV9ldmVudF9vcCB4ZW5fbWVt
X2V2ZW50X29wX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtX2V2ZW50X29wX3Qp
OwotCi0jZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3AgICAgICAgICAgICAgICAgICAgIDIxCi0jZGVm
aW5lIFhFTk1FTV9hY2Nlc3Nfb3BfcmVzdW1lICAgICAgICAgICAgIDAKLSNkZWZpbmUgWEVOTUVN
X2FjY2Vzc19vcF9zZXRfYWNjZXNzICAgICAgICAgMQotI2RlZmluZSBYRU5NRU1fYWNjZXNzX29w
X2dldF9hY2Nlc3MgICAgICAgICAyCi0KLXR5cGVkZWYgZW51bSB7Ci0gICAgWEVOTUVNX2FjY2Vz
c19uLAotICAgIFhFTk1FTV9hY2Nlc3NfciwKLSAgICBYRU5NRU1fYWNjZXNzX3csCi0gICAgWEVO
TUVNX2FjY2Vzc19ydywKLSAgICBYRU5NRU1fYWNjZXNzX3gsCi0gICAgWEVOTUVNX2FjY2Vzc19y
eCwKLSAgICBYRU5NRU1fYWNjZXNzX3d4LAotICAgIFhFTk1FTV9hY2Nlc3Nfcnd4LAotICAgIC8q
Ci0gICAgICogUGFnZSBzdGFydHMgb2ZmIGFzIHIteCwgYnV0IGF1dG9tYXRpY2FsbHkKLSAgICAg
KiBjaGFuZ2UgdG8gci13IG9uIGEgd3JpdGUKLSAgICAgKi8KLSAgICBYRU5NRU1fYWNjZXNzX3J4
MnJ3LAotICAgIC8qCi0gICAgICogTG9nIGFjY2Vzczogc3RhcnRzIG9mZiBhcyBuLCBhdXRvbWF0
aWNhbGx5Ci0gICAgICogZ29lcyB0byByd3gsIGdlbmVyYXRpbmcgYW4gZXZlbnQgd2l0aG91dAot
ICAgICAqIHBhdXNpbmcgdGhlIHZjcHUKLSAgICAgKi8KLSAgICBYRU5NRU1fYWNjZXNzX24ycnd4
LAotICAgIC8qIFRha2UgdGhlIGRvbWFpbiBkZWZhdWx0ICovCi0gICAgWEVOTUVNX2FjY2Vzc19k
ZWZhdWx0Ci19IHhlbm1lbV9hY2Nlc3NfdDsKLQotc3RydWN0IHhlbl9tZW1fYWNjZXNzX29wIHsK
LSAgICAvKiBYRU5NRU1fYWNjZXNzX29wXyogKi8KLSAgICB1aW50OF90IG9wOwotICAgIC8qIHhl
bm1lbV9hY2Nlc3NfdCAqLwotICAgIHVpbnQ4X3QgYWNjZXNzOwotICAgIGRvbWlkX3QgZG9taWQ7
Ci0gICAgLyoKLSAgICAgKiBOdW1iZXIgb2YgcGFnZXMgZm9yIHNldCBvcAotICAgICAqIElnbm9y
ZWQgb24gc2V0dGluZyBkZWZhdWx0IGFjY2VzcyBhbmQgb3RoZXIgb3BzCi0gICAgICovCi0gICAg
dWludDMyX3QgbnI7Ci0gICAgLyoKLSAgICAgKiBGaXJzdCBwZm4gZm9yIHNldCBvcAotICAgICAq
IHBmbiBmb3IgZ2V0IG9wCi0gICAgICogfjB1bGwgaXMgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUg
ZGVmYXVsdCBhY2Nlc3MgZm9yIHBhZ2VzCi0gICAgICovCi0gICAgdWludDY0X2FsaWduZWRfdCBw
Zm47Ci19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX21lbV9hY2Nlc3Nfb3AgeGVuX21lbV9hY2Nlc3Nf
b3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1fYWNjZXNzX29wX3QpOwotCi0j
ZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wICAgICAgICAgICAgICAgICAgIDIyCi0jZGVmaW5lIFhF
Tk1FTV9zaGFyaW5nX29wX25vbWluYXRlX2dmbiAgICAgIDAKLSNkZWZpbmUgWEVOTUVNX3NoYXJp
bmdfb3Bfbm9taW5hdGVfZ3JlZiAgICAgMQotI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9zaGFy
ZSAgICAgICAgICAgICAyCi0jZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3Jlc3VtZSAgICAgICAg
ICAgIDMKLSNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ2ZuICAgICAgICAgNAotI2Rl
ZmluZSBYRU5NRU1fc2hhcmluZ19vcF9kZWJ1Z19tZm4gICAgICAgICA1Ci0jZGVmaW5lIFhFTk1F
TV9zaGFyaW5nX29wX2RlYnVnX2dyZWYgICAgICAgIDYKLSNkZWZpbmUgWEVOTUVNX3NoYXJpbmdf
b3BfYWRkX3BoeXNtYXAgICAgICAgNwotI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9hdWRpdCAg
ICAgICAgICAgICA4Ci0KLSNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfU19IQU5ETEVfSU5WQUxJ
RCAgKC0xMCkKLSNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfQ19IQU5ETEVfSU5WQUxJRCAgKC05
KQotCi0vKiBUaGUgZm9sbG93aW5nIGFsbG93cyBzaGFyaW5nIG9mIGdyYW50IHJlZnMuIFRoaXMg
aXMgdXNlZnVsCi0gKiBmb3Igc2hhcmluZyB1dGlsaXRpZXMgc2l0dGluZyBhcyAiZmlsdGVycyIg
aW4gSU8gYmFja2VuZHMKLSAqIChlLmcuIG1lbXNociArIGJsa3RhcCgyKSkuIFRoZSBJTyBiYWNr
ZW5kIGlzIG9ubHkgZXhwb3NlZCAKLSAqIHRvIGdyYW50IHJlZmVyZW5jZXMsIGFuZCB0aGlzIGFs
bG93cyBzaGFyaW5nIG9mIHRoZSBncmVmcyAqLwotI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9G
SUVMRF9JU19HUkVGX0ZMQUcgICAoMVVMTCA8PCA2MikKLQotI2RlZmluZSBYRU5NRU1fU0hBUklO
R19PUF9GSUVMRF9NQUtFX0dSRUYoZmllbGQsIHZhbCkgIFwKLSAgICAoZmllbGQpID0gKFhFTk1F
TV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUZfRkxBRyB8IHZhbCkKLSNkZWZpbmUgWEVOTUVNX1NI
QVJJTkdfT1BfRklFTERfSVNfR1JFRihmaWVsZCkgICAgICAgICBcCi0gICAgKChmaWVsZCkgJiBY
RU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVGX0ZMQUcpCi0jZGVmaW5lIFhFTk1FTV9TSEFS
SU5HX09QX0ZJRUxEX0dFVF9HUkVGKGZpZWxkKSAgICAgICAgXAotICAgICgoZmllbGQpICYgKH5Y
RU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19HUkVGX0ZMQUcpKQotCi1zdHJ1Y3QgeGVuX21lbV9z
aGFyaW5nX29wIHsKLSAgICB1aW50OF90ICAgICBvcDsgICAgIC8qIFhFTk1FTV9zaGFyaW5nX29w
XyogKi8KLSAgICBkb21pZF90ICAgICBkb21haW47Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0
cnVjdCBtZW1fc2hhcmluZ19vcF9ub21pbmF0ZSB7ICAvKiBPUF9OT01JTkFURV94eHggICAgICAg
ICAgICovCi0gICAgICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAgICAgdWludDY0X2FsaWdu
ZWRfdCBnZm47ICAgICAvKiBJTjogZ2ZuIHRvIG5vbWluYXRlICAgICAgICovCi0gICAgICAgICAg
ICAgICAgdWludDMyX3QgICAgICBncmFudF9yZWY7ICAvKiBJTjogZ3JhbnQgcmVmIHRvIG5vbWlu
YXRlICovCi0gICAgICAgICAgICB9IHU7Ci0gICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90ICBo
YW5kbGU7ICAgICAvKiBPVVQ6IHRoZSBoYW5kbGUgICAgICAgICAgICovCi0gICAgICAgIH0gbm9t
aW5hdGU7Ci0gICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9zaGFyZSB7ICAgICAvKiBPUF9T
SEFSRS9BRERfUEhZU01BUCAqLwotICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBzb3VyY2Vf
Z2ZuOyAgICAvKiBJTjogdGhlIGdmbiBvZiB0aGUgc291cmNlIHBhZ2UgKi8KLSAgICAgICAgICAg
IHVpbnQ2NF9hbGlnbmVkX3Qgc291cmNlX2hhbmRsZTsgLyogSU46IGhhbmRsZSB0byB0aGUgc291
cmNlIHBhZ2UgKi8KLSAgICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3QgY2xpZW50X2dmbjsgICAg
LyogSU46IHRoZSBjbGllbnQgZ2ZuICovCi0gICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IGNs
aWVudF9oYW5kbGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIGNsaWVudCBwYWdlICovCi0gICAgICAg
ICAgICBkb21pZF90ICBjbGllbnRfZG9tYWluOyAvKiBJTjogdGhlIGNsaWVudCBkb21haW4gaWQg
Ki8KLSAgICAgICAgfSBzaGFyZTsgCi0gICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9kZWJ1
ZyB7ICAgICAvKiBPUF9ERUJVR194eHggKi8KLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAg
ICAgICAgICB1aW50NjRfYWxpZ25lZF90IGdmbjsgICAgICAvKiBJTjogZ2ZuIHRvIGRlYnVnICAg
ICAgICAgICovCi0gICAgICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBtZm47ICAgICAgLyog
SU46IG1mbiB0byBkZWJ1ZyAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHVpbnQzMl90IGdy
ZWY7ICAgICAvKiBJTjogZ3JlZiB0byBkZWJ1ZyAgICAgICAgICovCi0gICAgICAgICAgICB9IHU7
Ci0gICAgICAgIH0gZGVidWc7Ci0gICAgfSB1OwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9tZW1f
c2hhcmluZ19vcCB4ZW5fbWVtX3NoYXJpbmdfb3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9tZW1fc2hhcmluZ19vcF90KTsKLQotLyoKLSAqIEF0dGVtcHQgdG8gc3Rha2UgYSBjbGFp
bSBmb3IgYSBkb21haW4gb24gYSBxdWFudGl0eSBvZiBwYWdlcwotICogb2Ygc3lzdGVtIFJBTSwg
YnV0IF9ub3RfIGFzc2lnbiBzcGVjaWZpYyBwYWdlZnJhbWVzLiAgT25seQotICogYXJpdGhtZXRp
YyBpcyBwZXJmb3JtZWQgc28gdGhlIGh5cGVyY2FsbCBpcyB2ZXJ5IGZhc3QgYW5kIG5lZWQKLSAq
IG5vdCBiZSBwcmVlbXB0aWJsZSwgdGh1cyBzaWRlc3RlcHBpbmcgdGltZS1vZi1jaGVjay10aW1l
LW9mLXVzZQotICogcmFjZXMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uLiAgUmV0dXJucyAwIGlmIHRo
ZSBoeXBlcnZpc29yIHBhZ2UKLSAqIGFsbG9jYXRvciBoYXMgYXRvbWljYWxseSBhbmQgc3VjY2Vz
c2Z1bGx5IGNsYWltZWQgdGhlIHJlcXVlc3RlZAotICogbnVtYmVyIG9mIHBhZ2VzLCBlbHNlIG5v
bi16ZXJvLgotICoKLSAqIEFueSBkb21haW4gbWF5IGhhdmUgb25seSBvbmUgYWN0aXZlIGNsYWlt
LiAgV2hlbiBzdWZmaWNpZW50IG1lbW9yeQotICogaGFzIGJlZW4gYWxsb2NhdGVkIHRvIHJlc29s
dmUgdGhlIGNsYWltLCB0aGUgY2xhaW0gc2lsZW50bHkgZXhwaXJlcy4KLSAqIENsYWltaW5nIHpl
cm8gcGFnZXMgZWZmZWN0aXZlbHkgcmVzZXRzIGFueSBvdXRzdGFuZGluZyBjbGFpbSBhbmQKLSAq
IGlzIGFsd2F5cyBzdWNjZXNzZnVsLgotICoKLSAqIE5vdGUgdGhhdCBhIHZhbGlkIGNsYWltIG1h
eSBiZSBzdGFrZWQgZXZlbiBhZnRlciBtZW1vcnkgaGFzIGJlZW4KLSAqIGFsbG9jYXRlZCBmb3Ig
YSBkb21haW4uICBJbiB0aGlzIGNhc2UsIHRoZSBjbGFpbSBpcyBub3QgaW5jcmVtZW50YWwsCi0g
KiBpLmUuIGlmIHRoZSBkb21haW4ncyB0b3RfcGFnZXMgaXMgMywgYW5kIGEgY2xhaW0gaXMgc3Rh
a2VkIGZvciAxMCwKLSAqIG9ubHkgNyBhZGRpdGlvbmFsIHBhZ2VzIGFyZSBjbGFpbWVkLgotICoK
LSAqIENhbGxlciBtdXN0IGJlIHByaXZpbGVnZWQgb3IgdGhlIGh5cGVyY2FsbCBmYWlscy4KLSAq
LwotI2RlZmluZSBYRU5NRU1fY2xhaW1fcGFnZXMgICAgICAgICAgICAgICAgICAyNAotCi0vKgot
ICogWEVOTUVNX2NsYWltX3BhZ2VzIGZsYWdzIC0gdGhlIGFyZSBubyBmbGFncyBhdCB0aGlzIHRp
bWUuCi0gKiBUaGUgemVybyB2YWx1ZSBpcyBhcHByb3BpYXRlLgotICovCi0KLSNlbmRpZiAvKiBk
ZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KLQotLyoKLSAqIFhF
Tk1FTV9nZXRfdm51bWFpbmZvIHVzZWQgYnkgZ3Vlc3QgdG8gZ2V0Ci0gKiB2TlVNQSB0b3BvbG9n
eSBmcm9tIGh5cGVydmlzb3IuCi0gKi8KLSNkZWZpbmUgWEVOTUVNX2dldF92bnVtYWluZm8gICAg
ICAgICAgICAgICAgMjYKLQotLyogdk5VTUEgbm9kZSBtZW1vcnkgcmFuZ2VzICovCi1zdHJ1Y3Qg
dm1lbXJhbmdlIHsKLSAgICB1aW50NjRfdCBzdGFydCwgZW5kOwotICAgIHVuc2lnbmVkIGludCBm
bGFnczsKLSAgICB1bnNpZ25lZCBpbnQgbmlkOwotfTsKLQotdHlwZWRlZiBzdHJ1Y3Qgdm1lbXJh
bmdlIHZtZW1yYW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm1lbXJhbmdlX3QpOwot
Ci0vKgotICogdk5VTUEgdG9wb2xvZ3kgc3BlY2lmaWVzIHZOVU1BIG5vZGUgbnVtYmVyLCBkaXN0
YW5jZSB0YWJsZSwKLSAqIG1lbW9yeSByYW5nZXMgYW5kIHZjcHUgbWFwcGluZyBwcm92aWRlZCBm
b3IgZ3Vlc3RzLgotICogWEVOTUVNX2dldF92bnVtYWluZm8gaHlwZXJjYWxsIGV4cGVjdHMgdG8g
c2VlIGZyb20gZ3Vlc3QKLSAqIG5yX3Zub2RlcywgbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMg
dG8gaW5kaWNhdGUgYXZhaWxhYmxlIG1lbW9yeS4KLSAqIEFmdGVyIGZpbGxpbmcgZ3Vlc3RzIHN0
cnVjdHVyZXMsIG5yX3Zub2RlcywgbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMKLSAqIGNvcGll
ZCBiYWNrIHRvIGd1ZXN0LiBEb21haW4gcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgb2YgbnJfdm5v
ZGVzLAotICogbnJfdm1lbXJhbmdlcyBhbmQgbnJfdmNwdXMgdG8gZ3Vlc3QgaWYgdGhlIHZhbHVl
cyB3aGVyZSBpbmNvcnJlY3QuCi0gKi8KLXN0cnVjdCB2bnVtYV90b3BvbG9neV9pbmZvIHsKLSAg
ICAvKiBJTiAqLwotICAgIGRvbWlkX3QgZG9taWQ7Ci0gICAgdWludDE2X3QgcGFkOwotICAgIC8q
IElOL09VVCAqLwotICAgIHVuc2lnbmVkIGludCBucl92bm9kZXM7Ci0gICAgdW5zaWduZWQgaW50
IG5yX3ZjcHVzOwotICAgIHVuc2lnbmVkIGludCBucl92bWVtcmFuZ2VzOwotICAgIC8qIE9VVCAq
LwotICAgIHVuaW9uIHsKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBoOwotICAgICAg
ICB1aW50NjRfdCBwYWQ7Ci0gICAgfSB2ZGlzdGFuY2U7Ci0gICAgdW5pb24gewotICAgICAgICBY
RU5fR1VFU1RfSEFORExFKHVpbnQpIGg7Ci0gICAgICAgIHVpbnQ2NF90IHBhZDsKLSAgICB9IHZj
cHVfdG9fdm5vZGU7Ci0gICAgdW5pb24gewotICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZtZW1y
YW5nZV90KSBoOwotICAgICAgICB1aW50NjRfdCBwYWQ7Ci0gICAgfSB2bWVtcmFuZ2U7Ci19Owot
dHlwZWRlZiBzdHJ1Y3Qgdm51bWFfdG9wb2xvZ3lfaW5mbyB2bnVtYV90b3BvbG9neV9pbmZvX3Q7
Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2bnVtYV90b3BvbG9neV9pbmZvX3QpOwotCi0vKiBO
ZXh0IGF2YWlsYWJsZSBzdWJvcCBudW1iZXIgaXMgMjcgKi8KLQotI2VuZGlmIC8qIF9fWEVOX1BV
QkxJQ19NRU1PUllfSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBD
Ci0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdp
ZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCBiL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzM2ODhiOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9h
cmNoLXg4Ni94ZW4teDg2XzMyLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKyAqIHhlbi14ODZfMzIuaAorICoKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYg
MzItYml0IFhlbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3
YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwg
dG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwg
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFM
SU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIEsg
QSBGcmFzZXIKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMy
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9IX18KKworLyoK
KyAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6CisgKiAgSW5wdXQ6ICAlZWJ4LCAlZWN4LCAlZWR4LCAl
ZXNpLCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQorICogIE91dHB1dDogJWVheAorICogQWNj
ZXNzIGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEg
YSBYZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAq
IDMyCisgKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJj
YWxsIGNsb2JiZXJzICVlYngsJWVjeCkKKyAqLworCisvKgorICogVGhlc2UgZmxhdCBzZWdtZW50
cyBhcmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0aGVz
ZQorICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxs
IGJlIGFibGUgdG8gYXZvaWQKKyAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KKyAqLworI2Rl
ZmluZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXggMjU5ICovCisjZGVmaW5l
IEZMQVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAgKi8KKyNkZWZpbmUgRkxB
VF9SSU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJ
TkczX0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRfUklORzNf
RFMgMHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19TUyAw
eGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLworCisjZGVmaW5lIEZMQVRfS0VSTkVMX0NTIEZM
QVRfUklORzFfQ1MKKyNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9SSU5HMV9EUworI2RlZmlu
ZSBGTEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCisjZGVmaW5lIEZMQVRfVVNFUl9DUyAgICBG
TEFUX1JJTkczX0NTCisjZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFUX1JJTkczX0RTCisjZGVm
aW5lIEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCisKKyNkZWZpbmUgX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9T
VEFSVF9QQUUgICAgIDB4RjU4MDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFF
ICAgICAgIDB4RjY4MDAwMDAKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSAgICAg
IFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKKyNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKKyAgICBta191bnNpZ25lZF9s
b25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9F
TkRfUEFFICAgICAgICAgXAorICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9F
TkRfUEFFKQorCisvKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUuICovCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQ
SFlTX1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJ
UlRfRU5EX05PTlBBRSAgICAweEZDNDAwMDAwCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFS
VF9OT05QQUUgICBcCisgICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9TVEFS
VF9OT05QQUUpCisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgICBcCisgICAg
bWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKKyNkZWZpbmUg
TUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9f
TUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKKworI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9T
VEFSVCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklS
VF9TVEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKKyNkZWZpbmUgX19NQUNIMlBIWVNf
VklSVF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCisKKyNpZm5kZWYgSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9s
b25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKKyNkZWZpbmUgTUFDSDJQSFlT
X1ZJUlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNf
VklSVF9FTkQpCisjZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJU
X0VORC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCisjaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19t
YXBwaW5nCisjZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUxPTkdfUFRSICopTUFD
SDJQSFlTX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworLyogMzItLzY0LWJpdCBpbnZhcmlhYmlsaXR5
IGZvciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAqLworI2lmIGRlZmluZWQo
X19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorI3VuZGVmIF9fX0RFRklORV9YRU5f
R1VFU1RfSEFORExFCisjZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5
cGUpICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ndWVzdF9oYW5kbGVf
ICMjIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBz
dHJ1Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3QgcTsgfTsgfSAgXAorICAg
ICAgICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQorI3VuZGVmIHNldF94ZW5fZ3Vlc3RfaGFu
ZGxlX3JhdworI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9PSA4ICkgKih1aW50NjRf
dCAqKSYoaG5kKSA9IDA7ICAgXAorICAgICAgICAgKGhuZCkucCA9IHZhbDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKKyNkZWZpbmUgIGlu
dDY0X2FsaWduZWRfdCAgaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKKyNkZWZp
bmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkK
KyNkZWZpbmUgX19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFuZGxlXzY0XyAj
IyBuYW1lCisjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5fR1VFU1RfSEFO
RExFXzY0KG5hbWUpCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworc3RydWN0IGNw
dV91c2VyX3JlZ3MgeworICAgIHVpbnQzMl90IGVieDsKKyAgICB1aW50MzJfdCBlY3g7CisgICAg
dWludDMyX3QgZWR4OworICAgIHVpbnQzMl90IGVzaTsKKyAgICB1aW50MzJfdCBlZGk7CisgICAg
dWludDMyX3QgZWJwOworICAgIHVpbnQzMl90IGVheDsKKyAgICB1aW50MTZfdCBlcnJvcl9jb2Rl
OyAgICAvKiBwcml2YXRlICovCisgICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0
ZSAqLworICAgIHVpbnQzMl90IGVpcDsKKyAgICB1aW50MTZfdCBjczsKKyAgICB1aW50OF90ICBz
YXZlZF91cGNhbGxfbWFzazsKKyAgICB1aW50OF90ICBfcGFkMDsKKyAgICB1aW50MzJfdCBlZmxh
Z3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCisgICAgdWlu
dDMyX3QgZXNwOworICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKKyAgICB1aW50MTZfdCBlcywgX3Bh
ZDI7CisgICAgdWludDE2X3QgZHMsIF9wYWQzOworICAgIHVpbnQxNl90IGZzLCBfcGFkNDsKKyAg
ICB1aW50MTZfdCBncywgX3BhZDU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBj
cHVfdXNlcl9yZWdzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9yZWdzX3Qp
OworCisvKgorICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBkbyBub3QgZml0
IGludG8gYXJjaGl0ZWN0dXJhbCAlY3IzLgorICogV2hlbiBhY2Nlc3NpbmcgJWNyMywgb3IgZXF1
aXZhbGVudCBmaWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cworICogbXVzdCB1c2Ug
dGhlIGZvbGxvd2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFsaWQgTUZOcy4K
KyAqLworI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShwZm4pIDw8IDEy
KSB8ICgodW5zaWduZWQpKHBmbikgPj4gMjApKQorI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMp
ICgoKHVuc2lnbmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwgMjApKQorCitz
dHJ1Y3QgYXJjaF92Y3B1X2luZm8geworICAgIFVMT05HX1BUUiBjcjI7CisgICAgVUxPTkdfUFRS
IHBhZFs1XTsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IGFyY2hfdmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7CisKK3N0cnVjdCB4ZW5fY2FsbGJh
Y2sgeworICAgIFVMT05HX1BUUiBjczsKKyAgICBVTE9OR19QVFIgZWlwOworfTsKK3R5cGVkZWYg
c3RydWN0IHhlbl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKKworI2VuZGlmIC8qICFfX0FTU0VN
QkxZX18gKi8KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hf
XyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0
eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k
ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14
ODYveGVuLXg4Nl82NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OWVh
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4
Nl82NC5oCkBAIC0wLDAgKzEsMjAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiB4ZW4t
eDg2XzY0LmgKKyAqCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IDY0LWJpdCBYZW4uCisg
KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCisgKi8K
KworI2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18KKyNkZWZpbmUg
X19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fCisKKy8qCisgKiBIeXBlcmNhbGwg
aW50ZXJmYWNlOgorICogIElucHV0OiAgJXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkg
KGFyZ3VtZW50cyAxLTYpCisgKiAgT3V0cHV0OiAlcmF4CisgKiBBY2Nlc3MgaXMgdmlhIGh5cGVy
Y2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgorICog
IGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNhbGwtbnVtYmVyICogMzIKKyAqIENsb2JiZXJl
ZDogYXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJk
aSwlcnNpKQorICovCisKKy8qCisgKiA2NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKKyAqIFRoZXNl
IGZsYXQgc2VnbWVudHMgYXJlIGluIHRoZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdE
VC4gU2luY2UgdGhlc2UKKyAqIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBt
YW55IE9TZXMgd2lsbCBiZSBhYmxlIHRvIGF2b2lkCisgKiBpbnN0YWxsaW5nIHRoZWlyIG93biBH
RFQuCisgKi8KKworI2RlZmluZSBGTEFUX1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXgg
MjYwICovCisjZGVmaW5lIEZMQVRfUklORzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEg
Ki8KKyNkZWZpbmUgRkxBVF9SSU5HM19EUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwor
I2RlZmluZSBGTEFUX1JJTkczX0RTNjQgMHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCisjZGVm
aW5lIEZMQVRfUklORzNfU1MzMiAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KKyNkZWZpbmUg
RkxBVF9SSU5HM19TUzY0IDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLworCisjZGVmaW5lIEZM
QVRfS0VSTkVMX0RTNjQgRkxBVF9SSU5HM19EUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIg
RkxBVF9SSU5HM19EUzMyCisjZGVmaW5lIEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2
NAorI2RlZmluZSBGTEFUX0tFUk5FTF9DUzY0IEZMQVRfUklORzNfQ1M2NAorI2RlZmluZSBGTEFU
X0tFUk5FTF9DUzMyIEZMQVRfUklORzNfQ1MzMgorI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZM
QVRfS0VSTkVMX0NTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQK
KyNkZWZpbmUgRkxBVF9LRVJORUxfU1MzMiBGTEFUX1JJTkczX1NTMzIKKyNkZWZpbmUgRkxBVF9L
RVJORUxfU1MgICBGTEFUX0tFUk5FTF9TUzY0CisKKyNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxB
VF9SSU5HM19EUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgorI2Rl
ZmluZSBGTEFUX1VTRVJfRFMgICBGTEFUX1VTRVJfRFM2NAorI2RlZmluZSBGTEFUX1VTRVJfQ1M2
NCBGTEFUX1JJTkczX0NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMy
CisjZGVmaW5lIEZMQVRfVVNFUl9DUyAgIEZMQVRfVVNFUl9DUzY0CisjZGVmaW5lIEZMQVRfVVNF
Ul9TUzY0IEZMQVRfUklORzNfU1M2NAorI2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkcz
X1NTMzIKKyNkZWZpbmUgRkxBVF9VU0VSX1NTICAgRkxBVF9VU0VSX1NTNjQKKworI2RlZmluZSBf
X0hZUEVSVklTT1JfVklSVF9TVEFSVCAweEZGRkY4MDAwMDAwMDAwMDAKKyNkZWZpbmUgX19IWVBF
UlZJU09SX1ZJUlRfRU5EICAgMHhGRkZGODgwMDAwMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlT
X1ZJUlRfU1RBUlQgIDB4RkZGRjgwMDAwMDAwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19WSVJU
X0VORCAgICAweEZGRkY4MDQwMDAwMDAwMDAKKworI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RB
UlQKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBF
UlZJU09SX1ZJUlRfU1RBUlQpCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNp
Z25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX0VORCkKKyNlbmRpZgorCisjZGVmaW5lIE1BQ0gy
UEhZU19WSVJUX1NUQVJUICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQp
CisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQ
SFlTX1ZJUlRfRU5EKQorI2RlZmluZSBNQUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNf
VklSVF9FTkQtTUFDSDJQSFlTX1ZJUlRfU1RBUlQpPj4zKQorI2lmbmRlZiBtYWNoaW5lX3RvX3Bo
eXNfbWFwcGluZworI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAq
KUhZUEVSVklTT1JfVklSVF9TVEFSVCkKKyNlbmRpZgorCisvKgorICogaW50IEhZUEVSVklTT1Jf
c2V0X3NlZ21lbnRfYmFzZSh1bnNpZ25lZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQorICog
IEB3aGljaCA9PSBTRUdCQVNFXyogIDsgIEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKKyAq
IFJldHVybnMgMCBvbiBzdWNjZXNzLgorICovCisjZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAg
MAorI2RlZmluZSBTRUdCQVNFX0dTX1VTRVIgICAgIDEKKyNkZWZpbmUgU0VHQkFTRV9HU19LRVJO
RUwgICAyCisjZGVmaW5lIFNFR0JBU0VfR1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3Bl
Y2lmaWVkIGluIGJhc2VbMTU6MF0gKi8KKworLyoKKyAqIGludCBIWVBFUlZJU09SX2lyZXQodm9p
ZCkKKyAqIEFsbCBhcmd1bWVudHMgYXJlIG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xs
b3dpbmcgZm9ybWF0LgorICogTmV2ZXIgcmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtl
cm5lbCBjb250ZXh0IGlzIGxvc3QuCisgKiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxv
d3M6CisgKiAgIFJJTkcwIC0+IFJJTkczIGtlcm5lbCBtb2RlLgorICogICBSSU5HMSAtPiBSSU5H
MyBrZXJuZWwgbW9kZS4KKyAqICAgUklORzIgLT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJ
TkczIC0+IFJJTkczIHVzZXIgbW9kZS4KKyAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQg
dGhlIGd1ZXN0IGtlcm5lbCBzaG91bGQgcmV0dXJuIHRvIGl0ZXNlbGYKKyAqIGRpcmVjdGx5IHdp
dGgKKyAqICAgICAgb3JiICAgJDMsMSo4KCVyc3ApCisgKiAgICAgIGlyZXRxCisgKiBJZiBmbGFn
cyBjb250YWlucyBWR0NGX2luX3N5c2NhbGw6CisgKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFH
UywgUlNQLgorICogICBEaXNjYXJkIFIxMSwgUkNYLCBDUywgU1MuCisgKiBPdGhlcndpc2U6Cisg
KiAgIFJlc3RvcmUgUkFYLCBSMTEsIFJDWCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KKyAqIEFs
bCBvdGhlciByZWdpc3RlcnMgYXJlIHNhdmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9y
ZWQgdG8gdXNlci4KKyAqLworLyogR3Vlc3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0
dXJuIHRvIGd1ZXN0IHdpdGggU1lTUkVUPyAqLworI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgK
KyNkZWZpbmUgVkdDRl9pbl9zeXNjYWxsICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKKyNkZWZpbmUg
VkdDRl9JTl9TWVNDQUxMICBWR0NGX2luX3N5c2NhbGwKKworI2lmbmRlZiBfX0FTU0VNQkxZX18K
Kworc3RydWN0IGlyZXRfY29udGV4dCB7CisgICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBv
aW50IG9mIGh5cGVyY2FsbCkuICovCisgICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3Ms
IHJpcCwgY3MsIHJmbGFncywgcnNwLCBzczsKKyAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBm
cmFtZS4gKi8KK307CisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklD
VF9BTlNJX18pCisvKiBBbm9ueW1vdXMgdW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJp
dCBuYW1lcyAoZS5nLiwgZWF4L3JheCkuICovCisjZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5p
b24geyBcCisgICAgdWludDY0X3QgciAjIyBuYW1lLCBlICMjIG5hbWU7IFwKKyAgICB1aW50MzJf
dCBfZSAjIyBuYW1lOyBcCit9CisjZWxzZQorLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlz
IHVzZSB0aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcuLCByYXgpLiAqLworI2RlZmluZSBfX0RF
Q0xfUkVHKG5hbWUpIHVpbnQ2NF90IHIgIyMgbmFtZQorI2VuZGlmCisKK3N0cnVjdCBjcHVfdXNl
cl9yZWdzIHsKKyAgICB1aW50NjRfdCByMTU7CisgICAgdWludDY0X3QgcjE0OworICAgIHVpbnQ2
NF90IHIxMzsKKyAgICB1aW50NjRfdCByMTI7CisgICAgX19ERUNMX1JFRyhicCk7CisgICAgX19E
RUNMX1JFRyhieCk7CisgICAgdWludDY0X3QgcjExOworICAgIHVpbnQ2NF90IHIxMDsKKyAgICB1
aW50NjRfdCByOTsKKyAgICB1aW50NjRfdCByODsKKyAgICBfX0RFQ0xfUkVHKGF4KTsKKyAgICBf
X0RFQ0xfUkVHKGN4KTsKKyAgICBfX0RFQ0xfUkVHKGR4KTsKKyAgICBfX0RFQ0xfUkVHKHNpKTsK
KyAgICBfX0RFQ0xfUkVHKGRpKTsKKyAgICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2
YXRlICovCisgICAgdWludDMyX3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLworICAgIF9f
REVDTF9SRUcoaXApOworICAgIHVpbnQxNl90IGNzLCBfcGFkMFsxXTsKKyAgICB1aW50OF90ICBz
YXZlZF91cGNhbGxfbWFzazsKKyAgICB1aW50OF90ICBfcGFkMVszXTsKKyAgICBfX0RFQ0xfUkVH
KGZsYWdzKTsgICAgICAvKiByZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCisgICAg
X19ERUNMX1JFRyhzcCk7CisgICAgdWludDE2X3Qgc3MsIF9wYWQyWzNdOworICAgIHVpbnQxNl90
IGVzLCBfcGFkM1szXTsKKyAgICB1aW50MTZfdCBkcywgX3BhZDRbM107CisgICAgdWludDE2X3Qg
ZnMsIF9wYWQ1WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFz
ZS4gICAgICovCisgICAgdWludDE2X3QgZ3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtl
cyBwcmVjZWRlbmNlIG92ZXIgZ3NfYmFzZV91c3IuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgY3B1
X3VzZXJfcmVncyBjcHVfdXNlcl9yZWdzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVf
dXNlcl9yZWdzX3QpOworCisjdW5kZWYgX19ERUNMX1JFRworCisjZGVmaW5lIHhlbl9wZm5fdG9f
Y3IzKHBmbikgKChVTE9OR19QVFIpKHBmbikgPDwgMTIpCisjZGVmaW5lIHhlbl9jcjNfdG9fcGZu
KGNyMykgKChVTE9OR19QVFIpKGNyMykgPj4gMTIpCisKK3N0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7
CisgICAgVUxPTkdfUFRSIGNyMjsKKyAgICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9p
bmZvX3QpID09IDY0ICovCit9OwordHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92
Y3B1X2luZm9fdDsKKwordHlwZWRlZiBVTE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7CisKKyNlbmRp
ZiAvKiAhX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZf
WEVOX1g4Nl82NF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK
KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk
dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMv
YXJjaC14ODYveGVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjNjE3
ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4uaApA
QCAtMCwwICsxLDMwNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogYXJjaC14ODYveGVu
LmgKKyAqCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IFhlbi4KKyAqCisgKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisg
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB
UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor
ICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIKKyAqLworCisjaW5jbHVkZSAi
Li4veGVuLmgiCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKyNkZWZp
bmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKworLyogU3RydWN0dXJhbCBndWVzdCBo
YW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0Vf
VkVSU0lPTl9fID49IDB4MDAwMzAyMDEKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0
X2hhbmRsZV8gIyMgbmFtZQorI2Vsc2UKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lCisjZW5kaWYKKworLyoKKyAqIFhFTl9HVUVTVF9IQU5ETEUgcmVwcmVzZW50cyBhIGd1ZXN0
IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKKyAqIGluIGEgc3RydWN0IGluIG1lbW9y
eS4KKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50IGEgZ3Vlc3QgcG9pbnRlciwg
d2hlbiBwYXNzZWQgYXMgYW4KKyAqIGh5cGVyY2FsbCBhcmd1bWVudC4KKyAqIFhFTl9HVUVTVF9I
QU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRoZSBzYW1lIG9uIFg4NiBidXQK
KyAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMuCisgKi8KKyNkZWZp
bmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBcCisgICAgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAorICAgIF9fX0RFRklORV9YRU5fR1VF
U1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKKyNkZWZpbmUgREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIG5hbWUp
CisjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVf
ICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgICBfX1hFTl9H
VUVTVF9IQU5ETEUobmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShuYW1lKSAg
ICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3Jh
dyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGlsZSAoMCkKKyNpZmRlZiBfX1hF
Tl9UT09MU19fCisjZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxlKHZhbCwgaG5kKSAgZG8geyB2
YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQorI2VuZGlmCisjZGVmaW5lIHNldF94ZW5fZ3Vlc3Rf
aGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpCisKKyNp
ZiBkZWZpbmVkKF9faTM4Nl9fKQorI2luY2x1ZGUgInhlbi14ODZfMzIuaCIKKyNlbGlmIGRlZmlu
ZWQoX194ODZfNjRfXykKKyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCisjZW5kaWYKKworI2lmbmRl
ZiBfX0FTU0VNQkxZX18KK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsKKyNkZWZpbmUgUFJJ
X3hlbl9wZm4gImx4IgorI2VuZGlmCisKKyNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkg
MQorCisjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEKKworLyoKKyAqIGBpbmNvbnRl
bnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJsZXMKKyAqLworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5f
dCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOworICogYAorICovCisvKgorICogQSBu
dW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBz
aXR1YXRlZCBhdCB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBP
U2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICogaW4gdGhlaXIgQUJJLiBU
aGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBH
RFQsCisgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZhciBl
bmQgb2YgdGhlIEdEVC4KKyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhU
X1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLworI2RlZmluZSBGSVJTVF9S
RVNFUlZFRF9HRFRfUEFHRSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChG
SVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dE
VF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisKKy8qCisgKiBgIGVudW0g
bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1
NjQgZGVzYyk7CisgKiBgCisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mg
b2YgdGhlIGRlc2NyaXB0b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBh
IGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3Ig
dmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQorICogYCAgICAgICBuYXRp
dmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhpbXVtIG51bWJlciBvZiB2
aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovCisjZGVmaW5l
IFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVk
ZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OworI2RlZmluZSBQUklfeGVuX3Vsb25nICJseCIKKwor
LyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2go
VUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKKyAqIGAKKyAqIFNldHMgdGhlIHN0YWNrIHNl
Z21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisgKi8KKworLyoKKyAqIGAg
ZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBz
dHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOworICogYAorICovCisvKgorICogU2VuZCBhbiBhcnJh
eSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCkuCisgKiBUZXJtaW5hdGUg
dGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAu
CisgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIg
YSB0cmFwIHZpYSBhIHNvZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2Ugcmlu
Z3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisgKiBwcml2aWxlZ2UgbGV2
ZWxzIGFzIGZvbGxvd3M6CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCisgKiAgTGV2
ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgorICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50
ZXIKKyAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAqLworI2RlZmluZSBUSV9H
RVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZpbmUgVElfR0VUX0lGKF90
aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwp
ICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAo
KF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRyYXBfaW5mbyB7CisgICAg
dWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzogcHJp
dmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAqLworICAgIHVpbnQxNl90ICAg
ICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisgICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworfTsKK3R5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB0
cmFwX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KTsKKwordHlw
ZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLworCisv
KgorICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1
X2N0eHQgYmxvY2sgaXMgZmlsbGVkCisgKiBpbiBieSBGWFNBVkUgaWYgdGhlIENQVSBoYXMgZmVh
dHVyZSBGWFNSOyBvdGhlcndpc2UgRlNBVkUgaXMgdXNlZC4KKyAqCisgKiBBbHNvIG5vdGUgdGhh
dCB3aGVuIGNhbGxpbmcgRE9NQ1RMX3NldHZjcHVjb250ZXh0IGFuZCBWQ1BVX2luaXRpYWxpc2UK
KyAqIGZvciBIVk0gYW5kIFBWSCBndWVzdHMsIG5vdCBhbGwgaW5mb3JtYXRpb24gaW4gdGhpcyBz
dHJ1Y3R1cmUgaXMgdXBkYXRlZDoKKyAqCisgKiAtIEZvciBIVk0gZ3Vlc3RzLCB0aGUgc3RydWN0
dXJlcyByZWFkIGluY2x1ZGU6IGZwdV9jdHh0IChpZgorICogVkdDVF9JMzg3X1ZBTElEIGlzIHNl
dCksIGZsYWdzLCB1c2VyX3JlZ3MsIGRlYnVncmVnWypdCisgKgorICogLSBQVkggZ3Vlc3RzIGFy
ZSB0aGUgc2FtZSBhcyBIVk0gZ3Vlc3RzLCBidXQgYWRkaXRpb25hbGx5IHVzZSBjdHJscmVnWzNd
IHRvCisgKiBzZXQgY3IzLiBBbGwgb3RoZXIgZmllbGRzIG5vdCB1c2VkIHNob3VsZCBiZSBzZXQg
dG8gMC4KKyAqLworc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB7CisgICAgLyogRlBVIHJlZ2lz
dGVycyBjb21lIGZpcnN0IHNvIHRoZXkgY2FuIGJlIGFsaWduZWQgZm9yIEZYU0FWRS9GWFJTVE9S
LiAqLworICAgIHN0cnVjdCB7IGNoYXIgeFs1MTJdOyB9IGZwdV9jdHh0OyAgICAgICAvKiBVc2Vy
LWxldmVsIEZQVSByZWdpc3RlcnMgICAgICovCisjZGVmaW5lIFZHQ0ZfSTM4N19WQUxJRCAgICAg
ICAgICAgICAgICAoMTw8MCkKKyNkZWZpbmUgVkdDRl9JTl9LRVJORUwgICAgICAgICAgICAgICAg
ICgxPDwyKQorI2RlZmluZSBfVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgMAorI2RlZmlu
ZSBWR0NGX2kzODdfdmFsaWQgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2kzODdfdmFsaWQpCisj
ZGVmaW5lIF9WR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFZHQ0ZfaW5f
a2VybmVsICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0ZfaW5fa2VybmVsKQorI2RlZmluZSBfVkdD
Rl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgMworI2RlZmluZSBWR0NGX2ZhaWxzYWZlX2Rpc2Fi
bGVzX2V2ZW50cyAgKDE8PF9WR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZpbmUg
X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgIDQKKyNkZWZpbmUgVkdDRl9zeXNjYWxsX2Rp
c2FibGVzX2V2ZW50cyAgICgxPDxfVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZp
bmUgX1ZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgVkdDRl9vbmxpbmUg
ICAgICAgICAgICAgICAgICAgICgxPDxfVkdDRl9vbmxpbmUpCisgICAgVUxPTkdfUFRSIGZsYWdz
OyAgICAgICAgICAgICAgICAgICAgLyogVkdDRl8qIGZsYWdzICAgICAgICAgICAgICAgICAqLwor
ICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzIHVzZXJfcmVnczsgICAgICAgICAvKiBVc2VyLWxldmVs
IENQVSByZWdpc3RlcnMgICAgICovCisgICAgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2N0eHRbMjU2
XTsgICAgICAgIC8qIFZpcnR1YWwgSURUICAgICAgICAgICAgICAgICAgKi8KKyAgICBVTE9OR19Q
VFIgbGR0X2Jhc2UsIGxkdF9lbnRzOyAgICAgICAvKiBMRFQgKGxpbmVhciBhZGRyZXNzLCAjIGVu
dHMpICovCisgICAgVUxPTkdfUFRSIGdkdF9mcmFtZXNbMTZdLCBnZHRfZW50czsgLyogR0RUICht
YWNoaW5lIGZyYW1lcywgIyBlbnRzKSAqLworICAgIFVMT05HX1BUUiBrZXJuZWxfc3MsIGtlcm5l
bF9zcDsgICAgIC8qIFZpcnR1YWwgVFNTIChvbmx5IFNTMS9TUDEpICAgKi8KKyAgICAvKiBOQi4g
VXNlciBwYWdldGFibGUgb24geDg2LzY0IGlzIHBsYWNlZCBpbiBjdHJscmVnWzFdLiAqLworICAg
IFVMT05HX1BUUiBjdHJscmVnWzhdOyAgICAgICAgICAgICAgIC8qIENSMC1DUjcgKGNvbnRyb2wg
cmVnaXN0ZXJzKSAgKi8KKyAgICBVTE9OR19QVFIgZGVidWdyZWdbOF07ICAgICAgICAgICAgICAv
KiBEQjAtREI3IChkZWJ1ZyByZWdpc3RlcnMpICAgICovCisjaWZkZWYgX19pMzg2X18KKyAgICBV
TE9OR19QVFIgZXZlbnRfY2FsbGJhY2tfY3M7ICAgICAgICAvKiBDUzpFSVAgb2YgZXZlbnQgY2Fs
bGJhY2sgICAgICovCisgICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9O
R19QVFIgZmFpbHNhZmVfY2FsbGJhY2tfY3M7ICAgICAvKiBDUzpFSVAgb2YgZmFpbHNhZmUgY2Fs
bGJhY2sgICovCisgICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKKyNlbHNlCisg
ICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9OR19QVFIgZmFpbHNhZmVf
Y2FsbGJhY2tfZWlwOworI2lmZGVmIF9fWEVOX18KKyAgICB1bmlvbiB7CisgICAgICAgIFVMT05H
X1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGludCBldmVudF9jYWxsYmFja19jczsgICAgLyogY29tcGF0IENTIG9mIGV2ZW50
IGNiICAgICAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50IGZhaWxzYWZlX2NhbGxiYWNrX2Nz
OyAvKiBjb21wYXQgQ1Mgb2YgZmFpbHNhZmUgY2IgICovCisgICAgICAgIH07CisgICAgfTsKKyNl
bHNlCisgICAgVUxPTkdfUFRSIHN5c2NhbGxfY2FsbGJhY2tfZWlwOworI2VuZGlmCisjZW5kaWYK
KyAgICBVTE9OR19QVFIgdm1fYXNzaXN0OyAgICAgICAgICAgICAgICAvKiBWTUFTU1RfVFlQRV8q
IGJpdG1hcCAqLworI2lmZGVmIF9feDg2XzY0X18KKyAgICAvKiBTZWdtZW50IGJhc2UgYWRkcmVz
c2VzLiAqLworICAgIHVpbnQ2NF90ICAgICAgZnNfYmFzZTsKKyAgICB1aW50NjRfdCAgICAgIGdz
X2Jhc2Vfa2VybmVsOworICAgIHVpbnQ2NF90ICAgICAgZ3NfYmFzZV91c2VyOworI2VuZGlmCit9
OwordHlwZWRlZiBzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0IHZjcHVfZ3Vlc3RfY29udGV4dF90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodmNwdV9ndWVzdF9jb250ZXh0X3QpOworCitzdHJ1
Y3QgYXJjaF9zaGFyZWRfaW5mbyB7CisgICAgLyoKKyAgICAgKiBOdW1iZXIgb2YgdmFsaWQgZW50
cmllcyBpbiB0aGUgcDJtIHRhYmxlKHMpIGFuY2hvcmVkIGF0CisgICAgICogcGZuX3RvX21mbl9m
cmFtZV9saXN0X2xpc3QgYW5kL29yIHAybV92YWRkci4KKyAgICAgKi8KKyAgICBVTE9OR19QVFIg
bWF4X3BmbjsKKyAgICAvKgorICAgICAqIEZyYW1lIGNvbnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNv
bnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNvbnRhaW5pbmcgcDJtLgorICAgICAqIEEgdmFsdWUgb2Yg
MCBpbmRpY2F0ZXMgaXQgaGFzIG5vdCB5ZXQgYmVlbiBzZXQgdXAsIH4wIGluZGljYXRlcyBpdCBo
YXMKKyAgICAgKiBiZWVuIHNldCB0byBpbnZhbGlkIGUuZy4gZHVlIHRvIHRoZSBwMm0gYmVpbmcg
dG9vIGxhcmdlIGZvciB0aGUgMy1sZXZlbAorICAgICAqIHAybSB0cmVlLiBJbiB0aGlzIGNhc2Ug
dGhlIGxpbmVhciBtYXBwZXIgcDJtIGxpc3QgYW5jaG9yZWQgYXQgcDJtX3ZhZGRyCisgICAgICog
aXMgdG8gYmUgdXNlZC4KKyAgICAgKi8KKyAgICB4ZW5fcGZuX3QgICAgIHBmbl90b19tZm5fZnJh
bWVfbGlzdF9saXN0OworICAgIFVMT05HX1BUUiBubWlfcmVhc29uOworICAgIC8qCisgICAgICog
Rm9sbG93aW5nIHRocmVlIGZpZWxkcyBhcmUgdmFsaWQgaWYgcDJtX2NyMyBjb250YWlucyBhIHZh
bHVlIGRpZmZlcmVudAorICAgICAqIGZyb20gMC4KKyAgICAgKiBwMm1fY3IzIGlzIHRoZSByb290
IG9mIHRoZSBhZGRyZXNzIHNwYWNlIHdoZXJlIHAybV92YWRkciBpcyB2YWxpZC4KKyAgICAgKiBw
Mm1fY3IzIGlzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBhIGNyMyB2YWx1ZSBpbiB0aGUgdmNwdSBy
ZWdpc3RlciBzdGF0ZQorICAgICAqIGFuZCBob2xkcyB0aGUgZm9sZGVkIG1hY2hpbmUgZnJhbWUg
bnVtYmVyICh2aWEgeGVuX3Bmbl90b19jcjMpIG9mIGEKKyAgICAgKiBMMyBvciBMNCBwYWdlIHRh
YmxlLgorICAgICAqIHAybV92YWRkciBob2xkcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBs
aW5lYXIgcDJtIGxpc3QuIEFsbCBlbnRyaWVzCisgICAgICogaW4gdGhlIHJhbmdlIFswLi4ubWF4
X3BmblsgYXJlIGFjY2Vzc2libGUgdmlhIHRoaXMgcG9pbnRlci4KKyAgICAgKiBwMm1fZ2VuZXJh
dGlvbiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IHRoZSBndWVzdCBiZWZvcmUgYW5kIGFmdGVyIGVh
Y2gKKyAgICAgKiBjaGFuZ2Ugb2YgdGhlIG1hcHBpbmdzIG9mIHRoZSBwMm0gbGlzdC4gcDJtX2dl
bmVyYXRpb24gc3RhcnRzIGF0IDAgYW5kCisgICAgICogYSB2YWx1ZSB3aXRoIHRoZSBsZWFzdCBz
aWduaWZpY2FudCBiaXQgc2V0IGluZGljYXRlcyB0aGF0IGEgbWFwcGluZworICAgICAqIHVwZGF0
ZSBpcyBpbiBwcm9ncmVzcy4gVGhpcyBhbGxvd3MgZ3Vlc3QgZXh0ZXJuYWwgc29mdHdhcmUgKGUu
Zy4gaW4gRG9tMCkKKyAgICAgKiB0byB2ZXJpZnkgdGhhdCByZWFkIG1hcHBpbmdzIGFyZSBjb25z
aXN0ZW50IGFuZCB3aGV0aGVyIHRoZXkgaGF2ZSBjaGFuZ2VkCisgICAgICogc2luY2UgdGhlIGxh
c3QgY2hlY2suCisgICAgICogTW9kaWZ5aW5nIGEgcDJtIGVsZW1lbnQgaW4gdGhlIGxpbmVhciBw
Mm0gbGlzdCBpcyBhbGxvd2VkIHZpYSBhbiBhdG9taWMKKyAgICAgKiB3cml0ZSBvbmx5LgorICAg
ICAqLworICAgIFVMT05HX1BUUiBwMm1fY3IzOyAgICAgICAgIC8qIGNyMyB2YWx1ZSBvZiB0aGUg
cDJtIGFkZHJlc3Mgc3BhY2UgKi8KKyAgICBVTE9OR19QVFIgcDJtX3ZhZGRyOyAgICAgICAvKiB2
aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHAybSBsaXN0ICovCisgICAgVUxPTkdfUFRSIHAybV9nZW5l
cmF0aW9uOyAgLyogZ2VuZXJhdGlvbiBjb3VudCBvZiBwMm0gbWFwcGluZyAqLworI2lmZGVmIF9f
aTM4Nl9fCisgICAgLyogVGhlcmUncyBubyByb29tIGZvciB0aGlzIGZpZWxkIGluIHRoZSBnZW5l
cmljIHN0cnVjdHVyZS4gKi8KKyAgICB1aW50MzJfdCB3Y19zZWNfaGk7CisjZW5kaWYKK307Cit0
eXBlZGVmIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIGFyY2hfc2hhcmVkX2luZm9fdDsKKworI2Vu
ZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAq
IGAgSFlQRVJWSVNPUl9mcHVfdGFza3N3aXRjaChpbnQgc2V0KTsKKyAqIGAKKyAqIFNldHMgKGlm
IHNldCE9MCkgb3IgY2xlYXJzIChpZiBzZXQ9PTApIENSMC5UUy4KKyAqLworCisvKgorICogYCBl
bnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyhpbnQgcmVnbm8s
IFVMT05HX1BUUiB2YWx1ZSk7CisgKgorICogYCBVTE9OR19QVFIKKyAqIGAgSFlQRVJWSVNPUl9n
ZXRfZGVidWdyZWcoaW50IHJlZ25vKTsKKyAqIEZvciAwPD1yZWc8PTcsIHJldHVybnMgdGhlIGRl
YnVnIHJlZ2lzdGVyIHZhbHVlLgorICogRm9yIG90aGVyIHZhbHVlcyBvZiByZWcsIHJldHVybnMg
KChVTE9OR19QVFIpLUVJTlZBTCkuCisgKiAoVW5mb3J0dW5hdGVseSwgdGhpcyBpbnRlcmZhY2Ug
aXMgZGVmZWN0aXZlLikKKyAqLworCisvKgorICogUHJlZml4IGZvcmNlcyBlbXVsYXRpb24gb2Yg
c29tZSBub24tdHJhcHBpbmcgaW5zdHJ1Y3Rpb25zLgorICogQ3VycmVudGx5IG9ubHkgQ1BVSUQu
CisgKi8KKyNpZmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgWEVOX0VNVUxBVEVfUFJFRklYIC5i
eXRlIDB4MGYsMHgwYiwweDc4LDB4NjUsMHg2ZSA7CisjZGVmaW5lIFhFTl9DUFVJRCAgICAgICAg
ICBYRU5fRU1VTEFURV9QUkVGSVggY3B1aWQKKyNlbHNlCisjZGVmaW5lIFhFTl9FTVVMQVRFX1BS
RUZJWCAiLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsgIgorI2RlZmluZSBYRU5fQ1BV
SUQgICAgICAgICAgWEVOX0VNVUxBVEVfUFJFRklYICJjcHVpZCIKKyNlbmRpZgorCisjZW5kaWYg
LyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlh
YmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zm
c2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5k
OgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaCBiL2luY2x1ZGUv
eGVuL3B1YmxpYy9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2
NDQ2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaApAQCAt
MCwwICsxLDkzIEBACisjaWZuZGVmIF9fWEVOX1BVQkxJQ19FUlJOT19IX18KKworI2lmbmRlZiBf
X0FTU0VNQkxZX18KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIFhFTl8jI25hbWUg
PSB2YWx1ZSwKK2VudW0geGVuX2Vycm5vIHsKKworI2Vsc2UgLyogIV9fQVNTRU1CTFlfXyAqLwor
CisjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1ZSkgLmVxdSBYRU5fIyNuYW1lLCB2YWx1ZQor
CisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwgeyAg
WyAtRWZvbyBmb3IgZWFjaCBFZm9vIGluIHRoZSBsaXN0IGJlbG93IF0gIH0gKi8KKy8qIGAgZW51
bSBlcnJub3ZhbCB7ICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fICovCisK
KyNpZmRlZiBYRU5fRVJSTk8KKworLyoKKyAqIFZhbHVlcyBvcmlnaW5hdGluZyBmcm9tIHg4NiBM
aW51eC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHJlc3BlY3RpdmUKKyAqIHZhbHVlcyB3aGVuIGFk
ZGluZyBuZXcgZGVmaW5pdGlvbnMgaGVyZS4KKyAqLworCitYRU5fRVJSTk8oRVBFUk0sCSAxKQkv
KiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZCAqLworWEVOX0VSUk5PKEVOT0VOVCwJIDIpCS8qIE5v
IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgKi8KK1hFTl9FUlJOTyhFU1JDSCwJIDMpCS8qIE5vIHN1
Y2ggcHJvY2VzcyAqLworI2lmZGVmIF9fWEVOX18gLyogSW50ZXJuYWwgb25seSwgc2hvdWxkIG5l
dmVyIGJlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqLworWEVOX0VSUk5PKEVJTlRSLAkgNCkJLyog
SW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwgKi8KKyNlbmRpZgorWEVOX0VSUk5PKEVJTywJCSA1KQkv
KiBJL08gZXJyb3IgKi8KK1hFTl9FUlJOTyhFTlhJTywJIDYpCS8qIE5vIHN1Y2ggZGV2aWNlIG9y
IGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFMkJJRywJIDcpCS8qIEFyZyBsaXN0IHRvbyBMT05HX1BU
UiAqLworWEVOX0VSUk5PKEVOT0VYRUMsCSA4KQkvKiBFeGVjIGZvcm1hdCBlcnJvciAqLworWEVO
X0VSUk5PKEVCQURGLAkgOSkJLyogQmFkIGZpbGUgbnVtYmVyICovCitYRU5fRVJSTk8oRUNISUxE
LAkxMCkJLyogTm8gY2hpbGQgcHJvY2Vzc2VzICovCitYRU5fRVJSTk8oRUFHQUlOLAkxMSkJLyog
VHJ5IGFnYWluICovCitYRU5fRVJSTk8oRU5PTUVNLAkxMikJLyogT3V0IG9mIG1lbW9yeSAqLwor
WEVOX0VSUk5PKEVBQ0NFUywJMTMpCS8qIFBlcm1pc3Npb24gZGVuaWVkICovCitYRU5fRVJSTk8o
RUZBVUxULAkxNCkJLyogQmFkIGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFQlVTWSwJMTYpCS8qIERl
dmljZSBvciByZXNvdXJjZSBidXN5ICovCitYRU5fRVJSTk8oRUVYSVNULAkxNykJLyogRmlsZSBl
eGlzdHMgKi8KK1hFTl9FUlJOTyhFWERFViwJMTgpCS8qIENyb3NzLWRldmljZSBsaW5rICovCitY
RU5fRVJSTk8oRU5PREVWLAkxOSkJLyogTm8gc3VjaCBkZXZpY2UgKi8KK1hFTl9FUlJOTyhFSU5W
QUwsCTIyKQkvKiBJbnZhbGlkIGFyZ3VtZW50ICovCitYRU5fRVJSTk8oRU5GSUxFLAkyMykJLyog
RmlsZSB0YWJsZSBvdmVyZmxvdyAqLworWEVOX0VSUk5PKEVNRklMRSwJMjQpCS8qIFRvbyBtYW55
IG9wZW4gZmlsZXMgKi8KK1hFTl9FUlJOTyhFTk9TUEMsCTI4KQkvKiBObyBzcGFjZSBsZWZ0IG9u
IGRldmljZSAqLworWEVOX0VSUk5PKEVNTElOSywJMzEpCS8qIFRvbyBtYW55IGxpbmtzICovCitY
RU5fRVJSTk8oRURPTSwJCTMzKQkvKiBNYXRoIGFyZ3VtZW50IG91dCBvZiBkb21haW4gb2YgZnVu
YyAqLworWEVOX0VSUk5PKEVSQU5HRSwJMzQpCS8qIE1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRh
YmxlICovCitYRU5fRVJSTk8oRURFQURMSywJMzUpCS8qIFJlc291cmNlIGRlYWRsb2NrIHdvdWxk
IG9jY3VyICovCitYRU5fRVJSTk8oRU5BTUVUT09MT05HLAkzNikJLyogRmlsZSBuYW1lIHRvbyBM
T05HX1BUUiAqLworWEVOX0VSUk5PKEVOT0xDSywJMzcpCS8qIE5vIHJlY29yZCBsb2NrcyBhdmFp
bGFibGUgKi8KK1hFTl9FUlJOTyhFTk9TWVMsCTM4KQkvKiBGdW5jdGlvbiBub3QgaW1wbGVtZW50
ZWQgKi8KK1hFTl9FUlJOTyhFQkFEUlFDLAk1NikJLyogSW52YWxpZCByZXF1ZXN0IGNvZGUgKi8K
K1hFTl9FUlJOTyhFQkFEU0xULAk1NykJLyogSW52YWxpZCBzbG90ICovCitYRU5fRVJSTk8oRU5P
REFUQSwJNjEpCS8qIE5vIGRhdGEgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRVRJTUUsCTYyKQkv
KiBUaW1lciBleHBpcmVkICovCitYRU5fRVJSTk8oRUJBRE1TRywJNzQpCS8qIE5vdCBhIGRhdGEg
bWVzc2FnZSAqLworWEVOX0VSUk5PKEVPVkVSRkxPVywJNzUpCS8qIFZhbHVlIHRvbyBsYXJnZSBm
b3IgZGVmaW5lZCBkYXRhIHR5cGUgKi8KK1hFTl9FUlJOTyhFSUxTRVEsCTg0KQkvKiBJbGxlZ2Fs
IGJ5dGUgc2VxdWVuY2UgKi8KKyNpZmRlZiBfX1hFTl9fIC8qIEludGVybmFsIG9ubHksIHNob3Vs
ZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8KK1hFTl9FUlJOTyhFUkVTVEFSVCwJ
ODUpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsIHNob3VsZCBiZSByZXN0YXJ0ZWQgKi8KKyNl
bmRpZgorWEVOX0VSUk5PKEVVU0VSUywJODcpCS8qIFRvbyBtYW55IHVzZXJzICovCitYRU5fRVJS
Tk8oRU9QTk9UU1VQUCwJOTUpCS8qIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRyYW5zcG9y
dCBlbmRwb2ludCAqLworWEVOX0VSUk5PKEVBRERSSU5VU0UsCTk4KQkvKiBBZGRyZXNzIGFscmVh
ZHkgaW4gdXNlICovCitYRU5fRVJSTk8oRUFERFJOT1RBVkFJTCwgOTkpCS8qIENhbm5vdCBhc3Np
Z24gcmVxdWVzdGVkIGFkZHJlc3MgKi8KK1hFTl9FUlJOTyhFTk9CVUZTLAkxMDUpCS8qIE5vIGJ1
ZmZlciBzcGFjZSBhdmFpbGFibGUgKi8KK1hFTl9FUlJOTyhFSVNDT05OLAkxMDYpCS8qIFRyYW5z
cG9ydCBlbmRwb2ludCBpcyBhbHJlYWR5IGNvbm5lY3RlZCAqLworWEVOX0VSUk5PKEVOT1RDT05O
LAkxMDcpCS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICovCitYRU5fRVJS
Tk8oRVNIVVRET1dOLAkxMDgpCS8qIENhbm5vdCBzZW5kIGFmdGVyIHRyYW5zcG9ydCBlbmRwb2lu
dCBzaHV0ZG93biAqLworWEVOX0VSUk5PKEVUT09NQU5ZUkVGUywJMTA5KQkvKiBUb28gbWFueSBy
ZWZlcmVuY2VzOiBjYW5ub3Qgc3BsaWNlICovCitYRU5fRVJSTk8oRVRJTUVET1VULAkxMTApCS8q
IENvbm5lY3Rpb24gdGltZWQgb3V0ICovCisKKyN1bmRlZiBYRU5fRVJSTk8KKyNlbmRpZiAvKiBY
RU5fRVJSTk8gKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fCisjZGVmaW5lIF9f
WEVOX1BVQkxJQ19FUlJOT19IX18KKworLyogYCB9ICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9f
Cit9OworI2VuZGlmCisKKyNkZWZpbmUJWEVOX0VXT1VMREJMT0NLCVhFTl9FQUdBSU4JLyogT3Bl
cmF0aW9uIHdvdWxkIGJsb2NrICovCisjZGVmaW5lCVhFTl9FREVBRExPQ0sJWEVOX0VERUFETEsJ
LyogUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIgKi8KKworI2VuZGlmIC8qICBfX1hFTl9Q
VUJMSUNfRVJSTk9fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvZXZlbnRf
Y2hhbm5lbC5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2V2ZW50X2NoYW5uZWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWU1MzFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5j
bHVkZS94ZW4vcHVibGljL2V2ZW50X2NoYW5uZWwuaApAQCAtMCwwICsxLDM4NSBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorICogZXZlbnRfY2hhbm5lbC5oCisgKgorICogRXZlbnQgY2hhbm5l
bHMgYmV0d2VlbiBkb21haW5zLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgor
ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK
KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMt
MjAwNCwgSyBBIEZyYXNlci4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19FVkVOVF9DSEFO
TkVMX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfRVZFTlRfQ0hBTk5FTF9IX18KKworI2luY2x1
ZGUgInhlbi5oIgorCisvKgorICogYGluY29udGVudHMgMTUwIGV2dGNobiBFdmVudCBDaGFubmVs
cworICoKKyAqIEV2ZW50IGNoYW5uZWxzIGFyZSB0aGUgYmFzaWMgcHJpbWl0aXZlIHByb3ZpZGVk
IGJ5IFhlbiBmb3IgZXZlbnQKKyAqIG5vdGlmaWNhdGlvbnMuIEFuIGV2ZW50IGlzIHRoZSBYZW4g
ZXF1aXZhbGVudCBvZiBhIGhhcmR3YXJlCisgKiBpbnRlcnJ1cHQuIFRoZXkgZXNzZW50aWFsbHkg
c3RvcmUgb25lIGJpdCBvZiBpbmZvcm1hdGlvbiwgdGhlIGV2ZW50CisgKiBvZiBpbnRlcmVzdCBp
cyBzaWduYWxsZWQgYnkgdHJhbnNpdGlvbmluZyB0aGlzIGJpdCBmcm9tIDAgdG8gMS4KKyAqCisg
KiBOb3RpZmljYXRpb25zIGFyZSByZWNlaXZlZCBieSBhIGd1ZXN0IHZpYSBhbiB1cGNhbGwgZnJv
bSBYZW4sCisgKiBpbmRpY2F0aW5nIHdoZW4gYW4gZXZlbnQgYXJyaXZlcyAoc2V0dGluZyB0aGUg
Yml0KS4gRnVydGhlcgorICogbm90aWZpY2F0aW9ucyBhcmUgbWFza2VkIHVudGlsIHRoZSBiaXQg
aXMgY2xlYXJlZCBhZ2FpbiAodGhlcmVmb3JlLAorICogZ3Vlc3RzIG11c3QgY2hlY2sgdGhlIHZh
bHVlIG9mIHRoZSBiaXQgYWZ0ZXIgcmUtZW5hYmxpbmcgZXZlbnQKKyAqIGRlbGl2ZXJ5IHRvIGVu
c3VyZSBubyBtaXNzZWQgbm90aWZpY2F0aW9ucykuCisgKgorICogRXZlbnQgbm90aWZpY2F0aW9u
cyBjYW4gYmUgbWFza2VkIGJ5IHNldHRpbmcgYSBmbGFnOyB0aGlzIGlzCisgKiBlcXVpdmFsZW50
IHRvIGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZCBjYW4gYmUgdXNlZCB0byBlbnN1cmUKKyAqIGF0
b21pY2l0eSBvZiBjZXJ0YWluIG9wZXJhdGlvbnMgaW4gdGhlIGd1ZXN0IGtlcm5lbC4KKyAqCisg
KiBFdmVudCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGV2dGNobl8qIGZpZWxkcyBp
bgorICogc3RydWN0IHNoYXJlZF9pbmZvIGFuZCBzdHJ1Y3QgdmNwdV9pbmZvLgorICovCisKKy8q
CisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9v
cChlbnVtIGV2ZW50X2NoYW5uZWxfb3AgY21kLCB2b2lkICphcmdzKQorICogYAorICogQGNtZCAg
PT0gRVZUQ0hOT1BfKiAoZXZlbnQtY2hhbm5lbCBvcGVyYXRpb24pLgorICogQGFyZ3MgPT0gc3Ry
dWN0IGV2dGNobl8qIE9wZXJhdGlvbi1zcGVjaWZpYyBleHRyYSBhcmd1bWVudHMgKE5VTEwgaWYg
bm9uZSkuCisgKi8KKworLyogYCBlbnVtIGV2ZW50X2NoYW5uZWxfb3AgeyAvLyBFVlRDSE5PUF8q
ID0+IHN0cnVjdCBldnRjaG5fKiAqLworI2RlZmluZSBFVlRDSE5PUF9iaW5kX2ludGVyZG9tYWlu
IDAKKyNkZWZpbmUgRVZUQ0hOT1BfYmluZF92aXJxICAgICAgICAxCisjZGVmaW5lIEVWVENITk9Q
X2JpbmRfcGlycSAgICAgICAgMgorI2RlZmluZSBFVlRDSE5PUF9jbG9zZSAgICAgICAgICAgIDMK
KyNkZWZpbmUgRVZUQ0hOT1Bfc2VuZCAgICAgICAgICAgICA0CisjZGVmaW5lIEVWVENITk9QX3N0
YXR1cyAgICAgICAgICAgNQorI2RlZmluZSBFVlRDSE5PUF9hbGxvY191bmJvdW5kICAgIDYKKyNk
ZWZpbmUgRVZUQ0hOT1BfYmluZF9pcGkgICAgICAgICA3CisjZGVmaW5lIEVWVENITk9QX2JpbmRf
dmNwdSAgICAgICAgOAorI2RlZmluZSBFVlRDSE5PUF91bm1hc2sgICAgICAgICAgIDkKKyNkZWZp
bmUgRVZUQ0hOT1BfcmVzZXQgICAgICAgICAgIDEwCisjZGVmaW5lIEVWVENITk9QX2luaXRfY29u
dHJvbCAgICAxMQorI2RlZmluZSBFVlRDSE5PUF9leHBhbmRfYXJyYXkgICAgMTIKKyNkZWZpbmUg
RVZUQ0hOT1Bfc2V0X3ByaW9yaXR5ICAgIDEzCisvKiBgIH0gKi8KKwordHlwZWRlZiB1aW50MzJf
dCBldnRjaG5fcG9ydF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZXZ0Y2huX3BvcnRfdCk7
CisKKy8qCisgKiBFVlRDSE5PUF9hbGxvY191bmJvdW5kOiBBbGxvY2F0ZSBhIHBvcnQgaW4gZG9t
YWluIDxkb20+IGFuZCBtYXJrIGFzCisgKiBhY2NlcHRpbmcgaW50ZXJkb21haW4gYmluZGluZ3Mg
ZnJvbSBkb21haW4gPHJlbW90ZV9kb20+LiBBIGZyZXNoIHBvcnQKKyAqIGlzIGFsbG9jYXRlZCBp
biA8ZG9tPiBhbmQgcmV0dXJuZWQgYXMgPHBvcnQ+LgorICogTk9URVM6CisgKiAgMS4gSWYgdGhl
IGNhbGxlciBpcyB1bnByaXZpbGVnZWQgdGhlbiA8ZG9tPiBtdXN0IGJlIERPTUlEX1NFTEYuCisg
KiAgMi4gPHJkb20+IG1heSBiZSBET01JRF9TRUxGLCBhbGxvd2luZyBsb29wYmFjayBjb25uZWN0
aW9ucy4KKyAqLworc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kIHsKKyAgICAvKiBJTiBwYXJh
bWV0ZXJzICovCisgICAgZG9taWRfdCBkb20sIHJlbW90ZV9kb207CisgICAgLyogT1VUIHBhcmFt
ZXRlcnMgKi8KKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0
Y2huX2FsbG9jX3VuYm91bmQgZXZ0Y2huX2FsbG9jX3VuYm91bmRfdDsKKworLyoKKyAqIEVWVENI
Tk9QX2JpbmRfaW50ZXJkb21haW46IENvbnN0cnVjdCBhbiBpbnRlcmRvbWFpbiBldmVudCBjaGFu
bmVsIGJldHdlZW4KKyAqIHRoZSBjYWxsaW5nIGRvbWFpbiBhbmQgPHJlbW90ZV9kb20+LiA8cmVt
b3RlX2RvbSxyZW1vdGVfcG9ydD4gbXVzdCBpZGVudGlmeQorICogYSBwb3J0IHRoYXQgaXMgdW5i
b3VuZCBhbmQgbWFya2VkIGFzIGFjY2VwdGluZyBiaW5kaW5ncyBmcm9tIHRoZSBjYWxsaW5nCisg
KiBkb21haW4uIEEgZnJlc2ggcG9ydCBpcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxpbmcgZG9tYWlu
IGFuZCByZXR1cm5lZCBhcworICogPGxvY2FsX3BvcnQ+LgorICoKKyAqIEluIGNhc2UgdGhlIHBl
ZXIgZG9tYWluIGhhcyBhbHJlYWR5IHRyaWVkIHRvIHNldCBvdXIgZXZlbnQgY2hhbm5lbAorICog
cGVuZGluZywgYmVmb3JlIGl0IHdhcyBib3VuZCwgRVZUQ0hOT1BfYmluZF9pbnRlcmRvbWFpbiBh
bHdheXMgc2V0cworICogdGhlIGxvY2FsIGV2ZW50IGNoYW5uZWwgcGVuZGluZy4KKyAqCisgKiBU
aGUgdXN1YWwgcGF0dGVybiBvZiB1c2UsIGluIHRoZSBndWVzdCdzIHVwY2FsbCAob3Igc3Vic2Vx
dWVudAorICogaGFuZGxlcikgaXMgYXMgZm9sbG93czogKFJlLWVuYWJsZSB0aGUgZXZlbnQgY2hh
bm5lbCBmb3Igc3Vic2VxdWVudAorICogc2lnbmFsbGluZyBhbmQgdGhlbikgY2hlY2sgZm9yIHRo
ZSBleGlzdGVuY2Ugb2Ygd2hhdGV2ZXIgY29uZGl0aW9uCisgKiBpcyBiZWluZyB3YWl0ZWQgZm9y
IGJ5IG90aGVyIG1lYW5zLCBhbmQgdGFrZSB3aGF0ZXZlciBhY3Rpb24gaXMKKyAqIG5lZWRlZCAo
aWYgYW55KS4KKyAqCisgKiBOT1RFUzoKKyAqICAxLiA8cmVtb3RlX2RvbT4gbWF5IGJlIERPTUlE
X1NFTEYsIGFsbG93aW5nIGxvb3BiYWNrIGNvbm5lY3Rpb25zLgorICovCitzdHJ1Y3QgZXZ0Y2hu
X2JpbmRfaW50ZXJkb21haW4geworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRf
dCByZW1vdGVfZG9tOworICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQ7CisgICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0OworfTsKK3R5cGVk
ZWYgc3RydWN0IGV2dGNobl9iaW5kX2ludGVyZG9tYWluIGV2dGNobl9iaW5kX2ludGVyZG9tYWlu
X3Q7CisKKy8qCisgKiBFVlRDSE5PUF9iaW5kX3ZpcnE6IEJpbmQgYSBsb2NhbCBldmVudCBjaGFu
bmVsIHRvIFZJUlEgPGlycT4gb24gc3BlY2lmaWVkCisgKiB2Y3B1LgorICogTk9URVM6CisgKiAg
MS4gVmlydHVhbCBJUlFzIGFyZSBjbGFzc2lmaWVkIGFzIHBlci12Y3B1IG9yIGdsb2JhbC4gU2Vl
IHRoZSBWSVJRIGxpc3QKKyAqICAgICBpbiB4ZW4uaCBmb3IgdGhlIGNsYXNzaWZpY2F0aW9uIG9m
IGVhY2ggVklSUS4KKyAqICAyLiBHbG9iYWwgVklSUXMgbXVzdCBiZSBhbGxvY2F0ZWQgb24gVkNQ
VTAgYnV0IGNhbiBzdWJzZXF1ZW50bHkgYmUKKyAqICAgICByZS1ib3VuZCB2aWEgRVZUQ0hOT1Bf
YmluZF92Y3B1LgorICogIDMuIFBlci12Y3B1IFZJUlFzIG1heSBiZSBib3VuZCB0byBhdCBtb3N0
IG9uZSBldmVudCBjaGFubmVsIHBlciB2Y3B1LgorICogICAgIFRoZSBhbGxvY2F0ZWQgZXZlbnQg
Y2hhbm5lbCBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWVkIHZjcHUgYW5kIHRoZQorICogICAgIGJp
bmRpbmcgY2Fubm90IGJlIGNoYW5nZWQuCisgKi8KK3N0cnVjdCBldnRjaG5fYmluZF92aXJxIHsK
KyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQzMl90IHZpcnE7IC8qIGVudW0gdmly
cSAqLworICAgIHVpbnQzMl90IHZjcHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAg
ZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX3ZpcnEg
ZXZ0Y2huX2JpbmRfdmlycV90OworCisvKgorICogRVZUQ0hOT1BfYmluZF9waXJxOiBCaW5kIGEg
bG9jYWwgZXZlbnQgY2hhbm5lbCB0byBhIHJlYWwgSVJRIChQSVJRIDxpcnE+KS4KKyAqIE5PVEVT
OgorICogIDEuIEEgcGh5c2ljYWwgSVJRIG1heSBiZSBib3VuZCB0byBhdCBtb3N0IG9uZSBldmVu
dCBjaGFubmVsIHBlciBkb21haW4uCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxl
Z2VkIGRvbWFpbiBtYXkgYmluZCB0byBhIHBoeXNpY2FsIElSUS4KKyAqLworc3RydWN0IGV2dGNo
bl9iaW5kX3BpcnEgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgcGly
cTsKKyNkZWZpbmUgQklORF9QSVJRX19XSUxMX1NIQVJFIDEKKyAgICB1aW50MzJfdCBmbGFnczsg
LyogQklORF9QSVJRX18qICovCisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2hu
X3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5kX3BpcnEgZXZ0Y2hu
X2JpbmRfcGlycV90OworCisvKgorICogRVZUQ0hOT1BfYmluZF9pcGk6IEJpbmQgYSBsb2NhbCBl
dmVudCBjaGFubmVsIHRvIHJlY2VpdmUgZXZlbnRzLgorICogTk9URVM6CisgKiAgMS4gVGhlIGFs
bG9jYXRlZCBldmVudCBjaGFubmVsIGlzIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgdmNwdS4gVGhl
IGJpbmRpbmcKKyAqICAgICBtYXkgbm90IGJlIGNoYW5nZWQuCisgKi8KK3N0cnVjdCBldnRjaG5f
YmluZF9pcGkgeworICAgIHVpbnQzMl90IHZjcHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICov
CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9iaW5k
X2lwaSBldnRjaG5fYmluZF9pcGlfdDsKKworLyoKKyAqIEVWVENITk9QX2Nsb3NlOiBDbG9zZSBh
IGxvY2FsIGV2ZW50IGNoYW5uZWwgPHBvcnQ+LiBJZiB0aGUgY2hhbm5lbCBpcworICogaW50ZXJk
b21haW4gdGhlbiB0aGUgcmVtb3RlIGVuZCBpcyBwbGFjZWQgaW4gdGhlIHVuYm91bmQgc3RhdGUK
KyAqIChFVlRDSE5TVEFUX3VuYm91bmQpLCBhd2FpdGluZyBhIG5ldyBjb25uZWN0aW9uLgorICov
CitzdHJ1Y3QgZXZ0Y2huX2Nsb3NlIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGV2
dGNobl9wb3J0X3QgcG9ydDsKK307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fY2xvc2UgZXZ0Y2hu
X2Nsb3NlX3Q7CisKKy8qCisgKiBFVlRDSE5PUF9zZW5kOiBTZW5kIGFuIGV2ZW50IHRvIHRoZSBy
ZW1vdGUgZW5kIG9mIHRoZSBjaGFubmVsIHdob3NlIGxvY2FsCisgKiBlbmRwb2ludCBpcyA8cG9y
dD4uCisgKi8KK3N0cnVjdCBldnRjaG5fc2VuZCB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8K
KyAgICBldnRjaG5fcG9ydF90IHBvcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX3NlbmQg
ZXZ0Y2huX3NlbmRfdDsKKworLyoKKyAqIEVWVENITk9QX3N0YXR1czogR2V0IHRoZSBjdXJyZW50
IHN0YXR1cyBvZiB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdoaWNoCisgKiBoYXMgYW4gZW5k
cG9pbnQgYXQgPGRvbSwgcG9ydD4uCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3Bl
Y2lmaWVkIGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxl
Z2VkIGRvbWFpbiBtYXkgb2J0YWluIHRoZSBzdGF0dXMgb2YgYW4gZXZlbnQKKyAqICAgICBjaGFu
bmVsIGZvciB3aGljaCA8ZG9tPiBpcyBub3QgRE9NSURfU0VMRi4KKyAqLworc3RydWN0IGV2dGNo
bl9zdGF0dXMgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBkb21pZF90ICBkb207Cisg
ICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisjZGVmaW5l
IEVWVENITlNUQVRfY2xvc2VkICAgICAgIDAgIC8qIENoYW5uZWwgaXMgbm90IGluIHVzZS4gICAg
ICAgICAgICAgICAgICovCisjZGVmaW5lIEVWVENITlNUQVRfdW5ib3VuZCAgICAgIDEgIC8qIENo
YW5uZWwgaXMgd2FpdGluZyBpbnRlcmRvbSBjb25uZWN0aW9uLiovCisjZGVmaW5lIEVWVENITlNU
QVRfaW50ZXJkb21haW4gIDIgIC8qIENoYW5uZWwgaXMgY29ubmVjdGVkIHRvIHJlbW90ZSBkb21h
aW4uICovCisjZGVmaW5lIEVWVENITlNUQVRfcGlycSAgICAgICAgIDMgIC8qIENoYW5uZWwgaXMg
Ym91bmQgdG8gYSBwaHlzIElSUSBsaW5lLiAgICovCisjZGVmaW5lIEVWVENITlNUQVRfdmlycSAg
ICAgICAgIDQgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8gYSB2aXJ0dWFsIElSUSBsaW5lICovCisj
ZGVmaW5lIEVWVENITlNUQVRfaXBpICAgICAgICAgIDUgIC8qIENoYW5uZWwgaXMgYm91bmQgdG8g
YSB2aXJ0dWFsIElQSSBsaW5lICovCisgICAgdWludDMyX3Qgc3RhdHVzOworICAgIHVpbnQzMl90
IHZjcHU7ICAgICAgICAgICAgICAgICAvKiBWQ1BVIHRvIHdoaWNoIHRoaXMgY2hhbm5lbCBpcyBi
b3VuZC4gICAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGRv
bWlkX3QgZG9tOworICAgICAgICB9IHVuYm91bmQ7ICAgICAgICAgICAgICAgICAvKiBFVlRDSE5T
VEFUX3VuYm91bmQgKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGRvbWlkX3QgZG9t
OworICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgICAgICB9IGludGVyZG9tYWlu
OyAgICAgICAgICAgICAvKiBFVlRDSE5TVEFUX2ludGVyZG9tYWluICovCisgICAgICAgIHVpbnQz
Ml90IHBpcnE7ICAgICAgICAgICAgIC8qIEVWVENITlNUQVRfcGlycSAgICAgICAgKi8KKyAgICAg
ICAgdWludDMyX3QgdmlycTsgICAgICAgICAgICAgLyogRVZUQ0hOU1RBVF92aXJxICAgICAgICAq
LworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCBldnRjaG5fc3RhdHVzIGV2dGNobl9zdGF0
dXNfdDsKKworLyoKKyAqIEVWVENITk9QX2JpbmRfdmNwdTogU3BlY2lmeSB3aGljaCB2Y3B1IGEg
Y2hhbm5lbCBzaG91bGQgbm90aWZ5IHdoZW4gYW4KKyAqIGV2ZW50IGlzIHBlbmRpbmcuCisgKiBO
T1RFUzoKKyAqICAxLiBJUEktYm91bmQgY2hhbm5lbHMgYWx3YXlzIG5vdGlmeSB0aGUgdmNwdSBz
cGVjaWZpZWQgYXQgYmluZCB0aW1lLgorICogICAgIFRoaXMgYmluZGluZyBjYW5ub3QgYmUgY2hh
bmdlZC4KKyAqICAyLiBQZXItVkNQVSBWSVJRIGNoYW5uZWxzIGFsd2F5cyBub3RpZnkgdGhlIHZj
cHUgc3BlY2lmaWVkIGF0IGJpbmQgdGltZS4KKyAqICAgICBUaGlzIGJpbmRpbmcgY2Fubm90IGJl
IGNoYW5nZWQuCisgKiAgMy4gQWxsIG90aGVyIGNoYW5uZWxzIG5vdGlmeSB2Y3B1MCBieSBkZWZh
dWx0LiBUaGlzIGRlZmF1bHQgaXMgc2V0IHdoZW4KKyAqICAgICB0aGUgY2hhbm5lbCBpcyBhbGxv
Y2F0ZWQgKGEgcG9ydCB0aGF0IGlzIGZyZWVkIGFuZCBzdWJzZXF1ZW50bHkgcmV1c2VkCisgKiAg
ICAgaGFzIGl0cyBiaW5kaW5nIHJlc2V0IHRvIHZjcHUwKS4KKyAqLworc3RydWN0IGV2dGNobl9i
aW5kX3ZjcHUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZXZ0Y2huX3BvcnRfdCBw
b3J0OworICAgIHVpbnQzMl90IHZjcHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZXZ0Y2huX2JpbmRf
dmNwdSBldnRjaG5fYmluZF92Y3B1X3Q7CisKKy8qCisgKiBFVlRDSE5PUF91bm1hc2s6IFVubWFz
ayB0aGUgc3BlY2lmaWVkIGxvY2FsIGV2ZW50LWNoYW5uZWwgcG9ydCBhbmQgZGVsaXZlcgorICog
YSBub3RpZmljYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIFZDUFUgaWYgYW4gZXZlbnQgaXMgcGVu
ZGluZy4KKyAqLworc3RydWN0IGV2dGNobl91bm1hc2sgeworICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovCisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl91
bm1hc2sgZXZ0Y2huX3VubWFza190OworCisvKgorICogRVZUQ0hOT1BfcmVzZXQ6IENsb3NlIGFs
bCBldmVudCBjaGFubmVscyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWVkIGRvbWFpbi4KKyAqIE5P
VEVTOgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAy
LiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IG90aGVy
IHRoYW4gRE9NSURfU0VMRi4KKyAqICAzLiBEZXN0cm95cyBhbGwgY29udHJvbCBibG9ja3MgYW5k
IGV2ZW50IGFycmF5LCByZXNldHMgZXZlbnQgY2hhbm5lbAorICogICAgIG9wZXJhdGlvbnMgdG8g
Mi1sZXZlbCBBQkkgaWYgY2FsbGVkIHdpdGggPGRvbT4gPT0gRE9NSURfU0VMRiBhbmQgRklGTwor
ICogICAgIEFCSSB3YXMgdXNlZC4gR3Vlc3RzIHNob3VsZCBub3QgYmluZCBldmVudHMgZHVyaW5n
IEVWVENITk9QX3Jlc2V0IGNhbGwKKyAqICAgICBhcyB0aGVzZSBldmVudHMgYXJlIGxpa2VseSB0
byBiZSBsb3N0LgorICovCitzdHJ1Y3QgZXZ0Y2huX3Jlc2V0IHsKKyAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLworICAgIGRvbWlkX3QgZG9tOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9yZXNl
dCBldnRjaG5fcmVzZXRfdDsKKworLyoKKyAqIEVWVENITk9QX2luaXRfY29udHJvbDogaW5pdGlh
bGl6ZSB0aGUgY29udHJvbCBibG9jayBmb3IgdGhlIEZJRk8gQUJJLgorICoKKyAqIE5vdGU6IGFu
eSBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IHBlbmRpbmcgd2lsbCBub3QgYmUgcmVzZW50IGFu
ZAorICogd2lsbCBiZSBsb3N0LiAgR3Vlc3RzIHNob3VsZCBjYWxsIHRoaXMgYmVmb3JlIGJpbmRp
bmcgYW55IGV2ZW50IHRvCisgKiBhdm9pZCBsb3NpbmcgYW55IGV2ZW50cy4KKyAqLworc3RydWN0
IGV2dGNobl9pbml0X2NvbnRyb2wgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWlu
dDY0X3QgY29udHJvbF9nZm47CisgICAgdWludDMyX3Qgb2Zmc2V0OworICAgIHVpbnQzMl90IHZj
cHU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgdWludDhfdCBsaW5rX2JpdHM7Cisg
ICAgdWludDhfdCBfcGFkWzddOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9pbml0X2NvbnRy
b2wgZXZ0Y2huX2luaXRfY29udHJvbF90OworCisvKgorICogRVZUQ0hOT1BfZXhwYW5kX2FycmF5
OiBhZGQgYW4gYWRkaXRpb25hbCBwYWdlIHRvIHRoZSBldmVudCBhcnJheS4KKyAqLworc3RydWN0
IGV2dGNobl9leHBhbmRfYXJyYXkgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWlu
dDY0X3QgYXJyYXlfZ2ZuOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9leHBhbmRfYXJyYXkg
ZXZ0Y2huX2V4cGFuZF9hcnJheV90OworCisvKgorICogRVZUQ0hOT1Bfc2V0X3ByaW9yaXR5OiBz
ZXQgdGhlIHByaW9yaXR5IGZvciBhbiBldmVudCBjaGFubmVsLgorICovCitzdHJ1Y3QgZXZ0Y2hu
X3NldF9wcmlvcml0eSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBw
b3J0OworICAgIHVpbnQzMl90IHByaW9yaXR5OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9z
ZXRfcHJpb3JpdHkgZXZ0Y2huX3NldF9wcmlvcml0eV90OworCisvKgorICogYCBlbnVtIG5lZ19l
cnJub3ZhbAorICogYCBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0KHN0cnVjdCBl
dnRjaG5fb3AgKm9wKQorICogYAorICogU3VwZXJjZWRlZCBieSBuZXcgZXZlbnRfY2hhbm5lbF9v
cCgpIGh5cGVyY2FsbCBzaW5jZSAweDAwMDMwMjAyLgorICovCitzdHJ1Y3QgZXZ0Y2huX29wIHsK
KyAgICB1aW50MzJfdCBjbWQ7IC8qIGVudW0gZXZlbnRfY2hhbm5lbF9vcCAqLworICAgIHVuaW9u
IHsKKyAgICAgICAgc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5kICAgIGFsbG9jX3VuYm91bmQ7
CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kX2ludGVyZG9tYWlu
OworICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSAgICAgICAgYmluZF92aXJxOworICAg
ICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfcGlycSAgICAgICAgYmluZF9waXJxOworICAgICAgICBz
dHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpICAgICAgICAgYmluZF9pcGk7CisgICAgICAgIHN0cnVjdCBl
dnRjaG5fY2xvc2UgICAgICAgICAgICBjbG9zZTsKKyAgICAgICAgc3RydWN0IGV2dGNobl9zZW5k
ICAgICAgICAgICAgIHNlbmQ7CisgICAgICAgIHN0cnVjdCBldnRjaG5fc3RhdHVzICAgICAgICAg
ICBzdGF0dXM7CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92Y3B1ICAgICAgICBiaW5kX3Zj
cHU7CisgICAgICAgIHN0cnVjdCBldnRjaG5fdW5tYXNrICAgICAgICAgICB1bm1hc2s7CisgICAg
fSB1OworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9vcCBldnRjaG5fb3BfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKGV2dGNobl9vcF90KTsKKworLyoKKyAqIDItbGV2ZWwgQUJJCisgKi8K
KworI2RlZmluZSBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMgKHNpemVvZih4ZW5fdWxvbmdfdCkgKiBz
aXplb2YoeGVuX3Vsb25nX3QpICogNjQpCisKKy8qCisgKiBGSUZPIEFCSQorICovCisKKy8qIEV2
ZW50cyBtYXkgaGF2ZSBwcmlvcml0aWVzIGZyb20gMCAoaGlnaGVzdCkgdG8gMTUgKGxvd2VzdCku
ICovCisjZGVmaW5lIEVWVENITl9GSUZPX1BSSU9SSVRZX01BWCAgICAgMAorI2RlZmluZSBFVlRD
SE5fRklGT19QUklPUklUWV9ERUZBVUxUIDcKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlf
TUlOICAgICAxNQorCisjZGVmaW5lIEVWVENITl9GSUZPX01BWF9RVUVVRVMgKEVWVENITl9GSUZP
X1BSSU9SSVRZX01JTiArIDEpCisKK3R5cGVkZWYgdWludDMyX3QgZXZlbnRfd29yZF90OworCisj
ZGVmaW5lIEVWVENITl9GSUZPX1BFTkRJTkcgMzEKKyNkZWZpbmUgRVZUQ0hOX0ZJRk9fTUFTS0VE
ICAzMAorI2RlZmluZSBFVlRDSE5fRklGT19MSU5LRUQgIDI5CisjZGVmaW5lIEVWVENITl9GSUZP
X0JVU1kgICAgMjgKKworI2RlZmluZSBFVlRDSE5fRklGT19MSU5LX0JJVFMgMTcKKyNkZWZpbmUg
RVZUQ0hOX0ZJRk9fTElOS19NQVNLICgoMSA8PCBFVlRDSE5fRklGT19MSU5LX0JJVFMpIC0gMSkK
KworI2RlZmluZSBFVlRDSE5fRklGT19OUl9DSEFOTkVMUyAoMSA8PCBFVlRDSE5fRklGT19MSU5L
X0JJVFMpCisKK3N0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2NrIHsKKyAgICB1aW50MzJf
dCByZWFkeTsKKyAgICB1aW50MzJfdCBfcnN2ZDsKKyAgICB1aW50MzJfdCBoZWFkW0VWVENITl9G
SUZPX01BWF9RVUVVRVNdOworfTsKK3R5cGVkZWYgc3RydWN0IGV2dGNobl9maWZvX2NvbnRyb2xf
YmxvY2sgZXZ0Y2huX2ZpZm9fY29udHJvbF9ibG9ja190OworCisjZW5kaWYgLyogX19YRU5fUFVC
TElDX0VWRU5UX0NIQU5ORUxfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt
b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog
dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm
IC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2ZlYXR1cmVzLmggYi9pbmNsdWRlL3hlbi9wdWJs
aWMvZmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ5ZmY1
Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2ZlYXR1cmVzLmgKQEAgLTAs
MCArMSwxMTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGZlYXR1cmVzLmgKKyAqCisg
KiBGZWF0dXJlIGZsYWdzLCByZXBvcnRlZCBieSBYRU5WRVJfZ2V0X2ZlYXR1cmVzLgorICoKKyAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg
KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS
RS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJj
ZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfRkVBVFVSRVNfSF9fCisjZGVmaW5l
IF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18KKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBlbGZu
b3Rlc19mZWF0dXJlcyBYRU5fRUxGTk9URV9GRUFUVVJFUworICoKKyAqIFRoZSBsaXN0IG9mIGFs
bCB0aGUgZmVhdHVyZXMgdGhlIGd1ZXN0IHN1cHBvcnRzLiBUaGV5IGFyZSBzZXQgYnkKKyAqIHBh
cnNpbmcgdGhlIFhFTl9FTEZOT1RFX0ZFQVRVUkVTIGFuZCBYRU5fRUxGTk9URV9TVVBQT1JURURf
RkVBVFVSRVMKKyAqIHN0cmluZy4gVGhlIGZvcm1hdCBpcyB0aGUgIGZlYXR1cmUgbmFtZXMgKGFz
IGdpdmVuIGhlcmUgd2l0aG91dCB0aGUKKyAqICJYRU5GRUFUXyIgcHJlZml4KSBzZXBhcmF0ZWQg
YnkgJ3wnIGNoYXJhY3RlcnMuCisgKiBJZiBhIGZlYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBr
ZXJuZWwgdG8gZnVuY3Rpb24gdGhlbiB0aGUgZmVhdHVyZSBuYW1lCisgKiBtdXN0IGJlIHByZWNl
ZGVkIGJ5IGEgJyEnIGNoYXJhY3Rlci4KKyAqCisgKiBOb3RlIHRoYXQgaWYgWEVOX0VMRk5PVEVf
U1VQUE9SVEVEX0ZFQVRVUkVTIGlzIHVzZWQsIHRoZW4gaW4gdGhlCisgKiBYRU5GRUFUX2RvbTAg
TVVTVCBiZSBzZXQgaWYgdGhlIGd1ZXN0IGlzIHRvIGJlIGJvb3RlZCBhcyBkb20wLAorICovCisK
Ky8qCisgKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIHdyaXRlLXByb3RlY3Qg
aXRzIHBhZ2V0YWJsZXMsIGFuZCBjYW4KKyAqIHVwZGF0ZSB0aGVtIHZpYSBkaXJlY3Qgd3JpdGVz
LgorICovCisjZGVmaW5lIFhFTkZFQVRfd3JpdGFibGVfcGFnZV90YWJsZXMgICAgICAgMAorCisv
KgorICogSWYgc2V0LCB0aGUgZ3Vlc3QgZG9lcyBub3QgbmVlZCB0byB3cml0ZS1wcm90ZWN0IGl0
cyBzZWdtZW50IGRlc2NyaXB0b3IKKyAqIHRhYmxlcywgYW5kIGNhbiB1cGRhdGUgdGhlbSB2aWEg
ZGlyZWN0IHdyaXRlcy4KKyAqLworI2RlZmluZSBYRU5GRUFUX3dyaXRhYmxlX2Rlc2NyaXB0b3Jf
dGFibGVzIDEKKworLyoKKyAqIElmIHNldCwgdHJhbnNsYXRpb24gYmV0d2VlbiB0aGUgZ3Vlc3Qn
cyAncHNldWRvLXBoeXNpY2FsJyBhZGRyZXNzIHNwYWNlCisgKiBhbmQgdGhlIGhvc3QncyBtYWNo
aW5lIGFkZHJlc3Mgc3BhY2UgYXJlIGhhbmRsZWQgYnkgdGhlIGh5cGVydmlzb3IuIEluIHRoaXMK
KyAqIG1vZGUgdGhlIGd1ZXN0IGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybSBwaHlzLXRvL2Zyb20t
bWFjaGluZSB0cmFuc2xhdGlvbnMKKyAqIHdoZW4gcGVyZm9ybWluZyBwYWdlIHRhYmxlIG9wZXJh
dGlvbnMuCisgKi8KKyNkZWZpbmUgWEVORkVBVF9hdXRvX3RyYW5zbGF0ZWRfcGh5c21hcCAgICAy
CisKKy8qIElmIHNldCwgdGhlIGd1ZXN0IGlzIHJ1bm5pbmcgaW4gc3VwZXJ2aXNvciBtb2RlIChl
LmcuLCB4ODYgcmluZyAwKS4gKi8KKyNkZWZpbmUgWEVORkVBVF9zdXBlcnZpc29yX21vZGVfa2Vy
bmVsICAgICAzCisKKy8qCisgKiBJZiBzZXQsIHRoZSBndWVzdCBkb2VzIG5vdCBuZWVkIHRvIGFs
bG9jYXRlIHg4NiBQQUUgcGFnZSBkaXJlY3RvcmllcworICogYmVsb3cgNEdCLiBUaGlzIGZsYWcg
aXMgdXN1YWxseSBpbXBsaWVkIGJ5IGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwLgorICovCisjZGVm
aW5lIFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRnYiAgICAgICAgNAorCisvKiB4ODY6IERvZXMg
dGhpcyBYZW4gaG9zdCBzdXBwb3J0IHRoZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIGh5cGVy
Y2FsbD8gKi8KKyNkZWZpbmUgWEVORkVBVF9tbXVfcHRfdXBkYXRlX3ByZXNlcnZlX2FkICA1CisK
Ky8qIHg4NjogRG9lcyB0aGlzIFhlbiBob3N0IHN1cHBvcnQgdGhlIE1NVV97Q0xFQVIsQ09QWX1f
UEFHRSBoeXBlcmNhbGw/ICovCisjZGVmaW5lIFhFTkZFQVRfaGlnaG1lbV9hc3Npc3QgICAgICAg
ICAgICAgNgorCisvKgorICogSWYgc2V0LCBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGhvbm9ycyBm
bGFncyB0byBiZSBwbGFjZWQgaW50byBndWVzdCBrZXJuZWwKKyAqIGF2YWlsYWJsZSBwdGUgYml0
cy4KKyAqLworI2RlZmluZSBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyAgICAgIDcKKwor
LyogeDg2OiBEb2VzIHRoaXMgWGVuIGhvc3Qgc3VwcG9ydCB0aGUgSFZNIGNhbGxiYWNrIHZlY3Rv
ciB0eXBlPyAqLworI2RlZmluZSBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IgICAgICAgIDgK
KworLyogeDg2OiBwdmNsb2NrIGFsZ29yaXRobSBpcyBzYWZlIHRvIHVzZSBvbiBIVk0gKi8KKyNk
ZWZpbmUgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrICAgICAgICAgICA5CisKKy8qIHg4NjogcGly
cSBjYW4gYmUgdXNlZCBieSBIVk0gZ3Vlc3RzICovCisjZGVmaW5lIFhFTkZFQVRfaHZtX3BpcnFz
ICAgICAgICAgICAgICAgICAxMAorCisvKiBvcGVyYXRpb24gYXMgRG9tMCBpcyBzdXBwb3J0ZWQg
Ki8KKyNkZWZpbmUgWEVORkVBVF9kb20wICAgICAgICAgICAgICAgICAgICAgIDExCisKKy8qIFhl
biBhbHNvIG1hcHMgZ3JhbnQgcmVmZXJlbmNlcyBhdCBwZm4gPSBtZm4uCisgKiBUaGlzIGZlYXR1
cmUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisjZGVmaW5lIFhF
TkZFQVRfZ3JhbnRfbWFwX2lkZW50aXR5ICAgICAgICAxMgorICovCisKKyNkZWZpbmUgWEVORkVB
VF9OUl9TVUJNQVBTIDEKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19GRUFUVVJFU19IX18gKi8K
KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog
IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10
YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJs
aWMvZ3JhbnRfdGFibGUuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjc5MTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUuaApAQCAtMCwwICsxLDY4MiBAQAorLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorICogZ3JhbnRfdGFibGUuaAorICoKKyAqIEludGVyZmFjZSBm
b3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8gcGFnZSBmcmFtZXMsIGFuZCByZWNlaXZpbmcK
KyAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0
IChjKSAyMDA0LCBLIEEgRnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfR1JBTlRf
VEFCTEVfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9IX18KKworI2luY2x1
ZGUgInhlbi5oIgorCisvKgorICogYGluY29udGVudHMgMTUwIGdudHRhYiBHcmFudCBUYWJsZXMK
KyAqCisgKiBYZW4ncyBncmFudCB0YWJsZXMgcHJvdmlkZSBhIGdlbmVyaWMgbWVjaGFuaXNtIHRv
IG1lbW9yeSBzaGFyaW5nCisgKiBiZXR3ZWVuIGRvbWFpbnMuIFRoaXMgc2hhcmVkIG1lbW9yeSBp
bnRlcmZhY2UgdW5kZXJwaW5zIHRoZSBzcGxpdAorICogZGV2aWNlIGRyaXZlcnMgZm9yIGJsb2Nr
IGFuZCBuZXR3b3JrIElPLgorICoKKyAqIEVhY2ggZG9tYWluIGhhcyBpdHMgb3duIGdyYW50IHRh
YmxlLiBUaGlzIGlzIGEgZGF0YSBzdHJ1Y3R1cmUgdGhhdAorICogaXMgc2hhcmVkIHdpdGggWGVu
OyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0ZWxsIFhlbiB3aGF0IGtpbmQgb2YKKyAqIHBlcm1p
c3Npb25zIG90aGVyIGRvbWFpbnMgaGF2ZSBvbiBpdHMgcGFnZXMuIEVudHJpZXMgaW4gdGhlIGdy
YW50CisgKiB0YWJsZSBhcmUgaWRlbnRpZmllZCBieSBncmFudCByZWZlcmVuY2VzLiBBIGdyYW50
IHJlZmVyZW5jZSBpcyBhbgorICogaW50ZWdlciwgd2hpY2ggaW5kZXhlcyBpbnRvIHRoZSBncmFu
dCB0YWJsZS4gSXQgYWN0cyBhcyBhCisgKiBjYXBhYmlsaXR5IHdoaWNoIHRoZSBncmFudGVlIGNh
biB1c2UgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIHRoZQorICogZ3JhbnRlcuKAmXMgbWVtb3J5
LgorICoKKyAqIFRoaXMgY2FwYWJpbGl0eS1iYXNlZCBzeXN0ZW0gYWxsb3dzIHNoYXJlZC1tZW1v
cnkgY29tbXVuaWNhdGlvbnMKKyAqIGJldHdlZW4gdW5wcml2aWxlZ2VkIGRvbWFpbnMuIEEgZ3Jh
bnQgcmVmZXJlbmNlIGFsc28gZW5jYXBzdWxhdGVzCisgKiB0aGUgZGV0YWlscyBvZiBhIHNoYXJl
ZCBwYWdlLCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYSBkb21haW4gdG8KKyAqIGtub3cgdGhlIHJl
YWwgbWFjaGluZSBhZGRyZXNzIG9mIGEgcGFnZSBpdCBpcyBzaGFyaW5nLiBUaGlzIG1ha2VzCisg
KiBpdCBwb3NzaWJsZSB0byBzaGFyZSBtZW1vcnkgY29ycmVjdGx5IHdpdGggZG9tYWlucyBydW5u
aW5nIGluCisgKiBmdWxseSB2aXJ0dWFsaXNlZCBtZW1vcnkuCisgKi8KKworLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisgKiBHUkFOVCBUQUJMRSBSRVBSRVNFTlRBVElPTgor
ICovCisKKy8qIFNvbWUgcm91Z2ggZ3VpZGVsaW5lcyBvbiBhY2Nlc3NpbmcgYW5kIHVwZGF0aW5n
IGdyYW50LXRhYmxlIGVudHJpZXMKKyAqIGluIGEgY29uY3VycmVuY3ktc2FmZSBtYW5uZXIuIEZv
ciBtb3JlIGluZm9ybWF0aW9uLCBMaW51eCBjb250YWlucyBhCisgKiByZWZlcmVuY2UgaW1wbGVt
ZW50YXRpb24gZm9yIGd1ZXN0IE9TZXMgKGRyaXZlcnMveGVuL2dyYW50X3RhYmxlLmMsIHNlZQor
ICogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGlu
dXguZ2l0O2E9YmxvYjtmPWRyaXZlcnMveGVuL2dyYW50LXRhYmxlLmM7aGI9SEVBRAorICoKKyAq
IE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50LWdlbmVyYXRpb24geDg2IHByb2Nlc3NvcnMu
IEhvd2V2ZXIsIGEKKyAqICAgICBjb21waWxlciBiYXJyaWVyIHdpbGwgc3RpbGwgYmUgcmVxdWly
ZWQuCisgKgorICogSW50cm9kdWNpbmcgYSB2YWxpZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJs
ZToKKyAqICAxLiBXcml0ZSBlbnQtPmRvbWlkLgorICogIDIuIFdyaXRlIGVudC0+ZnJhbWU6Cisg
KiAgICAgIEdURl9wZXJtaXRfYWNjZXNzOiAgIEZyYW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJt
aXR0ZWQuCisgKiAgICAgIEdURl9hY2NlcHRfdHJhbnNmZXI6IFBzZXVkby1waHlzIGZyYW1lIHNs
b3QgYmVpbmcgZmlsbGVkIGJ5IG5ldworICogICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZSwgb3IgemVybyBpZiBub25lLgorICogIDMuIFdyaXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLgor
ICogIDQuIFdyaXRlIGVudC0+ZmxhZ3MsIGluYy4gdmFsaWQgdHlwZS4KKyAqCisgKiBJbnZhbGlk
YXRpbmcgYW4gdW51c2VkIEdURl9wZXJtaXRfYWNjZXNzIGVudHJ5OgorICogIDEuIGZsYWdzID0g
ZW50LT5mbGFncy4KKyAqICAyLiBPYnNlcnZlIHRoYXQgIShmbGFncyAmIChHVEZfcmVhZGluZ3xH
VEZfd3JpdGluZykpLgorICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZl
bnQtPmZsYWdzLCBmbGFncywgMCkuCisgKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBv
ZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCisgKiAgICAgIHN0ZXAg
MywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3
cml0ZXMuCisgKgorICogSW52YWxpZGF0aW5nIGFuIGluLXVzZSBHVEZfcGVybWl0X2FjY2VzcyBl
bnRyeToKKyAqICBUaGlzIGNhbm5vdCBiZSBkb25lIGRpcmVjdGx5LiBSZXF1ZXN0IGFzc2lzdGFu
Y2UgZnJvbSB0aGUgZG9tYWluIGNvbnRyb2xsZXIKKyAqICB3aGljaCBjYW4gc2V0IGEgdGltZW91
dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQgZW50cnkgYW5kIHRha2UgbmVjZXNzYXJ5CisgKiAgYWN0
aW9uLiAoTkIuIFRoaXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCEpLgorICoKKyAqIEludmFsaWRh
dGluZyBhbiB1bnVzZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKKyAqICAxLiBmbGFncyA9
IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiBHVEZfdHJhbnNmZXJf
Y29tbWl0dGVkKS4gWypdCisgKiAgMy4gQ2hlY2sgcmVzdWx0IG9mIFNNUC1zYWZlIENNUFhDSEco
JmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KKyAqICBOQi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNl
IG9mIGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50IG9uIHN1Y2Nlc3Mgb2YKKyAqICAgICAgc3Rl
cCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3VhcmFudGVlIG9yZGVyaW5nIG9mIGN0cmwtZGVw
IHdyaXRlcy4KKyAqICBbKl0gSWYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCBpcyBzZXQgdGhlbiB0
aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcuCisgKiAgICAgIFRoZSBndWVzdCBtdXN0IC9u
b3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgdGhlIGFkZHJlc3Mgb2YgdGhlCisgKiAg
ICAgIHRyYW5zZmVycmVkIGZyYW1lIGlzIHdyaXR0ZW4uIEl0IGlzIHNhZmUgZm9yIHRoZSBndWVz
dCB0byBzcGluIHdhaXRpbmcKKyAqICAgICAgZm9yIHRoaXMgdG8gb2NjdXIgKGRldGVjdCBieSBv
YnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpbgorICogICAgICBlbnQtPmZsYWdzKS4K
KyAqCisgKiBJbnZhbGlkYXRpbmcgYSBjb21taXR0ZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRy
eToKKyAqICAxLiBXYWl0IGZvciAoZW50LT5mbGFncyAmIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQp
LgorICoKKyAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byBy
ZWFkLW9ubHk6CisgKiAgVXNlIFNNUC1zYWZlIENNUFhDSEcgdG8gc2V0IEdURl9yZWFkb25seSwg
d2hpbGUgY2hlY2tpbmcgIUdURl93cml0aW5nLgorICoKKyAqIENoYW5naW5nIGEgR1RGX3Blcm1p
dF9hY2Nlc3MgZnJvbSByZWFkLW9ubHkgdG8gd3JpdGFibGU6CisgKiAgVXNlIFNNUC1zYWZlIGJp
dC1zZXR0aW5nIGluc3RydWN0aW9uLgorICovCisKKy8qCisgKiBSZWZlcmVuY2UgdG8gYSBncmFu
dCBlbnRyeSBpbiBhIHNwZWNpZmllZCBkb21haW4ncyBncmFudCB0YWJsZS4KKyAqLwordHlwZWRl
ZiB1aW50MzJfdCBncmFudF9yZWZfdDsKKworLyoKKyAqIEEgZ3JhbnQgdGFibGUgY29tcHJpc2Vz
IGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJpZXMgaW4gb25lIG9yIG1vcmUKKyAqIHBhZ2Ug
ZnJhbWVzIHNoYXJlZCBiZXR3ZWVuIFhlbiBhbmQgYSBndWVzdC4KKyAqIFtYRU5dOiBUaGlzIGZp
ZWxkIGlzIHdyaXR0ZW4gYnkgWGVuIGFuZCByZWFkIGJ5IHRoZSBzaGFyaW5nIGd1ZXN0LgorICog
W0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBieSB0aGUgZ3Vlc3QgYW5kIHJlYWQgYnkgWGVu
LgorICovCisKKy8qCisgKiBWZXJzaW9uIDEgb2YgdGhlIGdyYW50IHRhYmxlIGVudHJ5IHN0cnVj
dHVyZSBpcyBtYWludGFpbmVkIHB1cmVseQorICogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
LiAgTmV3IGd1ZXN0cyBzaG91bGQgdXNlIHZlcnNpb24gMi4KKyAqLworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjBhCisjZGVmaW5lIGdyYW50X2VudHJ5X3YxIGdyYW50
X2VudHJ5CisjZGVmaW5lIGdyYW50X2VudHJ5X3YxX3QgZ3JhbnRfZW50cnlfdAorI2VuZGlmCitz
dHJ1Y3QgZ3JhbnRfZW50cnlfdjEgeworICAgIC8qIEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQg
ZmxhZyBpbmZvcm1hdGlvbi4gIFtYRU4sR1NUXSAqLworICAgIHVpbnQxNl90IGZsYWdzOworICAg
IC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBmb3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICov
CisgICAgZG9taWRfdCAgZG9taWQ7CisgICAgLyoKKyAgICAgKiBHVEZfcGVybWl0X2FjY2Vzczog
RnJhbWUgdGhhdCBAZG9taWQgaXMgYWxsb3dlZCB0byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KKyAg
ICAgKiBHVEZfYWNjZXB0X3RyYW5zZmVyOiBGcmFtZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJy
ZWQgYnkgQGRvbWlkLiBbWEVOXQorICAgICAqLworICAgIHVpbnQzMl90IGZyYW1lOworfTsKK3R5
cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X3YxIGdyYW50X2VudHJ5X3YxX3Q7CisKKy8qIFRoZSBm
aXJzdCBmZXcgZ3JhbnQgdGFibGUgZW50cmllcyB3aWxsIGJlIHByZXNlcnZlZCBhY3Jvc3MgZ3Jh
bnQgdGFibGUKKyAqIHZlcnNpb24gY2hhbmdlcyBhbmQgbWF5IGJlIHByZS1wb3B1bGF0ZWQgYXQg
ZG9tYWluIGNyZWF0aW9uIGJ5IHRvb2xzLgorICovCisjZGVmaW5lIEdOVFRBQl9OUl9SRVNFUlZF
RF9FTlRSSUVTICAgICA4CisjZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9DT05TT0xFICAgICAgICAw
CisjZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9YRU5TVE9SRSAgICAgICAxCisKKy8qCisgKiBUeXBl
IG9mIGdyYW50IGVudHJ5LgorICogIEdURl9pbnZhbGlkOiBUaGlzIGdyYW50IGVudHJ5IGdyYW50
cyBubyBwcml2aWxlZ2VzLgorICogIEdURl9wZXJtaXRfYWNjZXNzOiBBbGxvdyBAZG9taWQgdG8g
bWFwL2FjY2VzcyBAZnJhbWUuCisgKiAgR1RGX2FjY2VwdF90cmFuc2ZlcjogQWxsb3cgQGRvbWlk
IHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBvbmUgcGFnZSBmcmFtZQorICogICAgICAgICAgICAg
ICAgICAgICAgIHRvIHRoaXMgZ3Vlc3QuIFhlbiB3cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIEBm
cmFtZS4KKyAqICBHVEZfdHJhbnNpdGl2ZTogQWxsb3cgQGRvbWlkIHRvIHRyYW5zaXRpdmVseSBh
Y2Nlc3MgYSBzdWJyYW5nZSBvZgorICogICAgICAgICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4g
QHRyYW5zX2RvbWlkLiAgTm8gbWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKi8KKyNkZWZpbmUgR1RG
X2ludmFsaWQgICAgICAgICAoMFU8PDApCisjZGVmaW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFV
PDwwKQorI2RlZmluZSBHVEZfYWNjZXB0X3RyYW5zZmVyICgyVTw8MCkKKyNkZWZpbmUgR1RGX3Ry
YW5zaXRpdmUgICAgICAoM1U8PDApCisjZGVmaW5lIEdURl90eXBlX21hc2sgICAgICAgKDNVPDww
KQorCisvKgorICogU3ViZmxhZ3MgZm9yIEdURl9wZXJtaXRfYWNjZXNzLgorICogIEdURl9yZWFk
b25seTogUmVzdHJpY3QgQGRvbWlkIHRvIHJlYWQtb25seSBtYXBwaW5ncyBhbmQgYWNjZXNzZXMu
IFtHU1RdCisgKiAgR1RGX3JlYWRpbmc6IEdyYW50IGVudHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQg
Zm9yIHJlYWRpbmcgYnkgQGRvbWlkLiBbWEVOXQorICogIEdURl93cml0aW5nOiBHcmFudCBlbnRy
eSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciB3cml0aW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAqICBH
VEZfUEFULCBHVEZfUFdULCBHVEZfUENEOiAoeDg2KSBjYWNoZSBhdHRyaWJ1dGUgZmxhZ3MgZm9y
IHRoZSBncmFudCBbR1NUXQorICogIEdURl9zdWJfcGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkg
YSBzdWJyYW5nZSBvZiB0aGUgcGFnZS4gIEBkb21pZAorICogICAgICAgICAgICAgICAgd2lsbCBv
bmx5IGJlIGFsbG93ZWQgdG8gY29weSBmcm9tIHRoZSBncmFudCwgYW5kIG5vdAorICogICAgICAg
ICAgICAgICAgbWFwIGl0LiBbR1NUXQorICovCisjZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAg
KDIpCisjZGVmaW5lIEdURl9yZWFkb25seSAgICAgICAgKDFVPDxfR1RGX3JlYWRvbmx5KQorI2Rl
ZmluZSBfR1RGX3JlYWRpbmcgICAgICAgICgzKQorI2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAg
ICgxVTw8X0dURl9yZWFkaW5nKQorI2RlZmluZSBfR1RGX3dyaXRpbmcgICAgICAgICg0KQorI2Rl
ZmluZSBHVEZfd3JpdGluZyAgICAgICAgICgxVTw8X0dURl93cml0aW5nKQorI2RlZmluZSBfR1RG
X1BXVCAgICAgICAgICAgICg1KQorI2RlZmluZSBHVEZfUFdUICAgICAgICAgICAgICgxVTw8X0dU
Rl9QV1QpCisjZGVmaW5lIF9HVEZfUENEICAgICAgICAgICAgKDYpCisjZGVmaW5lIEdURl9QQ0Qg
ICAgICAgICAgICAgKDFVPDxfR1RGX1BDRCkKKyNkZWZpbmUgX0dURl9QQVQgICAgICAgICAgICAo
NykKKyNkZWZpbmUgR1RGX1BBVCAgICAgICAgICAgICAoMVU8PF9HVEZfUEFUKQorI2RlZmluZSBf
R1RGX3N1Yl9wYWdlICAgICAgICg4KQorI2RlZmluZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8
X0dURl9zdWJfcGFnZSkKKworLyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVy
OgorICogIEdURl90cmFuc2Zlcl9jb21taXR0ZWQ6IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRp
Y2F0ZSB0aGF0IGl0IGlzIGNvbW1pdHRlZAorICogICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJz
aGlwIG9mIGEgcGFnZSBmcmFtZS4gV2hlbiBhIGd1ZXN0IHNlZXMgdGhpcyBmbGFnCisgKiAgICAg
IGl0IG11c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFudCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJf
Y29tcGxldGVkIGlzCisgKiAgICAgIHNldCBieSBYZW4uCisgKiAgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZDogSXQgaXMgc2FmZSBmb3IgdGhlIGd1ZXN0IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcK
KyAqICAgICAgYWZ0ZXIgcmVhZGluZyBHVEZfdHJhbnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBh
bHdheXMgd3JpdGUgdGhlIGZyYW1lCisgKiAgICAgIGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5n
IHRoaXMgZmxhZywgaW4gYSB0aW1lbHkgbWFubmVyLgorICovCisjZGVmaW5lIF9HVEZfdHJhbnNm
ZXJfY29tbWl0dGVkICgyKQorI2RlZmluZSBHVEZfdHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9H
VEZfdHJhbnNmZXJfY29tbWl0dGVkKQorI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAo
MykKKyNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2Nv
bXBsZXRlZCkKKworLyoKKyAqIFZlcnNpb24gMiBncmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2Ug
ZnVsZmlsIHRoZSBzYW1lIHJvbGUgYXMKKyAqIHZlcnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJl
cHJlc2VudCBtb3JlIGNvbXBsaWNhdGVkIG9wZXJhdGlvbnMuCisgKiBBbnkgZ2l2ZW4gZG9tYWlu
IHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJzaW9uIDEgb3IgYSB2ZXJzaW9uIDIgdGFibGUsCisgKiBh
bmQgZXZlcnkgZW50cnkgaW4gdGhlIHRhYmxlIHdpbGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KKyAq
CisgKiBUaGUgaW50ZXJmYWNlIGJ5IHdoaWNoIGRvbWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMg
ZG9lcyBub3QgZGVwZW5kCisgKiBvbiB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkg
dGhlIG90aGVyIGRvbWFpbi4KKyAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0g
MHgwMDAzMDIwYQorLyoKKyAqIFZlcnNpb24gMSBhbmQgdmVyc2lvbiAyIGdyYW50IGVudHJpZXMg
c2hhcmUgYSBjb21tb24gcHJlZml4LiAgVGhlCisgKiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUg
ZG9jdW1lbnRlZCBhcyBwYXJ0IG9mIHN0cnVjdAorICogZ3JhbnRfZW50cnlfdjEuCisgKi8KK3N0
cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgeworICAgIHVpbnQxNl90IGZsYWdzOworICAgIGRvbWlk
X3QgIGRvbWlkOworfTsKK3R5cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9l
bnRyeV9oZWFkZXJfdDsKKworLyoKKyAqIFZlcnNpb24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3Ry
dWN0dXJlLgorICovCit1bmlvbiBncmFudF9lbnRyeV92MiB7CisgICAgZ3JhbnRfZW50cnlfaGVh
ZGVyX3QgaGRyOworCisgICAgLyoKKyAgICAgKiBUaGlzIG1lbWJlciBpcyB1c2VkIGZvciBWMS1z
dHlsZSBmdWxsIHBhZ2UgZ3JhbnRzLCB3aGVyZSBlaXRoZXI6CisgICAgICoKKyAgICAgKiAtLSBo
ZHIudHlwZSBpcyBHVEZfYWNjZXB0X3RyYW5zZmVyLCBvcgorICAgICAqIC0tIGhkci50eXBlIGlz
IEdURl9wZXJtaXRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgbm90IHNldC4KKyAgICAgKgor
ICAgICAqIEluIHRoYXQgY2FzZSwgdGhlIGZyYW1lIGZpZWxkIGhhcyB0aGUgc2FtZSBzZW1hbnRp
Y3MgYXMgdGhlCisgICAgICogZmllbGQgb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUgVjEgZW50cnkg
c3RydWN0dXJlLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGdyYW50X2VudHJ5X2hl
YWRlcl90IGhkcjsKKyAgICAgICAgdWludDMyX3QgcGFkMDsKKyAgICAgICAgdWludDY0X3QgZnJh
bWU7CisgICAgfSBmdWxsX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCB0eXBl
IGlzIEdURl9ncmFudF9hY2Nlc3MgYW5kIEdURl9zdWJfcGFnZSBpcyBzZXQsCisgICAgICogQGRv
bWlkIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGJ5dGVzIFtAcGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5n
dGgpCisgICAgICogaW4gZnJhbWUgQGZyYW1lLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAg
ICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAgICAgdWludDE2X3QgcGFnZV9vZmY7
CisgICAgICAgIHVpbnQxNl90IGxlbmd0aDsKKyAgICAgICAgdWludDY0X3QgZnJhbWU7CisgICAg
fSBzdWJfcGFnZTsKKworICAgIC8qCisgICAgICogSWYgdGhlIGdyYW50IGlzIEdURl90cmFuc2l0
aXZlLCBAZG9taWQgaXMgYWxsb3dlZCB0byB1c2UgdGhlCisgICAgICogZ3JhbnQgQGdyZWYgaW4g
ZG9tYWluIEB0cmFuc19kb21pZCwgYXMgaWYgaXQgd2FzIHRoZSBsb2NhbAorICAgICAqIGRvbWFp
bi4gIE9idmlvdXNseSwgdGhlIHRyYW5zaXRpdmUgYWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQor
ICAgICAqIHdpdGggdGhlIG9yaWdpbmFsIGdyYW50LgorICAgICAqCisgICAgICogVGhlIGN1cnJl
bnQgdmVyc2lvbiBvZiBYZW4gZG9lcyBub3QgYWxsb3cgdHJhbnNpdGl2ZSBncmFudHMKKyAgICAg
KiB0byBiZSBtYXBwZWQuCisgICAgICovCisgICAgc3RydWN0IHsKKyAgICAgICAgZ3JhbnRfZW50
cnlfaGVhZGVyX3QgaGRyOworICAgICAgICBkb21pZF90IHRyYW5zX2RvbWlkOworICAgICAgICB1
aW50MTZfdCBwYWQwOworICAgICAgICBncmFudF9yZWZfdCBncmVmOworICAgIH0gdHJhbnNpdGl2
ZTsKKworICAgIHVpbnQzMl90IF9fc3BhY2VyWzRdOyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28g
Ki8KK307Cit0eXBlZGVmIHVuaW9uIGdyYW50X2VudHJ5X3YyIGdyYW50X2VudHJ5X3YyX3Q7CisK
K3R5cGVkZWYgdWludDE2X3QgZ3JhbnRfc3RhdHVzX3Q7CisKKyNlbmRpZiAvKiBfX1hFTl9JTlRF
UkZBQ0VfVkVSU0lPTl9fICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICogR1JBTlQgVEFCTEUgUVVFUklFUyBBTkQgVVNFUworICovCisKKy8qIGAgZW51bSBuZWdf
ZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcChlbnVtIGdyYW50X3RhYmxl
X29wIGNtZCwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdzLAorICog
YCAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCkKKyAqIGAKKyAq
CisgKiBAYXJncyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgYSBwZXItY29tbWFuZCBkYXRhIHN0cnVj
dHVyZS4gVGhlIGFycmF5CisgKiBoYXMgQGNvdW50IG1lbWJlcnMKKyAqLworCisvKiBgIGVudW0g
Z3JhbnRfdGFibGVfb3AgeyAvLyBHTlRUQUJPUF8qID0+IHN0cnVjdCBnbnR0YWJfKiAqLworI2Rl
ZmluZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmICAgICAgICAwCisjZGVmaW5lIEdOVFRBQk9QX3Vu
bWFwX2dyYW50X3JlZiAgICAgIDEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0dXBfdGFibGUgICAgICAg
ICAgMgorI2RlZmluZSBHTlRUQUJPUF9kdW1wX3RhYmxlICAgICAgICAgICAzCisjZGVmaW5lIEdO
VFRBQk9QX3RyYW5zZmVyICAgICAgICAgICAgIDQKKyNkZWZpbmUgR05UVEFCT1BfY29weSAgICAg
ICAgICAgICAgICAgNQorI2RlZmluZSBHTlRUQUJPUF9xdWVyeV9zaXplICAgICAgICAgICA2Cisj
ZGVmaW5lIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBsYWNlICAgIDcKKyNpZiBfX1hFTl9JTlRFUkZB
Q0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24g
ICAgICAgICAgOAorI2RlZmluZSBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lcyAgICA5CisjZGVm
aW5lIEdOVFRBQk9QX2dldF92ZXJzaW9uICAgICAgICAgIDEwCisjZGVmaW5lIEdOVFRBQk9QX3N3
YXBfZ3JhbnRfcmVmCSAgICAgIDExCisjZGVmaW5lIEdOVFRBQk9QX2NhY2hlX2ZsdXNoCSAgICAg
IDEyCisjZW5kaWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworLyogYCB9ICovCisK
Ky8qCisgKiBIYW5kbGUgdG8gdHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQgcmVm
ZXJlbmNlLgorICovCit0eXBlZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OworCisvKgorICog
R05UVEFCT1BfbWFwX2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJlZj4p
IGZvciBhY2Nlc3MKKyAqIGJ5IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vzc2Z1
bCwgPGhhbmRsZT4gaXMgYSB0cmFja2luZyBudW1iZXIKKyAqIHRoYXQgbXVzdCBiZSBwcmVzZW50
ZWQgbGF0ZXIgdG8gZGVzdHJveSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxoYW5kbGU+Cisg
KiBpcyBhIG5lZ2F0aXZlIHN0YXR1cyBjb2RlLgorICogTk9URVM6CisgKiAgMS4gSWYgR05UTUFQ
X2RldmljZV9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFkZHJl
c3MKKyAqICAgICB2aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRlZCBm
cmFtZS4KKyAqICAyLiBJZiBHTlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBtYXBw
aW5nIHdpbGwgYmUgYWRkZWQgYXQKKyAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRkcmVz
cyBpbiB0aGUgY3VycmVudCBhZGRyZXNzIHNwYWNlLCBvciBhdAorICogICAgIGEgUFRFIGF0IHRo
ZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bworICog
ICAgIHBlcmZvcm0gaXMgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0ZSBm
bGFnLCBhbmQgdGhlCisgKiAgICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRkcj4u
CisgKiAgMy4gTWFwcGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91
bm1hcF9ncmFudF9yZWYuIElmIGEKKyAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVkIGJ5
IG90aGVyIG1lYW5zIHRoZW4gaXQgaXMgKk5PVCogZ3VhcmFudGVlZAorICogICAgIHRvIGJlIGFj
Y291bnRlZCB0byB0aGUgY29ycmVjdCBncmFudCByZWZlcmVuY2UhCisgKi8KK3N0cnVjdCBnbnR0
YWJfbWFwX2dyYW50X3JlZiB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRf
dCBob3N0X2FkZHI7CisgICAgdWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAgICAgLyogR05UTUFQ
XyogKi8KKyAgICBncmFudF9yZWZfdCByZWY7CisgICAgZG9taWRfdCAgZG9tOworICAgIC8qIE9V
VCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+
IGVudW0gZ3JhbnRfc3RhdHVzICovCisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAgIHVp
bnQ2NF90IGRldl9idXNfYWRkcjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfbWFwX2dyYW50
X3JlZiBnbnR0YWJfbWFwX2dyYW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250
dGFiX21hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWY6
IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCisgKiB0cmFja2Vk
IGJ5IDxoYW5kbGU+LiBJZiA8aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBpcyB6ZXJvLCB0
aGF0CisgKiBmaWVsZCBpcyBpZ25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0IHJlZmVyIHRv
IGEgZGV2aWNlL2hvc3QgbWFwcGluZworICogdGhhdCBpcyB0cmFja2VkIGJ5IDxoYW5kbGU+Cisg
KiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVy
IGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCisg
KiAgMy4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVk
IHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNl
IG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgeworICAg
IC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDY0X3QgaG9zdF9hZGRyOworICAgIHVpbnQ2
NF90IGRldl9idXNfYWRkcjsKKyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7CisgICAgLyogT1VU
IHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4g
ZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3Jh
bnRfcmVmIGdudHRhYl91bm1hcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KGdudHRhYl91bm1hcF9ncmFudF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zZXR1cF90YWJs
ZTogU2V0IHVwIGEgZ3JhbnQgdGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QKKyAq
IDxucl9mcmFtZXM+IHBhZ2VzLiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRvIHRo
ZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRl
biwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4g
bWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50
bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAq
ICAzLiBYZW4gbWF5IG5vdCBzdXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJsZSBw
YWdlIHBlciBkb21haW4uCisgKi8KK3N0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgeworICAgIC8q
IElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCAgZG9tOworICAgIHVpbnQzMl90IG5yX2Zy
YW1lczsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAg
ICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworI2lmIF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCisgICAgWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJh
bWVfbGlzdDsKKyNlbHNlCisgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGZyYW1lX2xp
c3Q7CisjZW5kaWYKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgZ250dGFi
X3NldHVwX3RhYmxlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0dXBfdGFi
bGVfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9kdW1wX3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBv
ZiB0aGUgZ3JhbnQgdGFibGUgdG8gdGhlCisgKiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBv
bmx5LgorICovCitzdHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgeworICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCisgICAgZG9taWRfdCBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAg
aW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7CisKKy8qCisg
KiBHTlRUQUJPUF90cmFuc2Zlcl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3Jl
aWduIGRvbWFpbi4gVGhlCisgKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3Rl
cmVkIGl0cyBpbnRlcmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCisgKiA8ZG9taWQsIHJlZj4uCisg
KgorICogTm90ZSB0aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmll
ZCBwYWdlIG5vIExPTkdfUFRSZXIgYmVsb25ncworICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1
bmxlc3MqIHRoZSBlcnJvciBpcyBHTlRTVF9iYWRfcGFnZS4KKyAqLworc3RydWN0IGdudHRhYl90
cmFuc2ZlciB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB4ZW5fcGZuX3QgICAgIG1m
bjsKKyAgICBkb21pZF90ICAgICAgIGRvbWlkOworICAgIGdyYW50X3JlZl90ICAgcmVmOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgICAgICAgc3RhdHVzOworfTsKK3R5
cGVkZWYgc3RydWN0IGdudHRhYl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKGdudHRhYl90cmFuc2Zlcl90KTsKKworCisvKgorICogR05UVEFCT1Bf
Y29weTogSHlwZXJ2aXNvciBiYXNlZCBjb3B5CisgKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBj
YW4gYmUgZWl0aGVycyBNRk5zIG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAorICogZ3JhbnQgcmVm
ZXJlbmNlcy4gdGhlIGZvcmVpZ24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2Vz
cworICogaW4gaXRzIGdyYW50IHRhYmxlLgorICoKKyAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQg
dHlwZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KKyAqIG9yIGdyYW50
IHJlZmVyZW5jZSkuCisgKgorICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBj
b3B5IGRhdGEgYmV0d2VlbiB0d28gZG9tYWlucworICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQorICogZ3JhbnQg
YXBwcm9wcmlhdGUgYWNjZXNzIHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KKyAq
CisgKiBzb3VyY2Vfb2Zmc2V0IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFt
ZSwgZGVzdF9vZmZzZXQKKyAqIHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxl
biBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorICogYnl0ZXMgdG8gYmUgY29waWVkLgorICovCisK
KyNkZWZpbmUgX0dOVENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKKyNkZWZpbmUgR05UQ09QWV9z
b3VyY2VfZ3JlZiAgICAgICAoMTw8X0dOVENPUFlfc291cmNlX2dyZWYpCisjZGVmaW5lIF9HTlRD
T1BZX2Rlc3RfZ3JlZiAgICAgICAgKDEpCisjZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAg
ICAgKDE8PF9HTlRDT1BZX2Rlc3RfZ3JlZikKKworc3RydWN0IGdudHRhYl9jb3B5IHsKKyAgICAv
KiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHN0cnVjdCBnbnR0YWJfY29weV9wdHIgeworICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICBncmFudF9yZWZfdCByZWY7CisgICAgICAgICAgICB4ZW5f
cGZuX3QgICBnbWZuOworICAgICAgICB9IHU7CisgICAgICAgIGRvbWlkX3QgIGRvbWlkOworICAg
ICAgICB1aW50MTZfdCBvZmZzZXQ7CisgICAgfSBzb3VyY2UsIGRlc3Q7CisgICAgdWludDE2X3Qg
ICAgICBsZW47CisgICAgdWludDE2X3QgICAgICBmbGFnczsgICAgICAgICAgLyogR05UQ09QWV8q
ICovCisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgICAgICBzdGF0dXM7
Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NvcHkgIGdudHRhYl9jb3B5X3Q7CitERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY29weV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3F1ZXJ5
X3NpemU6IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhpbXVtIHNpemVzIG9mIHRoZSBzaGFyZWQK
KyAqIGdyYW50IHRhYmxlLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmll
ZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBk
b21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqLworc3RydWN0IGdudHRh
Yl9xdWVyeV9zaXplIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgIGRv
bTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBucl9mcmFtZXM7Cisg
ICAgdWludDMyX3QgbWF4X25yX2ZyYW1lczsKKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAg
ICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRh
Yl9xdWVyeV9zaXplIGdudHRhYl9xdWVyeV9zaXplX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RShnbnR0YWJfcXVlcnlfc2l6ZV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBs
YWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICogdHJh
Y2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSByZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVu
dHJ5IHdpdGggb25lCisgKiBwb2ludGluZyB0byB0aGUgbWFjaGluZSBhZGRyZXNzIHVuZGVyIDxu
ZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKKyAqIHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwg
ZW50cnkuCisgKiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmlu
ZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhh
bmRsZT4uCisgKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBn
dWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0
aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9hbmRfcmVw
bGFjZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRfdCBob3N0X2FkZHI7
CisgICAgdWludDY0X3QgbmV3X2FkZHI7CisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAg
IC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3Vu
bWFwX2FuZF9yZXBsYWNlIGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZV90OworREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUoZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlX3QpOworCisjaWYgX19YRU5fSU5U
RVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisvKgorICogR05UVEFCT1Bfc2V0X3ZlcnNp
b246IFJlcXVlc3QgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdyYW50CisgKiB0YWJsZSBz
aGFyZWQgdGFibGUgc3RydWN0dXJlLiAgVGhpcyBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9y
bWVkCisgKiBvbmNlIGluIGFueSBnaXZlbiBkb21haW4uICBJdCBtdXN0IGJlIHBlcmZvcm1lZCBi
ZWZvcmUgYW55IGdyYW50cworICogYXJlIGFjdGl2YXRlZDsgb3RoZXJ3aXNlLCB0aGUgZG9tYWlu
IHdpbGwgYmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDEuCisgKiBUaGUgb25seSBkZWZpbmVkIHZlcnNp
b25zIGFyZSAxIGFuZCAyLgorICovCitzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIHsKKyAgICAv
KiBJTi9PVVQgcGFyYW1ldGVycyAqLworICAgIHVpbnQzMl90IHZlcnNpb247Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIGdudHRhYl9zZXRfdmVyc2lvbl90OworREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3NldF92ZXJzaW9uX3QpOworCisKKy8qCisgKiBHTlRU
QUJPUF9nZXRfc3RhdHVzX2ZyYW1lczogR2V0IHRoZSBsaXN0IG9mIGZyYW1lcyB1c2VkIHRvIHN0
b3JlIGdyYW50CisgKiBzdGF0dXMgZm9yIDxkb20+LiBJbiBncmFudCBmb3JtYXQgdmVyc2lvbiAy
LCB0aGUgc3RhdHVzIGlzIHNlcGFyYXRlZAorICogZnJvbSB0aGUgb3RoZXIgc2hhcmVkIGdyYW50
IGZpZWxkcyB0byBhbGxvdyBtb3JlIGVmZmljaWVudCBzeW5jaHJvbml6YXRpb24KKyAqIHVzaW5n
IGJhcnJpZXJzIGluc3RlYWQgb2YgYXRvbWljIGNtcGV4Y2ggb3BlcmF0aW9ucy4KKyAqIDxucl9m
cmFtZXM+IHNwZWNpZnkgdGhlIHNpemUgb2YgdmVjdG9yIDxmcmFtZV9saXN0Pi4KKyAqIFRoZSBm
cmFtZSBhZGRyZXNzZXMgYXJlIHJldHVybmVkIGluIHRoZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5
IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQsIGV2ZW4gaWYgdGhlIHRhYmxlIGlz
IGxhcmdlci4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9N
SURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1h
eSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCisgKi8KK3N0cnVjdCBnbnR0YWJfZ2V0X3N0
YXR1c19mcmFtZXMgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJf
ZnJhbWVzOworICAgIGRvbWlkX3QgIGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAg
ICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAq
LworICAgIFhFTl9HVUVTVF9IQU5ETEUodWludDY0X3QpIGZyYW1lX2xpc3Q7Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1l
c190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3Qp
OworCisvKgorICogR05UVEFCT1BfZ2V0X3ZlcnNpb246IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVy
c2lvbiB3aGljaCBpcyBpbgorICogZWZmZWN0IGZvciBkb21haW4gPGRvbT4uCisgKi8KK3N0cnVj
dCBnbnR0YWJfZ2V0X3ZlcnNpb24geworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBkb21p
ZF90IGRvbTsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KKyAg
ICB1aW50MzJfdCB2ZXJzaW9uOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfdmVyc2lv
biBnbnR0YWJfZ2V0X3ZlcnNpb25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9n
ZXRfdmVyc2lvbl90KTsKKworLyoKKyAqIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRo
ZSBjb250ZW50cyBvZiB0d28gZ3JhbnQgZW50cmllcy4KKyAqLworc3RydWN0IGdudHRhYl9zd2Fw
X2dyYW50X3JlZiB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLworICAgIGdyYW50X3JlZl90IHJl
Zl9hOworICAgIGdyYW50X3JlZl90IHJlZl9iOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisg
ICAgaW50MTZfdCBzdGF0dXM7ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICov
Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3N3YXBfZ3JhbnRfcmVmIGdudHRhYl9zd2FwX2dy
YW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVm
X3QpOworCisvKgorICogSXNzdWUgb25lIG9yIG1vcmUgY2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0
aW9ucyBvbiBhIHBvcnRpb24gb2YgYQorICogcGFnZSBncmFudGVkIHRvIHRoZSBjYWxsaW5nIGRv
bWFpbiBieSBhIGZvcmVpZ24gZG9tYWluLgorICovCitzdHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNo
IHsKKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsKKyAgICAgICAg
Z3JhbnRfcmVmX3QgcmVmOworICAgIH0gYTsKKyAgICB1aW50MTZfdCBvZmZzZXQ7IC8qIG9mZnNl
dCBmcm9tIHN0YXJ0IG9mIGdyYW50ICovCisgICAgdWludDE2X3QgbGVuZ3RoOyAvKiBzaXplIHdp
dGhpbiB0aGUgZ3JhbnQgKi8KKyNkZWZpbmUgR05UVEFCX0NBQ0hFX0NMRUFOICAgICAgICAgICgx
PDwwKQorI2RlZmluZSBHTlRUQUJfQ0FDSEVfSU5WQUwgICAgICAgICAgKDE8PDEpCisjZGVmaW5l
IEdOVFRBQl9DQUNIRV9TT1VSQ0VfR1JFRiAgICAoMTw8MzEpCisgICAgdWludDMyX3Qgb3A7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNoIGdudHRhYl9jYWNoZV9mbHVzaF90
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2NhY2hlX2ZsdXNoX3QpOworCisjZW5k
aWYgLyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworCisvKgorICogQml0ZmllbGQgdmFs
dWVzIGZvciBnbnR0YWJfbWFwX2dyYW50X3JlZi5mbGFncy4KKyAqLworIC8qIE1hcCB0aGUgZ3Jh
bnQgZW50cnkgZm9yIGFjY2VzcyBieSBJL08gZGV2aWNlcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9k
ZXZpY2VfbWFwICAgICAgKDApCisjZGVmaW5lIEdOVE1BUF9kZXZpY2VfbWFwICAgICAgICgxPDxf
R05UTUFQX2RldmljZV9tYXApCisgLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5
IGhvc3QgQ1BVcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9ob3N0X21hcCAgICAgICAgKDEpCisjZGVm
aW5lIEdOVE1BUF9ob3N0X21hcCAgICAgICAgICgxPDxfR05UTUFQX2hvc3RfbWFwKQorIC8qIEFj
Y2Vzc2VzIHRvIHRoZSBncmFudGVkIGZyYW1lIHdpbGwgYmUgcmVzdHJpY3RlZCB0byByZWFkLW9u
bHkgYWNjZXNzLiAqLworI2RlZmluZSBfR05UTUFQX3JlYWRvbmx5ICAgICAgICAoMikKKyNkZWZp
bmUgR05UTUFQX3JlYWRvbmx5ICAgICAgICAgKDE8PF9HTlRNQVBfcmVhZG9ubHkpCisgLyoKKyAg
KiBHTlRNQVBfaG9zdF9tYXAgc3ViZmxhZzoKKyAgKiAgMCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlz
IHVzYWJsZSBvbmx5IGJ5IHRoZSBndWVzdCBPUy4KKyAgKiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5n
IGlzIHVzYWJsZSBieSBndWVzdCBPUyArIGN1cnJlbnQgYXBwbGljYXRpb24uCisgICovCisjZGVm
aW5lIF9HTlRNQVBfYXBwbGljYXRpb25fbWFwICgzKQorI2RlZmluZSBHTlRNQVBfYXBwbGljYXRp
b25fbWFwICAoMTw8X0dOVE1BUF9hcHBsaWNhdGlvbl9tYXApCisKKyAvKgorICAqIEdOVE1BUF9j
b250YWluc19wdGUgc3ViZmxhZzoKKyAgKiAgMCA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5z
IGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuCisgICogIDEgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250
YWlucyB0aGUgbWFjaGluZSBhZGRlc3Mgb2YgdGhlIFBURSB0byB1cGRhdGUuCisgICovCisjZGVm
aW5lIF9HTlRNQVBfY29udGFpbnNfcHRlICAgICg0KQorI2RlZmluZSBHTlRNQVBfY29udGFpbnNf
cHRlICAgICAoMTw8X0dOVE1BUF9jb250YWluc19wdGUpCisKKyNkZWZpbmUgX0dOVE1BUF9jYW5f
ZmFpbCAgICAgICAgKDUpCisjZGVmaW5lIEdOVE1BUF9jYW5fZmFpbCAgICAgICAgICgxPDxfR05U
TUFQX2Nhbl9mYWlsKQorCisvKgorICogQml0cyB0byBiZSBwbGFjZWQgaW4gZ3Vlc3Qga2VybmVs
IGF2YWlsYWJsZSBQVEUgYml0cyAoYXJjaGl0ZWN0dXJlCisgKiBkZXBlbmRlbnQ7IG9ubHkgc3Vw
cG9ydGVkIHdoZW4gWEVORkVBVF9nbnR0YWJfbWFwX2F2YWlsX2JpdHMgaXMgc2V0KS4KKyAqLwor
I2RlZmluZSBfR05UTUFQX2d1ZXN0X2F2YWlsMCAgICAoMTYpCisjZGVmaW5lIEdOVE1BUF9ndWVz
dF9hdmFpbF9tYXNrICgodWludDMyX3QpfjAgPDwgX0dOVE1BUF9ndWVzdF9hdmFpbDApCisKKy8q
CisgKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUu
CisgKi8KKy8qIGAgZW51bSBncmFudF9zdGF0dXMgeyAqLworI2RlZmluZSBHTlRTVF9va2F5ICAg
ICAgICAgICAgICgwKSAgLyogTm9ybWFsIHJldHVybi4gICAgICAgICAgICAgICAgICAgICAgICAq
LworI2RlZmluZSBHTlRTVF9nZW5lcmFsX2Vycm9yICAgICgtMSkgLyogR2VuZXJhbCB1bmRlZmlu
ZWQgZXJyb3IuICAgICAgICAgICAgICAqLworI2RlZmluZSBHTlRTVF9iYWRfZG9tYWluICAgICAg
ICgtMikgLyogVW5yZWNvZ25zZWQgZG9tYWluIGlkLiAgICAgICAgICAgICAgICAqLworI2RlZmlu
ZSBHTlRTVF9iYWRfZ250cmVmICAgICAgICgtMykgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9w
cmlhdGUgZ250cmVmLiAqLworI2RlZmluZSBHTlRTVF9iYWRfaGFuZGxlICAgICAgICgtNCkgLyog
VW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgaGFuZGxlLiAqLworI2RlZmluZSBHTlRTVF9i
YWRfdmlydF9hZGRyICAgICgtNSkgLyogSW5hcHByb3ByaWF0ZSB2aXJ0dWFsIGFkZHJlc3MgdG8g
bWFwLiAqLworI2RlZmluZSBHTlRTVF9iYWRfZGV2X2FkZHIgICAgICgtNikgLyogSW5hcHByb3By
aWF0ZSBkZXZpY2UgYWRkcmVzcyB0byB1bm1hcC4qLworI2RlZmluZSBHTlRTVF9ub19kZXZpY2Vf
c3BhY2UgICgtNykgLyogT3V0IG9mIHNwYWNlIGluIEkvTyBNTVUuICAgICAgICAgICAgICAqLwor
I2RlZmluZSBHTlRTVF9wZXJtaXNzaW9uX2RlbmllZCAoLTgpIC8qIE5vdCBlbm91Z2ggcHJpdmls
ZWdlIGZvciBvcGVyYXRpb24uICAqLworI2RlZmluZSBHTlRTVF9iYWRfcGFnZSAgICAgICAgICgt
OSkgLyogU3BlY2lmaWVkIHBhZ2Ugd2FzIGludmFsaWQgZm9yIG9wLiAgICAqLworI2RlZmluZSBH
TlRTVF9iYWRfY29weV9hcmcgICAgKC0xMCkgLyogY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBi
b3VuZGFyeS4gICAqLworI2RlZmluZSBHTlRTVF9hZGRyZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJh
bnNmZXIgcGFnZSBhZGRyZXNzIHRvbyBsYXJnZS4gICAgICAqLworI2RlZmluZSBHTlRTVF9lYWdh
aW4gICAgICAgICAgKC0xMikgLyogT3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4uICAgICAg
ICAqLworLyogYCB9ICovCisKKyNkZWZpbmUgR05UVEFCT1BfZXJyb3JfbXNncyB7ICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAib2theSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAidW5kZWZpbmVkIGVycm9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAidW5yZWNvZ25pc2VkIGRvbWFpbiBpZCIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAi
aW52YWxpZCBncmFudCByZWZlcmVuY2UiLCAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxp
ZCBtYXBwaW5nIGhhbmRsZSIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCB2aXJ0
dWFsIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCBkZXZpY2UgYWRk
cmVzcyIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAibm8gc3BhcmUgdHJhbnNsYXRpb24gc2xv
dCBpbiB0aGUgSS9PIE1NVSIsIFwKKyAgICAicGVybWlzc2lvbiBkZW5pZWQiLCAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAiYmFkIHBhZ2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAiY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeSIsICAgICAg
IFwKKyAgICAicGFnZSBhZGRyZXNzIHNpemUgdG9vIGxhcmdlIiwgICAgICAgICAgICAgIFwKKyAg
ICAib3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4iICAgICAgICAgICAgIFwKK30KKworI2Vu
ZGlmIC8qIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJMRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZh
cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt
b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog
RW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9pbmZvX3Rh
YmxlLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9pbmZvX3RhYmxlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3YmY5MQotLS0gL2Rldi9udWxsCisrKyBiL2lu
Y2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX2luZm9fdGFibGUuaApAQCAtMCwwICsxLDcyIEBACisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisgKiBodm0vaHZtX2luZm9fdGFibGUuaAorICoKKyAqIEhW
TSBwYXJhbWV0ZXIgYW5kIGluZm9ybWF0aW9uIHRhYmxlLCB3cml0dGVuIGludG8gZ3Vlc3QgbWVt
b3J5IG1hcC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K
KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H
UyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9J
TkZPX1RBQkxFX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0hWTV9JTkZPX1RBQkxFX0hf
XworCisjZGVmaW5lIEhWTV9JTkZPX1BGTiAgICAgICAgIDB4MDlGCisjZGVmaW5lIEhWTV9JTkZP
X09GRlNFVCAgICAgIDB4ODAwCisjZGVmaW5lIEhWTV9JTkZPX1BBRERSICAgICAgICgoSFZNX0lO
Rk9fUEZOIDw8IDEyKSArIEhWTV9JTkZPX09GRlNFVCkKKworLyogTWF4aW11bSB3ZSBjYW4gc3Vw
cG9ydCB3aXRoIGN1cnJlbnQgdkxBUElDIElEIG1hcHBpbmcuICovCisjZGVmaW5lIEhWTV9NQVhf
VkNQVVMgICAgICAgIDEyOAorCitzdHJ1Y3QgaHZtX2luZm9fdGFibGUgeworICAgIGNoYXIgICAg
ICAgIHNpZ25hdHVyZVs4XTsgLyogIkhWTSBJTkZPIiAqLworICAgIHVpbnQzMl90ICAgIGxlbmd0
aDsKKyAgICB1aW50OF90ICAgICBjaGVja3N1bTsKKworICAgIC8qIFNob3VsZCBmaXJtd2FyZSBi
dWlsZCBBUElDIGRlc2NyaXB0b3JzIChBUElDIE1BRFQgLyBNUCBCSU9TKT8gKi8KKyAgICB1aW50
OF90ICAgICBhcGljX21vZGU7CisKKyAgICAvKiBIb3cgbWFueSBDUFVzIGRvZXMgdGhpcyBkb21h
aW4gaGF2ZT8gKi8KKyAgICB1aW50MzJfdCAgICBucl92Y3B1czsKKworICAgIC8qCisgICAgICog
TUVNT1JZIE1BUCBwcm92aWRlZCBieSBIVk0gZG9tYWluIGJ1aWxkZXIuCisgICAgICogTm90ZXM6
CisgICAgICogIDEuIHBhZ2VfdG9fcGh5cyh4KSA9IHggPDwgMTIKKyAgICAgKiAgMi4gSWYgYSBm
aWVsZCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBkb2VzIG5vdCBleGlzdC4KKyAg
ICAgKi8KKyAgICAvKgorICAgICAqICAweDAgdG8gcGFnZV90b19waHlzKGxvd19tZW1fcGdlbmQp
LTE6CisgICAgICogICAgUkFNIGJlbG93IDRHQiAoZXhjZXB0IGZvciBWR0EgaG9sZSAweEEwMDAw
LTB4QkZGRkYpCisgICAgICovCisgICAgdWludDMyX3QgICAgbG93X21lbV9wZ2VuZDsKKyAgICAv
KgorICAgICAqICBwYWdlX3RvX3BoeXMocmVzZXJ2ZWRfbWVtX3Bnc3RhcnQpIHRvIDB4RkZGRkZG
RkY6CisgICAgICogICAgUmVzZXJ2ZWQgZm9yIHNwZWNpYWwgbWVtb3J5IG1hcHBpbmdzCisgICAg
ICovCisgICAgdWludDMyX3QgICAgcmVzZXJ2ZWRfbWVtX3Bnc3RhcnQ7CisgICAgLyoKKyAgICAg
KiAgMHgxMDAwMDAwMDAgdG8gcGFnZV90b19waHlzKGhpZ2hfbWVtX3BnZW5kKS0xOgorICAgICAq
ICAgIFJBTSBhYm92ZSA0R0IKKyAgICAgKi8KKyAgICB1aW50MzJfdCAgICBoaWdoX21lbV9wZ2Vu
ZDsKKworICAgIC8qIEJpdG1hcCBvZiB3aGljaCBDUFVzIGFyZSBvbmxpbmUgYXQgYm9vdCB0aW1l
LiAqLworICAgIHVpbnQ4X3QgICAgIHZjcHVfb25saW5lWyhIVk1fTUFYX1ZDUFVTICsgNykvOF07
Cit9OworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9IVk1fSU5GT19UQUJMRV9IX18gKi8K
ZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9odm0vaHZtX29wLmggYi9pbmNsdWRlL3hl
bi9wdWJsaWMvaHZtL2h2bV9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjczYmM3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL2h2bV9v
cC5oCkBAIC0wLDAgKzEsNDAyIEBACisvKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19YRU5fUFVC
TElDX0hWTV9IVk1fT1BfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fSFZNX09QX0hfXwor
CisjaW5jbHVkZSAiLi4veGVuLmgiCisjaW5jbHVkZSAiLi4vdHJhY2UuaCIKKyNpbmNsdWRlICIu
Li9ldmVudF9jaGFubmVsLmgiCisKKy8qIEdldC9zZXQgc3ViY29tbWFuZHM6IGV4dHJhIGFyZ3Vt
ZW50ID09IHBvaW50ZXIgdG8geGVuX2h2bV9wYXJhbSBzdHJ1Y3QuICovCisjZGVmaW5lIEhWTU9Q
X3NldF9wYXJhbSAgICAgICAgICAgMAorI2RlZmluZSBIVk1PUF9nZXRfcGFyYW0gICAgICAgICAg
IDEKK3N0cnVjdCB4ZW5faHZtX3BhcmFtIHsKKyAgICBkb21pZF90ICBkb21pZDsgICAgLyogSU4g
Ki8KKyAgICB1aW50MzJfdCBpbmRleDsgICAgLyogSU4gKi8KKyAgICB1aW50NjRfdCB2YWx1ZTsg
ICAgLyogSU4vT1VUICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9wYXJhbSB4ZW5faHZt
X3BhcmFtX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3BhcmFtX3QpOworCisv
KiBTZXQgdGhlIGxvZ2ljYWwgbGV2ZWwgb2Ygb25lIG9mIGEgZG9tYWluJ3MgUENJIElOVHggd2ly
ZXMuICovCisjZGVmaW5lIEhWTU9QX3NldF9wY2lfaW50eF9sZXZlbCAgMgorc3RydWN0IHhlbl9o
dm1fc2V0X3BjaV9pbnR4X2xldmVsIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8K
KyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBQQ0kgSU5UeCBpZGVudGlmaWNhdGlvbiBpbiBQ
Q0kgdG9wb2xvZ3kgKGRvbWFpbjpidXM6ZGV2aWNlOmludHgpLiAqLworICAgIHVpbnQ4X3QgIGRv
bWFpbiwgYnVzLCBkZXZpY2UsIGludHg7CisgICAgLyogQXNzZXJ0aW9uIGxldmVsICgwID0gdW5h
c3NlcnRlZCwgMSA9IGFzc2VydGVkKS4gKi8KKyAgICB1aW50OF90ICBsZXZlbDsKK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9wY2lfaW50eF9sZXZlbCB4ZW5faHZtX3NldF9wY2lfaW50
eF9sZXZlbF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfcGNpX2ludHhf
bGV2ZWxfdCk7CisKKy8qIFNldCB0aGUgbG9naWNhbCBsZXZlbCBvZiBvbmUgb2YgYSBkb21haW4n
cyBJU0EgSVJRIHdpcmVzLiAqLworI2RlZmluZSBIVk1PUF9zZXRfaXNhX2lycV9sZXZlbCAgIDMK
K3N0cnVjdCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsIHsKKyAgICAvKiBEb21haW4gdG8gYmUg
dXBkYXRlZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBJU0EgZGV2aWNlIGlkZW50
aWZpY2F0aW9uLCBieSBJU0EgSVJRICgwLTE1KS4gKi8KKyAgICB1aW50OF90ICBpc2FfaXJxOwor
ICAgIC8qIEFzc2VydGlvbiBsZXZlbCAoMCA9IHVuYXNzZXJ0ZWQsIDEgPSBhc3NlcnRlZCkuICov
CisgICAgdWludDhfdCAgbGV2ZWw7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfaXNh
X2lycV9sZXZlbCB4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsX3Q7CitERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRSh4ZW5faHZtX3NldF9pc2FfaXJxX2xldmVsX3QpOworCisjZGVmaW5lIEhWTU9QX3Nl
dF9wY2lfbGlua19yb3V0ZSAgNAorc3RydWN0IHhlbl9odm1fc2V0X3BjaV9saW5rX3JvdXRlIHsK
KyAgICAvKiBEb21haW4gdG8gYmUgdXBkYXRlZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAg
ICAvKiBQQ0kgbGluayBpZGVudGlmaWVyICgwLTMpLiAqLworICAgIHVpbnQ4X3QgIGxpbms7Cisg
ICAgLyogSVNBIElSUSAoMS0xNSksIG9yIDAgKGRpc2FibGUgbGluaykuICovCisgICAgdWludDhf
dCAgaXNhX2lycTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0
ZSB4ZW5faHZtX3NldF9wY2lfbGlua19yb3V0ZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX2h2bV9zZXRfcGNpX2xpbmtfcm91dGVfdCk7CisKKy8qIEZsdXNoZXMgYWxsIFZDUFUgVExC
czogQGFyZyBtdXN0IGJlIE5VTEwuICovCisjZGVmaW5lIEhWTU9QX2ZsdXNoX3RsYnMgICAgICAg
ICAgNQorCit0eXBlZGVmIGVudW0geworICAgIEhWTU1FTV9yYW1fcncsICAgICAgICAgICAgIC8q
IE5vcm1hbCByZWFkL3dyaXRlIGd1ZXN0IFJBTSAqLworICAgIEhWTU1FTV9yYW1fcm8sICAgICAg
ICAgICAgIC8qIFJlYWQtb25seTsgd3JpdGVzIGFyZSBkaXNjYXJkZWQgKi8KKyAgICBIVk1NRU1f
bW1pb19kbSwgICAgICAgICAgICAvKiBSZWFkcyBhbmQgd3JpdGUgZ28gdG8gdGhlIGRldmljZSBt
b2RlbCAqLworICAgIEhWTU1FTV9tbWlvX3dyaXRlX2RtICAgICAgIC8qIFJlYWQtb25seTsgd3Jp
dGVzIGdvIHRvIHRoZSBkZXZpY2UgbW9kZWwgKi8KK30gaHZtbWVtX3R5cGVfdDsKKworLyogRm9s
bG93aW5nIHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KKyNp
ZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworLyogVHJhY2sg
ZGlydHkgVlJBTS4gKi8KKyNkZWZpbmUgSFZNT1BfdHJhY2tfZGlydHlfdnJhbSAgICA2CitzdHJ1
Y3QgeGVuX2h2bV90cmFja19kaXJ0eV92cmFtIHsKKyAgICAvKiBEb21haW4gdG8gYmUgdHJhY2tl
ZC4gKi8KKyAgICBkb21pZF90ICBkb21pZDsKKyAgICAvKiBOdW1iZXIgb2YgcGFnZXMgdG8gdHJh
Y2suICovCisgICAgdWludDMyX3QgbnI7CisgICAgLyogRmlyc3QgcGZuIHRvIHRyYWNrLiAqLwor
ICAgIHVpbnQ2NF9hbGlnbmVkX3QgZmlyc3RfcGZuOworICAgIC8qIE9VVCB2YXJpYWJsZS4gKi8K
KyAgICAvKiBEaXJ0eSBiaXRtYXAgYnVmZmVyLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo
dWludDgpIGRpcnR5X2JpdG1hcDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3RyYWNrX2Rp
cnR5X3ZyYW0geGVuX2h2bV90cmFja19kaXJ0eV92cmFtX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh4ZW5faHZtX3RyYWNrX2RpcnR5X3ZyYW1fdCk7CisKKy8qIE5vdGlmeSB0aGF0IHNvbWUg
cGFnZXMgZ290IG1vZGlmaWVkIGJ5IHRoZSBEZXZpY2UgTW9kZWwuICovCisjZGVmaW5lIEhWTU9Q
X21vZGlmaWVkX21lbW9yeSAgICA3CitzdHJ1Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgewor
ICAgIC8qIERvbWFpbiB0byBiZSB1cGRhdGVkLiAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAg
IC8qIE51bWJlciBvZiBwYWdlcy4gKi8KKyAgICB1aW50MzJfdCBucjsKKyAgICAvKiBGaXJzdCBw
Zm4uICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cit9OwordHlwZWRlZiBzdHJ1
Y3QgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnkgeGVuX2h2bV9tb2RpZmllZF9tZW1vcnlfdDsKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fbW9kaWZpZWRfbWVtb3J5X3QpOworCisjZGVm
aW5lIEhWTU9QX3NldF9tZW1fdHlwZSAgICA4CisvKiBOb3RpZnkgdGhhdCBhIHJlZ2lvbiBvZiBt
ZW1vcnkgaXMgdG8gYmUgdHJlYXRlZCBpbiBhIHNwZWNpZmljIHdheS4gKi8KK3N0cnVjdCB4ZW5f
aHZtX3NldF9tZW1fdHlwZSB7CisgICAgLyogRG9tYWluIHRvIGJlIHVwZGF0ZWQuICovCisgICAg
ZG9taWRfdCBkb21pZDsKKyAgICAvKiBNZW1vcnkgdHlwZSAqLworICAgIHVpbnQxNl90IGh2bW1l
bV90eXBlOworICAgIC8qIE51bWJlciBvZiBwYWdlcy4gKi8KKyAgICB1aW50MzJfdCBucjsKKyAg
ICAvKiBGaXJzdCBwZm4uICovCisgICAgdWludDY0X2FsaWduZWRfdCBmaXJzdF9wZm47Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9zZXRfbWVtX3R5cGUgeGVuX2h2bV9zZXRfbWVtX3R5cGVf
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X21lbV90eXBlX3QpOworCisj
ZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCisK
Ky8qIEhpbnQgZnJvbSBQViBkcml2ZXJzIGZvciBwYWdldGFibGUgZGVzdHJ1Y3Rpb24uICovCisj
ZGVmaW5lIEhWTU9QX3BhZ2V0YWJsZV9keWluZyAgICAgICAgOQorc3RydWN0IHhlbl9odm1fcGFn
ZXRhYmxlX2R5aW5nIHsKKyAgICAvKiBEb21haW4gd2l0aCBhIHBhZ2V0YWJsZSBhYm91dCB0byBi
ZSBkZXN0cm95ZWQuICovCisgICAgZG9taWRfdCAgZG9taWQ7CisgICAgdWludDE2X3QgcGFkWzNd
OyAvKiBhbGlnbiBuZXh0IGZpZWxkIG9uIDgtYnl0ZSBib3VuZGFyeSAqLworICAgIC8qIGd1ZXN0
IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHRvcGxldmVsIHBhZ2V0YWJsZSBkeWluZyAqLworICAg
IHVpbnQ2NF90IGdwYTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3BhZ2V0YWJsZV9keWlu
ZyB4ZW5faHZtX3BhZ2V0YWJsZV9keWluZ190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu
X2h2bV9wYWdldGFibGVfZHlpbmdfdCk7CisKKy8qIEdldCB0aGUgY3VycmVudCBYZW4gdGltZSwg
aW4gbmFub3NlY29uZHMgc2luY2Ugc3lzdGVtIGJvb3QuICovCisjZGVmaW5lIEhWTU9QX2dldF90
aW1lICAgICAgICAgICAgICAxMAorc3RydWN0IHhlbl9odm1fZ2V0X3RpbWUgeworICAgIHVpbnQ2
NF90IG5vdzsgICAgICAvKiBPVVQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2dldF90
aW1lIHhlbl9odm1fZ2V0X3RpbWVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1f
Z2V0X3RpbWVfdCk7CisKKyNkZWZpbmUgSFZNT1BfeGVudHJhY2UgICAgICAgICAgICAgIDExCitz
dHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB7CisgICAgdWludDE2X3QgZXZlbnQsIGV4dHJhX2J5dGVz
OworICAgIHVpbnQ4X3QgZXh0cmFbVFJBQ0VfRVhUUkFfTUFYICogc2l6ZW9mKHVpbnQzMl90KV07
Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV94ZW50cmFjZSB4ZW5faHZtX3hlbnRyYWNlX3Q7
CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3hlbnRyYWNlX3QpOworCisvKiBGb2xs
b3dpbmcgdG9vbHMtb25seSBpbnRlcmZhY2VzIG1heSBjaGFuZ2UgaW4gZnV0dXJlLiAqLworI2lm
IGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisvKiBEZXByZWNh
dGVkIGJ5IFhFTk1FTV9hY2Nlc3Nfb3Bfc2V0X2FjY2VzcyAqLworI2RlZmluZSBIVk1PUF9zZXRf
bWVtX2FjY2VzcyAgICAgICAgMTIKKworLyogRGVwcmVjYXRlZCBieSBYRU5NRU1fYWNjZXNzX29w
X2dldF9hY2Nlc3MgKi8KKyNkZWZpbmUgSFZNT1BfZ2V0X21lbV9hY2Nlc3MgICAgICAgIDEzCisK
KyNkZWZpbmUgSFZNT1BfaW5qZWN0X3RyYXAgICAgICAgICAgICAxNAorLyogSW5qZWN0IGEgdHJh
cCBpbnRvIGEgVkNQVSwgd2hpY2ggd2lsbCBnZXQgdGFrZW4gdXAgb24gdGhlIG5leHQKKyAqIHNj
aGVkdWxpbmcgb2YgaXQuIE5vdGUgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBrbm93IGVub3VnaCBv
ZiB0aGUKKyAqIHN0YXRlIG9mIHRoZSBDUFUgYmVmb3JlIGluamVjdGluZywgdG8ga25vdyB3aGF0
IHRoZSBlZmZlY3Qgb2YKKyAqIGluamVjdGluZyB0aGUgdHJhcCB3aWxsIGJlLgorICovCitzdHJ1
Y3QgeGVuX2h2bV9pbmplY3RfdHJhcCB7CisgICAgLyogRG9tYWluIHRvIGJlIHF1ZXJpZWQuICov
CisgICAgZG9taWRfdCBkb21pZDsKKyAgICAvKiBWQ1BVICovCisgICAgdWludDMyX3QgdmNwdWlk
OworICAgIC8qIFZlY3RvciBudW1iZXIgKi8KKyAgICB1aW50MzJfdCB2ZWN0b3I7CisgICAgLyog
VHJhcCB0eXBlIChIVk1PUF9UUkFQXyopICovCisgICAgdWludDMyX3QgdHlwZTsKKy8qIE5CLiBU
aGlzIGVudW1lcmF0aW9uIHByZWNpc2VseSBtYXRjaGVzIGh2bS5oOlg4Nl9FVkVOVFRZUEVfKiAq
LworIyBkZWZpbmUgSFZNT1BfVFJBUF9leHRfaW50ICAgIDAgLyogZXh0ZXJuYWwgaW50ZXJydXB0
ICovCisjIGRlZmluZSBIVk1PUF9UUkFQX25taSAgICAgICAgMiAvKiBubWkgKi8KKyMgZGVmaW5l
IEhWTU9QX1RSQVBfaHdfZXhjICAgICAzIC8qIGhhcmR3YXJlIGV4Y2VwdGlvbiAqLworIyBkZWZp
bmUgSFZNT1BfVFJBUF9zd19pbnQgICAgIDQgLyogc29mdHdhcmUgaW50ZXJydXB0IChDRCBubikg
Ki8KKyMgZGVmaW5lIEhWTU9QX1RSQVBfcHJpX3N3X2V4YyA1IC8qIElDRUJQIChGMSkgKi8KKyMg
ZGVmaW5lIEhWTU9QX1RSQVBfc3dfZXhjICAgICA2IC8qIElOVDMgKENDKSwgSU5UTyAoQ0UpICov
CisgICAgLyogRXJyb3IgY29kZSwgb3IgfjB1IHRvIHNraXAgKi8KKyAgICB1aW50MzJfdCBlcnJv
cl9jb2RlOworICAgIC8qIEludHJ1Y3Rpb24gbGVuZ3RoICovCisgICAgdWludDMyX3QgaW5zbl9s
ZW47CisgICAgLyogQ1IyIGZvciBwYWdlIGZhdWx0cyAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3Qg
Y3IyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1faW5qZWN0X3RyYXAgeGVuX2h2bV9pbmpl
Y3RfdHJhcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pbmplY3RfdHJhcF90
KTsKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19f
KSAqLworCisjZGVmaW5lIEhWTU9QX2dldF9tZW1fdHlwZSAgICAxNQorLyogUmV0dXJuIGh2bW1l
bV90eXBlX3QgZm9yIHRoZSBzcGVjaWZpZWQgcGZuLiAqLworc3RydWN0IHhlbl9odm1fZ2V0X21l
bV90eXBlIHsKKyAgICAvKiBEb21haW4gdG8gYmUgcXVlcmllZC4gKi8KKyAgICBkb21pZF90IGRv
bWlkOworICAgIC8qIE9VVCB2YXJpYWJsZS4gKi8KKyAgICB1aW50MTZfdCBtZW1fdHlwZTsKKyAg
ICB1aW50MTZfdCBwYWRbMl07IC8qIGFsaWduIG5leHQgZmllbGQgb24gOC1ieXRlIGJvdW5kYXJ5
ICovCisgICAgLyogSU4gdmFyaWFibGUuICovCisgICAgdWludDY0X3QgcGZuOworfTsKK3R5cGVk
ZWYgc3RydWN0IHhlbl9odm1fZ2V0X21lbV90eXBlIHhlbl9odm1fZ2V0X21lbV90eXBlX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2dldF9tZW1fdHlwZV90KTsKKworLyogRm9s
bG93aW5nIHRvb2xzLW9ubHkgaW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KKyNp
ZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworLyogTVNJIGlu
amVjdGlvbiBmb3IgZW11bGF0ZWQgZGV2aWNlcyAqLworI2RlZmluZSBIVk1PUF9pbmplY3RfbXNp
ICAgICAgICAgMTYKK3N0cnVjdCB4ZW5faHZtX2luamVjdF9tc2kgeworICAgIC8qIERvbWFpbiB0
byBiZSBpbmplY3RlZCAqLworICAgIGRvbWlkX3QgICBkb21pZDsKKyAgICAvKiBEYXRhIC0tIGxv
d2VyIDMyIGJpdHMgKi8KKyAgICB1aW50MzJfdCAgZGF0YTsKKyAgICAvKiBBZGRyZXNzICgweGZl
ZXh4eHh4KSAqLworICAgIHVpbnQ2NF90ICBhZGRyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9o
dm1faW5qZWN0X21zaSB4ZW5faHZtX2luamVjdF9tc2lfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKHhlbl9odm1faW5qZWN0X21zaV90KTsKKworLyoKKyAqIElPUkVRIFNlcnZlcnMKKyAqCisg
KiBUaGUgaW50ZXJmYWNlIGJldHdlZW4gYW4gSS9PIGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxsZWQg
YW4gSU9SRVEgU2VydmVyLgorICogQSBkb21haW4gc3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2FjeScg
SU9SRVEgU2VydmVyIHdoaWNoIGlzIGluc3RhbnRpYXRlZCBpZgorICogcGFyYW1ldGVyLi4uCisg
KgorICogSFZNX1BBUkFNX0lPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFp
bmluZyB0aGUgc3luY2hyb25vdXMKKyAqIGlvcmVxIHN0cnVjdHVyZXMpLCBvci4uLgorICogSFZN
X1BBUkFNX0JVRklPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0
aGUgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklPUkVR
X0VWVENITiBpcyByZWFkICh0byBnZXQgdGhlIGV2ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNlcwor
ICogdG8gcmVxdWVzdCBidWZmZXJlZCBJL08gZW11bGF0aW9uKS4KKyAqCisgKiBUaGUgZm9sbG93
aW5nIGh5cGVyY2FsbHMgZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2YgSU9SRVEgU2VydmVycyBm
b3IKKyAqICdzZWNvbmRhcnknIGVtdWxhdG9ycyB3aGljaCBhcmUgaW52b2tlZCB0byBpbXBsZW1l
bnQgcG9ydCBJL08sIG1lbW9yeSwgb3IKKyAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIHdoaWNo
IHRoZXkgZXhwbGljaXRseSByZWdpc3Rlci4KKyAqLworCit0eXBlZGVmIHVpbnQxNl90IGlvc2Vy
dmlkX3Q7CisKKy8qCisgKiBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOiBJbnN0YW50aWF0ZSBh
IG5ldyBJT1JFUSBTZXJ2ZXIgZm9yIGEgc2Vjb25kYXJ5CisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbXVsYXRvciBzZXJ2aWNpbmcgZG9tYWluIDxkb21pZD4uCisgKgorICogVGhlIDxp
ZD4gaGFuZGVkIGJhY2sgaXMgdW5pcXVlIGZvciA8ZG9taWQ+LiBJZiA8aGFuZGxlX2J1ZmlvcmVx
PiBpcyB6ZXJvCisgKiB0aGUgYnVmZmVyZWQgaW9yZXEgcmluZyB3aWxsIG5vdCBiZSBhbGxvY2F0
ZWQgYW5kIGhlbmNlIGFsbCBlbXVsYXRpb24KKyAqIHJlcXVlc3RlcyB0byB0aGlzIHNlcnZlciB3
aWxsIGJlIHN5bmNocm9ub3VzLgorICovCisjZGVmaW5lIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2
ZXIgMTcKK3N0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgeworICAgIGRvbWlkX3Qg
ZG9taWQ7ICAgICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLworICAgIHVp
bnQ4X3QgaGFuZGxlX2J1ZmlvcmVxOyAvKiBJTiAtIHNob3VsZCBzZXJ2ZXIgaGFuZGxlIGJ1ZmZl
cmVkIGlvcmVxcyAqLworICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgICAgICAvKiBPVVQgLSBzZXJ2
ZXIgaWQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIg
eGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdCk7CisKKy8qCisgKiBIVk1PUF9nZXRfaW9yZXFf
c2VydmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0byBhY2Nlc3MK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9SRVEgU2VydmVyIDxpZD4uCisgKgor
ICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0
dXJlcyBhbmQgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4g
dXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCisgKiBob3N0ZWQgaW4gZG9tYWlu
IDxkb21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KKyAqIHJlc3Bl
Y3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVm
ZmVyZWQKKyAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQg
dG8gZXZlbnQgY2hhbm5lbAorICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4g
KFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgorICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJl
cXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKKyAqIHN0cnVjdHVyZXMg
aW4gPGlvcmVxX3Bmbj4pLgorICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcg
YnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCisgKiB2YWx1ZXMgaGFuZGVkIGJh
Y2sgaW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4K
KyAqLworI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMTgKK3N0cnVjdCB4ZW5f
aHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7CisgICAgZG9taWRfdCBkb21pZDsgICAgICAgICAg
ICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCisgICAgaW9zZXJ2aWRfdCBp
ZDsgICAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCisgICAgZXZ0Y2huX3BvcnRf
dCBidWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KKyAgICB1
aW50NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8K
KyAgICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9y
ZXEgcGZuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2lu
Zm8geGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpOworCisvKgorICogSFZNX21hcF9p
b19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4g
PGRvbWlkPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbXVsYXRp
b24gYnkgdGhlIGNsaWVudCBvZiBJT1JFUQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlcnZlciA8aWQ+CisgKiBIVk1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2
ZXI6IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIDxkb21pZD4KKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElP
UkVRCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+
CisgKgorICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRl
ZDogcG9ydCBJL08sIG1lbW9yeSBhY2Nlc3NlcworICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNj
ZXNzZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3RlcyB3aGljaCB0eXBlIG9mIHJhbmdlCisgKiB0
aGUgPHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgor
ICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJlIHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9k
ZXZpY2UvZnVuY3Rpb24gdmFsdWVzCisgKiB3aGljaCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0
aGUgSFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3JvIGJlbG93LgorICoKKyAqIE5PVEU6IHVubGVz
cyBhbiBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBw
ZWQKKyAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8g
dGhhdCBlbXVsYXRvci4KKyAqLworI2RlZmluZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFf
c2VydmVyIDE5CisjZGVmaW5lIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVy
IDIwCitzdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7CisgICAgZG9taWRfdCBkb21pZDsgICAgICAg
ICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLworICAgIGlvc2VydmlkX3Qg
aWQ7ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICB1aW50MzJfdCB0eXBl
OyAgICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLworIyBkZWZpbmUgSFZNT1Bf
SU9fUkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KKyMgZGVmaW5lIEhWTU9QX0lP
X1JBTkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2UgKi8KKyMgZGVmaW5lIEhWTU9QX0lPX1JBTkdF
X1BDSSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLworICAgIHVpbnQ2
NF9hbGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBv
ZiByYW5nZSAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9p
b19yYW5nZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsK
KworI2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIsZCxmKSAgICAgICAgICAgICAgICAgXAorCSgo
KChzKSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgXAorCSAoKChiKSAmIDB4
ZmYpIDw8IDgpIHwgICAgICAgICAgICAgICAgICAgICAgXAorCSAoKChkKSAmIDB4MWYpIDw8IDMp
IHwgICAgICAgICAgICAgICAgICAgICAgXAorCSAoKGYpICYgMHgwNykpCisKKy8qCisgKiBIVk1P
UF9kZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2Vy
dmljaW5nIGRvbWFpbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb21pZD4uCisg
KgorICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVy
ZWdpc3RlcmVkLgorICovCisjZGVmaW5lIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCitz
dHJ1Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB7CisgICAgZG9taWRfdCBkb21pZDsg
LyogSU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOyAvKiBJ
TiAtIHNlcnZlciBpZCAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3Jl
cV9zZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KTsKKworLyoKKyAqIEhWTU9Q
X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2
ZXIgPGlkPiBzZXJ2aWNpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFp
biA8ZG9taWQ+LgorICoKKyAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFu
eSBlbXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMgaW4gdGhlCisgKiBlbmFibGVkIHN0YXRl
LgorICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3Jl
cV9mbiAoc2VlCisgKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmlu
Z2Z1bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlzIGluCisgKiB0aGUgZW5hYmxlZCBzdGF0ZS4K
KyAqLworI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDIyCitzdHJ1Y3QgeGVu
X2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKKyAgICBkb21pZF90IGRvbWlkOyAgIC8qIElO
IC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCisgICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAt
IHNlcnZlciBpZCAqLworICAgIHVpbnQ4X3QgZW5hYmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLwor
fTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB4ZW5faHZt
X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o
dm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KTsKKworI2VuZGlmIC8qIGRlZmluZWQoX19YRU5f
XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLworCisjaWYgZGVmaW5lZChfX2kzODZfXykg
fHwgZGVmaW5lZChfX3g4Nl82NF9fKQorCisvKgorICogSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxf
dmVjdG9yOiBTZXQgYSA8dmVjdG9yPiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBldmVudAorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsIHVwY2FsbHMgb24gdGhlIHNw
ZWNpZmllZCA8dmNwdT4uIElmIHNldCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcyB2ZWN0b3Igd2lsbCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBnbG9iYWwgY2FsbGJhY2sgdmlhIChz
ZWUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX1BBUkFNX0NBTExCQUNL
X0lSUSkuCisgKi8KKyNkZWZpbmUgSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yIDIzCitz
dHJ1Y3QgeGVuX2h2bV9ldnRjaG5fdXBjYWxsX3ZlY3RvciB7CisgICAgdWludDMyX3QgdmNwdTsK
KyAgICB1aW50OF90IHZlY3RvcjsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2V2dGNobl91
cGNhbGxfdmVjdG9yIHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3JfdCk7CisKKyNlbmRpZiAv
KiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxl
czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0
OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor
ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaHZtL3BhcmFtcy5oIGIvaW5jbHVk
ZS94ZW4vcHVibGljL2h2bS9wYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNDJlMjgzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2h2bS9w
YXJhbXMuaApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAq
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K
KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor
ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9fWEVO
X1BVQkxJQ19IVk1fUEFSQU1TX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX1BBUkFNU19I
X18KKworI2luY2x1ZGUgImh2bV9vcC5oIgorCisvKgorICogUGFyYW1ldGVyIHNwYWNlIGZvciBI
Vk1PUF97c2V0LGdldH1fcGFyYW0uCisgKi8KKworLyoKKyAqIEhvdyBzaG91bGQgQ1BVMCBldmVu
dC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYmUgZGVsaXZlcmVkPworICogdmFsWzYzOjU2XSA9PSAw
OiB2YWxbNTU6MF0gaXMgYSBkZWxpdmVyeSBHU0kgKEdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0KS4K
KyAqIHZhbFs2Mzo1Nl0gPT0gMTogdmFsWzU1OjBdIGlzIGEgZGVsaXZlcnkgUENJIElOVHggbGlu
ZSwgYXMgZm9sbG93czoKKyAqICAgICAgICAgICAgICAgICAgRG9tYWluID0gdmFsWzQ3OjMyXSwg
QnVzICA9IHZhbFszMToxNl0sCisgKiAgICAgICAgICAgICAgICAgIERldkZuICA9IHZhbFsxNTog
OF0sIEludFggPSB2YWxbIDE6IDBdCisgKiB2YWxbNjM6NTZdID09IDI6IHZhbFs3OjBdIGlzIGEg
dmVjdG9yIG51bWJlciwgY2hlY2sgZm9yCisgKiAgICAgICAgICAgICAgICAgIFhFTkZFQVRfaHZt
X2NhbGxiYWNrX3ZlY3RvciB0byBrbm93IGlmIHRoaXMgZGVsaXZlcnkKKyAqICAgICAgICAgICAg
ICAgICAgbWV0aG9kIGlzIGF2YWlsYWJsZS4KKyAqIElmIHZhbCA9PSAwIHRoZW4gQ1BVMCBldmVu
dC1jaGFubmVsIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBkZWxpdmVyZWQuCisgKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX0NBTExCQUNLX0lSUSAwCisKKy8qCisgKiBUaGVzZSBhcmUgbm90IHVzZWQgYnkg
WGVuLiBUaGV5IGFyZSBoZXJlIGZvciBjb252ZW5pZW5jZSBvZiBIVk0tZ3Vlc3QKKyAqIHhlbmJ1
cyBpbXBsZW1lbnRhdGlvbnMuCisgKi8KKyNkZWZpbmUgSFZNX1BBUkFNX1NUT1JFX1BGTiAgICAx
CisjZGVmaW5lIEhWTV9QQVJBTV9TVE9SRV9FVlRDSE4gMgorCisjZGVmaW5lIEhWTV9QQVJBTV9Q
QUVfRU5BQkxFRCAgNAorCisjZGVmaW5lIEhWTV9QQVJBTV9JT1JFUV9QRk4gICAgNQorCisjZGVm
aW5lIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gNgorI2RlZmluZSBIVk1fUEFSQU1fQlVGSU9SRVFf
RVZUQ0hOIDI2CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p
CisKKy8qCisgKiBWaXJpZGlhbiBlbmxpZ2h0ZW5tZW50cworICoKKyAqIChTZWUgaHR0cDovL2Rv
d25sb2FkLm1pY3Jvc29mdC5jb20vZG93bmxvYWQvQS9CLzQvQUI0M0EzNEUtQkREMC00RkE2LUJE
RUYtNzlFRUYxNkU4ODBCL0h5cGVydmlzb3IlMjBUb3AlMjBMZXZlbCUyMEZ1bmN0aW9uYWwlMjBT
cGVjaWZpY2F0aW9uJTIwdjQuMC5kb2N4KQorICoKKyAqIFRvIGV4cG9zZSB2aXJpZGlhbiBlbmxp
Z2h0ZW5tZW50cyB0byB0aGUgZ3Vlc3Qgc2V0IHRoaXMgcGFyYW1ldGVyCisgKiB0byB0aGUgZGVz
aXJlZCBmZWF0dXJlIG1hc2suIFRoZSBiYXNlIGZlYXR1cmUgc2V0IG11c3QgYmUgcHJlc2VudAor
ICogaW4gYW55IHZhbGlkIGZlYXR1cmUgbWFzay4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fVklS
SURJQU4gICAgIDkKKworLyogQmFzZStGcmVxIHZpcmlkaWFuIGZlYXR1cmUgc2V0czoKKyAqCisg
KiAtIEh5cGVyY2FsbCBNU1JzIChIVl9YNjRfTVNSX0dVRVNUX09TX0lEIGFuZCBIVl9YNjRfTVNS
X0hZUEVSQ0FMTCkKKyAqIC0gQVBJQyBhY2Nlc3MgTVNScyAoSFZfWDY0X01TUl9FT0ksIEhWX1g2
NF9NU1JfSUNSIGFuZCBIVl9YNjRfTVNSX1RQUikKKyAqIC0gVmlydHVhbCBQcm9jZXNzb3IgaW5k
ZXggTVNSIChIVl9YNjRfTVNSX1ZQX0lOREVYKQorICogLSBUaW1lciBmcmVxdWVuY3kgTVNScyAo
SFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZIGFuZAorICogICBIVl9YNjRfTVNSX0FQSUNfRlJFUVVF
TkNZKQorICovCisjZGVmaW5lIF9IVk1QVl9iYXNlX2ZyZXEgMAorI2RlZmluZSBIVk1QVl9iYXNl
X2ZyZXEgICgxIDw8IF9IVk1QVl9iYXNlX2ZyZXEpCisKKy8qIEZlYXR1cmUgc2V0IG1vZGlmaWNh
dGlvbnMgKi8KKworLyogRGlzYWJsZSB0aW1lciBmcmVxdWVuY3kgTVNScyAoSFZfWDY0X01TUl9U
U0NfRlJFUVVFTkNZIGFuZAorICogSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWSkuCisgKiBUaGlz
IG1vZGlmaWNhdGlvbiByZXN0b3JlcyB0aGUgdmlyaWRpYW4gZmVhdHVyZSBzZXQgdG8gdGhlCisg
KiBvcmlnaW5hbCAnYmFzZScgc2V0IGV4cG9zZWQgaW4gcmVsZWFzZXMgcHJpb3IgdG8gWGVuIDQu
NC4KKyAqLworI2RlZmluZSBfSFZNUFZfbm9fZnJlcSAxCisjZGVmaW5lIEhWTVBWX25vX2ZyZXEg
ICgxIDw8IF9IVk1QVl9ub19mcmVxKQorCisvKiBFbmFibGUgUGFydGl0aW9uIFRpbWUgUmVmZXJl
bmNlIENvdW50ZXIgKEhWX1g2NF9NU1JfVElNRV9SRUZfQ09VTlQpICovCisjZGVmaW5lIF9IVk1Q
Vl90aW1lX3JlZl9jb3VudCAyCisjZGVmaW5lIEhWTVBWX3RpbWVfcmVmX2NvdW50ICAoMSA8PCBf
SFZNUFZfdGltZV9yZWZfY291bnQpCisKKy8qIEVuYWJsZSBSZWZlcmVuY2UgVFNDIFBhZ2UgKEhW
X1g2NF9NU1JfUkVGRVJFTkNFX1RTQykgKi8KKyNkZWZpbmUgX0hWTVBWX3JlZmVyZW5jZV90c2Mg
MworI2RlZmluZSBIVk1QVl9yZWZlcmVuY2VfdHNjICAoMSA8PCBfSFZNUFZfcmVmZXJlbmNlX3Rz
YykKKworI2RlZmluZSBIVk1QVl9mZWF0dXJlX21hc2sgXAorCShIVk1QVl9iYXNlX2ZyZXEgfCBc
CisJIEhWTVBWX25vX2ZyZXEgfCBcCisJIEhWTVBWX3RpbWVfcmVmX2NvdW50IHwgXAorCSBIVk1Q
Vl9yZWZlcmVuY2VfdHNjKQorCisjZW5kaWYKKworLyoKKyAqIFNldCBtb2RlIGZvciB2aXJ0dWFs
IHRpbWVycyAoY3VycmVudGx5IHg4NiBvbmx5KToKKyAqICBkZWxheV9mb3JfbWlzc2VkX3RpY2tz
IChkZWZhdWx0KToKKyAqICAgRG8gbm90IGFkdmFuY2UgYSB2Y3B1J3MgdGltZSBiZXlvbmQgdGhl
IGNvcnJlY3QgZGVsaXZlcnkgdGltZSBmb3IKKyAqICAgaW50ZXJydXB0cyB0aGF0IGhhdmUgYmVl
biBtaXNzZWQgZHVlIHRvIHByZWVtcHRpb24uIERlbGl2ZXIgbWlzc2VkCisgKiAgIGludGVycnVw
dHMgd2hlbiB0aGUgdmNwdSBpcyByZXNjaGVkdWxlZCBhbmQgYWR2YW5jZSB0aGUgdmNwdSdzIHZp
cnR1YWwKKyAqICAgdGltZSBzdGVwd2lzZSBmb3IgZWFjaCBvbmUuCisgKiAgbm9fZGVsYXlfZm9y
X21pc3NlZF90aWNrczoKKyAqICAgQXMgYWJvdmUsIG1pc3NlZCBpbnRlcnJ1cHRzIGFyZSBkZWxp
dmVyZWQsIGJ1dCBndWVzdCB0aW1lIGFsd2F5cyB0cmFja3MKKyAqICAgd2FsbGNsb2NrIChpLmUu
LCByZWFsKSB0aW1lIHdoaWxlIGRvaW5nIHNvLgorICogIG5vX21pc3NlZF90aWNrc19wZW5kaW5n
OgorICogICBObyBtaXNzZWQgaW50ZXJydXB0cyBhcmUgaGVsZCBwZW5kaW5nLiBJbnN0ZWFkLCB0
byBlbnN1cmUgdGlja3MgYXJlCisgKiAgIGRlbGl2ZXJlZCBhdCBzb21lIG5vbi16ZXJvIHJhdGUs
IGlmIHdlIGRldGVjdCBtaXNzZWQgdGlja3MgdGhlbiB0aGUKKyAqICAgaW50ZXJuYWwgdGljayBh
bGFybSBpcyBub3QgZGlzYWJsZWQgaWYgdGhlIFZDUFUgaXMgcHJlZW1wdGVkIGR1cmluZyB0aGUK
KyAqICAgbmV4dCB0aWNrIHBlcmlvZC4KKyAqICBvbmVfbWlzc2VkX3RpY2tfcGVuZGluZzoKKyAq
ICAgTWlzc2VkIGludGVycnVwdHMgYXJlIGNvbGxhcHNlZCB0b2dldGhlciBhbmQgZGVsaXZlcmVk
IGFzIG9uZSAnbGF0ZSB0aWNrJy4KKyAqICAgR3Vlc3QgdGltZSBhbHdheXMgdHJhY2tzIHdhbGxj
bG9jayAoaS5lLiwgcmVhbCkgdGltZS4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fVElNRVJfTU9E
RSAgIDEwCisjZGVmaW5lIEhWTVBUTV9kZWxheV9mb3JfbWlzc2VkX3RpY2tzICAgIDAKKyNkZWZp
bmUgSFZNUFRNX25vX2RlbGF5X2Zvcl9taXNzZWRfdGlja3MgMQorI2RlZmluZSBIVk1QVE1fbm9f
bWlzc2VkX3RpY2tzX3BlbmRpbmcgICAyCisjZGVmaW5lIEhWTVBUTV9vbmVfbWlzc2VkX3RpY2tf
cGVuZGluZyAgIDMKKworLyogQm9vbGVhbjogRW5hYmxlIHZpcnR1YWwgSFBFVCAoaGlnaC1wcmVj
aXNpb24gZXZlbnQgdGltZXIpPyAoeDg2LW9ubHkpICovCisjZGVmaW5lIEhWTV9QQVJBTV9IUEVU
X0VOQUJMRUQgMTEKKworLyogSWRlbnRpdHktbWFwIHBhZ2UgZGlyZWN0b3J5IHVzZWQgYnkgSW50
ZWwgRVBUIHdoZW4gQ1IwLlBHPTAuICovCisjZGVmaW5lIEhWTV9QQVJBTV9JREVOVF9QVCAgICAg
MTIKKworLyogRGV2aWNlIE1vZGVsIGRvbWFpbiwgZGVmYXVsdHMgdG8gMC4gKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX0RNX0RPTUFJTiAgICAxMworCisvKiBBQ1BJIFMgc3RhdGU6IGN1cnJlbnRseSBz
dXBwb3J0IFMwIGFuZCBTMyBvbiB4ODYuICovCisjZGVmaW5lIEhWTV9QQVJBTV9BQ1BJX1NfU1RB
VEUgMTQKKworLyogVFNTIHVzZWQgb24gSW50ZWwgd2hlbiBDUjAuUEU9MC4gKi8KKyNkZWZpbmUg
SFZNX1BBUkFNX1ZNODZfVFNTICAgICAxNQorCisvKiBCb29sZWFuOiBFbmFibGUgYWxpZ25pbmcg
YWxsIHBlcmlvZGljIHZwdHMgdG8gcmVkdWNlIGludGVycnVwdHMgKi8KKyNkZWZpbmUgSFZNX1BB
UkFNX1ZQVF9BTElHTiAgICAxNgorCisvKiBDb25zb2xlIGRlYnVnIHNoYXJlZCBtZW1vcnkgcmlu
ZyBhbmQgZXZlbnQgY2hhbm5lbCAqLworI2RlZmluZSBIVk1fUEFSQU1fQ09OU09MRV9QRk4gICAg
MTcKKyNkZWZpbmUgSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOIDE4CisKKy8qCisgKiBTZWxlY3Qg
bG9jYXRpb24gb2YgQUNQSSBQTTFhIGFuZCBUTVIgY29udHJvbCBibG9ja3MuIEN1cnJlbnRseSB0
d28gbG9jYXRpb25zCisgKiBhcmUgc3VwcG9ydGVkLCBzcGVjaWZpZWQgYnkgdmVyc2lvbiAwIG9y
IDEgaW4gdGhpcyBwYXJhbWV0ZXI6CisgKiAgIC0gMDogZGVmYXVsdCwgdXNlIHRoZSBvbGQgYWRk
cmVzc2VzCisgKiAgICAgICAgUE0xQV9FVlQgPT0gMHgxZjQwOyBQTTFBX0NOVCA9PSAweDFmNDQ7
IFBNX1RNUiA9PSAweDFmNDgKKyAqICAgLSAxOiB1c2UgdGhlIG5ldyBkZWZhdWx0IHFlbXUgYWRk
cmVzc2VzCisgKiAgICAgICAgUE0xQV9FVlQgPT0gMHhiMDAwOyBQTTFBX0NOVCA9PSAweGIwMDQ7
IFBNX1RNUiA9PSAweGIwMDgKKyAqIFlvdSBjYW4gZmluZCB0aGVzZSBhZGRyZXNzIGRlZmluaXRp
b25zIGluIDxodm0vaW9yZXEuaD4KKyAqLworI2RlZmluZSBIVk1fUEFSQU1fQUNQSV9JT1BPUlRT
X0xPQ0FUSU9OIDE5CisKKy8qIEVuYWJsZSBibG9ja2luZyBtZW1vcnkgZXZlbnRzLCBhc3luYyBv
ciBzeW5jIChwYXVzZSB2Y3B1IHVudGlsIHJlc3BvbnNlKQorICogb25jaGFuZ2Vvbmx5IGluZGlj
YXRlcyBtZXNzYWdlcyBvbmx5IG9uIGEgY2hhbmdlIG9mIHZhbHVlICovCisjZGVmaW5lIEhWTV9Q
QVJBTV9NRU1PUllfRVZFTlRfQ1IwICAgICAgICAgIDIwCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1P
UllfRVZFTlRfQ1IzICAgICAgICAgIDIxCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRf
Q1I0ICAgICAgICAgIDIyCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfSU5UMyAgICAg
ICAgIDIzCisjZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfU0lOR0xFX1NURVAgIDI1Cisj
ZGVmaW5lIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfTVNSICAgICAgICAgIDMwCisKKyNkZWZpbmUg
SFZNUE1FX01PREVfTUFTSyAgICAgICAoMyA8PCAwKQorI2RlZmluZSBIVk1QTUVfbW9kZV9kaXNh
YmxlZCAgIDAKKyNkZWZpbmUgSFZNUE1FX21vZGVfYXN5bmMgICAgICAxCisjZGVmaW5lIEhWTVBN
RV9tb2RlX3N5bmMgICAgICAgMgorI2RlZmluZSBIVk1QTUVfb25jaGFuZ2Vvbmx5ICAgICgxIDw8
IDIpCisKKy8qIEJvb2xlYW46IEVuYWJsZSBuZXN0ZWRodm0gKGh2bSBvbmx5KSAqLworI2RlZmlu
ZSBIVk1fUEFSQU1fTkVTVEVESFZNICAgIDI0CisKKy8qIFBhcmFtcyBmb3IgdGhlIG1lbSBldmVu
dCByaW5ncyAqLworI2RlZmluZSBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOICAgMjcKKyNkZWZp
bmUgSFZNX1BBUkFNX0FDQ0VTU19SSU5HX1BGTiAgIDI4CisjZGVmaW5lIEhWTV9QQVJBTV9TSEFS
SU5HX1JJTkdfUEZOICAyOQorCisvKiBTSFVURE9XTl8qIGFjdGlvbiBpbiBjYXNlIG9mIGEgdHJp
cGxlIGZhdWx0ICovCisjZGVmaW5lIEhWTV9QQVJBTV9UUklQTEVfRkFVTFRfUkVBU09OIDMxCisK
KyNkZWZpbmUgSFZNX1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4gMzIKKyNkZWZpbmUgSFZNX1BBUkFN
X05SX0lPUkVRX1NFUlZFUl9QQUdFUyAzMworCisvKiBMb2NhdGlvbiBvZiB0aGUgVk0gR2VuZXJh
dGlvbiBJRCBpbiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAqLworI2RlZmluZSBIVk1f
UEFSQU1fVk1fR0VORVJBVElPTl9JRF9BRERSIDM0CisKKyNkZWZpbmUgSFZNX05SX1BBUkFNUyAg
ICAgICAgICAzNQorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fICovCmRp
ZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaW8veHNfd2lyZS5oIGIvaW5jbHVkZS94ZW4v
cHVibGljL2lvL3hzX3dpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YTBjZGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL3hzX3dpcmUu
aApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIERldGFpbHMgb2YgdGhlICJ3aXJlIiBwcm90b2Nv
bCBiZXR3ZWVuIFhlbiBTdG9yZSBEYWVtb24gYW5kIGNsaWVudAorICogbGlicmFyeSBvciBndWVz
dCBrZXJuZWwuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv
CisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY
UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElO
R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBSdXN0eSBSdXNz
ZWxsIElCTSBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX1hTX1dJUkVfSAorI2RlZmluZSBf
WFNfV0lSRV9ICisKK2VudW0geHNkX3NvY2ttc2dfdHlwZQoreworICAgIFhTX0RFQlVHLAorICAg
IFhTX0RJUkVDVE9SWSwKKyAgICBYU19SRUFELAorICAgIFhTX0dFVF9QRVJNUywKKyAgICBYU19X
QVRDSCwKKyAgICBYU19VTldBVENILAorICAgIFhTX1RSQU5TQUNUSU9OX1NUQVJULAorICAgIFhT
X1RSQU5TQUNUSU9OX0VORCwKKyAgICBYU19JTlRST0RVQ0UsCisgICAgWFNfUkVMRUFTRSwKKyAg
ICBYU19HRVRfRE9NQUlOX1BBVEgsCisgICAgWFNfV1JJVEUsCisgICAgWFNfTUtESVIsCisgICAg
WFNfUk0sCisgICAgWFNfU0VUX1BFUk1TLAorICAgIFhTX1dBVENIX0VWRU5ULAorICAgIFhTX0VS
Uk9SLAorICAgIFhTX0lTX0RPTUFJTl9JTlRST0RVQ0VELAorICAgIFhTX1JFU1VNRSwKKyAgICBY
U19TRVRfVEFSR0VULAorICAgIFhTX1JFU1RSSUNULAorICAgIFhTX1JFU0VUX1dBVENIRVMsCisK
KyAgICBYU19JTlZBTElEID0gMHhmZmZmIC8qIEd1YXJhbnRlZWQgdG8gcmVtYWluIGFuIGludmFs
aWQgdHlwZSAqLworfTsKKworI2RlZmluZSBYU19XUklURV9OT05FICJOT05FIgorI2RlZmluZSBY
U19XUklURV9DUkVBVEUgIkNSRUFURSIKKyNkZWZpbmUgWFNfV1JJVEVfQ1JFQVRFX0VYQ0wgIkNS
RUFURXxFWENMIgorCisvKiBXZSBoYW5kIGVycm9ycyBhcyBzdHJpbmdzLCBmb3IgcG9ydGFiaWxp
dHkuICovCitzdHJ1Y3QgeHNkX2Vycm9ycworeworICAgIGludCBlcnJudW07CisgICAgY29uc3Qg
Y2hhciAqZXJyc3RyaW5nOworfTsKKyNpZmRlZiBFSU5WQUwKKyNkZWZpbmUgWFNEX0VSUk9SKHgp
IHsgeCwgI3ggfQorLyogTElOVEVEOiBzdGF0aWMgdW51c2VkICovCitzdGF0aWMgc3RydWN0IHhz
ZF9lcnJvcnMgeHNkX2Vycm9yc1tdCisjaWYgZGVmaW5lZChfX0dOVUNfXykKK19fYXR0cmlidXRl
X18oKHVudXNlZCkpCisjZW5kaWYKKyAgICA9IHsKKyAgICBYU0RfRVJST1IoRUlOVkFMKSwKKyAg
ICBYU0RfRVJST1IoRUFDQ0VTKSwKKyAgICBYU0RfRVJST1IoRUVYSVNUKSwKKyAgICBYU0RfRVJS
T1IoRUlTRElSKSwKKyAgICBYU0RfRVJST1IoRU5PRU5UKSwKKyAgICBYU0RfRVJST1IoRU5PTUVN
KSwKKyAgICBYU0RfRVJST1IoRU5PU1BDKSwKKyAgICBYU0RfRVJST1IoRUlPKSwKKyAgICBYU0Rf
RVJST1IoRU5PVEVNUFRZKSwKKyAgICBYU0RfRVJST1IoRU5PU1lTKSwKKyAgICBYU0RfRVJST1Io
RVJPRlMpLAorICAgIFhTRF9FUlJPUihFQlVTWSksCisgICAgWFNEX0VSUk9SKEVBR0FJTiksCisg
ICAgWFNEX0VSUk9SKEVJU0NPTk4pLAorICAgIFhTRF9FUlJPUihFMkJJRykKK307CisjZW5kaWYK
Kworc3RydWN0IHhzZF9zb2NrbXNnCit7CisgICAgdWludDMyX3QgdHlwZTsgIC8qIFhTXz8/PyAq
LworICAgIHVpbnQzMl90IHJlcV9pZDsvKiBSZXF1ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiBk
YWVtb24ncyByZXNwb25zZS4gICovCisgICAgdWludDMyX3QgdHhfaWQ7IC8qIFRyYW5zYWN0aW9u
IGlkICgwIGlmIG5vdCByZWxhdGVkIHRvIGEgdHJhbnNhY3Rpb24pLiAqLworICAgIHVpbnQzMl90
IGxlbjsgICAvKiBMZW5ndGggb2YgZGF0YSBmb2xsb3dpbmcgdGhpcy4gKi8KKworICAgIC8qIEdl
bmVyYWxseSBmb2xsb3dlZCBieSBudWwtdGVybWluYXRlZCBzdHJpbmcocykuICovCit9OworCitl
bnVtIHhzX3dhdGNoX3R5cGUKK3sKKyAgICBYU19XQVRDSF9QQVRIID0gMCwKKyAgICBYU19XQVRD
SF9UT0tFTgorfTsKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCB4ZW5zdG9yZV9zdHJ1Y3QgWGVu
U3RvcmUgd2lyZSBwcm90b2NvbC4KKyAqCisgKiBJbnRlci1kb21haW4gc2hhcmVkIG1lbW9yeSBj
b21tdW5pY2F0aW9ucy4gKi8KKyNkZWZpbmUgWEVOU1RPUkVfUklOR19TSVpFIDEwMjQKK3R5cGVk
ZWYgdWludDMyX3QgWEVOU1RPUkVfUklOR19JRFg7CisjZGVmaW5lIE1BU0tfWEVOU1RPUkVfSURY
KGlkeCkgKChpZHgpICYgKFhFTlNUT1JFX1JJTkdfU0laRS0xKSkKK3N0cnVjdCB4ZW5zdG9yZV9k
b21haW5faW50ZXJmYWNlIHsKKyAgICBjaGFyIHJlcVtYRU5TVE9SRV9SSU5HX1NJWkVdOyAvKiBS
ZXF1ZXN0cyB0byB4ZW5zdG9yZSBkYWVtb24uICovCisgICAgY2hhciByc3BbWEVOU1RPUkVfUklO
R19TSVpFXTsgLyogUmVwbGllcyBhbmQgYXN5bmMgd2F0Y2ggZXZlbnRzLiAqLworICAgIFhFTlNU
T1JFX1JJTkdfSURYIHJlcV9jb25zLCByZXFfcHJvZDsKKyAgICBYRU5TVE9SRV9SSU5HX0lEWCBy
c3BfY29ucywgcnNwX3Byb2Q7CisgICAgdWludDMyX3Qgc2VydmVyX2ZlYXR1cmVzOyAvKiBCaXRt
YXAgb2YgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgKi8KKyAgICB1aW50MzJfdCBj
b25uZWN0aW9uOworfTsKKworLyogVmlvbGF0aW5nIHRoaXMgaXMgdmVyeSBiYWQuICBTZWUgZG9j
cy9taXNjL3hlbnN0b3JlLnR4dC4gKi8KKyNkZWZpbmUgWEVOU1RPUkVfUEFZTE9BRF9NQVggNDA5
NgorCisvKiBWaW9sYXRpbmcgdGhlc2UganVzdCBnZXRzIHlvdSBhbiBlcnJvciBiYWNrICovCisj
ZGVmaW5lIFhFTlNUT1JFX0FCU19QQVRIX01BWCAzMDcyCisjZGVmaW5lIFhFTlNUT1JFX1JFTF9Q
QVRIX01BWCAyMDQ4CisKKy8qIFRoZSBhYmlsaXR5IHRvIHJlY29ubmVjdCBhIHJpbmcgKi8KKyNk
ZWZpbmUgWEVOU1RPUkVfU0VSVkVSX0ZFQVRVUkVfUkVDT05ORUNUSU9OIDEKKworLyogVmFsaWQg
dmFsdWVzIGZvciB0aGUgY29ubmVjdGlvbiBmaWVsZCAqLworI2RlZmluZSBYRU5TVE9SRV9DT05O
RUNURUQgMCAvKiB0aGUgc3RlYWR5LXN0YXRlICovCisjZGVmaW5lIFhFTlNUT1JFX1JFQ09OTkVD
VCAxIC8qIGd1ZXN0IGhhcyBpbml0aWF0ZWQgYSByZWNvbm5lY3QgKi8KKworI2VuZGlmIC8qIF9Y
U19XSVJFX0ggKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt
ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK
KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNs
dWRlL3hlbi9wdWJsaWMvbWVtb3J5LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvbWVtb3J5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5NThkMwotLS0gL2Rldi9udWxsCisr
KyBiL2luY2x1ZGUveGVuL3B1YmxpYy9tZW1vcnkuaApAQCAtMCwwICsxLDU4NyBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorICogbWVtb3J5LmgKKyAqCisgKiBNZW1vcnkgcmVzZXJ2YXRpb24g
YW5kIGluZm9ybWF0aW9uLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICog
c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAq
IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEtl
aXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJjZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJM
SUNfTUVNT1JZX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfTUVNT1JZX0hfXworCisjaW5jbHVk
ZSAieGVuLmgiCisKKy8qCisgKiBJbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgc3BlY2lmaWVkIGRv
bWFpbidzIG1lbW9yeSByZXNlcnZhdGlvbi4gUmV0dXJucyB0aGUKKyAqIG51bWJlciBvZiBleHRl
bnRzIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgb3IgZnJlZWQuCisgKiBhcmcgPT0gYWRkciBvZiBz
dHJ1Y3QgeGVuX21lbW9yeV9yZXNlcnZhdGlvbi4KKyAqLworI2RlZmluZSBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb24gMAorI2RlZmluZSBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24gMQor
I2RlZmluZSBYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCAgICAgNgorCisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjA5CisvKgorICogTWF4aW11bSAjIGJpdHMgYWRkcmVz
c2FibGUgYnkgdGhlIHVzZXIgb2YgdGhlIGFsbG9jYXRlZCByZWdpb24gKGUuZy4sIEkvTworICog
ZGV2aWNlcyBvZnRlbiBoYXZlIGEgMzItYml0IGxpbWl0YXRpb24gZXZlbiBpbiA2NC1iaXQgc3lz
dGVtcykuIElmIHplcm8KKyAqIHRoZW4gdGhlIHVzZXIgaGFzIG5vIGFkZHJlc3NpbmcgcmVzdHJp
Y3Rpb24uIFRoaXMgZmllbGQgaXMgbm90IHVzZWQgYnkKKyAqIFhFTk1FTV9kZWNyZWFzZV9yZXNl
cnZhdGlvbi4KKyAqLworI2RlZmluZSBYRU5NRU1GX2FkZHJlc3NfYml0cyh4KSAgICAgKHgpCisj
ZGVmaW5lIFhFTk1FTUZfZ2V0X2FkZHJlc3NfYml0cyh4KSAoKHgpICYgMHhmZnUpCisvKiBOVU1B
IG5vZGUgdG8gYWxsb2NhdGUgZnJvbS4gKi8KKyNkZWZpbmUgWEVOTUVNRl9ub2RlKHgpICAgICAo
KCh4KSArIDEpIDw8IDgpCisjZGVmaW5lIFhFTk1FTUZfZ2V0X25vZGUoeCkgKCgoKHgpID4+IDgp
IC0gMSkgJiAweGZmdSkKKy8qIEZsYWcgdG8gcG9wdWxhdGUgcGh5c21hcCB3aXRoIHBvcHVsYXRl
LW9uLWRlbWFuZCBlbnRyaWVzICovCisjZGVmaW5lIFhFTk1FTUZfcG9wdWxhdGVfb25fZGVtYW5k
ICgxPDwxNikKKy8qIEZsYWcgdG8gcmVxdWVzdCBhbGxvY2F0aW9uIG9ubHkgZnJvbSB0aGUgbm9k
ZSBzcGVjaWZpZWQgKi8KKyNkZWZpbmUgWEVOTUVNRl9leGFjdF9ub2RlX3JlcXVlc3QgICgxPDwx
NykKKyNkZWZpbmUgWEVOTUVNRl9leGFjdF9ub2RlKG4pIChYRU5NRU1GX25vZGUobikgfCBYRU5N
RU1GX2V4YWN0X25vZGVfcmVxdWVzdCkKKyNlbmRpZgorCitzdHJ1Y3QgeGVuX21lbW9yeV9yZXNl
cnZhdGlvbiB7CisKKyAgICAvKgorICAgICAqIFhFTk1FTV9pbmNyZWFzZV9yZXNlcnZhdGlvbjoK
KyAgICAgKiAgIE9VVDogTUZOICgqbm90KiBHTUZOKSBiYXNlcyBvZiBleHRlbnRzIHRoYXQgd2Vy
ZSBhbGxvY2F0ZWQKKyAgICAgKiBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb246CisgICAgICog
ICBJTjogIEdNRk4gYmFzZXMgb2YgZXh0ZW50cyB0byBmcmVlCisgICAgICogWEVOTUVNX3BvcHVs
YXRlX3BoeXNtYXA6CisgICAgICogICBJTjogIEdQRk4gYmFzZXMgb2YgZXh0ZW50cyB0byBwb3B1
bGF0ZSB3aXRoIG1lbW9yeQorICAgICAqICAgT1VUOiBHTUZOIGJhc2VzIG9mIGV4dGVudHMgdGhh
dCB3ZXJlIGFsbG9jYXRlZAorICAgICAqICAgKE5CLiBUaGlzIGNvbW1hbmQgYWxzbyB1cGRhdGVz
IHRoZSBtYWNoX3RvX3BoeXMgdHJhbnNsYXRpb24gdGFibGUpCisgICAgICogWEVOTUVNX2NsYWlt
X3BhZ2VzOgorICAgICAqICAgSU46IG11c3QgYmUgemVybworICAgICAqLworICAgIFhFTl9HVUVT
VF9IQU5ETEUoeGVuX3Bmbl90KSBleHRlbnRfc3RhcnQ7CisKKyAgICAvKiBOdW1iZXIgb2YgZXh0
ZW50cywgYW5kIHNpemUvYWxpZ25tZW50IG9mIGVhY2ggKDJeZXh0ZW50X29yZGVyIHBhZ2VzKS4g
Ki8KKyAgICB4ZW5fdWxvbmdfdCAgICBucl9leHRlbnRzOworICAgIHVuc2lnbmVkIGludCAgIGV4
dGVudF9vcmRlcjsKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIw
OQorICAgIC8qIFhFTk1FTUYgZmxhZ3MuICovCisgICAgdW5zaWduZWQgaW50ICAgbWVtX2ZsYWdz
OworI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgICBhZGRyZXNzX2JpdHM7CisjZW5kaWYKKworICAg
IC8qCisgICAgICogRG9tYWluIHdob3NlIHJlc2VydmF0aW9uIGlzIGJlaW5nIGNoYW5nZWQuCisg
ICAgICogVW5wcml2aWxlZ2VkIGRvbWFpbnMgY2FuIHNwZWNpZnkgb25seSBET01JRF9TRUxGLgor
ICAgICAqLworICAgIGRvbWlkX3QgICAgICAgIGRvbWlkOworfTsKK3R5cGVkZWYgc3RydWN0IHhl
bl9tZW1vcnlfcmVzZXJ2YXRpb24geGVuX21lbW9yeV9yZXNlcnZhdGlvbl90OworREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUoeGVuX21lbW9yeV9yZXNlcnZhdGlvbl90KTsKKworLyoKKyAqIEFuIGF0
b21pYyBleGNoYW5nZSBvZiBtZW1vcnkgcGFnZXMuIElmIHJldHVybiBjb2RlIGlzIHplcm8gdGhl
bgorICogQG91dC5leHRlbnRfbGlzdCBwcm92aWRlcyBHTUZOcyBvZiB0aGUgbmV3bHktYWxsb2Nh
dGVkIG1lbW9yeS4KKyAqIFJldHVybnMgemVybyBvbiBjb21wbGV0ZSBzdWNjZXNzLCBvdGhlcndp
c2UgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgorICogT24gY29tcGxldGUgc3VjY2VzcyB0aGVuIGFs
d2F5cyBAbnJfZXhjaGFuZ2VkID09IEBpbi5ucl9leHRlbnRzLgorICogT24gcGFydGlhbCBzdWNj
ZXNzIEBucl9leGNoYW5nZWQgaW5kaWNhdGVzIGhvdyBtdWNoIHdvcmsgd2FzIGRvbmUuCisgKi8K
KyNkZWZpbmUgWEVOTUVNX2V4Y2hhbmdlICAgICAgICAgICAgIDExCitzdHJ1Y3QgeGVuX21lbW9y
eV9leGNoYW5nZSB7CisgICAgLyoKKyAgICAgKiBbSU5dIERldGFpbHMgb2YgbWVtb3J5IGV4dGVu
dHMgdG8gYmUgZXhjaGFuZ2VkIChHTUZOIGJhc2VzKS4KKyAgICAgKiBOb3RlIHRoYXQgQGluLmFk
ZHJlc3NfYml0cyBpcyBpZ25vcmVkIGFuZCB1bnVzZWQuCisgICAgICovCisgICAgc3RydWN0IHhl
bl9tZW1vcnlfcmVzZXJ2YXRpb24gaW47CisKKyAgICAvKgorICAgICAqIFtJTi9PVVRdIERldGFp
bHMgb2YgbmV3IG1lbW9yeSBleHRlbnRzLgorICAgICAqIFdlIHJlcXVpcmUgdGhhdDoKKyAgICAg
KiAgMS4gQGluLmRvbWlkID09IEBvdXQuZG9taWQKKyAgICAgKiAgMi4gQGluLm5yX2V4dGVudHMg
IDw8IEBpbi5leHRlbnRfb3JkZXIgPT0KKyAgICAgKiAgICAgQG91dC5ucl9leHRlbnRzIDw8IEBv
dXQuZXh0ZW50X29yZGVyCisgICAgICogIDMuIEBpbi5leHRlbnRfc3RhcnQgYW5kIEBvdXQuZXh0
ZW50X3N0YXJ0IGxpc3RzIG11c3Qgbm90IG92ZXJsYXAKKyAgICAgKiAgNC4gQG91dC5leHRlbnRf
c3RhcnQgbGlzdHMgR1BGTiBiYXNlcyB0byBiZSBwb3B1bGF0ZWQKKyAgICAgKiAgNS4gQG91dC5l
eHRlbnRfc3RhcnQgaXMgb3ZlcndyaXR0ZW4gd2l0aCBhbGxvY2F0ZWQgR01GTiBiYXNlcworICAg
ICAqLworICAgIHN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIG91dDsKKworICAgIC8qCisg
ICAgICogW09VVF0gTnVtYmVyIG9mIGlucHV0IGV4dGVudHMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxs
eSBleGNoYW5nZWQ6CisgICAgICogIDEuIFRoZSBmaXJzdCBAbnJfZXhjaGFuZ2VkIGlucHV0IGV4
dGVudHMgd2VyZSBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgZGVhbGxvY2F0ZWQuCisgICAgICog
IDIuIFRoZSBjb3JyZXNwb25kaW5nIGZpcnN0IGVudHJpZXMgaW4gdGhlIG91dHB1dCBleHRlbnQg
bGlzdCBjb3JyZWN0bHkKKyAgICAgKiAgICAgaW5kaWNhdGUgdGhlIEdNRk5zIHRoYXQgd2VyZSBz
dWNjZXNzZnVsbHkgZXhjaGFuZ2VkLgorICAgICAqICAzLiBBbGwgb3RoZXIgaW5wdXQgYW5kIG91
dHB1dCBleHRlbnRzIGFyZSB1bnRvdWNoZWQuCisgICAgICogIDQuIElmIG5vdCBhbGwgaW5wdXQg
ZXhlbnRzIGFyZSBleGNoYW5nZWQgdGhlbiB0aGUgcmV0dXJuIGNvZGUgb2YgdGhpcworICAgICAq
ICAgICBjb21tYW5kIHdpbGwgYmUgbm9uLXplcm8uCisgICAgICogIDUuIFRISVMgRklFTEQgTVVT
VCBCRSBJTklUSUFMSVNFRCBUTyBaRVJPIEJZIFRIRSBDQUxMRVIhCisgICAgICovCisgICAgeGVu
X3Vsb25nX3QgbnJfZXhjaGFuZ2VkOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1vcnlfZXhj
aGFuZ2UgeGVuX21lbW9yeV9leGNoYW5nZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu
X21lbW9yeV9leGNoYW5nZV90KTsKKworLyoKKyAqIFJldHVybnMgdGhlIG1heGltdW0gbWFjaGlu
ZSBmcmFtZSBudW1iZXIgb2YgbWFwcGVkIFJBTSBpbiB0aGlzIHN5c3RlbS4KKyAqIFRoaXMgY29t
bWFuZCBhbHdheXMgc3VjY2VlZHMgKGl0IG5ldmVyIHJldHVybnMgYW4gZXJyb3IgY29kZSkuCisg
KiBhcmcgPT0gTlVMTC4KKyAqLworI2RlZmluZSBYRU5NRU1fbWF4aW11bV9yYW1fcGFnZSAgICAg
MgorCisvKgorICogUmV0dXJucyB0aGUgY3VycmVudCBvciBtYXhpbXVtIG1lbW9yeSByZXNlcnZh
dGlvbiwgaW4gcGFnZXMsIG9mIHRoZQorICogc3BlY2lmaWVkIGRvbWFpbiAobWF5IGJlIERPTUlE
X1NFTEYpLiBSZXR1cm5zIC12ZSBlcnJjb2RlIG9uIGZhaWx1cmUuCisgKiBhcmcgPT0gYWRkciBv
ZiBkb21pZF90LgorICovCisjZGVmaW5lIFhFTk1FTV9jdXJyZW50X3Jlc2VydmF0aW9uICAzCisj
ZGVmaW5lIFhFTk1FTV9tYXhpbXVtX3Jlc2VydmF0aW9uICA0CisKKy8qCisgKiBSZXR1cm5zIHRo
ZSBtYXhpbXVtIEdQRk4gaW4gdXNlIGJ5IHRoZSBndWVzdCwgb3IgLXZlIGVycmNvZGUgb24gZmFp
bHVyZS4KKyAqLworI2RlZmluZSBYRU5NRU1fbWF4aW11bV9ncGZuICAgICAgICAgMTQKKworLyoK
KyAqIFJldHVybnMgYSBsaXN0IG9mIE1GTiBiYXNlcyBvZiAyTUIgZXh0ZW50cyBjb21wcmlzaW5n
IHRoZSBtYWNoaW5lX3RvX3BoeXMKKyAqIG1hcHBpbmcgdGFibGUuIEFyY2hpdGVjdHVyZXMgd2hp
Y2ggZG8gbm90IGhhdmUgYSBtMnAgdGFibGUgZG8gbm90IGltcGxlbWVudAorICogdGhpcyBjb21t
YW5kLgorICogYXJnID09IGFkZHIgb2YgeGVuX21hY2hwaHlzX21mbl9saXN0X3QuCisgKi8KKyNk
ZWZpbmUgWEVOTUVNX21hY2hwaHlzX21mbl9saXN0ICAgIDUKK3N0cnVjdCB4ZW5fbWFjaHBoeXNf
bWZuX2xpc3QgeworICAgIC8qCisgICAgICogU2l6ZSBvZiB0aGUgJ2V4dGVudF9zdGFydCcgYXJy
YXkuIEZld2VyIGVudHJpZXMgd2lsbCBiZSBmaWxsZWQgaWYgdGhlCisgICAgICogbWFjaHBoeXMg
dGFibGUgaXMgc21hbGxlciB0aGFuIG1heF9leHRlbnRzICogMk1CLgorICAgICAqLworICAgIHVu
c2lnbmVkIGludCBtYXhfZXh0ZW50czsKKworICAgIC8qCisgICAgICogUG9pbnRlciB0byBidWZm
ZXIgdG8gZmlsbCB3aXRoIGxpc3Qgb2YgZXh0ZW50IHN0YXJ0cy4gSWYgdGhlcmUgYXJlCisgICAg
ICogYW55IGxhcmdlIGRpc2NvbnRpZ3VpdGllcyBpbiB0aGUgbWFjaGluZSBhZGRyZXNzIHNwYWNl
LCAyTUIgZ2FwcyBpbgorICAgICAqIHRoZSBtYWNocGh5cyB0YWJsZSB3aWxsIGJlIHJlcHJlc2Vu
dGVkIGJ5IGFuIE1GTiBiYXNlIG9mIHplcm8uCisgICAgICovCisgICAgWEVOX0dVRVNUX0hBTkRM
RSh4ZW5fcGZuX3QpIGV4dGVudF9zdGFydDsKKworICAgIC8qCisgICAgICogTnVtYmVyIG9mIGV4
dGVudHMgd3JpdHRlbiB0byB0aGUgYWJvdmUgYXJyYXkuIFRoaXMgd2lsbCBiZSBzbWFsbGVyCisg
ICAgICogdGhhbiAnbWF4X2V4dGVudHMnIGlmIHRoZSBtYWNocGh5cyB0YWJsZSBpcyBzbWFsbGVy
IHRoYW4gbWF4X2UgKiAyTUIuCisgICAgICovCisgICAgdW5zaWduZWQgaW50IG5yX2V4dGVudHM7
Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21mbl9saXN0IHhlbl9tYWNocGh5c19t
Zm5fbGlzdF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX21hY2hwaHlzX21mbl9saXN0
X3QpOworCisvKgorICogRm9yIGEgY29tcGF0IGNhbGxlciwgdGhpcyBpcyBpZGVudGljYWwgdG8g
WEVOTUVNX21hY2hwaHlzX21mbl9saXN0LgorICoKKyAqIEZvciBhIG5vbiBjb21wYXQgY2FsbGVy
LCB0aGlzIGZ1bmN0aW9ucyBzaW1pbGFybHkgdG8KKyAqIFhFTk1FTV9tYWNocGh5c19tZm5fbGlz
dCwgYnV0IHJldHVybnMgdGhlIG1mbnMgbWFraW5nIHVwIHRoZSBjb21wYXRpYmlsaXR5CisgKiBt
MnAgdGFibGUuCisgKi8KKyNkZWZpbmUgWEVOTUVNX21hY2hwaHlzX2NvbXBhdF9tZm5fbGlzdCAg
ICAgMjUKKworLyoKKyAqIFJldHVybnMgdGhlIGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBz
cGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlzCisgKiBtYXBwaW5nIHRhYmxlLiBBcmNoaXRlY3R1
cmVzIHdoaWNoIGRvIG5vdCBoYXZlIGEgbTJwIHRhYmxlLCBvciB3aGljaCBkbyBub3QKKyAqIG1h
cCBpdCBieSBkZWZhdWx0IGludG8gZ3Vlc3QgYWRkcmVzcyBzcGFjZSwgZG8gbm90IGltcGxlbWVu
dCB0aGlzIGNvbW1hbmQuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5fbWFjaHBoeXNfbWFwcGluZ190
LgorICovCisjZGVmaW5lIFhFTk1FTV9tYWNocGh5c19tYXBwaW5nICAgICAxMgorc3RydWN0IHhl
bl9tYWNocGh5c19tYXBwaW5nIHsKKyAgICB4ZW5fdWxvbmdfdCB2X3N0YXJ0LCB2X2VuZDsgLyog
U3RhcnQgYW5kIGVuZCB2aXJ0dWFsIGFkZHJlc3Nlcy4gICAqLworICAgIHhlbl91bG9uZ190IG1h
eF9tZm47ICAgICAgICAvKiBNYXhpbXVtIE1GTiB0aGF0IGNhbiBiZSBsb29rZWQgdXAuICovCit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX21hY2hwaHlzX21hcHBpbmcgeGVuX21hY2hwaHlzX21hcHBp
bmdfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tYWNocGh5c19tYXBwaW5nX3QpOwor
CisvKiBTb3VyY2UgbWFwcGluZyBzcGFjZS4gKi8KKy8qIGAgZW51bSBwaHlzX21hcF9zcGFjZSB7
ICovCisjZGVmaW5lIFhFTk1BUFNQQUNFX3NoYXJlZF9pbmZvICAwIC8qIHNoYXJlZCBpbmZvIHBh
Z2UgKi8KKyNkZWZpbmUgWEVOTUFQU1BBQ0VfZ3JhbnRfdGFibGUgIDEgLyogZ3JhbnQgdGFibGUg
cGFnZSAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuICAgICAgICAgMiAvKiBHTUZOICovCisj
ZGVmaW5lIFhFTk1BUFNQQUNFX2dtZm5fcmFuZ2UgICAzIC8qIEdNRk4gcmFuZ2UsIFhFTk1FTV9h
ZGRfdG9fcGh5c21hcCBvbmx5LiAqLworI2RlZmluZSBYRU5NQVBTUEFDRV9nbWZuX2ZvcmVpZ24g
NCAvKiBHTUZOIGZyb20gYW5vdGhlciBkb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIFhFTk1FTV9hZGRfdG9fcGh5c21hcF9iYXRjaCBvbmx5LiAqLworLyogYCB9ICov
CisKKy8qCisgKiBTZXRzIHRoZSBHUEZOIGF0IHdoaWNoIGEgcGFydGljdWxhciBwYWdlIGFwcGVh
cnMgaW4gdGhlIHNwZWNpZmllZCBndWVzdCdzCisgKiBwc2V1ZG9waHlzaWNhbCBhZGRyZXNzIHNw
YWNlLgorICogYXJnID09IGFkZHIgb2YgeGVuX2FkZF90b19waHlzbWFwX3QuCisgKi8KKyNkZWZp
bmUgWEVOTUVNX2FkZF90b19waHlzbWFwICAgICAgNworc3RydWN0IHhlbl9hZGRfdG9fcGh5c21h
cCB7CisgICAgLyogV2hpY2ggZG9tYWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisg
ICAgZG9taWRfdCBkb21pZDsKKworICAgIC8qIE51bWJlciBvZiBwYWdlcyB0byBnbyB0aHJvdWdo
IGZvciBnbWZuX3JhbmdlICovCisgICAgdWludDE2X3QgICAgc2l6ZTsKKworICAgIHVuc2lnbmVk
IGludCBzcGFjZTsgLyogPT4gZW51bSBwaHlzX21hcF9zcGFjZSAqLworCisjZGVmaW5lIFhFTk1B
UElEWF9ncmFudF90YWJsZV9zdGF0dXMgMHg4MDAwMDAwMAorCisgICAgLyogSW5kZXggaW50byBz
cGFjZSBiZWluZyBtYXBwZWQuICovCisgICAgeGVuX3Vsb25nX3QgaWR4OworCisgICAgLyogR1BG
TiBpbiBkb21pZCB3aGVyZSB0aGUgc291cmNlIG1hcHBpbmcgcGFnZSBzaG91bGQgYXBwZWFyLiAq
LworICAgIHhlbl9wZm5fdCAgICAgZ3BmbjsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3Rv
X3BoeXNtYXAgeGVuX2FkZF90b19waHlzbWFwX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4
ZW5fYWRkX3RvX3BoeXNtYXBfdCk7CisKKy8qIEEgYmF0Y2hlZCB2ZXJzaW9uIG9mIGFkZF90b19w
aHlzbWFwLiAqLworI2RlZmluZSBYRU5NRU1fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggMjMKK3N0cnVj
dCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeworICAgIC8qIElOICovCisgICAgLyogV2hpY2gg
ZG9tYWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisgICAgZG9taWRfdCBkb21pZDsK
KyAgICB1aW50MTZfdCBzcGFjZTsgLyogPT4gZW51bSBwaHlzX21hcF9zcGFjZSAqLworCisgICAg
LyogTnVtYmVyIG9mIHBhZ2VzIHRvIGdvIHRocm91Z2ggKi8KKyAgICB1aW50MTZfdCBzaXplOwor
ICAgIGRvbWlkX3QgZm9yZWlnbl9kb21pZDsgLyogSUZGIGdtZm5fZm9yZWlnbiAqLworCisgICAg
LyogSW5kZXhlcyBpbnRvIHNwYWNlIGJlaW5nIG1hcHBlZC4gKi8KKyAgICBYRU5fR1VFU1RfSEFO
RExFKHhlbl91bG9uZ190KSBpZHhzOworCisgICAgLyogR1BGTiBpbiBkb21pZCB3aGVyZSB0aGUg
c291cmNlIG1hcHBpbmcgcGFnZSBzaG91bGQgYXBwZWFyLiAqLworICAgIFhFTl9HVUVTVF9IQU5E
TEUoeGVuX3Bmbl90KSBncGZuczsKKworICAgIC8qIE9VVCAqLworCisgICAgLyogUGVyIGluZGV4
IGVycm9yIGNvZGUuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRShpbnQpIGVycnM7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwX2JhdGNoIHhlbl9hZGRfdG9fcGh5c21hcF9i
YXRjaF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FkZF90b19waHlzbWFwX2JhdGNo
X3QpOworCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA0MDAKKyNkZWZp
bmUgWEVOTUVNX2FkZF90b19waHlzbWFwX3JhbmdlIFhFTk1FTV9hZGRfdG9fcGh5c21hcF9iYXRj
aAorI2RlZmluZSB4ZW5fYWRkX3RvX3BoeXNtYXBfcmFuZ2UgeGVuX2FkZF90b19waHlzbWFwX2Jh
dGNoCit0eXBlZGVmIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggeGVuX2FkZF90b19w
aHlzbWFwX3JhbmdlX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYWRkX3RvX3BoeXNt
YXBfcmFuZ2VfdCk7CisjZW5kaWYKKworLyoKKyAqIFVubWFwcyB0aGUgcGFnZSBhcHBlYXJpbmcg
YXQgYSBwYXJ0aWN1bGFyIEdQRk4gZnJvbSB0aGUgc3BlY2lmaWVkIGd1ZXN0J3MKKyAqIHBzZXVk
b3BoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5fcmVtb3ZlX2Zy
b21fcGh5c21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9yZW1vdmVfZnJvbV9waHlzbWFwICAg
ICAgMTUKK3N0cnVjdCB4ZW5fcmVtb3ZlX2Zyb21fcGh5c21hcCB7CisgICAgLyogV2hpY2ggZG9t
YWluIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBmb3IuICovCisgICAgZG9taWRfdCBkb21pZDsKKwor
ICAgIC8qIEdQRk4gb2YgdGhlIGN1cnJlbnQgbWFwcGluZyBvZiB0aGUgcGFnZS4gKi8KKyAgICB4
ZW5fcGZuX3QgICAgIGdwZm47Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3JlbW92ZV9mcm9tX3Bo
eXNtYXAgeGVuX3JlbW92ZV9mcm9tX3BoeXNtYXBfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwX3QpOworCisvKioqIFJFTU9WRUQgKioqLworLyojZGVm
aW5lIFhFTk1FTV90cmFuc2xhdGVfZ3Bmbl9saXN0ICA4Ki8KKworLyoKKyAqIFJldHVybnMgdGhl
IHBzZXVkby1waHlzaWNhbCBtZW1vcnkgbWFwIGFzIGl0IHdhcyB3aGVuIHRoZSBkb21haW4KKyAq
IHdhcyBzdGFydGVkIChzcGVjaWZpZWQgYnkgWEVOTUVNX3NldF9tZW1vcnlfbWFwKS4KKyAqIGFy
ZyA9PSBhZGRyIG9mIHhlbl9tZW1vcnlfbWFwX3QuCisgKi8KKyNkZWZpbmUgWEVOTUVNX21lbW9y
eV9tYXAgICAgICAgICAgIDkKK3N0cnVjdCB4ZW5fbWVtb3J5X21hcCB7CisgICAgLyoKKyAgICAg
KiBPbiBjYWxsIHRoZSBudW1iZXIgb2YgZW50cmllcyB3aGljaCBjYW4gYmUgc3RvcmVkIGluIGJ1
ZmZlci4gT24KKyAgICAgKiByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIGhhdmUg
YmVlbiBzdG9yZWQgaW4KKyAgICAgKiBidWZmZXIuCisgICAgICovCisgICAgdW5zaWduZWQgaW50
IG5yX2VudHJpZXM7CisKKyAgICAvKgorICAgICAqIEVudHJpZXMgaW4gdGhlIGJ1ZmZlciBhcmUg
aW4gdGhlIHNhbWUgZm9ybWF0IGFzIHJldHVybmVkIGJ5IHRoZQorICAgICAqIEJJT1MgSU5UIDB4
MTUgRUFYPTB4RTgyMCBjYWxsLgorICAgICAqLworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkg
YnVmZmVyOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1vcnlfbWFwIHhlbl9tZW1vcnlfbWFw
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtb3J5X21hcF90KTsKKworLyoKKyAq
IFJldHVybnMgdGhlIHJlYWwgcGh5c2ljYWwgbWVtb3J5IG1hcC4gUGFzc2VzIHRoZSBzYW1lIHN0
cnVjdHVyZSBhcworICogWEVOTUVNX21lbW9yeV9tYXAuCisgKiBhcmcgPT0gYWRkciBvZiB4ZW5f
bWVtb3J5X21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9tYWNoaW5lX21lbW9yeV9tYXAgICAx
MAorCisvKgorICogU2V0IHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWVtb3J5IG1hcCBvZiBhIGRvbWFp
biwgYXMgcmV0dXJuZWQgYnkKKyAqIFhFTk1FTV9tZW1vcnlfbWFwLgorICogYXJnID09IGFkZHIg
b2YgeGVuX2ZvcmVpZ25fbWVtb3J5X21hcF90LgorICovCisjZGVmaW5lIFhFTk1FTV9zZXRfbWVt
b3J5X21hcCAgICAgICAxMworc3RydWN0IHhlbl9mb3JlaWduX21lbW9yeV9tYXAgeworICAgIGRv
bWlkX3QgZG9taWQ7CisgICAgc3RydWN0IHhlbl9tZW1vcnlfbWFwIG1hcDsKK307Cit0eXBlZGVm
IHN0cnVjdCB4ZW5fZm9yZWlnbl9tZW1vcnlfbWFwIHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9mb3JlaWduX21lbW9yeV9tYXBfdCk7CisKKyNk
ZWZpbmUgWEVOTUVNX3NldF9wb2RfdGFyZ2V0ICAgICAgIDE2CisjZGVmaW5lIFhFTk1FTV9nZXRf
cG9kX3RhcmdldCAgICAgICAxNworc3RydWN0IHhlbl9wb2RfdGFyZ2V0IHsKKyAgICAvKiBJTiAq
LworICAgIHVpbnQ2NF90IHRhcmdldF9wYWdlczsKKyAgICAvKiBPVVQgKi8KKyAgICB1aW50NjRf
dCB0b3RfcGFnZXM7CisgICAgdWludDY0X3QgcG9kX2NhY2hlX3BhZ2VzOworICAgIHVpbnQ2NF90
IHBvZF9lbnRyaWVzOworICAgIC8qIElOICovCisgICAgZG9taWRfdCBkb21pZDsKK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5fcG9kX3RhcmdldCB4ZW5fcG9kX3RhcmdldF90OworCisjaWYgZGVmaW5l
ZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNpZm5kZWYgdWludDY0X2Fs
aWduZWRfdAorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90CisjZW5kaWYKKworLyoK
KyAqIEdldCB0aGUgbnVtYmVyIG9mIE1GTnMgc2F2ZWQgdGhyb3VnaCBtZW1vcnkgc2hhcmluZy4K
KyAqIFRoZSBjYWxsIG5ldmVyIGZhaWxzLgorICovCisjZGVmaW5lIFhFTk1FTV9nZXRfc2hhcmlu
Z19mcmVlZF9wYWdlcyAgICAxOAorI2RlZmluZSBYRU5NRU1fZ2V0X3NoYXJpbmdfc2hhcmVkX3Bh
Z2VzICAgMTkKKworI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wICAgICAgICAgICAgICAgICAgICAy
MAorI2RlZmluZSBYRU5NRU1fcGFnaW5nX29wX25vbWluYXRlICAgICAgICAgICAwCisjZGVmaW5l
IFhFTk1FTV9wYWdpbmdfb3BfZXZpY3QgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWEVOTUVNX3Bh
Z2luZ19vcF9wcmVwICAgICAgICAgICAgICAgMgorCitzdHJ1Y3QgeGVuX21lbV9ldmVudF9vcCB7
CisgICAgdWludDhfdCAgICAgb3A7ICAgICAgICAgLyogWEVOTUVNXypfb3BfKiAqLworICAgIGRv
bWlkX3QgICAgIGRvbWFpbjsKKworCisgICAgLyogUEFHSU5HX1BSRVAgSU46IGJ1ZmZlciB0byBp
bW1lZGlhdGVseSBmaWxsIHBhZ2UgaW4gKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGJ1ZmZl
cjsKKyAgICAvKiBPdGhlciBPUHMgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90ICAgIGdmbjsgICAg
ICAgICAgIC8qIElOOiAgZ2ZuIG9mIHBhZ2UgYmVpbmcgb3BlcmF0ZWQgb24gKi8KK307Cit0eXBl
ZGVmIHN0cnVjdCB4ZW5fbWVtX2V2ZW50X29wIHhlbl9tZW1fZXZlbnRfb3BfdDsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9tZW1fZXZlbnRfb3BfdCk7CisKKyNkZWZpbmUgWEVOTUVNX2Fj
Y2Vzc19vcCAgICAgICAgICAgICAgICAgICAgMjEKKyNkZWZpbmUgWEVOTUVNX2FjY2Vzc19vcF9y
ZXN1bWUgICAgICAgICAgICAgMAorI2RlZmluZSBYRU5NRU1fYWNjZXNzX29wX3NldF9hY2Nlc3Mg
ICAgICAgICAxCisjZGVmaW5lIFhFTk1FTV9hY2Nlc3Nfb3BfZ2V0X2FjY2VzcyAgICAgICAgIDIK
KwordHlwZWRlZiBlbnVtIHsKKyAgICBYRU5NRU1fYWNjZXNzX24sCisgICAgWEVOTUVNX2FjY2Vz
c19yLAorICAgIFhFTk1FTV9hY2Nlc3NfdywKKyAgICBYRU5NRU1fYWNjZXNzX3J3LAorICAgIFhF
Tk1FTV9hY2Nlc3NfeCwKKyAgICBYRU5NRU1fYWNjZXNzX3J4LAorICAgIFhFTk1FTV9hY2Nlc3Nf
d3gsCisgICAgWEVOTUVNX2FjY2Vzc19yd3gsCisgICAgLyoKKyAgICAgKiBQYWdlIHN0YXJ0cyBv
ZmYgYXMgci14LCBidXQgYXV0b21hdGljYWxseQorICAgICAqIGNoYW5nZSB0byByLXcgb24gYSB3
cml0ZQorICAgICAqLworICAgIFhFTk1FTV9hY2Nlc3NfcngycncsCisgICAgLyoKKyAgICAgKiBM
b2cgYWNjZXNzOiBzdGFydHMgb2ZmIGFzIG4sIGF1dG9tYXRpY2FsbHkKKyAgICAgKiBnb2VzIHRv
IHJ3eCwgZ2VuZXJhdGluZyBhbiBldmVudCB3aXRob3V0CisgICAgICogcGF1c2luZyB0aGUgdmNw
dQorICAgICAqLworICAgIFhFTk1FTV9hY2Nlc3NfbjJyd3gsCisgICAgLyogVGFrZSB0aGUgZG9t
YWluIGRlZmF1bHQgKi8KKyAgICBYRU5NRU1fYWNjZXNzX2RlZmF1bHQKK30geGVubWVtX2FjY2Vz
c190OworCitzdHJ1Y3QgeGVuX21lbV9hY2Nlc3Nfb3AgeworICAgIC8qIFhFTk1FTV9hY2Nlc3Nf
b3BfKiAqLworICAgIHVpbnQ4X3Qgb3A7CisgICAgLyogeGVubWVtX2FjY2Vzc190ICovCisgICAg
dWludDhfdCBhY2Nlc3M7CisgICAgZG9taWRfdCBkb21pZDsKKyAgICAvKgorICAgICAqIE51bWJl
ciBvZiBwYWdlcyBmb3Igc2V0IG9wCisgICAgICogSWdub3JlZCBvbiBzZXR0aW5nIGRlZmF1bHQg
YWNjZXNzIGFuZCBvdGhlciBvcHMKKyAgICAgKi8KKyAgICB1aW50MzJfdCBucjsKKyAgICAvKgor
ICAgICAqIEZpcnN0IHBmbiBmb3Igc2V0IG9wCisgICAgICogcGZuIGZvciBnZXQgb3AKKyAgICAg
KiB+MHVsbCBpcyB1c2VkIHRvIHNldCBhbmQgZ2V0IHRoZSBkZWZhdWx0IGFjY2VzcyBmb3IgcGFn
ZXMKKyAgICAgKi8KKyAgICB1aW50NjRfYWxpZ25lZF90IHBmbjsKK307Cit0eXBlZGVmIHN0cnVj
dCB4ZW5fbWVtX2FjY2Vzc19vcCB4ZW5fbWVtX2FjY2Vzc19vcF90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoeGVuX21lbV9hY2Nlc3Nfb3BfdCk7CisKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdf
b3AgICAgICAgICAgICAgICAgICAgMjIKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3Bfbm9taW5h
dGVfZ2ZuICAgICAgMAorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9ub21pbmF0ZV9ncmVmICAg
ICAxCisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX3NoYXJlICAgICAgICAgICAgIDIKKyNkZWZp
bmUgWEVOTUVNX3NoYXJpbmdfb3BfcmVzdW1lICAgICAgICAgICAgMworI2RlZmluZSBYRU5NRU1f
c2hhcmluZ19vcF9kZWJ1Z19nZm4gICAgICAgICA0CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29w
X2RlYnVnX21mbiAgICAgICAgIDUKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ3Jl
ZiAgICAgICAgNgorI2RlZmluZSBYRU5NRU1fc2hhcmluZ19vcF9hZGRfcGh5c21hcCAgICAgICA3
CisjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2F1ZGl0ICAgICAgICAgICAgIDgKKworI2RlZmlu
ZSBYRU5NRU1fU0hBUklOR19PUF9TX0hBTkRMRV9JTlZBTElEICAoLTEwKQorI2RlZmluZSBYRU5N
RU1fU0hBUklOR19PUF9DX0hBTkRMRV9JTlZBTElEICAoLTkpCisKKy8qIFRoZSBmb2xsb3dpbmcg
YWxsb3dzIHNoYXJpbmcgb2YgZ3JhbnQgcmVmcy4gVGhpcyBpcyB1c2VmdWwKKyAqIGZvciBzaGFy
aW5nIHV0aWxpdGllcyBzaXR0aW5nIGFzICJmaWx0ZXJzIiBpbiBJTyBiYWNrZW5kcworICogKGUu
Zy4gbWVtc2hyICsgYmxrdGFwKDIpKS4gVGhlIElPIGJhY2tlbmQgaXMgb25seSBleHBvc2VkCisg
KiB0byBncmFudCByZWZlcmVuY2VzLCBhbmQgdGhpcyBhbGxvd3Mgc2hhcmluZyBvZiB0aGUgZ3Jl
ZnMgKi8KKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfSVNfR1JFRl9GTEFHICAgKDFV
TEwgPDwgNjIpCisKKyNkZWZpbmUgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERfTUFLRV9HUkVGKGZp
ZWxkLCB2YWwpICBcCisgICAgKGZpZWxkKSA9IChYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9JU19H
UkVGX0ZMQUcgfCB2YWwpCisjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0ZJRUxEX0lTX0dSRUYo
ZmllbGQpICAgICAgICAgXAorICAgICgoZmllbGQpICYgWEVOTUVNX1NIQVJJTkdfT1BfRklFTERf
SVNfR1JFRl9GTEFHKQorI2RlZmluZSBYRU5NRU1fU0hBUklOR19PUF9GSUVMRF9HRVRfR1JFRihm
aWVsZCkgICAgICAgIFwKKyAgICAoKGZpZWxkKSAmICh+WEVOTUVNX1NIQVJJTkdfT1BfRklFTERf
SVNfR1JFRl9GTEFHKSkKKworc3RydWN0IHhlbl9tZW1fc2hhcmluZ19vcCB7CisgICAgdWludDhf
dCAgICAgb3A7ICAgICAvKiBYRU5NRU1fc2hhcmluZ19vcF8qICovCisgICAgZG9taWRfdCAgICAg
ZG9tYWluOworCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgbWVtX3NoYXJpbmdfb3Bfbm9t
aW5hdGUgeyAgLyogT1BfTk9NSU5BVEVfeHh4ICAgICAgICAgICAqLworICAgICAgICAgICAgdW5p
b24geworICAgICAgICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3QgZ2ZuOyAgICAgLyogSU46IGdm
biB0byBub21pbmF0ZSAgICAgICAqLworICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgZ3Jh
bnRfcmVmOyAgLyogSU46IGdyYW50IHJlZiB0byBub21pbmF0ZSAqLworICAgICAgICAgICAgfSB1
OworICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCAgaGFuZGxlOyAgICAgLyogT1VUOiB0aGUg
aGFuZGxlICAgICAgICAgICAqLworICAgICAgICB9IG5vbWluYXRlOworICAgICAgICBzdHJ1Y3Qg
bWVtX3NoYXJpbmdfb3Bfc2hhcmUgeyAgICAgLyogT1BfU0hBUkUvQUREX1BIWVNNQVAgKi8KKyAg
ICAgICAgICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc291cmNlX2dmbjsgICAgLyogSU46IHRoZSBnZm4g
b2YgdGhlIHNvdXJjZSBwYWdlICovCisgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IHNvdXJj
ZV9oYW5kbGU7IC8qIElOOiBoYW5kbGUgdG8gdGhlIHNvdXJjZSBwYWdlICovCisgICAgICAgICAg
ICB1aW50NjRfYWxpZ25lZF90IGNsaWVudF9nZm47ICAgIC8qIElOOiB0aGUgY2xpZW50IGdmbiAq
LworICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBjbGllbnRfaGFuZGxlOyAvKiBJTjogaGFu
ZGxlIHRvIHRoZSBjbGllbnQgcGFnZSAqLworICAgICAgICAgICAgZG9taWRfdCAgY2xpZW50X2Rv
bWFpbjsgLyogSU46IHRoZSBjbGllbnQgZG9tYWluIGlkICovCisgICAgICAgIH0gc2hhcmU7Cisg
ICAgICAgIHN0cnVjdCBtZW1fc2hhcmluZ19vcF9kZWJ1ZyB7ICAgICAvKiBPUF9ERUJVR194eHgg
Ki8KKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90
IGdmbjsgICAgICAvKiBJTjogZ2ZuIHRvIGRlYnVnICAgICAgICAgICovCisgICAgICAgICAgICAg
ICAgdWludDY0X2FsaWduZWRfdCBtZm47ICAgICAgLyogSU46IG1mbiB0byBkZWJ1ZyAgICAgICAg
ICAqLworICAgICAgICAgICAgICAgIHVpbnQzMl90IGdyZWY7ICAgICAvKiBJTjogZ3JlZiB0byBk
ZWJ1ZyAgICAgICAgICovCisgICAgICAgICAgICB9IHU7CisgICAgICAgIH0gZGVidWc7CisgICAg
fSB1OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9tZW1fc2hhcmluZ19vcCB4ZW5fbWVtX3NoYXJp
bmdfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9tZW1fc2hhcmluZ19vcF90KTsK
KworLyoKKyAqIEF0dGVtcHQgdG8gc3Rha2UgYSBjbGFpbSBmb3IgYSBkb21haW4gb24gYSBxdWFu
dGl0eSBvZiBwYWdlcworICogb2Ygc3lzdGVtIFJBTSwgYnV0IF9ub3RfIGFzc2lnbiBzcGVjaWZp
YyBwYWdlZnJhbWVzLiAgT25seQorICogYXJpdGhtZXRpYyBpcyBwZXJmb3JtZWQgc28gdGhlIGh5
cGVyY2FsbCBpcyB2ZXJ5IGZhc3QgYW5kIG5lZWQKKyAqIG5vdCBiZSBwcmVlbXB0aWJsZSwgdGh1
cyBzaWRlc3RlcHBpbmcgdGltZS1vZi1jaGVjay10aW1lLW9mLXVzZQorICogcmFjZXMgZm9yIG1l
bW9yeSBhbGxvY2F0aW9uLiAgUmV0dXJucyAwIGlmIHRoZSBoeXBlcnZpc29yIHBhZ2UKKyAqIGFs
bG9jYXRvciBoYXMgYXRvbWljYWxseSBhbmQgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgdGhlIHJlcXVl
c3RlZAorICogbnVtYmVyIG9mIHBhZ2VzLCBlbHNlIG5vbi16ZXJvLgorICoKKyAqIEFueSBkb21h
aW4gbWF5IGhhdmUgb25seSBvbmUgYWN0aXZlIGNsYWltLiAgV2hlbiBzdWZmaWNpZW50IG1lbW9y
eQorICogaGFzIGJlZW4gYWxsb2NhdGVkIHRvIHJlc29sdmUgdGhlIGNsYWltLCB0aGUgY2xhaW0g
c2lsZW50bHkgZXhwaXJlcy4KKyAqIENsYWltaW5nIHplcm8gcGFnZXMgZWZmZWN0aXZlbHkgcmVz
ZXRzIGFueSBvdXRzdGFuZGluZyBjbGFpbSBhbmQKKyAqIGlzIGFsd2F5cyBzdWNjZXNzZnVsLgor
ICoKKyAqIE5vdGUgdGhhdCBhIHZhbGlkIGNsYWltIG1heSBiZSBzdGFrZWQgZXZlbiBhZnRlciBt
ZW1vcnkgaGFzIGJlZW4KKyAqIGFsbG9jYXRlZCBmb3IgYSBkb21haW4uICBJbiB0aGlzIGNhc2Us
IHRoZSBjbGFpbSBpcyBub3QgaW5jcmVtZW50YWwsCisgKiBpLmUuIGlmIHRoZSBkb21haW4ncyB0
b3RfcGFnZXMgaXMgMywgYW5kIGEgY2xhaW0gaXMgc3Rha2VkIGZvciAxMCwKKyAqIG9ubHkgNyBh
ZGRpdGlvbmFsIHBhZ2VzIGFyZSBjbGFpbWVkLgorICoKKyAqIENhbGxlciBtdXN0IGJlIHByaXZp
bGVnZWQgb3IgdGhlIGh5cGVyY2FsbCBmYWlscy4KKyAqLworI2RlZmluZSBYRU5NRU1fY2xhaW1f
cGFnZXMgICAgICAgICAgICAgICAgICAyNAorCisvKgorICogWEVOTUVNX2NsYWltX3BhZ2VzIGZs
YWdzIC0gdGhlIGFyZSBubyBmbGFncyBhdCB0aGlzIHRpbWUuCisgKiBUaGUgemVybyB2YWx1ZSBp
cyBhcHByb3BpYXRlLgorICovCisKKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmlu
ZWQoX19YRU5fVE9PTFNfXykgKi8KKworLyoKKyAqIFhFTk1FTV9nZXRfdm51bWFpbmZvIHVzZWQg
YnkgZ3Vlc3QgdG8gZ2V0CisgKiB2TlVNQSB0b3BvbG9neSBmcm9tIGh5cGVydmlzb3IuCisgKi8K
KyNkZWZpbmUgWEVOTUVNX2dldF92bnVtYWluZm8gICAgICAgICAgICAgICAgMjYKKworLyogdk5V
TUEgbm9kZSBtZW1vcnkgcmFuZ2VzICovCitzdHJ1Y3QgeGVuX3ZtZW1yYW5nZSB7CisgICAgdWlu
dDY0X3Qgc3RhcnQsIGVuZDsKKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisgICAgdW5zaWduZWQg
aW50IG5pZDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fdm1lbXJhbmdlIHhlbl92bWVtcmFuZ2Vf
dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl92bWVtcmFuZ2VfdCk7CisKKy8qCisgKiB2
TlVNQSB0b3BvbG9neSBzcGVjaWZpZXMgdk5VTUEgbm9kZSBudW1iZXIsIGRpc3RhbmNlIHRhYmxl
LAorICogbWVtb3J5IHJhbmdlcyBhbmQgdmNwdSBtYXBwaW5nIHByb3ZpZGVkIGZvciBndWVzdHMu
CisgKiBYRU5NRU1fZ2V0X3ZudW1haW5mbyBoeXBlcmNhbGwgZXhwZWN0cyB0byBzZWUgZnJvbSBn
dWVzdAorICogbnJfdm5vZGVzLCBucl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cyB0byBpbmRpY2F0
ZSBhdmFpbGFibGUgbWVtb3J5LgorICogQWZ0ZXIgZmlsbGluZyBndWVzdHMgc3RydWN0dXJlcywg
bnJfdm5vZGVzLCBucl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cworICogY29waWVkIGJhY2sgdG8g
Z3Vlc3QuIERvbWFpbiByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBvZiBucl92bm9kZXMsCisgKiBu
cl92bWVtcmFuZ2VzIGFuZCBucl92Y3B1cyB0byBndWVzdCBpZiB0aGUgdmFsdWVzIHdoZXJlIGlu
Y29ycmVjdC4KKyAqLworc3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvIHsKKyAgICAvKiBJ
TiAqLworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgdWludDE2X3QgcGFkOworICAgIC8qIElOL09V
VCAqLworICAgIHVuc2lnbmVkIGludCBucl92bm9kZXM7CisgICAgdW5zaWduZWQgaW50IG5yX3Zj
cHVzOworICAgIHVuc2lnbmVkIGludCBucl92bWVtcmFuZ2VzOworICAgIC8qIE9VVCAqLworICAg
IHVuaW9uIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBoOworICAgICAgICB1aW50
NjRfdCBwYWQ7CisgICAgfSB2ZGlzdGFuY2U7CisgICAgdW5pb24geworICAgICAgICBYRU5fR1VF
U1RfSEFORExFKHVpbnQpIGg7CisgICAgICAgIHVpbnQ2NF90IHBhZDsKKyAgICB9IHZjcHVfdG9f
dm5vZGU7CisgICAgdW5pb24geworICAgICAgICBYRU5fR1VFU1RfSEFORExFKHhlbl92bWVtcmFu
Z2VfdCkgaDsKKyAgICAgICAgdWludDY0X3QgcGFkOworICAgIH0gdm1lbXJhbmdlOworfTsKK3R5
cGVkZWYgc3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvIHhlbl92bnVtYV90b3BvbG9neV9p
bmZvX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdm51bWFfdG9wb2xvZ3lfaW5mb190
KTsKKworLyogTmV4dCBhdmFpbGFibGUgc3Vib3AgbnVtYmVyIGlzIDI3ICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfTUVNT1JZX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgor
ICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQK
KyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K
ZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oIGIvaW5jbHVkZS94ZW4vcHVi
bGljL3NjaGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjViMTQwZAot
LS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9zY2hlZC5oCkBAIC0wLDAgKzEs
MTc1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBzY2hlZC5oCisgKgorICogU2NoZWR1
bGVyIHN0YXRlIGludGVyYWN0aW9ucworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK
KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDUsIEtlaXIgRnJhc2VyIDxrZWlyQHhlbnNvdXJjZS5jb20+CisgKi8KKworI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfU0NIRURfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18KKworI2lu
Y2x1ZGUgImV2ZW50X2NoYW5uZWwuaCIKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCBzY2hlZCBH
dWVzdCBTY2hlZHVsZXIgT3BlcmF0aW9ucworICoKKyAqIFRoZSBTQ0hFRE9QIGludGVyZmFjZSBw
cm92aWRlcyBtZWNoYW5pc21zIGZvciBhIGd1ZXN0IHRvIGludGVyYWN0CisgKiB3aXRoIHRoZSBz
Y2hlZHVsZXIsIGluY2x1ZGluZyB5aWVsZCwgYmxvY2tpbmcgYW5kIHNodXR0aW5nIGl0c2VsZgor
ICogZG93bi4KKyAqLworCisvKgorICogVGhlIHByb3RvdHlwZSBmb3IgdGhpcyBoeXBlcmNhbGwg
aXM6CisgKiBgIExPTkdfUFRSIEhZUEVSVklTT1Jfc2NoZWRfb3AoZW51bSBzY2hlZF9vcCBjbWQs
IHZvaWQgKmFyZywgLi4uKQorICoKKyAqIEBjbWQgPT0gU0NIRURPUF8/Pz8gKHNjaGVkdWxlciBv
cGVyYXRpb24pLgorICogQGFyZyA9PSBPcGVyYXRpb24tc3BlY2lmaWMgZXh0cmEgYXJndW1lbnQo
cyksIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAqIC4uLiAgPT0gQWRkaXRpb25hbCBPcGVyYXRpb24t
c3BlY2lmaWMgZXh0cmEgYXJndW1lbnRzLCBkZXNjcmliZWQgYmVsb3cuCisgKgorICogVmVyc2lv
bnMgb2YgWGVuIHByaW9yIHRvIDMuMC4yIHByb3ZpZGVkIG9ubHkgdGhlIGZvbGxvd2luZyBsZWdh
Y3kgdmVyc2lvbgorICogb2YgdGhpcyBoeXBlcmNhbGwsIHN1cHBvcnRpbmcgb25seSB0aGUgY29t
bWFuZHMgeWllbGQsIGJsb2NrIGFuZCBzaHV0ZG93bjoKKyAqICBMT05HX1BUUiBzY2hlZF9vcChp
bnQgY21kLCBVTE9OR19QVFIgYXJnKQorICogQGNtZCA9PSBTQ0hFRE9QXz8/PyAoc2NoZWR1bGVy
IG9wZXJhdGlvbikuCisgKiBAYXJnID09IDAgICAgICAgICAgICAgICAoU0NIRURPUF95aWVsZCBh
bmQgU0NIRURPUF9ibG9jaykKKyAqICAgICAgPT0gU0hVVERPV05fKiBjb2RlIChTQ0hFRE9QX3No
dXRkb3duKQorICoKKyAqIFRoaXMgbGVnYWN5IHZlcnNpb24gaXMgYXZhaWxhYmxlIHRvIG5ldyBn
dWVzdHMgYXM6CisgKiBgIExPTkdfUFRSIEhZUEVSVklTT1Jfc2NoZWRfb3BfY29tcGF0KGVudW0g
c2NoZWRfb3AgY21kLCBVTE9OR19QVFIgYXJnKQorICovCisKKy8qIGAgZW51bSBzY2hlZF9vcCB7
IC8vIFNDSEVET1BfKiA9PiBzdHJ1Y3Qgc2NoZWRfKiAqLworLyoKKyAqIFZvbHVudGFyaWx5IHlp
ZWxkIHRoZSBDUFUuCisgKiBAYXJnID09IE5VTEwuCisgKi8KKyNkZWZpbmUgU0NIRURPUF95aWVs
ZCAgICAgICAwCisKKy8qCisgKiBCbG9jayBleGVjdXRpb24gb2YgdGhpcyBWQ1BVIHVudGlsIGFu
IGV2ZW50IGlzIHJlY2VpdmVkIGZvciBwcm9jZXNzaW5nLgorICogSWYgY2FsbGVkIHdpdGggZXZl
bnQgdXBjYWxscyBtYXNrZWQsIHRoaXMgb3BlcmF0aW9uIHdpbGwgYXRvbWljYWxseQorICogcmVl
bmFibGUgZXZlbnQgZGVsaXZlcnkgYW5kIGNoZWNrIGZvciBwZW5kaW5nIGV2ZW50cyBiZWZvcmUg
YmxvY2tpbmcgdGhlCisgKiBWQ1BVLiBUaGlzIGF2b2lkcyBhICJ3YWtldXAgd2FpdGluZyIgcmFj
ZS4KKyAqIEBhcmcgPT0gTlVMTC4KKyAqLworI2RlZmluZSBTQ0hFRE9QX2Jsb2NrICAgICAgIDEK
KworLyoKKyAqIEhhbHQgZXhlY3V0aW9uIG9mIHRoaXMgZG9tYWluIChhbGwgVkNQVXMpIGFuZCBu
b3RpZnkgdGhlIHN5c3RlbSBjb250cm9sbGVyLgorICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVk
X3NodXRkb3duX3Qgc3RydWN0dXJlLgorICoKKyAqIElmIHRoZSBzY2hlZF9zaHV0ZG93bl90IHJl
YXNvbiBpcyBTSFVURE9XTl9zdXNwZW5kIHRoZW4KKyAqIHg4NiBQViBndWVzdHMgbXVzdCBhbHNv
IHNldCBSRFggKEVEWCBmb3IgMzItYml0IGd1ZXN0cykgdG8gdGhlIE1GTgorICogb2YgdGhlIGd1
ZXN0J3Mgc3RhcnQgaW5mbyBwYWdlLiAgUkRYL0VEWCBpcyB0aGUgdGhpcmQgaHlwZXJjYWxsCisg
KiBhcmd1bWVudC4KKyAqCisgKiBJbiBhZGRpdGlvbiwgd2hpY2ggcmVhc29uIGlzIFNIVVRET1dO
X3N1c3BlbmQgdGhpcyBoeXBlcmNhbGwKKyAqIHJldHVybnMgMSBpZiBzdXNwZW5kIHdhcyBjYW5j
ZWxsZWQgb3IgdGhlIGRvbWFpbiB3YXMgbWVyZWx5CisgKiBjaGVja3BvaW50ZWQsIGFuZCAwIGlm
IGl0IGlzIHJlc3VtaW5nIGluIGEgbmV3IGRvbWFpbi4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3No
dXRkb3duICAgIDIKKworLyoKKyAqIFBvbGwgYSBzZXQgb2YgZXZlbnQtY2hhbm5lbCBwb3J0cy4g
UmV0dXJuIHdoZW4gb25lIG9yIG1vcmUgYXJlIHBlbmRpbmcuIEFuCisgKiBvcHRpb25hbCB0aW1l
b3V0IG1heSBiZSBzcGVjaWZpZWQuCisgKiBAYXJnID09IHBvaW50ZXIgdG8gc2NoZWRfcG9sbF90
IHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3BvbGwgICAgICAgIDMKKworLyoKKyAq
IERlY2xhcmUgYSBzaHV0ZG93biBmb3IgYW5vdGhlciBkb21haW4uIFRoZSBtYWluIHVzZSBvZiB0
aGlzIGZ1bmN0aW9uIGlzCisgKiBpbiBpbnRlcnByZXRpbmcgc2h1dGRvd24gcmVxdWVzdHMgYW5k
IHJlYXNvbnMgZm9yIGZ1bGx5LXZpcnR1YWxpemVkCisgKiBkb21haW5zLiAgQSBwYXJhLXZpcnR1
YWxpemVkIGRvbWFpbiBtYXkgdXNlIFNDSEVET1Bfc2h1dGRvd24gZGlyZWN0bHkuCisgKiBAYXJn
ID09IHBvaW50ZXIgdG8gc2NoZWRfcmVtb3RlX3NodXRkb3duX3Qgc3RydWN0dXJlLgorICovCisj
ZGVmaW5lIFNDSEVET1BfcmVtb3RlX3NodXRkb3duICAgICAgICA0CisKKy8qCisgKiBMYXRjaCBh
IHNodXRkb3duIGNvZGUsIHNvIHRoYXQgd2hlbiB0aGUgZG9tYWluIGxhdGVyIHNodXRzIGRvd24g
aXQKKyAqIHJlcG9ydHMgdGhpcyBjb2RlIHRvIHRoZSBjb250cm9sIHRvb2xzLgorICogQGFyZyA9
PSBzY2hlZF9zaHV0ZG93bl90LCBhcyBmb3IgU0NIRURPUF9zaHV0ZG93bi4KKyAqLworI2RlZmlu
ZSBTQ0hFRE9QX3NodXRkb3duX2NvZGUgNQorCisvKgorICogU2V0dXAsIHBva2UgYW5kIGRlc3Ry
b3kgYSBkb21haW4gd2F0Y2hkb2cgdGltZXIuCisgKiBAYXJnID09IHBvaW50ZXIgdG8gc2NoZWRf
d2F0Y2hkb2dfdCBzdHJ1Y3R1cmUuCisgKiBXaXRoIGlkID09IDAsIHNldHVwIGEgZG9tYWluIHdh
dGNoZG9nIHRpbWVyIHRvIGNhdXNlIGRvbWFpbiBzaHV0ZG93bgorICogICAgICAgICAgICAgICBh
ZnRlciB0aW1lb3V0LCByZXR1cm5zIHdhdGNoZG9nIGlkLgorICogV2l0aCBpZCAhPSAwIGFuZCB0
aW1lb3V0ID09IDAsIGRlc3Ryb3kgZG9tYWluIHdhdGNoZG9nIHRpbWVyLgorICogV2l0aCBpZCAh
PSAwIGFuZCB0aW1lb3V0ICE9IDAsIHBva2Ugd2F0Y2hkb2cgdGltZXIgYW5kIHNldCBuZXcgdGlt
ZW91dC4KKyAqLworI2RlZmluZSBTQ0hFRE9QX3dhdGNoZG9nICAgIDYKKy8qIGAgfSAqLworCitz
dHJ1Y3Qgc2NoZWRfc2h1dGRvd24geworICAgIHVuc2lnbmVkIGludCByZWFzb247IC8qIFNIVVRE
T1dOXyogPT4gZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24gKi8KK307Cit0eXBlZGVmIHN0cnVj
dCBzY2hlZF9zaHV0ZG93biBzY2hlZF9zaHV0ZG93bl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoc2NoZWRfc2h1dGRvd25fdCk7CisKK3N0cnVjdCBzY2hlZF9wb2xsIHsKKyAgICBYRU5fR1VF
U1RfSEFORExFKGV2dGNobl9wb3J0X3QpIHBvcnRzOworICAgIHVuc2lnbmVkIGludCBucl9wb3J0
czsKKyAgICB1aW50NjRfdCB0aW1lb3V0OworfTsKK3R5cGVkZWYgc3RydWN0IHNjaGVkX3BvbGwg
c2NoZWRfcG9sbF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoc2NoZWRfcG9sbF90KTsKKwor
c3RydWN0IHNjaGVkX3JlbW90ZV9zaHV0ZG93biB7CisgICAgZG9taWRfdCBkb21haW5faWQ7ICAg
ICAgICAgLyogUmVtb3RlIGRvbWFpbiBJRCAqLworICAgIHVuc2lnbmVkIGludCByZWFzb247ICAg
ICAgIC8qIFNIVVRET1dOXyogPT4gZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24gKi8KK307Cit0
eXBlZGVmIHN0cnVjdCBzY2hlZF9yZW1vdGVfc2h1dGRvd24gc2NoZWRfcmVtb3RlX3NodXRkb3du
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShzY2hlZF9yZW1vdGVfc2h1dGRvd25fdCk7CisK
K3N0cnVjdCBzY2hlZF93YXRjaGRvZyB7CisgICAgdWludDMyX3QgaWQ7ICAgICAgICAgICAgICAg
IC8qIHdhdGNoZG9nIElEICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAgIC8qIHRp
bWVvdXQgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBzY2hlZF93YXRjaGRvZyBzY2hlZF93YXRjaGRv
Z190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoc2NoZWRfd2F0Y2hkb2dfdCk7CisKKy8qCisg
KiBSZWFzb24gY29kZXMgZm9yIFNDSEVET1Bfc2h1dGRvd24uIFRoZXNlIG1heSBiZSBpbnRlcnBy
ZXRlZCBieSBjb250cm9sCisgKiBzb2Z0d2FyZSB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRl
IGFjdGlvbi4gRm9yIHRoZSBtb3N0IHBhcnQsIFhlbiBkb2VzCisgKiBub3QgY2FyZSBhYm91dCB0
aGUgc2h1dGRvd24gY29kZS4KKyAqLworLyogYCBlbnVtIHNjaGVkX3NodXRkb3duX3JlYXNvbiB7
ICovCisjZGVmaW5lIFNIVVRET1dOX3Bvd2Vyb2ZmICAgMCAgLyogRG9tYWluIGV4aXRlZCBub3Jt
YWxseS4gQ2xlYW4gdXAgYW5kIGtpbGwuICovCisjZGVmaW5lIFNIVVRET1dOX3JlYm9vdCAgICAg
MSAgLyogQ2xlYW4gdXAsIGtpbGwsIGFuZCB0aGVuIHJlc3RhcnQuICAgICAgICAgICovCisjZGVm
aW5lIFNIVVRET1dOX3N1c3BlbmQgICAgMiAgLyogQ2xlYW4gdXAsIHNhdmUgc3VzcGVuZCBpbmZv
LCBraWxsLiAgICAgICAgICovCisjZGVmaW5lIFNIVVRET1dOX2NyYXNoICAgICAgMyAgLyogVGVs
bCBjb250cm9sbGVyIHdlJ3ZlIGNyYXNoZWQuICAgICAgICAgICAgICovCisjZGVmaW5lIFNIVVRE
T1dOX3dhdGNoZG9nICAgNCAgLyogUmVzdGFydCBiZWNhdXNlIHdhdGNoZG9nIHRpbWUgZXhwaXJl
ZC4gICAgICovCisjZGVmaW5lIFNIVVRET1dOX01BWCAgICAgICAgNCAgLyogTWF4aW11bSB2YWxp
ZCBzaHV0ZG93biByZWFzb24uICAgICAgICAgICAgICovCisvKiBgIH0gKi8KKworI2VuZGlmIC8q
IF9fWEVOX1BVQkxJQ19TQ0hFRF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAq
IG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg
KiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRp
ZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaCBiL2luY2x1ZGUveGVuL3B1Ymxp
Yy90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMjg1OWMKLS0t
IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaApAQCAtMCwwICsxLDMz
MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogaW5jbHVkZS9wdWJsaWMvdHJhY2UuaAor
ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg
KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT
T0ZUV0FSRS4KKyAqCisgKiBNYXJrIFdpbGxpYW1zb24sIChDKSAyMDA0IEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQorICogQ29weXJpZ2h0IChDKSAyMDA1IEJpbiBSZW4KKyAqLworCisjaWZuZGVm
IF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX1RSQUNFX0hfXwor
CisjZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAgICA3CisjZGVmaW5lIFRSQUNFX0VYVFJBX1NISUZU
IDI4CisKKy8qIFRyYWNlIGNsYXNzZXMgKi8KKyNkZWZpbmUgVFJDX0NMU19TSElGVCAxNgorI2Rl
ZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAwMCAgICAvKiBHZW5lcmFsIHRyYWNlICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgVFJDX1NDSEVEICAgIDB4MDAwMmYwMDAgICAgLyogWGVuIFNjaGVkdWxl
ciB0cmFjZSAgICAgICovCisjZGVmaW5lIFRSQ19ET00wT1AgICAweDAwMDRmMDAwICAgIC8qIFhl
biBET00wIG9wZXJhdGlvbiB0cmFjZSAqLworI2RlZmluZSBUUkNfSFZNICAgICAgMHgwMDA4ZjAw
MCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX01FTSAgICAg
IDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9yeSB0cmFjZSAgICAgICAgICovCisjZGVmaW5lIFRS
Q19QViAgICAgICAweDAwMjBmMDAwICAgIC8qIFhlbiBQViB0cmFjZXMgICAgICAgICAgICAqLwor
I2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQwZjAwMCAgICAvKiBYZW4gc2hhZG93IHRyYWNpbmcg
ICAgICAgKi8KKyNkZWZpbmUgVFJDX0hXICAgICAgIDB4MDA4MGYwMDAgICAgLyogWGVuIGhhcmR3
YXJlLXJlbGF0ZWQgdHJhY2VzICovCisjZGVmaW5lIFRSQ19HVUVTVCAgICAweDA4MDBmMDAwICAg
IC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMgICAqLworI2RlZmluZSBUUkNfQUxMICAgICAgMHgw
ZmZmZjAwMAorI2RlZmluZSBUUkNfSERfVE9fRVZFTlQoeCkgKCh4KSYweDBmZmZmZmZmKQorI2Rl
ZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVMPDwzMSkKKyNkZWZpbmUgVFJDX0hEX0lOQ0xVREVT
X0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAmIFRSQ19IRF9DWUNMRV9GTEFHICkgKQorI2RlZmlu
ZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+PlRSQUNFX0VYVFJBX1NISUZUKSZUUkFDRV9FWFRS
QV9NQVgpCisKKy8qIFRyYWNlIHN1YmNsYXNzZXMgKi8KKyNkZWZpbmUgVFJDX1NVQkNMU19TSElG
VCAxMgorCisvKiB0cmFjZSBzdWJjbGFzc2VzIGZvciBTVk0gKi8KKyNkZWZpbmUgVFJDX0hWTV9F
TlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyogVk1FTlRSWSBhbmQgI1ZNRVhJVCAgICAgICAqLwor
I2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAgIDB4MDAwODIwMDAgICAvKiB2YXJpb3VzIEhWTSBo
YW5kbGVycyAgICAgICovCisjZGVmaW5lIFRSQ19IVk1fRU1VTCAgICAgICAgMHgwMDA4NDAwMCAg
IC8qIGVtdWxhdGVkIGRldmljZXMgKi8KKworI2RlZmluZSBUUkNfU0NIRURfTUlOICAgICAgIDB4
MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRlIGNoYW5nZXMgKi8KKyNkZWZpbmUgVFJDX1NDSEVE
X0NMQVNTICAgICAweDAwMDIyMDAwICAgLyogU2NoZWR1bGVyLXNwZWNpZmljICAgICovCisjZGVm
aW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgwMDAyODAwMCAgIC8qIE1vcmUgaW5jbHVzaXZlIHNj
aGVkdWxpbmcgKi8KKworLyoKKyAqIFRoZSBoaWdoZXN0IDMgYml0cyBvZiB0aGUgbGFzdCAxMiBi
aXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92ZSBhcmUKKyAqIHJlc2VydmVkIGZvciBlbmNvZGlu
ZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0aGUgaW5mb3JtYXRpb24uIFRoZQorICogYWN0dWFs
IGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxhc3QgOSBiaXRzLgorICoKKyAqIFRoaXMgbWVhbnMg
d2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2YWlsYWJsZSAod2hpY2ggbWVhbnMgYXQgbW9zdCA4
CisgKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcgZXZlbnRzKSBhbmQsIGluIGVhY2ggc2NoZWR1bGVy
LCB1cCB0byA1MTIKKyAqIGRpZmZlcmVudCBldmVudHMuCisgKi8KKyNkZWZpbmUgVFJDX1NDSEVE
X0lEX0JJVFMgMworI2RlZmluZSBUUkNfU0NIRURfSURfU0hJRlQgKFRSQ19TVUJDTFNfU0hJRlQg
LSBUUkNfU0NIRURfSURfQklUUykKKyNkZWZpbmUgVFJDX1NDSEVEX0lEX01BU0sgKCgoMVVMPDxU
UkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBUUkNfU0NIRURfSURfU0hJRlQpCisjZGVmaW5lIFRS
Q19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NIRURfSURfTUFTSykpCisKKy8qIFBlci1zY2hlZHVs
ZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVsZXIgc3BlY2lmaWMgZXZlbnRzICovCisjZGVmaW5l
IFRSQ19TQ0hFRF9DU0NIRUQgICAwCisjZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQyICAxCisjZGVm
aW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCisjZGVmaW5lIFRSQ19TQ0hFRF9BUklOQzY1MyAzCisj
ZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0CisKKy8qIFBlci1zY2hlZHVsZXIgdHJhY2luZyAq
LworI2RlZmluZSBUUkNfU0NIRURfQ0xBU1NfRVZUKF9jLCBfZSkgXAorICAoICggVFJDX1NDSEVE
X0NMQVNTIHwgXAorICAgICAgKChUUkNfU0NIRURfIyNfYyA8PCBUUkNfU0NIRURfSURfU0hJRlQp
ICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBcCisgICAgKF9lICYgVFJDX1NDSEVEX0VWVF9NQVNL
KSApCisKKy8qIFRyYWNlIGNsYXNzZXMgZm9yIEhhcmR3YXJlICovCisjZGVmaW5lIFRSQ19IV19Q
TSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8qIFBvd2VyIG1hbmFnZW1lbnQgdHJhY2VzICovCisj
ZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAgMHgwMDgwMjAwMCAgIC8qIFRyYWNlcyByZWxhdGlu
ZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAqLworCisvKiBUcmFjZSBldmVudHMgcGVyIGNsYXNz
ICovCisjZGVmaW5lIFRSQ19MT1NUX1JFQ09SRFMgICAgICAgIChUUkNfR0VOICsgMSkKKyNkZWZp
bmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAoVFJDX0dFTiArIDIpCisjZGVmaW5lIFRSQ19UUkFD
RV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsgMykKKworI2RlZmluZSBUUkNfU0NIRURfUlVOU1RB
VEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4gKyAxKQorI2RlZmluZSBUUkNfU0NIRURfQ09OVElO
VUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4gKyAyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX0FE
RCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDEpCisjZGVmaW5lIFRSQ19TQ0hFRF9ET01f
UkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgMikKKyNkZWZpbmUgVFJDX1NDSEVEX1NM
RUVQICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICAzKQorI2RlZmluZSBUUkNfU0NIRURf
V0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDQpCisjZGVmaW5lIFRSQ19TQ0hF
RF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNSkKKyNkZWZpbmUgVFJDX1ND
SEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA2KQorI2RlZmluZSBUUkNf
U0NIRURfU0hVVERPV04gICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDcpCisjZGVmaW5lIFRS
Q19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgOCkKKyNkZWZpbmUg
VFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA5KQorI2RlZmlu
ZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTApCisjZGVm
aW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMSkKKyNk
ZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4gICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEyKQor
I2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVSX0ZOICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTMp
CisjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hfSU5GUFJFViAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAx
NCkKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhUIChUUkNfU0NIRURfVkVSQk9TRSAr
IDE1KQorI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV05fQ09ERSAgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgMTYpCisKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX01BUCAgICAgIChUUkNfTUVNICsg
MSkKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1VOTUFQICAgIChUUkNfTUVNICsgMikKKyNk
ZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSIChUUkNfTUVNICsgMykKKyNkZWZpbmUg
VFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAgIChUUkNfTUVNICsgNCkKKyNkZWZpbmUgVFJDX01F
TV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJDX01FTSArIDUpCisjZGVmaW5lIFRSQ19NRU1fUE9E
X1BPUFVMQVRFICAgICAgICAoVFJDX01FTSArIDE2KQorI2RlZmluZSBUUkNfTUVNX1BPRF9aRVJP
X1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykKKyNkZWZpbmUgVFJDX01FTV9QT0RfU1VQRVJQQUdF
X1NQTElOVEVSIChUUkNfTUVNICsgMTgpCisKKyNkZWZpbmUgVFJDX1BWX0VOVFJZICAgMHgwMDIw
MTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBvaW50cyBmb3IgUFYgZ3Vlc3RzLiAqLworI2RlZmlu
ZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAwIC8qIFN1Yi1jYWxsIGluIGEgbXVsdGljYWxsIGh5
cGVyY2FsbCAqLworCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTEwgICAgICAgICAgICAgKFRSQ19Q
Vl9FTlRSWSArICAxKQorI2RlZmluZSBUUkNfUFZfVFJBUCAgICAgICAgICAgICAgICAgIChUUkNf
UFZfRU5UUlkgKyAgMykKKyNkZWZpbmUgVFJDX1BWX1BBR0VfRkFVTFQgICAgICAgICAgICAoVFJD
X1BWX0VOVFJZICsgIDQpCisjZGVmaW5lIFRSQ19QVl9GT1JDRURfSU5WQUxJRF9PUCAgICAgKFRS
Q19QVl9FTlRSWSArICA1KQorI2RlZmluZSBUUkNfUFZfRU1VTEFURV9QUklWT1AgICAgICAgIChU
UkNfUFZfRU5UUlkgKyAgNikKKyNkZWZpbmUgVFJDX1BWX0VNVUxBVEVfNEdCICAgICAgICAgICAo
VFJDX1BWX0VOVFJZICsgIDcpCisjZGVmaW5lIFRSQ19QVl9NQVRIX1NUQVRFX1JFU1RPUkUgICAg
KFRSQ19QVl9FTlRSWSArICA4KQorI2RlZmluZSBUUkNfUFZfUEFHSU5HX0ZJWFVQICAgICAgICAg
IChUUkNfUFZfRU5UUlkgKyAgOSkKKyNkZWZpbmUgVFJDX1BWX0dEVF9MRFRfTUFQUElOR19GQVVM
VCAoVFJDX1BWX0VOVFJZICsgMTApCisjZGVmaW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTiAgICAg
ICAgKFRSQ19QVl9FTlRSWSArIDExKQorI2RlZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT05fUEFF
ICAgIChUUkNfUFZfRU5UUlkgKyAxMikKKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMiAgICAg
ICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfU1VCQ0FM
TCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQpCisKKy8qCisgKiBUUkNfUFZfSFlQRVJDQUxMX1Yy
IGZvcm1hdAorICoKKyAqIE9ubHkgc29tZSBvZiB0aGUgaHlwZXJjYWxsIGFyZ3VtZW50IGFyZSBy
ZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bworICogQTUgaW4gdGhlIGZpcnN0IGV4dHJhIHdvcmQg
YXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMgcHJlc2VudCBhbmQKKyAqIHRoZSBhcmd1bWVudHMg
dGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVlbnRpYWxseSBpbiB0aGUgZm9sbG93aW5nCisgKiB3
b3Jkcy4KKyAqCisgKiBUaGUgVFJDXzY0X0ZMQUcgYml0IGlzIG5vdCBzZXQgZm9yIHRoZXNlIGV2
ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKKyAqIDY0LWJpdCBhcmd1bWVudHMgaW4gdGhlIHJlY29y
ZCkuCisgKgorICogV29yZAorICogMCAgICBiaXQgMzEgMzB8MjkgMjh8MjcgMjZ8MjUgMjR8MjMg
MjJ8MjEgMjB8MTkgLi4uIDAKKyAqICAgICAgICAgIEE1ICAgfEE0ICAgfEEzICAgfEEyICAgfEEx
ICAgfEEwICAgfEh5cGVyY2FsbCBvcAorICogMSAgICBGaXJzdCAzMiBiaXQgKG9yIGxvdyB3b3Jk
IG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZAorICogMiAgICBTZWNvbmQgMzIgYml0IChv
ciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcgaW4gcmVjb3JkCisgKiAuLi4KKyAqCisg
KiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6CisgKgorICogICAwMGIgIEFyZ3VtZW50IG5vdCBwcmVz
ZW50CisgKiAgIDAxYiAgMzItYml0IGFyZ3VtZW50IHByZXNlbnQKKyAqICAgMTBiICA2NC1iaXQg
YXJndW1lbnQgcHJlc2VudAorICogICAxMWIgIFJlc2VydmVkCisgKi8KKyNkZWZpbmUgVFJDX1BW
X0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4MSA8PCAoMjAgKyAyKihpKSkpCisjZGVmaW5lIFRS
Q19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkpICgweDIgPDwgKDIwICsgMiooaSkpKQorI2RlZmlu
ZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19NQVNLICAoMHhmZmYwMDAwMCkKKworI2RlZmluZSBU
UkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDEpCisj
ZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9QQUdBVEUgICAgICAgICAgICAgKFRSQ19TSEFET1cg
KyAgMikKKyNkZWZpbmUgVFJDX1NIQURPV19GQVNUX01NSU8gICAgICAgICAgICAgICAgICAoVFJD
X1NIQURPVyArICAzKQorI2RlZmluZSBUUkNfU0hBRE9XX0ZBTFNFX0ZBU1RfUEFUSCAgICAgICAg
ICAgIChUUkNfU0hBRE9XICsgIDQpCisjZGVmaW5lIFRSQ19TSEFET1dfTU1JTyAgICAgICAgICAg
ICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNSkKKyNkZWZpbmUgVFJDX1NIQURPV19GSVhVUCAg
ICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA2KQorI2RlZmluZSBUUkNfU0hBRE9X
X0RPTUZfRFlJTkcgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDcpCisjZGVmaW5lIFRS
Q19TSEFET1dfRU1VTEFURSAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgOCkKKyNk
ZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9XX1VTRVIgICAgICAoVFJDX1NIQURPVyAr
ICA5KQorI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5TSEFET1dfRVZUSU5KICAgIChUUkNf
U0hBRE9XICsgMTApCisjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURV9VTlNIQURPV19VTkhBTkRM
RUQgKFRSQ19TSEFET1cgKyAxMSkKKyNkZWZpbmUgVFJDX1NIQURPV19XUk1BUF9CRiAgICAgICAg
ICAgICAgICAgICAoVFJDX1NIQURPVyArIDEyKQorI2RlZmluZSBUUkNfU0hBRE9XX1BSRUFMTE9D
X1VOUElOICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTMpCisjZGVmaW5lIFRSQ19TSEFET1df
UkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAxNCkKKyNkZWZpbmUgVFJD
X1NIQURPV19SRVNZTkNfT05MWSAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDE1KQorCisv
KiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNzICovCisjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxB
RyAgICAgICgweDQwMCkKKyNkZWZpbmUgVFJDX0hWTV9WTUVOVFJZICAgICAgICAgKFRSQ19IVk1f
RU5UUllFWElUICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQgICAgICAgICAgKFRSQ19I
Vk1fRU5UUllFWElUICsgMHgwMikKKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRS
Q19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZMQUcgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1BG
X1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9Q
Rl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgwMSkKKyNk
ZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIpCisj
ZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRf
RkxBRyArIDB4MDIpCisjZGVmaW5lIFRSQ19IVk1fSU5KX0VYQyAgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDAzKQorI2RlZmluZSBUUkNfSFZNX0lOSl9WSVJRICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgwNCkKKyNkZWZpbmUgVFJDX0hWTV9SRUlOSl9WSVJRICAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MDUpCisjZGVmaW5lIFRSQ19IVk1fSU9fUkVBRCAgICAgICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDA2KQorI2RlZmluZSBUUkNfSFZNX0lPX1dSSVRFICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwNykKKyNkZWZpbmUgVFJDX0hWTV9DUl9SRUFEICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfUkVBRDY0ICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfV1JJ
VEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0NSX1dS
SVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDA5KQorI2RlZmlu
ZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwQSkKKyNkZWZp
bmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEIpCisjZGVm
aW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBDKQorI2Rl
ZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRCkKKyNk
ZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEUpCisj
ZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBGKQor
I2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMCkK
KyNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTEp
CisjZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDEy
KQorI2RlZmluZSBUUkNfSFZNX0hMVCAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgx
MykKKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEcgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MTQpCisjZGVmaW5lIFRSQ19IVk1fSU5WTFBHNjQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBU
UkNfNjRfRkxBRyArIDB4MTQpCisjZGVmaW5lIFRSQ19IVk1fTUNFICAgICAgICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyAweDE1KQorI2RlZmluZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgxNikKKyNkZWZpbmUgVFJDX0hWTV9JT01FTV9SRUFEICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MTcpCisjZGVmaW5lIFRSQ19IVk1fQ0xUUyAgICAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDE4KQorI2RlZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9MTVNXNjQgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9S
RFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MWEpCisjZGVmaW5lIFRSQ19IVk1f
SU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIwKQorI2RlZmluZSBUUkNfSFZN
X05QRiAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMSkKKyNkZWZpbmUgVFJDX0hW
TV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZNX0hBTkRMRVIgKyAweDIyKQorI2RlZmluZSBUUkNf
SFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjMpCisjZGVmaW5lIFRS
Q19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNCkKKyNkZWZpbmUg
VFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI1KQorCisjZGVm
aW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikKKyNk
ZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE3KQor
CisvKiBUcmFjZSBldmVudHMgZm9yIGVtdWxhdGVkIGRldmljZXMgKi8KKyNkZWZpbmUgVFJDX0hW
TV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChUUkNfSFZNX0VNVUwgKyAweDEpCisjZGVmaW5lIFRS
Q19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIgICAoVFJDX0hWTV9FTVVMICsgMHgyKQorI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJTUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MykKKyNk
ZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NUQVJUX1RJTUVSIChUUkNfSFZNX0VNVUwgKyAweDQp
CisjZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVUX1NUT1BfVElNRVIgICAoVFJDX0hWTV9FTVVMICsg
MHg1KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1NUT1BfVElNRVIgICAgKFRSQ19IVk1fRU1V
TCArIDB4NikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1JUQ19TVE9QX1RJTUVSICAgIChUUkNfSFZN
X0VNVUwgKyAweDcpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9MQVBJQ19TVE9QX1RJTUVSICAoVFJD
X0hWTV9FTVVMICsgMHg4KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1RJTUVSX0NCICAgICAg
KFRSQ19IVk1fRU1VTCArIDB4OSkKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1RJTUVSX0NC
ICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UX09V
VFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhCKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX0tJ
Q0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4QykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJ
Q19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEQpCisjZGVmaW5lIFRSQ19IVk1fRU1V
TF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hWTV9FTVVMICsgMHhFKQorI2RlZmluZSBUUkNfSFZN
X0VNVUxfUElDX05FR0VER0UgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4RikKKyNkZWZpbmUgVFJD
X0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxMIChUUkNfSFZNX0VNVUwgKyAweDEwKQorI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lOVFIgICAgKFRSQ19IVk1fRU1VTCArIDB4MTEpCisK
Ky8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCisjZGVmaW5lIFRSQ19QTV9GUkVRX0NI
QU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQorI2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAg
ICAgICAoVFJDX0hXX1BNICsgMHgwMikKKyNkZWZpbmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAg
KFRSQ19IV19QTSArIDB4MDMpCisKKy8qIFRyYWNlIGV2ZW50cyBmb3IgSVJRcyAqLworI2RlZmlu
ZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9ERUxBWSAoVFJDX0hXX0lSUSArIDB4MSkKKyNkZWZp
bmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAgICAgICAgKFRSQ19IV19JUlEgKyAweDIpCisjZGVm
aW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1IgICAgICAgIChUUkNfSFdfSVJRICsgMHgzKQorI2Rl
ZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkKKyNk
ZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAgKFRSQ19IV19JUlEgKyAweDUpCisj
ZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAgIChUUkNfSFdfSVJRICsgMHg2KQor
I2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4NykK
KyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAgICAgKFRSQ19IV19JUlEgKyAweDgp
CisKKy8qCisgKiBFdmVudCBGbGFncworICoKKyAqIFNvbWUgZXZlbnRzIChlLmcsIFRSQ19QVl9U
UkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVsdGlwbGUKKyAqIHJlY29yZCBmb3Jt
YXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUKKyAqIGRpZmZl
cmVudCBmb3JtYXRzLgorICovCisjZGVmaW5lIFRSQ182NF9GTEFHIDB4MTAwIC8qIEFkZHJlc3Nl
cyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAzMiBiaXRzKSAqLworCisvKiBUaGlzIHN0cnVjdHVy
ZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciByZWNvcmQuICovCitzdHJ1Y3QgdF9y
ZWMgeworICAgIHVpbnQzMl90IGV2ZW50OjI4OworICAgIHVpbnQzMl90IGV4dHJhX3UzMjozOyAg
ICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFpbGluZyBleHRyYV91MzJbXSBhcnJheSAqLworICAg
IHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3ljbGVz
PyAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3VudGVyIHRpbWVzdGFtcCAqLworICAg
ICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMyWzddOyAgICAgICAgIC8qIGV2ZW50IGRhdGEgaXRl
bXMgKi8KKyAgICAgICAgfSBjeWNsZXM7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1
aW50MzJfdCBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZlbnQgZGF0YSBpdGVtcyAqLworICAg
ICAgICB9IG5vY3ljbGVzOworICAgIH0gdTsKK307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBj
b250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFk
CisgKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFuIGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgorICov
CitzdHJ1Y3QgdF9idWYgeworICAgIC8qIEFzc3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBY
LiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4KKyAgICAgKiBDT05TIGFuZCBQUk9E
IGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6CisgICAgICogICAgIDAgPD0gY29ucyA8IDIq
WAorICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgKKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVz
ZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3aGVuIFggaXMgbm90IGEKKyAgICAg
KiBwb3dlciBvZiAyOgorICAgICAqICAgICAoKCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAo
Ml4zMikgJSBYCisgICAgICovCisgICAgdWludDMyX3QgY29uczsgICAvKiBPZmZzZXQgb2YgbmV4
dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNvbnRyb2wgdG9vbHMuICovCisgICAgdWludDMyX3Qg
cHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIHByb2R1Y2VkIGJ5IFhlbi4gICAg
ICAgICAgICovCisgICAgLyogIFJlY29yZHMgZm9sbG93IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBt
ZXRhLWRhdGEgaGVhZGVyLiAgICAqLworfTsKKworLyogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBN
Rk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJhY2sgdG8gdHJhY2UgY29uc3VtZXJzLgorICogT2Zm
c2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgc3RydWN0dXJlIHdoZXJlIHRoZSBtZm4g
bGlzdCB3aWxsIGJlIGhlbGQuCisgKiBNRk5zIHdpbGwgYmUgYXQgKChVTE9OR19QVFIgKikodF9p
bmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtjcHVdKS4KKyAqLworc3RydWN0IHRfaW5mbyB7Cisg
ICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBTaXplIGluIHBhZ2VzIG9mIGVhY2ggdHJhY2UgYnVm
ZmVyICovCisgICAgdWludDE2X3QgbWZuX29mZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2lu
Zm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxpc3QgcGVyIGNwdSAqLworICAgIC8qIE1GTiBsaXN0
cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyICovCit9OworCisjZW5kaWYgLyogX19YRU5f
UFVCTElDX1RSQUNFX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTog
QworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13
aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdp
dCBhL2luY2x1ZGUveGVuL3B1YmxpYy92ZXJzaW9uLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvdmVy
c2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZjI5MWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvdmVyc2lvbi5oCkBAIC0wLDAgKzEsOTYg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHZlcnNpb24uaAorICoKKyAqIFhlbiB2ZXJz
aW9uLCB0eXBlLCBhbmQgY29tcGlsZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdo
dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29w
eXJpZ2h0IChjKSAyMDA1LCBOZ3V5ZW4gQW5oIFF1eW5oIDxhcXV5bmhAZ21haWwuY29tPgorICog
Q29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29tPgorICov
CisKKyNpZm5kZWYgX19YRU5fUFVCTElDX1ZFUlNJT05fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJ
Q19WRVJTSU9OX0hfXworCisjaW5jbHVkZSAieGVuLmgiCisKKy8qIE5CLiBBbGwgb3BzIHJldHVy
biB6ZXJvIG9uIHN1Y2Nlc3MsIGV4Y2VwdCBYRU5WRVJfe3ZlcnNpb24scGFnZXNpemV9ICovCisK
Ky8qIGFyZyA9PSBOVUxMOyByZXR1cm5zIG1ham9yOm1pbm9yICgxNjoxNikuICovCisjZGVmaW5l
IFhFTlZFUl92ZXJzaW9uICAgICAgMAorCisvKiBhcmcgPT0geGVuX2V4dHJhdmVyc2lvbl90LiAq
LworI2RlZmluZSBYRU5WRVJfZXh0cmF2ZXJzaW9uIDEKK3R5cGVkZWYgY2hhciB4ZW5fZXh0cmF2
ZXJzaW9uX3RbMTZdOworI2RlZmluZSBYRU5fRVhUUkFWRVJTSU9OX0xFTiAoc2l6ZW9mKHhlbl9l
eHRyYXZlcnNpb25fdCkpCisKKy8qIGFyZyA9PSB4ZW5fY29tcGlsZV9pbmZvX3QuICovCisjZGVm
aW5lIFhFTlZFUl9jb21waWxlX2luZm8gMgorc3RydWN0IHhlbl9jb21waWxlX2luZm8geworICAg
IGNoYXIgY29tcGlsZXJbNjRdOworICAgIGNoYXIgY29tcGlsZV9ieVsxNl07CisgICAgY2hhciBj
b21waWxlX2RvbWFpblszMl07CisgICAgY2hhciBjb21waWxlX2RhdGVbMzJdOworfTsKK3R5cGVk
ZWYgc3RydWN0IHhlbl9jb21waWxlX2luZm8geGVuX2NvbXBpbGVfaW5mb190OworCisjZGVmaW5l
IFhFTlZFUl9jYXBhYmlsaXRpZXMgMwordHlwZWRlZiBjaGFyIHhlbl9jYXBhYmlsaXRpZXNfaW5m
b190WzEwMjRdOworI2RlZmluZSBYRU5fQ0FQQUJJTElUSUVTX0lORk9fTEVOIChzaXplb2YoeGVu
X2NhcGFiaWxpdGllc19pbmZvX3QpKQorCisjZGVmaW5lIFhFTlZFUl9jaGFuZ2VzZXQgNAordHlw
ZWRlZiBjaGFyIHhlbl9jaGFuZ2VzZXRfaW5mb190WzY0XTsKKyNkZWZpbmUgWEVOX0NIQU5HRVNF
VF9JTkZPX0xFTiAoc2l6ZW9mKHhlbl9jaGFuZ2VzZXRfaW5mb190KSkKKworI2RlZmluZSBYRU5W
RVJfcGxhdGZvcm1fcGFyYW1ldGVycyA1CitzdHJ1Y3QgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnMg
eworICAgIHhlbl91bG9uZ190IHZpcnRfc3RhcnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3Bs
YXRmb3JtX3BhcmFtZXRlcnMgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnNfdDsKKworI2RlZmluZSBY
RU5WRVJfZ2V0X2ZlYXR1cmVzIDYKK3N0cnVjdCB4ZW5fZmVhdHVyZV9pbmZvIHsKKyAgICB1bnNp
Z25lZCBpbnQgc3VibWFwX2lkeDsgICAgLyogSU46IHdoaWNoIDMyLWJpdCBzdWJtYXAgdG8gcmV0
dXJuICovCisgICAgdWludDMyX3QgICAgIHN1Ym1hcDsgICAgICAgIC8qIE9VVDogMzItYml0IHN1
Ym1hcCAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9mZWF0dXJlX2luZm8geGVuX2ZlYXR1cmVf
aW5mb190OworCisvKiBEZWNsYXJlcyB0aGUgZmVhdHVyZXMgcmVwb3J0ZWQgYnkgWEVOVkVSX2dl
dF9mZWF0dXJlcy4gKi8KKyNpbmNsdWRlICJmZWF0dXJlcy5oIgorCisvKiBhcmcgPT0gTlVMTDsg
cmV0dXJucyBob3N0IG1lbW9yeSBwYWdlIHNpemUuICovCisjZGVmaW5lIFhFTlZFUl9wYWdlc2l6
ZSA3CisKKy8qIGFyZyA9PSB4ZW5fZG9tYWluX2hhbmRsZV90LiAqLworI2RlZmluZSBYRU5WRVJf
Z3Vlc3RfaGFuZGxlIDgKKworI2RlZmluZSBYRU5WRVJfY29tbWFuZGxpbmUgOQordHlwZWRlZiBj
aGFyIHhlbl9jb21tYW5kbGluZV90WzEwMjRdOworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1ZF
UlNJT05fSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj
LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0
CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29t
cGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzYzM3MQotLS0gL2Rl
di9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKQEAgLTAsMCArMSw0
NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogeGVuLWNvbXBhdC5oCisgKgorICogR3Vl
c3QgT1MgaW50ZXJmYWNlIHRvIFhlbi4gIENvbXBhdGliaWxpdHkgbGF5ZXIuCisgKgorICogUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg
KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor
ICoKKyAqIENvcHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKKyAqLworCisjaWZu
ZGVmIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVO
X0NPTVBBVF9IX18KKworI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAw
eDAwMDQwNjAwCisKKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNf
XykKKy8qIFhlbiBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMg
dGhlIGxhdGVzdCBpbnRlcmZhY2UuICovCisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18gX19YRU5fTEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KKyNlbGlmICFkZWZpbmVkKF9fWEVO
X0lOVEVSRkFDRV9WRVJTSU9OX18pCisvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2
ZXJzaW9uIGdldCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyAweDAwMDAwMDAwCisjZW5kaWYKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2Vycm9yICJUaGVz
ZSBoZWFkZXIgZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVy
c2lvbi4iCisjZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oIGIvaW5jbHVkZS94ZW4vcHVi
bGljL3hlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNjYzMWIKLS0t
IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKQEAgLTAsMCArMSw5MDgg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHhlbi5oCisgKgorICogR3Vlc3QgT1MgaW50
ZXJmYWNlIHRvIFhlbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNl
bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBE
RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEg
RnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfWEVOX0hfXworI2RlZmluZSBfX1hF
Tl9QVUJMSUNfWEVOX0hfXworCisjaW5jbHVkZSAieGVuLWNvbXBhdC5oIgorCisjaWYgZGVmaW5l
ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorI2luY2x1ZGUgImFyY2gteDg2L3hl
bi5oIgorI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKKyNp
bmNsdWRlICJhcmNoLWFybS5oIgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0
dXJlIgorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisvKiBHdWVzdCBoYW5kbGVzIGZv
ciBwcmltaXRpdmUgQyB0eXBlcy4gKi8KK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwor
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1Y2hhciwgdW5zaWduZWQgY2hhcik7CitERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShpbnQpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAg
dW5zaWduZWQgaW50KTsKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMw
MAorREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoTE9OR19QVFIpOworX19ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRSh1bG9uZywgVUxPTkdfUFRSKTsKKyNlbmRpZgorREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUodm9pZCk7CisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ2NF90KTsKK0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHhlbl9wZm5fdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f
dWxvbmdfdCk7CisjZW5kaWYKKworLyoKKyAqIEhZUEVSQ0FMTFMKKyAqLworCisvKiBgaW5jb250
ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2YgaHlwZXJjYWxscworICogYCBlbnVtIGh5cGVyY2FsbF9u
dW0geyAvLyBfX0hZUEVSVklTT1JfKiA9PiBIWVBFUlZJU09SXyooKQorICovCisKKyNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF90cmFwX3RhYmxlICAgICAgICAwCisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9tbXVfdXBkYXRlICAgICAgICAgICAgMQorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAg
ICAgICAgICAgICAgIDIKKyNkZWZpbmUgX19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAg
ICAzCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfY2FsbGJhY2tzICAgICAgICAgNAorI2RlZmlu
ZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tzd2l0Y2ggICAgICAgIDUKKyNkZWZpbmUgX19IWVBFUlZJ
U09SX3NjaGVkX29wX2NvbXBhdCAgICAgICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICov
CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCAgICAgICAgICAgNworI2RlZmluZSBf
X0hZUEVSVklTT1Jfc2V0X2RlYnVncmVnICAgICAgICAgIDgKKyNkZWZpbmUgX19IWVBFUlZJU09S
X2dldF9kZWJ1Z3JlZyAgICAgICAgICA5CisjZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVz
Y3JpcHRvciAgICAxMAorI2RlZmluZSBfX0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAg
MTIKKyNkZWZpbmUgX19IWVBFUlZJU09SX211bHRpY2FsbCAgICAgICAgICAgIDEzCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZyAgICAxNAorI2RlZmluZSBfX0hZUEVSVklT
T1Jfc2V0X3RpbWVyX29wICAgICAgICAgMTUKKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2No
YW5uZWxfb3BfY29tcGF0IDE2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMjAyICovCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lvbiAgICAgICAgICAxNworI2RlZmluZSBfX0hZUEVSVklT
T1JfY29uc29sZV9pbyAgICAgICAgICAgMTgKKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZf
b3BfY29tcGF0ICAgIDE5IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMjAyICovCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcCAgICAgICAyMAorI2RlZmluZSBfX0hZUEVSVklTT1Jf
dm1fYXNzaXN0ICAgICAgICAgICAgMjEKKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9t
YXBwaW5nX290aGVyZG9tYWluIDIyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAg
ICAgICAgICAyMyAvKiB4ODYgb25seSAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAg
ICAgICAgICAgICAgMjQKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAg
IDI1IC8qIHg4Ni82NCBvbmx5ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAg
ICAgICAgICAyNgorI2RlZmluZSBfX0hZUEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcK
KyNkZWZpbmUgX19IWVBFUlZJU09SX25taV9vcCAgICAgICAgICAgICAgIDI4CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcCAgICAgICAgICAgICAyOQorI2RlZmluZSBfX0hZUEVSVklTT1Jf
Y2FsbGJhY2tfb3AgICAgICAgICAgMzAKKyNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29w
ICAgICAgICAgIDMxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAz
MgorI2RlZmluZSBfX0hZUEVSVklTT1JfcGh5c2Rldl9vcCAgICAgICAgICAgMzMKKyNkZWZpbmUg
X19IWVBFUlZJU09SX2h2bV9vcCAgICAgICAgICAgICAgIDM0CisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zeXNjdGwgICAgICAgICAgICAgICAzNQorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAg
ICAgICAgICAgICAgMzYKKyNkZWZpbmUgX19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAg
IDM3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl90bWVtX29wICAgICAgICAgICAgICAzOAorI2RlZmlu
ZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhl
bkNsaWVudCAqLworCisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRp
b25zLiAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMSAgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzIgICAgICAgICAgICAgICA1MAorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF8zICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAg
ICAgICAgIDUyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1Mwor
I2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF82ICAgICAgICAgICAgICAgNTQKKyNkZWZpbmUgX19I
WVBFUlZJU09SX2FyY2hfNyAgICAgICAgICAgICAgIDU1CisKKy8qIGAgfSAqLworCisvKgorICog
SFlQRVJDQUxMIENPTVBBVElCSUxJVFkuCisgKi8KKworLyogTmV3IHNjaGVkX29wIGh5cGVyY2Fs
bCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAxMDEuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyA8IDB4MDAwMzAxMDEKKyN1bmRlZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKKyNkZWZpbmUg
X19IWVBFUlZJU09SX3NjaGVkX29wIF9fSFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKKyNlbmRp
ZgorCisvKiBOZXcgZXZlbnQtY2hhbm5lbCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVj
ZWQgaW4gMHgwMDAzMDIwMi4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgw
MDAzMDIwMgorI3VuZGVmIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wCisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29w
X2NvbXBhdAorI3VuZGVmIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wX2NvbXBhdAorI2VuZGlmCisK
Ky8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBlcmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAq
LworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjA0CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9kb20wX29wIF9fSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcAorI2VuZGlmCisKKy8q
CisgKiBWSVJUVUFMIElOVEVSUlVQVFMKKyAqCisgKiBWaXJ0dWFsIGludGVycnVwdHMgdGhhdCBh
IGd1ZXN0IE9TIG1heSByZWNlaXZlIGZyb20gWGVuLgorICoKKyAqIEluIHRoZSBzaWRlIGNvbW1l
bnRzLCAnVi4nIGRlbm90ZXMgYSBwZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCisg
KiBnbG9iYWwgVklSUS4gVGhlIGZvcm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQg
Y2Fubm90IGJlIHJlLWJvdW5kLgorICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkg
b25jZSBwZXIgZ3Vlc3Q6IHRoZXkgbXVzdCBpbml0aWFsbHkgYmUKKyAqIGFsbG9jYXRlZCB0byBW
Q1BVMCBidXQgY2FuIHN1YnNlcXVlbnRseSBiZSByZS1ib3VuZC4KKyAqLworLyogYCBlbnVtIHZp
cnEgeyAqLworI2RlZmluZSBWSVJRX1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRl
LCBhbmQvb3IgcmVxdWVzdGVkIHRpbWVvdXQuICAqLworI2RlZmluZSBWSVJRX0RFQlVHICAgICAg
MSAgLyogVi4gUmVxdWVzdCBndWVzdCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwor
I2RlZmluZSBWSVJRX0NPTlNPTEUgICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9u
IGVtZXJnZW5jeSBjb25zb2xlLiAqLworI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4g
KERPTTApIEV4Y2VwdGlvbmFsIGV2ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLworI2RlZmluZSBW
SVJRX1RCVUYgICAgICAgNCAgLyogRy4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBh
dmFpbGFibGUuICAqLworI2RlZmluZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEg
ZG9tYWluIGhhcyBwYXVzZWQgZm9yIGRlYnVnZ2luZy4gICAqLworI2RlZmluZSBWSVJRX1hFTk9Q
Uk9GICAgNyAgLyogVi4gWGVuT3Byb2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJs
ZSAqLworI2RlZmluZSBWSVJRX0NPTl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2Vp
dmVkIG9uIGNvbnNvbGUgICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAg
LyogRy4gKERPTTApIFBDUFUgc3RhdGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLworI2Rl
ZmluZSBWSVJRX01FTV9FVkVOVCAgMTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBv
Y2N1cmVkICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJl
c2VydmVkIGZvciBYZW5DbGllbnQgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBWSVJR
X0VOT01FTSAgICAgMTIgLyogRy4gKERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwor
CisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUg
VklSUV9BUkNIXzAgICAgMTYKKyNkZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKKyNkZWZpbmUgVklS
UV9BUkNIXzIgICAgMTgKKyNkZWZpbmUgVklSUV9BUkNIXzMgICAgMTkKKyNkZWZpbmUgVklSUV9B
UkNIXzQgICAgMjAKKyNkZWZpbmUgVklSUV9BUkNIXzUgICAgMjEKKyNkZWZpbmUgVklSUV9BUkNI
XzYgICAgMjIKKyNkZWZpbmUgVklSUV9BUkNIXzcgICAgMjMKKy8qIGAgfSAqLworCisjZGVmaW5l
IE5SX1ZJUlFTICAgICAgIDI0CisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZ
UEVSVklTT1JfbW11X3VwZGF0ZShjb25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCisgKiBg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0
LAorICogYCAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKKyAqIGAK
KyAqIEByZXFzIGlzIGFuIGFycmF5IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2
YWwpIHBhaXJzKS4KKyAqIEBjb3VudCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4K
KyAqIEBwZG9uZSBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNv
bXBsZXRlZCBvcGVyYXRpb25zCisgKiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3Rl
ZCBvd25lciBvZiBkYXRhIHBhZ2VzIHJlZmVyZW5jZWQgaW4gdGhpcworICogICAgICAgICAgICAg
ICAgICAgIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KKyAqIEBmb3Jl
aWduZG9tWzMxOjE2XTogUEZELCB0aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2Vz
IHJlZmVyZW5jZWQKKyAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52
b2NhdGlvbi4gVGhlIHZhbHVlIG9mIHRoaXMgZmllbGQKKyAqICAgICAgICAgICAgICAgICAgICAg
KHgpIGVuY29kZXMgdGhlIFBGRCBhcyBmb2xsb3dzOgorICogICAgICAgICAgICAgICAgICAgICB4
ID09IDAgPT4gUEZEID09IERPTUlEX1NFTEYKKyAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAw
ID0+IFBGRCA9PSB4IC0gMQorICoKKyAqIFN1Yi1jb21tYW5kczogcHRyWzE6MF0gc3BlY2lmaWVz
IHRoZSBhcHByb3ByaWF0ZSBNTVVfKiBjb21tYW5kLgorICogLS0tLS0tLS0tLS0tLQorICogcHRy
WzE6MF0gPT0gTU1VX05PUk1BTF9QVF9VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIGEg
cGFnZSB0YWJsZSBiZWxvbmdpbmcgdG8gUEZELiBJZiB1cGRhdGluZyBhbiBMMSB0YWJsZSwKKyAq
IGFuZCB0aGUgbmV3IHRhYmxlIGVudHJ5IGlzIHZhbGlkL3ByZXNlbnQsIHRoZSBtYXBwZWQgZnJh
bWUgbXVzdCBiZWxvbmcgdG8KKyAqIEZELiBJZiBhdHRlbXB0aW5nIHRvIG1hcCBhbiBJL08gcGFn
ZSB0aGVuIHRoZSBjYWxsZXIgYXNzdW1lcyB0aGUgcHJpdmlsZWdlCisgKiBvZiB0aGUgRkQuCisg
KiBGRCA9PSBET01JRF9JTzogUGVybWl0IC9vbmx5LyBJL08gbWFwcGluZ3MsIGF0IHRoZSBwcml2
IGxldmVsIG9mIHRoZSBjYWxsZXIuCisgKiBGRCA9PSBET01JRF9YRU46IE1hcCByZXN0cmljdGVk
IGFyZWFzIG9mIFhlbidzIGhlYXAgc3BhY2UuCisgKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgb2YgdGhlIHBhZ2UtdGFibGUgZW50cnkgdG8gbW9kaWZ5LgorICogdmFsICAgICAgLS0gVmFs
dWUgdG8gd3JpdGUuCisgKgorICogVGhlcmUgYWxzbyBjZXJ0YWluIGltcGxpY2l0IHJlcXVpcmVt
ZW50cyB3aGVuIHVzaW5nIHRoaXMgaHlwZXJjYWxsLiBUaGUKKyAqIHBhZ2VzIHRoYXQgbWFrZSB1
cCBhIHBhZ2V0YWJsZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9ubHkgaW4gdGhlIGd1ZXN0LgorICog
VGhpcyBwcmV2ZW50cyB1bmNvbnRyb2xsZWQgZ3Vlc3QgdXBkYXRlcyB0byB0aGUgcGFnZXRhYmxl
LiBYZW4gc3RyaWN0bHkKKyAqIGVuZm9yY2VzIHRoaXMsIGFuZCB3aWxsIGRpc2FsbG93IGFueSBw
YWdldGFibGUgdXBkYXRlIHdoaWNoIHdpbGwgZW5kIHVwCisgKiBtYXBwaW5nIHBhZ2V0YWJsZSBw
YWdlIFJXLCBhbmQgd2lsbCBkaXNhbGxvdyB1c2luZyBhbnkgd3JpdGFibGUgcGFnZSBhcyBhCisg
KiBwYWdldGFibGUuIEluIHByYWN0aWNlIGl0IG1lYW5zIHRoYXQgd2hlbiBjb25zdHJ1Y3Rpbmcg
YSBwYWdlIHRhYmxlIGZvciBhCisgKiBwcm9jZXNzLCB0aHJlYWQsIGV0Yywgd2UgTVVTVCBiZSB2
ZXJ5IGRpbGxpZ2llbnQgaW4gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICogIDEpLiBTdGFydCB3
aXRoIHRvcC1sZXZlbCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxhbmd1YWdlOiBMNCkuIEZpbGwgb3V0
CisgKiAgICAgIHRoZSBlbnRyaWVzLgorICogIDIpLiBLZWVwIG9uIGdvaW5nLCBmaWxsaW5nIG91
dCB0aGUgdXBwZXIgKFBVRCBvciBMMyksIGFuZCBtaWRkbGUgKFBNRAorICogICAgICBvciBMMiku
CisgKiAgMykuIFN0YXJ0IGZpbGxpbmcgb3V0IHRoZSBQVEUgdGFibGUgKEwxKSB3aXRoIHRoZSBQ
VEUgZW50cmllcy4gT25jZQorICogIAlkb25lLCBtYWtlIHN1cmUgdG8gc2V0IGVhY2ggb2YgdGhv
c2UgZW50cmllcyB0byBSTyAoc28gd3JpdGVhYmxlIGJpdAorICogIAlpcyB1bnNldCkuIE9uY2Ug
dGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQsIHNldCB0aGUgUE1EIChMMikgZm9yIHRoaXMKKyAqICAJ
UFRFIHRhYmxlIGFzIFJPLgorICogIDQpLiBXaGVuIGNvbXBsZXRlZCB3aXRoIGFsbCBvZiB0aGUg
UE1EIChMMikgZW50cmllcywgYW5kIGFsbCBvZiB0aGVtIGhhdmUKKyAqICAJYmVlbiBzZXQgdG8g
Uk8sIG1ha2Ugc3VyZSB0byBzZXQgUk8gdGhlIFBVRCAoTDMpLiBEbyB0aGUgc2FtZQorICogIAlv
cGVyYXRpb24gb24gUEdEIChMNCkgcGFnZXRhYmxlIGVudHJpZXMgdGhhdCBoYXZlIGEgUFVEIChM
MykgZW50cnkuCisgKiAgNSkuIE5vdyBiZWZvcmUgeW91IGNhbiB1c2UgdGhvc2UgcGFnZXMgKHNv
IHNldHRpbmcgdGhlIGNyMyksIHlvdSBNVVNUIGFsc28KKyAqICAgICAgcGluIHRoZW0gc28gdGhh
dCB0aGUgaHlwZXJ2aXNvciBjYW4gdmVyaWZ5IHRoZSBlbnRyaWVzLiBUaGlzIGlzIGRvbmUKKyAq
ICAgICAgdmlhIHRoZSBIWVBFUlZJU09SX21tdWV4dF9vcChNTVVFWFRfUElOX0w0X1RBQkxFLCBn
dWVzdCBwaHlzaWNhbCBmcmFtZQorICogICAgICBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKS4gQW5k
IHRoaXMgcG9pbnQgdGhlIEhZUEVSVklTT1JfbW11ZXh0X29wKAorICogICAgICBNTVVFWFRfTkVX
X0JBU0VQVFIsIGd1ZXN0IHBoeXNpY2FsIGZyYW1lIG51bWJlciBvZiB0aGUgUEdEIChMNCkpIGNh
biBiZQorICogICAgICBpc3N1ZWQuCisgKiBGb3IgMzItYml0IGd1ZXN0cywgdGhlIEw0IGlzIG5v
dCB1c2VkIChhcyB0aGVyZSBpcyBsZXNzIHBhZ2V0YWJsZXMpLCBzbworICogaW5zdGVhZCB1c2Ug
TDMuCisgKiBBdCB0aGlzIHBvaW50IHRoZSBwYWdldGFibGVzIGNhbiBiZSBtb2RpZmllZCB1c2lu
ZyB0aGUgTU1VX05PUk1BTF9QVF9VUERBVEUKKyAqIGh5cGVyY2FsbC4gQWxzbyBpZiBzbyBkZXNp
cmVkIHRoZSBPUyBjYW4gYWxzbyB0cnkgdG8gd3JpdGUgdG8gdGhlIFBURQorICogYW5kIGJlIHRy
YXBwZWQgYnkgdGhlIGh5cGVydmlzb3IgKGFzIHRoZSBQVEUgZW50cnkgaXMgUk8pLgorICoKKyAq
IFRvIGRlYWxsb2NhdGUgdGhlIHBhZ2VzLCB0aGUgb3BlcmF0aW9ucyBhcmUgdGhlIHJldmVyc2Ug
b2YgdGhlIHN0ZXBzCisgKiBtZW50aW9uZWQgYWJvdmUuIFRoZSBhcmd1bWVudCBpcyBNTVVFWFRf
VU5QSU5fVEFCTEUgZm9yIGFsbCBsZXZlbHMgYW5kIHRoZQorICogcGFnZXRhYmxlIE1VU1Qgbm90
IGJlIGluIHVzZSAobWVhbmluZyB0aGF0IHRoZSBjcjMgaXMgbm90IHNldCB0byBpdCkuCisgKgor
ICogcHRyWzE6MF0gPT0gTU1VX01BQ0hQSFlTX1VQREFURToKKyAqIFVwZGF0ZXMgYW4gZW50cnkg
aW4gdGhlIG1hY2hpbmUtPnBzZXVkby1waHlzaWNhbCBtYXBwaW5nIHRhYmxlLgorICogcHRyWzoy
XSAgLS0gTWFjaGluZSBhZGRyZXNzIHdpdGhpbiB0aGUgZnJhbWUgd2hvc2UgbWFwcGluZyB0byBt
b2RpZnkuCisgKiAgICAgICAgICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBp
ZiBvbmUgaXMgc3BlY2lmaWVkLgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUgaW50byB0
aGUgbWFwcGluZyBlbnRyeS4KKyAqCisgKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNF
UlZFX0FEOgorICogQXMgTU1VX05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBj
dXJyZW50bHkgaW4gdGhlIFBURSBhcmUgT1JlZAorICogd2l0aCB0aG9zZSBpbiBAdmFsLgorICoK
KyAqIEB2YWwgaXMgdXN1YWxseSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBz
b21lIGF0dHJpYnV0ZXMuCisgKiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUg
YXJjaGl0ZWN0dXJlIGRlZmluZWQgYml0cy4gTWVhbmluZyB0aGF0CisgKiBpZiB0aGlzIGlzIGEg
WDg2XzY0IG1hY2hpbmUgYW5kIGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxh
eW91dAorICogb2YgdmFsIGlzOgorICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5Y
KQorICogIC0gNDYtMTMgdGhlIG1hY2hpbmUgZnJhbWUgbnVtYmVyCisgKiAgLSAxMiBhdmFpbGFi
bGUgZm9yIGd1ZXN0CisgKiAgLSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0CisgKiAgLSAxMCBhdmFp
bGFibGUgZm9yIGd1ZXN0CisgKiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKKyAqICAtIDggZ2xv
YmFsCisgKiAgLSA3IFBBVCAoUFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8g
bWFrZSA0TUIgb3IgMk1CIHBhZ2VzKQorICogIC0gNiBkaXJ0eQorICogIC0gNSBhY2Nlc3NlZAor
ICogIC0gNCBwYWdlIGNhY2hlZCBkaXNhYmxlZAorICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gK
KyAqICAtIDIgdXNlcnNwYWNlIGFjY2Vzc2libGUKKyAqICAtIDEgd3JpdGVhYmxlCisgKiAgLSAw
IHByZXNlbnQKKyAqCisgKiAgVGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhl
IGRlZmF1bHQgbGF5b3V0IGlzIHRoZSBQQUdFX1BTRQorICogIGFsc28gY2FsbGVkIFBBR0VfUEFU
KS4gVGhlIE1NVUVYVF9bVU5dTUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCisgKiAgSFlQRVJW
SVNPUl9tbXVleHRfb3Agc2VydmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBi
ZSA0TUIKKyAqICAob3IgMk1CKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCisg
KgorICogIFRoZSByZWFzb24gdGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcg
dXRpbGl6ZWQgaXMgZHVlIHRvIFhlbgorICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0
ZSBUYWJsZSAoUEFUKSBiaXQgLSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKKyAqICByZWZlciB0
byBJbnRlbCBTRE0gMTAuMTIuIFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRy
aWJ1dGVzIG9mCisgKiAgcGFnZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KKyAqCisgKiAgVGhl
IFBBVCBNU1IgaXMgYXMgZm9sbG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkg
aXMgOCBiaXRzKToKKyAqICAgICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQ
QVQwCisgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKKyAq
ICB8IFVDICB8IFVDLSB8IFdDIHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgK
KyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICogIHwg
VUMgIHwgVUMtIHwgV1QgfCBXQiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZh
dWx0IHdoZW4gbWFjaGluZSBib290cykKKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0r
LS0tLS0rLS0tLSstLS0tKworICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwg
V1QgfCBXQiB8ICA8PSBYZW4KKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0r
LS0tLSstLS0tKworICoKKyAqICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNs
YXRlcyB0byBsb29raW5nIHVwCisgKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVu
dHJ5OgorICoKKyAqICBQQVQvUFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0
IDMpLgorICoKKyAqICBJZiBhbGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQw
LiBJZiBiaXQgMyB0dXJuZWQgb24sCisgKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0
IDMgYW5kIGJpdCA0LCB0aGVuIFBBVDIuLgorICoKKyAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExp
bnV4IFBBVDEgdHJhbnNsYXRlcyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKKyAqICB0
aGF0IGlmIGEgZ3Vlc3QgdGhhdCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBs
aWtlIHRvIHNldCBXcml0ZQorICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQg
ZW50cnkuIE1lYW5pbmcgdGhhdCBCaXQgNyAoUEFHRV9QQVQpIGlzCisgKiAgc2V0LiBGb3IgZXhh
bXBsZSwgdW5kZXIgTGludXggaXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0
aGUKKyAqICBjYWNoaW5nIGFzOgorICoKKyAqICAgV0IgPSBub25lIChzbyBQQVQwKQorICogICBX
QyA9IFBXVCAoYml0IDMgb24pCisgKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUg
b24pLgorICoKKyAqIFRvIG1ha2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNs
YXRlIHRoZSBXQyBiaXQgYXMgc286CisgKgorICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQg
KHNvIGJpdCA3IGlzIG9uKSBhbmQgY2xlYXIgYml0IDMKKyAqCisgKiBBbmQgdG8gdHJhbnNsYXRl
IGJhY2sgaXQgd291bGQ6CisgKgorICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24p
IGFuZCBjbGVhciBiaXQgNy4KKyAqLworI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAg
IDAgLyogY2hlY2tlZCAnKnB0ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLworI2RlZmluZSBN
TVVfTUFDSFBIWVNfVVBEQVRFICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5
IGVudHJ5IGZvciAqLworI2RlZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRv
bWljYWxseTogKnB0ciA9IHZhbCB8ICgqcHRyJihBfEQpKSAqLworCisvKgorICogTU1VIEVYVEVO
REVEIE9QRVJBVElPTlMKKyAqCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklT
T1JfbW11ZXh0X29wKG1tdWV4dF9vcF90IHVvcHNbXSwKKyAqIGAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNvdW50LAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgKnBkb25lLAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9y
ZWlnbmRvbSkKKyAqLworLyogSFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBv
ZiBtbXVleHRfb3Agc3RydWN0dXJlcy4KKyAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVj
aWZpZWQgKG9yIERPTUlEX1NFTEYgZm9yIG5vbmUpLgorICogV2hlcmUgdGhlIEZEIGhhcyBzb21l
IGVmZmVjdCwgaXQgaXMgZGVzY3JpYmVkIGJlbG93LgorICoKKyAqIGNtZDogTU1VRVhUXyhVTilQ
SU5fKl9UQUJMRQorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVk
IGFzIGEgcC50LiBwYWdlLgorICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZE
LCBpZiBvbmUgaXMgc3BlY2lmaWVkLgorICoKKyAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCisg
KiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5z
dGFsbCBpbiBNTVUuCisgKgorICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0
IG9ubHldCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJh
c2UgdG8gaW5zdGFsbCBpbiBNTVUKKyAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgorICoKKyAq
IGNtZDogTU1VRVhUX1RMQl9GTFVTSF9MT0NBTAorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IEZsdXNoZXMgbG9jYWwgVExCLgorICoKKyAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAorICog
bGluZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwg
VExCLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9NVUxUSQorICogdmNwdW1hc2s6IFBv
aW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNoZWQuCisgKgorICogY21kOiBNTVVF
WFRfSU5WTFBHX01VTFRJCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1
c2hlZC4KKyAqIHZjcHVtYXNrOiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVz
aGVkLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9BTEwKKyAqIE5vIGFkZGl0aW9uYWwg
YXJndW1lbnRzLiBGbHVzaGVzIGFsbCBWQ1BVcycgVExCcy4KKyAqCisgKiBjbWQ6IE1NVUVYVF9J
TlZMUEdfQUxMCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBm
cm9tIGFsbCBWQ1BVcycgVExCcy4KKyAqCisgKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQorICog
Tm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNv
bnRlbnRzLgorICoKKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAorICogTm8gYWRk
aXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRz
CisgKiBvbiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLgorICoKKyAqIGNtZDogTU1VRVhUX1NFVF9M
RFQKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3Qg
YmUgcGFnZS1hbGlnbmVkKS4KKyAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4K
KyAqCisgKiBjbWQ6IE1NVUVYVF9DTEVBUl9QQUdFCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIHRvIGJlIGNsZWFyZWQuCisgKgorICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCisgKiBtZm46
IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgorICogc3JjX21m
bjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgorICoKKyAqIGNtZDog
TU1VRVhUX1tVTl1NQVJLX1NVUEVSCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhl
YWQgb2Ygc3VwZXJwYWdlIHRvIGJlIFt1bl1tYXJrZWQuCisgKi8KKy8qIGAgZW51bSBtbXVleHRf
Y21kIHsgKi8KKyNkZWZpbmUgTU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKKyNkZWZpbmUgTU1V
RVhUX1BJTl9MMl9UQUJMRSAgICAgIDEKKyNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAg
IDIKKyNkZWZpbmUgTU1VRVhUX1BJTl9MNF9UQUJMRSAgICAgIDMKKyNkZWZpbmUgTU1VRVhUX1VO
UElOX1RBQkxFICAgICAgIDQKKyNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKKyNk
ZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9MT0NBTCAgIDYKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19M
T0NBTCAgICAgIDcKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKKyNkZWZpbmUg
TU1VRVhUX0lOVkxQR19NVUxUSSAgICAgIDkKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwg
ICAgMTAKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19BTEwgICAgICAgMTEKKyNkZWZpbmUgTU1VRVhU
X0ZMVVNIX0NBQ0hFICAgICAgMTIKKyNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMK
KyNkZWZpbmUgTU1VRVhUX05FV19VU0VSX0JBU0VQVFIgMTUKKyNkZWZpbmUgTU1VRVhUX0NMRUFS
X1BBR0UgICAgICAgMTYKKyNkZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKKyNkZWZp
bmUgTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTCAxOAorI2RlZmluZSBNTVVFWFRfTUFSS19TVVBF
UiAgICAgICAxOQorI2RlZmluZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAorLyogYCB9ICov
CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1Y3QgbW11ZXh0X29wIHsKKyAgICB1bnNpZ25l
ZCBpbnQgY21kOyAvKiA9PiBlbnVtIG1tdWV4dF9jbWQgKi8KKyAgICB1bmlvbiB7CisgICAgICAg
IC8qIFtVTl1QSU5fVEFCTEUsIE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCisgICAgICAg
ICAqIENMRUFSX1BBR0UsIENPUFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KKyAgICAgICAgeGVu
X3Bmbl90ICAgICBtZm47CisgICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VU
X0xEVCAqLworICAgICAgICBVTE9OR19QVFIgbGluZWFyX2FkZHI7CisgICAgfSBhcmcxOworICAg
IHVuaW9uIHsKKyAgICAgICAgLyogU0VUX0xEVCAqLworICAgICAgICB1bnNpZ25lZCBpbnQgbnJf
ZW50czsKKyAgICAgICAgLyogVExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KKyNpZiBf
X1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDUKKyAgICAgICAgWEVOX0dVRVNU
X0hBTkRMRShjb25zdF92b2lkKSB2Y3B1bWFzazsKKyNlbHNlCisgICAgICAgIGNvbnN0IHZvaWQg
KnZjcHVtYXNrOworI2VuZGlmCisgICAgICAgIC8qIENPUFlfUEFHRSAqLworICAgICAgICB4ZW5f
cGZuX3Qgc3JjX21mbjsKKyAgICB9IGFyZzI7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29w
IG1tdWV4dF9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOworI2Vu
ZGlmCisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRl
X3ZhX21hcHBpbmcoVUxPTkdfUFRSIHZhLCB1NjQgdmFsLAorICogYCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudW0gdXZtX2ZsYWdzIGZsYWdzKQorICogYAorICogYCBlbnVtIG5lZ19l
cnJub3ZhbAorICogYCBIWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVM
T05HX1BUUiB2YSwgdTY0IHZhbCwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnVtIHV2bV9mbGFncyBmbGFncywKKyAqIGAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlkKQorICogYAorICogYCBAdmE6IFRo
ZSB2aXJ0dWFsIGFkZHJlc3Mgd2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQorICogYCBA
dmFsOiBUaGUgbmV3IHBhZ2UgdGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRk
cmVzcworICogYCBAZmxhZ3M6IENvbnRyb2wgVExCIGZsdXNoZXMKKyAqLworLyogVGhlc2UgYXJl
IHBhc3NlZCBhcyAnZmxhZ3MnIHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVk
LiAqLworLyogV2hlbiBzcGVjaWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVy
IHRvIGEgQ1BVIGJpdG1hcC4gICAqLworLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxU
SSB3aXRoIGEgTlVMTCBiaXRtYXAgcG9pbnRlci4gICAgICAgICAqLworLyogYCBlbnVtIHV2bV9m
bGFncyB7ICovCisjZGVmaW5lIFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5v
IGZsdXNoaW5nIGF0IGFsbC4gICAqLworI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAo
MVVMPDwwKSAvKiBGbHVzaCBlbnRpcmUgVExCKHMpLiAgKi8KKyNkZWZpbmUgVVZNRl9JTlZMUEcg
ICAgICAgICAgICAgKDJVTDw8MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCisjZGVmaW5l
IFVWTUZfRkxVU0hUWVBFX01BU0sgICAgICgzVUw8PDApCisjZGVmaW5lIFVWTUZfTVVMVEkgICAg
ICAgICAgICAgICgwVUw8PDIpIC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLworI2RlZmluZSBV
Vk1GX0xPQ0FMICAgICAgICAgICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAg
Ki8KKyNkZWZpbmUgVVZNRl9BTEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxs
IFRMQnMuICAgICAgICovCisvKiBgIH0gKi8KKworLyoKKyAqIENvbW1hbmRzIHRvIEhZUEVSVklT
T1JfY29uc29sZV9pbygpLgorICovCisjZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAK
KyNkZWZpbmUgQ09OU09MRUlPX3JlYWQgICAgICAgICAgMQorCisvKgorICogQ29tbWFuZHMgdG8g
SFlQRVJWSVNPUl92bV9hc3Npc3QoKS4KKyAqLworI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAg
ICAgICAgICAgICAgICAwCisjZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAg
IDEKKworLyogeDg2LzMyIGd1ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMu
ICovCisjZGVmaW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKKworLyogeDg2
LzMyIGd1ZXN0czogdHJhcCAodmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1
c2VkLiAqLworI2RlZmluZSBWTUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCisKKy8q
CisgKiB4ODYgZ3Vlc3RzOiBzdXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KKyAq
IE5CMS4gUGFnZS1kaXJlY3RvcnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KKyAqIE5CMi4g
R3Vlc3QgbXVzdCBjb250aW51ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBU
RXMuCisgKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgorCisv
KiB4ODYvUEFFIGd1ZXN0czogc3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCisjZGVmaW5lIFZN
QVNTVF9UWVBFX3BhZV9leHRlbmRlZF9jcjMgICAgIDMKKworI2RlZmluZSBNQVhfVk1BU1NUX1RZ
UEUgICAgICAgICAgICAgICAgICAzCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVkZWYg
dWludDE2X3QgZG9taWRfdDsKKworLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZF
RCBjYW5ub3QgYmUgdXNlZCBmb3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KKyNkZWZpbmUgRE9NSURf
RklSU1RfUkVTRVJWRUQgKDB4N0ZGMFUpCisKKy8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0
YWluIGNvbnRleHRzIHRvIHJlZmVyIHRvIG9uZXNlbGYuICovCisjZGVmaW5lIERPTUlEX1NFTEYg
KDB4N0ZGMFUpCisKKy8qCisgKiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFi
bGUgdXBkYXRlcyB0byBtYXBwaW5nIEkvTyBtZW1vcnkuCisgKiBBbHRob3VnaCBubyBGb3JlaWdu
IERvbWFpbiBuZWVkIGJlIHNwZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTworICog
aXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFw
IGFyZSBhY2NpZGVudGFsbHkKKyAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291
bGQgY2F1c2UgaGF2b2MgYXMgcmVmZXJlbmNlIGNvdW50cworICogYXJlbid0IGFkanVzdGVkIG9u
IHRoZSBJL08tbWFwcGluZyBjb2RlIHBhdGgpLgorICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlu
IE1NVUVYVF9TRVRfRk9SRUlHTkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KKyAqIGJlIHNw
ZWNpZmllZCBieSBhbnkgY2FsbGluZyBkb21haW4uCisgKi8KKyNkZWZpbmUgRE9NSURfSU8gICAo
MHg3RkYxVSkKKworLyoKKyAqIERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQg
ZG9tYWlucyB0byBtYXAgcmVzdHJpY3RlZCBwYXJ0cyBvZgorICogWGVuJ3MgaGVhcCBzcGFjZSAo
ZS5nLiwgdGhlIG1hY2hpbmVfdG9fcGh5cyB0YWJsZSkuCisgKiBUaGlzIG9ubHkgbWFrZXMgc2Vu
c2UgaW4gTU1VRVhUX1NFVF9GT1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKKyAq
IHRoZSBjYWxsZXIgaXMgcHJpdmlsZWdlZC4KKyAqLworI2RlZmluZSBET01JRF9YRU4gICgweDdG
RjJVKQorCisvKgorICogRE9NSURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxl
IHBhZ2VzICovCisjZGVmaW5lIERPTUlEX0NPVyAgKDB4N0ZGM1UpCisKKy8qIERPTUlEX0lOVkFM
SUQgaXMgdXNlZCB0byBpZGVudGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCisjZGVm
aW5lIERPTUlEX0lOVkFMSUQgKDB4N0ZGNFUpCisKKy8qIElkbGUgZG9tYWluLiAqLworI2RlZmlu
ZSBET01JRF9JRExFICgweDdGRkZVKQorCisvKgorICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0
byBIWVBFUlZJU09SX21tdV91cGRhdGUoKS4KKyAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFs
IHBvaW50ZXIvYWRkcmVzcyBzaXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KKyAqLworc3RydWN0
IG1tdV91cGRhdGUgeworICAgIHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNz
IG9mIFBURS4gKi8KKyAgICB1aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQ
VEUuICAgICovCit9OwordHlwZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtbXVfdXBkYXRlX3QpOworCisvKgorICogYCBlbnVtIG5l
Z19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBj
YWxsX2xpc3RbXSwKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfY2FsbHMp
OworICoKKyAqIE5CLiBUaGUgZmllbGRzIGFyZSBsb2dpY2FsbHkgdGhlIG5hdHVyYWwgcmVnaXN0
ZXIgc2l6ZSBmb3IgdGhpcworICogYXJjaGl0ZWN0dXJlLiBJbiBjYXNlcyB3aGVyZSB4ZW5fdWxv
bmdfdCBpcyBsYXJnZXIgdGhhbiB0aGlzIHRoZW4KKyAqIGFueSB1bnVzZWQgYml0cyBpbiB0aGUg
dXBwZXIgcG9ydGlvbiBtdXN0IGJlIHplcm8uCisgKi8KK3N0cnVjdCBtdWx0aWNhbGxfZW50cnkg
eworICAgIHhlbl91bG9uZ190IG9wLCByZXN1bHQ7CisgICAgeGVuX3Vsb25nX3QgYXJnc1s2XTsK
K307Cit0eXBlZGVmIHN0cnVjdCBtdWx0aWNhbGxfZW50cnkgbXVsdGljYWxsX2VudHJ5X3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtdWx0aWNhbGxfZW50cnlfdCk7CisKKyNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDQwMAorLyoKKyAqIEV2ZW50IGNoYW5uZWwgZW5k
cG9pbnRzIHBlciBkb21haW4gKHdoZW4gdXNpbmcgdGhlIDItbGV2ZWwgQUJJKToKKyAqICAxMDI0
IGlmIGEgTE9OR19QVFIgaXMgMzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRSIGlzIDY0IGJpdHMu
CisgKi8KKyNkZWZpbmUgTlJfRVZFTlRfQ0hBTk5FTFMgRVZUQ0hOXzJMX05SX0NIQU5ORUxTCisj
ZW5kaWYKKworc3RydWN0IHZjcHVfdGltZV9pbmZvIHsKKyAgICAvKgorICAgICAqIFVwZGF0ZXMg
dG8gdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHByZWNlZGVkIGFuZCBmb2xsb3dlZCBieSBhbgor
ICAgICAqIGluY3JlbWVudCBvZiAndmVyc2lvbicuIFRoZSBndWVzdCBjYW4gdGhlcmVmb3JlIGRl
dGVjdCB1cGRhdGVzIGJ5CisgICAgICogbG9va2luZyBmb3IgY2hhbmdlcyB0byAndmVyc2lvbicu
IElmIHRoZSBsZWFzdC1zaWduaWZpY2FudCBiaXQgb2YKKyAgICAgKiB0aGUgdmVyc2lvbiBudW1i
ZXIgaXMgc2V0IHRoZW4gYW4gdXBkYXRlIGlzIGluIHByb2dyZXNzIGFuZCB0aGUgZ3Vlc3QKKyAg
ICAgKiBtdXN0IHdhaXQgdG8gcmVhZCBhIGNvbnNpc3RlbnQgc2V0IG9mIHZhbHVlcy4KKyAgICAg
KiBUaGUgY29ycmVjdCB3YXkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdmVyc2lvbiBudW1iZXIgaXMg
c2ltaWxhciB0bworICAgICAqIExpbnV4J3Mgc2VxbG9jazogc2VlIHRoZSBpbXBsZW1lbnRhdGlv
bnMgb2YgcmVhZF9zZXFiZWdpbi9yZWFkX3NlcXJldHJ5LgorICAgICAqLworICAgIHVpbnQzMl90
IHZlcnNpb247CisgICAgdWludDMyX3QgcGFkMDsKKyAgICB1aW50NjRfdCB0c2NfdGltZXN0YW1w
OyAgIC8qIFRTQyBhdCBsYXN0IHVwZGF0ZSBvZiB0aW1lIHZhbHMuICAqLworICAgIHVpbnQ2NF90
IHN5c3RlbV90aW1lOyAgICAgLyogVGltZSwgaW4gbmFub3NlY3MsIHNpbmNlIGJvb3QuICAgICov
CisgICAgLyoKKyAgICAgKiBDdXJyZW50IHN5c3RlbSB0aW1lOgorICAgICAqICAgc3lzdGVtX3Rp
bWUgKworICAgICAqICAgKCgoKHRzYyAtIHRzY190aW1lc3RhbXApIDw8IHRzY19zaGlmdCkgKiB0
c2NfdG9fc3lzdGVtX211bCkgPj4gMzIpCisgICAgICogQ1BVIGZyZXF1ZW5jeSAoSHopOgorICAg
ICAqICAgKCgxMF45IDw8IDMyKSAvIHRzY190b19zeXN0ZW1fbXVsKSA+PiB0c2Nfc2hpZnQKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCB0c2NfdG9fc3lzdGVtX211bDsKKyAgICBpbnQ4X3QgICB0c2Nf
c2hpZnQ7CisgICAgaW50OF90ICAgcGFkMVszXTsKK307IC8qIDMyIGJ5dGVzICovCit0eXBlZGVm
IHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB2Y3B1X3RpbWVfaW5mb190OworCitzdHJ1Y3QgdmNwdV9p
bmZvIHsKKyAgICAvKgorICAgICAqICdldnRjaG5fdXBjYWxsX3BlbmRpbmcnIGlzIHdyaXR0ZW4g
bm9uLXplcm8gYnkgWGVuIHRvIGluZGljYXRlCisgICAgICogYSBwZW5kaW5nIG5vdGlmaWNhdGlv
biBmb3IgYSBwYXJ0aWN1bGFyIFZDUFUuIEl0IGlzIHRoZW4gY2xlYXJlZAorICAgICAqIGJ5IHRo
ZSBndWVzdCBPUyAvYmVmb3JlLyBjaGVja2luZyBmb3IgcGVuZGluZyB3b3JrLCB0aHVzIGF2b2lk
aW5nCisgICAgICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUgbWFzayBpcyBv
bmx5IGFjY2Vzc2VkIGJ5IFhlbgorICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBjdXJyZW50bHkg
aG9zdGluZyB0aGUgVkNQVS4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHBlbmRpbmcgYW5k
IG1hc2sgZmxhZ3MgY2FuIGJlIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0IHdpdGhvdXQgc3BlY2lhbAor
ICAgICAqIHN5bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4NiBMT0NLIHBy
ZWZpeCkuCisgICAgICogVGhpcyBtYXkgc2VlbSBzdWJvcHRpbWFsIGJlY2F1c2UgaWYgdGhlIHBl
bmRpbmcgZmxhZyBpcyBzZXQgYnkKKyAgICAgKiBhIGRpZmZlcmVudCBDUFUgdGhlbiBhbiBJUEkg
bWF5IGJlIHNjaGVkdWxlZCBldmVuIHdoZW4gdGhlIG1hc2sKKyAgICAgKiBpcyBzZXQuIEhvd2V2
ZXIsIG5vdGU6CisgICAgICogIDEuIFRoZSB0YXNrIG9mICdpbnRlcnJ1cHQgaG9sZG9mZicgaXMg
Y292ZXJlZCBieSB0aGUgcGVyLWV2ZW50LQorICAgICAqICAgICBjaGFubmVsIG1hc2sgYml0cy4g
QSAnbm9pc3knIGV2ZW50IHRoYXQgaXMgY29udGludWFsbHkgYmVpbmcKKyAgICAgKiAgICAgdHJp
Z2dlcmVkIGNhbiBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVyeSBwcmVjaXNlCisgICAg
ICogICAgIGdyYW51bGFyaXR5LgorICAgICAqICAyLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBw
ZXItVkNQVSBtYXNrIGlzIHRoZXJlZm9yZSB0byByZXN0cmljdAorICAgICAqICAgICByZWVudHJh
bnQgZXhlY3V0aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5jeSBjb250cm9sLCBvciB0bworICAg
ICAqICAgICBwcmV2ZW50IHVuYm91bmRlZCBzdGFjayB1c2FnZS4gV2hhdGV2ZXIgdGhlIHB1cnBv
c2UsIHdlIGV4cGVjdAorICAgICAqICAgICB0aGF0IHRoZSBtYXNrIHdpbGwgYmUgYXNzZXJ0ZWQg
b25seSBmb3Igc2hvcnQgcGVyaW9kcyBhdCBhIHRpbWUsCisgICAgICogICAgIGFuZCBzbyB0aGUg
bGlrZWxpaG9vZCBvZiBhICdzcHVyaW91cycgSVBJIGlzIHN1aXRhYmx5IHNtYWxsLgorICAgICAq
IFRoZSBtYXNrIGlzIHJlYWQgYmVmb3JlIG1ha2luZyBhbiBldmVudCB1cGNhbGwgdG8gdGhlIGd1
ZXN0OiBhCisgICAgICogbm9uLXplcm8gbWFzayB0aGVyZWZvcmUgZ3VhcmFudGVlcyB0aGF0IHRo
ZSBWQ1BVIHdpbGwgbm90IHJlY2VpdmUKKyAgICAgKiBhbiB1cGNhbGwgYWN0aXZhdGlvbi4gVGhl
IG1hc2sgaXMgY2xlYXJlZCB3aGVuIHRoZSBWQ1BVIHJlcXVlc3RzCisgICAgICogdG8gYmxvY2s6
IHRoaXMgYXZvaWRzIHdha2V1cC13YWl0aW5nIHJhY2VzLgorICAgICAqLworICAgIHVpbnQ4X3Qg
ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nOworI2lmZGVmIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLCisg
ICAgdWludDhfdCBldnRjaG5fdXBjYWxsX21hc2s7CisjZWxzZSAvKiBYRU5fSEFWRV9QVl9VUENB
TExfTUFTSyAqLworICAgIHVpbnQ4X3QgcGFkMDsKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9VUENB
TExfTUFTSyAqLworICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKKyAgICBzdHJ1
Y3QgYXJjaF92Y3B1X2luZm8gYXJjaDsKKyAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdGltZTsK
K307IC8qIDY0IGJ5dGVzICh4ODYpICovCisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0
IHZjcHVfaW5mbyB2Y3B1X2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVudHMgMjAw
IHN0YXJ0b2ZkYXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUKKyAq
IFhlbi9rZXJuZWwgc2hhcmVkIGRhdGEgLS0gcG9pbnRlciBwcm92aWRlZCBpbiBzdGFydF9pbmZv
LgorICoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90aCBzbWFsbGVyIHRo
YW4gYSBwYWdlLCBhbmQgdGhlCisgKiBvbmx5IGRhdGEgb24gdGhlIHNoYXJlZCBwYWdlLCBidXQg
bWF5IHZhcnkgaW4gYWN0dWFsIHNpemUgZXZlbiB3aXRoaW4KKyAqIGNvbXBhdGlibGUgWGVuIHZl
cnNpb25zOyBndWVzdHMgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBzaXplCisgKiBvZiB0aGlzIHN0
cnVjdHVyZSByZW1haW5pbmcgY29uc3RhbnQuCisgKi8KK3N0cnVjdCBzaGFyZWRfaW5mbyB7Cisg
ICAgc3RydWN0IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVOX0xFR0FDWV9NQVhfVkNQVVNdOworCisg
ICAgLyoKKyAgICAgKiBBIGRvbWFpbiBjYW4gY3JlYXRlICJldmVudCBjaGFubmVscyIgb24gd2hp
Y2ggaXQgY2FuIHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgKiBhc3luY2hyb25vdXMgZXZlbnQgbm90
aWZpY2F0aW9ucy4gVGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZXZlbnQgdGhhdAorICAgICAq
IGFyZSBkZWxpdmVyZWQgYnkgdGhpcyBtZWNoYW5pc206CisgICAgICogIDEuIEJpLWRpcmVjdGlv
bmFsIGludGVyLSBhbmQgaW50cmEtZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QKKyAg
ICAgKiAgICAgYXJyYW5nZSBvdXQtb2YtYmFuZCB0byBzZXQgdXAgYSBjb25uZWN0aW9uICh1c3Vh
bGx5IGJ5IGFsbG9jYXRpbmcKKyAgICAgKiAgICAgYW4gdW5ib3VuZCAnbGlzdGVuZXInIHBvcnQg
YW5kIGF2ZXJ0aXNpbmcgdGhhdCB2aWEgYSBzdG9yYWdlIHNlcnZpY2UKKyAgICAgKiAgICAgc3Vj
aCBhcyB4ZW5zdG9yZSkuCisgICAgICogIDIuIFBoeXNpY2FsIGludGVycnVwdHMuIEEgZG9tYWlu
IHdpdGggc3VpdGFibGUgaGFyZHdhcmUtYWNjZXNzCisgICAgICogICAgIHByaXZpbGVnZXMgY2Fu
IGJpbmQgYW4gZXZlbnQtY2hhbm5lbCBwb3J0IHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0CisgICAg
ICogICAgIHNvdXJjZS4KKyAgICAgKiAgMy4gVmlydHVhbCBpbnRlcnJ1cHRzICgnZXZlbnRzJyku
IEEgZG9tYWluIGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwKKyAgICAgKiAgICAgcG9ydCB0byBh
IHZpcnR1YWwgaW50ZXJydXB0IHNvdXJjZSwgc3VjaCBhcyB0aGUgdmlydHVhbC10aW1lcgorICAg
ICAqICAgICBkZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgorICAgICAqCisgICAgICog
RXZlbnQgY2hhbm5lbHMgYXJlIGFkZHJlc3NlZCBieSBhICJwb3J0IGluZGV4Ii4gRWFjaCBjaGFu
bmVsIGlzCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHR3byBiaXRzIG9mIGluZm9ybWF0aW9uOgor
ICAgICAqICAxLiBQRU5ESU5HIC0tIG5vdGlmaWVzIHRoZSBkb21haW4gdGhhdCB0aGVyZSBpcyBh
IHBlbmRpbmcgbm90aWZpY2F0aW9uCisgICAgICogICAgIHRvIGJlIHByb2Nlc3NlZC4gVGhpcyBi
aXQgaXMgY2xlYXJlZCBieSB0aGUgZ3Vlc3QuCisgICAgICogIDIuIE1BU0sgLS0gaWYgdGhpcyBi
aXQgaXMgY2xlYXIgdGhlbiBhIDAtPjEgdHJhbnNpdGlvbiBvZiBQRU5ESU5HCisgICAgICogICAg
IHdpbGwgY2F1c2UgYW4gYXN5bmNocm9ub3VzIHVwY2FsbCB0byBiZSBzY2hlZHVsZWQuIFRoaXMg
Yml0IGlzIG9ubHkKKyAgICAgKiAgICAgdXBkYXRlZCBieSB0aGUgZ3Vlc3QuIEl0IGlzIHJlYWQt
b25seSB3aXRoaW4gWGVuLiBJZiBhIGNoYW5uZWwKKyAgICAgKiAgICAgYmVjb21lcyBwZW5kaW5n
IHdoaWxlIHRoZSBjaGFubmVsIGlzIG1hc2tlZCB0aGVuIHRoZSAnZWRnZScgaXMgbG9zdAorICAg
ICAqICAgICAoaS5lLiwgd2hlbiB0aGUgY2hhbm5lbCBpcyB1bm1hc2tlZCwgdGhlIGd1ZXN0IG11
c3QgbWFudWFsbHkgaGFuZGxlCisgICAgICogICAgIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBu
byB1cGNhbGwgd2lsbCBiZSBzY2hlZHVsZWQgYnkgWGVuKS4KKyAgICAgKgorICAgICAqIFRvIGV4
cGVkaXRlIHNjYW5uaW5nIG9mIHBlbmRpbmcgbm90aWZpY2F0aW9ucywgYW55IDAtPjEgcGVuZGlu
ZworICAgICAqIHRyYW5zaXRpb24gb24gYW4gdW5tYXNrZWQgY2hhbm5lbCBjYXVzZXMgYSBjb3Jy
ZXNwb25kaW5nIGJpdCBpbiBhCisgICAgICogcGVyLXZjcHUgc2VsZWN0b3Igd29yZCB0byBiZSBz
ZXQuIEVhY2ggYml0IGluIHRoZSBzZWxlY3RvciBjb3ZlcnMgYQorICAgICAqICdDIExPTkdfUFRS
JyBpbiB0aGUgUEVORElORyBiaXRmaWVsZCBhcnJheS4KKyAgICAgKi8KKyAgICB4ZW5fdWxvbmdf
dCBldnRjaG5fcGVuZGluZ1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07CisgICAgeGVuX3Vsb25n
X3QgZXZ0Y2huX21hc2tbc2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOworCisgICAgLyoKKyAgICAg
KiBXYWxsY2xvY2sgdGltZTogdXBkYXRlZCBvbmx5IGJ5IGNvbnRyb2wgc29mdHdhcmUuIEd1ZXN0
cyBzaG91bGQgYmFzZQorICAgICAqIHRoZWlyIGdldHRpbWVvZmRheSgpIHN5c2NhbGwgb24gdGhp
cyB3YWxsY2xvY2stYmFzZSB2YWx1ZS4KKyAgICAgKi8KKyAgICB1aW50MzJfdCB3Y192ZXJzaW9u
OyAgICAgIC8qIFZlcnNpb24gY291bnRlcjogc2VlIHZjcHVfdGltZV9pbmZvX3QuICovCisgICAg
dWludDMyX3Qgd2Nfc2VjOyAgICAgICAgICAvKiBTZWNzICAwMDowMDowMCBVVEMsIEphbiAxLCAx
OTcwLiAgKi8KKyAgICB1aW50MzJfdCB3Y19uc2VjOyAgICAgICAgIC8qIE5zZWNzIDAwOjAwOjAw
IFVUQywgSmFuIDEsIDE5NzAuICAqLworI2lmICFkZWZpbmVkKF9faTM4Nl9fKQorICAgIHVpbnQz
Ml90IHdjX3NlY19oaTsKKyMgZGVmaW5lIHhlbl93Y19zZWNfaGkgd2Nfc2VjX2hpCisjZWxpZiAh
ZGVmaW5lZChfX1hFTl9fKSAmJiAhZGVmaW5lZChfX1hFTl9UT09MU19fKQorIyBkZWZpbmUgeGVu
X3djX3NlY19oaSBhcmNoLndjX3NlY19oaQorI2VuZGlmCisKKyAgICBzdHJ1Y3QgYXJjaF9zaGFy
ZWRfaW5mbyBhcmNoOworCit9OworI2lmbmRlZiBfX1hFTl9fCit0eXBlZGVmIHN0cnVjdCBzaGFy
ZWRfaW5mbyBzaGFyZWRfaW5mb190OworI2VuZGlmCisKKy8qCisgKiBgaW5jb250ZW50cyAyMDAg
c3RhcnRvZmRheSBTdGFydC1vZi1kYXkgbWVtb3J5IGxheW91dAorICoKKyAqICAxLiBUaGUgZG9t
YWluIGlzIHN0YXJ0ZWQgd2l0aGluIGNvbnRpZ3VvdXMgdmlydHVhbC1tZW1vcnkgcmVnaW9uLgor
ICogIDIuIFRoZSBjb250aWd1b3VzIHJlZ2lvbiBlbmRzIG9uIGFuIGFsaWduZWQgNE1CIGJvdW5k
YXJ5LgorICogIDMuIFRoaXMgdGhlIG9yZGVyIG9mIGJvb3RzdHJhcCBlbGVtZW50cyBpbiB0aGUg
aW5pdGlhbCB2aXJ0dWFsIHJlZ2lvbjoKKyAqICAgICAgYS4gcmVsb2NhdGVkIGtlcm5lbCBpbWFn
ZQorICogICAgICBiLiBpbml0aWFsIHJhbSBkaXNrICAgICAgICAgICAgICBbbW9kX3N0YXJ0LCBt
b2RfbGVuXQorICogICAgICBjLiBsaXN0IG9mIGFsbG9jYXRlZCBwYWdlIGZyYW1lcyBbbWZuX2xp
c3QsIG5yX3BhZ2VzXQorICogICAgICAgICAodW5sZXNzIHJlbG9jYXRlZCBkdWUgdG8gWEVOX0VM
Rk5PVEVfSU5JVF9QMk0pCisgKiAgICAgIGQuIHN0YXJ0X2luZm9fdCBzdHJ1Y3R1cmUgICAgICAg
IFtyZWdpc3RlciBFU0kgKHg4NildCisgKiAgICAgIGUuIGJvb3RzdHJhcCBwYWdlIHRhYmxlcyAg
ICAgICAgIFtwdF9iYXNlIGFuZCBDUjMgKHg4NildCisgKiAgICAgIGYuIGJvb3RzdHJhcCBzdGFj
ayAgICAgICAgICAgICAgIFtyZWdpc3RlciBFU1AgKHg4NildCisgKiAgNC4gQm9vdHN0cmFwIGVs
ZW1lbnRzIGFyZSBwYWNrZWQgdG9nZXRoZXIsIGJ1dCBlYWNoIGlzIDRrQi1hbGlnbmVkLgorICog
IDUuIFRoZSBpbml0aWFsIHJhbSBkaXNrIG1heSBiZSBvbWl0dGVkLgorICogIDYuIFRoZSBsaXN0
IG9mIHBhZ2UgZnJhbWVzIGZvcm1zIGEgY29udGlndW91cyAncHNldWRvLXBoeXNpY2FsJyBtZW1v
cnkKKyAqICAgICBsYXlvdXQgZm9yIHRoZSBkb21haW4uIEluIHBhcnRpY3VsYXIsIHRoZSBib290
c3RyYXAgdmlydHVhbC1tZW1vcnkKKyAqICAgICByZWdpb24gaXMgYSAxOjEgbWFwcGluZyB0byB0
aGUgZmlyc3Qgc2VjdGlvbiBvZiB0aGUgcHNldWRvLXBoeXNpY2FsIG1hcC4KKyAqICA3LiBBbGwg
Ym9vdHN0cmFwIGVsZW1lbnRzIGFyZSBtYXBwZWQgcmVhZC13cml0YWJsZSBmb3IgdGhlIGd1ZXN0
IE9TLiBUaGUKKyAqICAgICBvbmx5IGV4Y2VwdGlvbiBpcyB0aGUgYm9vdHN0cmFwIHBhZ2UgdGFi
bGUsIHdoaWNoIGlzIG1hcHBlZCByZWFkLW9ubHkuCisgKiAgOC4gVGhlcmUgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhdCBsZWFzdCA1MTJrQiBwYWRkaW5nIGFmdGVyIHRoZSBmaW5hbAorICogICAgIGJv
b3RzdHJhcCBlbGVtZW50LiBJZiBuZWNlc3NhcnksIHRoZSBib290c3RyYXAgdmlydHVhbCByZWdp
b24gaXMKKyAqICAgICBleHRlbmRlZCBieSBhbiBleHRyYSA0TUIgdG8gZW5zdXJlIHRoaXMuCisg
KgorICogTm90ZTogUHJpb3IgdG8gMjU4MzM6YmI4NWJiY2NiMWM5LiAoIng4Ni8zMi1vbi02NCBh
ZGp1c3QgRG9tMCBpbml0aWFsIHBhZ2UKKyAqIHRhYmxlIGxheW91dCIpIGEgYnVnIGNhdXNlZCB0
aGUgcHRfYmFzZSAoMy5lIGFib3ZlKSBhbmQgY3IzIHRvIG5vdCBwb2ludAorICogdG8gdGhlIHN0
YXJ0IG9mIHRoZSBndWVzdCBwYWdlIHRhYmxlcyAoaXQgd2FzIG9mZnNldCBieSB0d28gcGFnZXMp
LgorICogVGhpcyBvbmx5IG1hbmlmZXN0ZWQgaXRzZWxmIG9uIDMyLW9uLTY0IGRvbTAga2VybmVs
cyBhbmQgbm90IDMyLW9uLTY0IGRvbVUKKyAqIG9yIDY0LWJpdCBrZXJuZWxzIG9mIGFueSBjb2xv
dXIuIFRoZSBwYWdlIHRhYmxlcyBmb3IgYSAzMi1vbi02NCBkb20wIGdvdAorICogYWxsb2NhdGVk
IGluIHRoZSBvcmRlcjogJ2ZpcnN0IEwxJywnZmlyc3QgTDInLCAnZmlyc3QgTDMnLCBzbyB0aGUg
b2Zmc2V0CisgKiB0byB0aGUgcGFnZSB0YWJsZSBiYXNlIGlzIGJ5IHR3byBwYWdlcyBiYWNrLiBU
aGUgaW5pdGlhbCBkb21haW4gaWYgaXQgaXMKKyAqIDMyLWJpdCBhbmQgcnVucyB1bmRlciBhIDY0
LWJpdCBoeXBlcnZpc29yIHNob3VsZCBfTk9UXyB1c2UgdHdvIG9mIHRoZQorICogcGFnZXMgcHJl
Y2VkaW5nIHB0X2Jhc2UgYW5kIG1hcmsgdGhlbSBhcyByZXNlcnZlZC91bnVzZWQuCisgKi8KKyNp
ZmRlZiBYRU5fSEFWRV9QVl9HVUVTVF9FTlRSWQorc3RydWN0IHN0YXJ0X2luZm8geworICAgIC8q
IFRIRSBGT0xMT1dJTkcgQVJFIEZJTExFRCBJTiBCT1RIIE9OIElOSVRJQUwgQk9PVCBBTkQgT04g
UkVTVU1FLiAgICAqLworICAgIGNoYXIgbWFnaWNbMzJdOyAgICAgICAgICAgICAvKiAieGVuLTx2
ZXJzaW9uPi08cGxhdGZvcm0+Ii4gICAgICAgICAgICAqLworICAgIFVMT05HX1BUUiBucl9wYWdl
czsgICAgIC8qIFRvdGFsIHBhZ2VzIGFsbG9jYXRlZCB0byB0aGlzIGRvbWFpbi4gICovCisgICAg
VUxPTkdfUFRSIHNoYXJlZF9pbmZvOyAgLyogTUFDSElORSBhZGRyZXNzIG9mIHNoYXJlZCBpbmZv
IHN0cnVjdC4gKi8KKyAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAgICAgLyogU0lGX3h4eCBm
bGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB4ZW5fcGZuX3Qgc3RvcmVfbWZu
OyAgICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBzaGFyZWQgcGFnZS4gICAgKi8KKyAg
ICB1aW50MzJfdCBzdG9yZV9ldnRjaG47ICAgICAgLyogRXZlbnQgY2hhbm5lbCBmb3Igc3RvcmUg
Y29tbXVuaWNhdGlvbi4gKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICB4ZW5fcGZuX3QgbWZuOyAgICAgIC8qIE1BQ0hJTkUgcGFnZSBudW1iZXIgb2YgY29uc29s
ZSBwYWdlLiAgICovCisgICAgICAgICAgICB1aW50MzJfdCAgZXZ0Y2huOyAgIC8qIEV2ZW50IGNo
YW5uZWwgZm9yIGNvbnNvbGUgcGFnZS4gICAgICAgICovCisgICAgICAgIH0gZG9tVTsKKyAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGluZm9fb2ZmOyAgLyogT2Zmc2V0IG9m
IGNvbnNvbGVfaW5mbyBzdHJ1Y3QuICAgICAgICAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90IGlu
Zm9fc2l6ZTsgLyogU2l6ZSBvZiBjb25zb2xlX2luZm8gc3RydWN0IGZyb20gc3RhcnQuKi8KKyAg
ICAgICAgfSBkb20wOworICAgIH0gY29uc29sZTsKKyAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBP
TkxZIEZJTExFRCBJTiBPTiBJTklUSUFMIEJPT1QgKE5PVCBSRVNVTUUpLiAgICAgKi8KKyAgICBV
TE9OR19QVFIgcHRfYmFzZTsgICAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZSBkaXJlY3Rv
cnkuICAgICAqLworICAgIFVMT05HX1BUUiBucl9wdF9mcmFtZXM7IC8qIE51bWJlciBvZiBib290
c3RyYXAgcC50LiBmcmFtZXMuICAgICAgICovCisgICAgVUxPTkdfUFRSIG1mbl9saXN0OyAgICAg
LyogVklSVFVBTCBhZGRyZXNzIG9mIHBhZ2UtZnJhbWUgbGlzdC4gICAgKi8KKyAgICBVTE9OR19Q
VFIgbW9kX3N0YXJ0OyAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcHJlLWxvYWRlZCBtb2R1bGUg
ICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoUEZOIG9mIHByZS1sb2Fk
ZWQgbW9kdWxlIGlmICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiAgU0lGX01PRF9TVEFSVF9QRk4gc2V0IGluIGZsYWdzKS4gICAgICAqLworICAgIFVMT05H
X1BUUiBtb2RfbGVuOyAgICAgIC8qIFNpemUgKGJ5dGVzKSBvZiBwcmUtbG9hZGVkIG1vZHVsZS4g
ICAgICovCisjZGVmaW5lIE1BWF9HVUVTVF9DTURMSU5FIDEwMjQKKyAgICBpbnQ4X3QgY21kX2xp
bmVbTUFYX0dVRVNUX0NNRExJTkVdOworICAgIC8qIFRoZSBwZm4gcmFuZ2UgaGVyZSBjb3ZlcnMg
Ym90aCBwYWdlIHRhYmxlIGFuZCBwLT5tIHRhYmxlIGZyYW1lcy4gICAqLworICAgIFVMT05HX1BU
UiBmaXJzdF9wMm1fcGZuOy8qIDFzdCBwZm4gZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAg
ICovCisgICAgVUxPTkdfUFRSIG5yX3AybV9mcmFtZXM7LyogIyBvZiBwZm5zIGZvcm1pbmcgaW5p
dGlhbCBQLT5NIHRhYmxlLiAgKi8KK307Cit0eXBlZGVmIHN0cnVjdCBzdGFydF9pbmZvIHN0YXJ0
X2luZm9fdDsKKworLyogTmV3IGNvbnNvbGUgdW5pb24gZm9yIGRvbTAgaW50cm9kdWNlZCBpbiAw
eDAwMDMwMjAzLiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAz
CisjZGVmaW5lIGNvbnNvbGVfbWZuICAgIGNvbnNvbGUuZG9tVS5tZm4KKyNkZWZpbmUgY29uc29s
ZV9ldnRjaG4gY29uc29sZS5kb21VLmV2dGNobgorI2VuZGlmCisjZW5kaWYgLyogWEVOX0hBVkVf
UFZfR1VFU1RfRU5UUlkgKi8KKworLyogVGhlc2UgZmxhZ3MgYXJlIHBhc3NlZCBpbiB0aGUgJ2Zs
YWdzJyBmaWVsZCBvZiBzdGFydF9pbmZvX3QuICovCisjZGVmaW5lIFNJRl9QUklWSUxFR0VEICAg
ICgxPDwwKSAgLyogSXMgdGhlIGRvbWFpbiBwcml2aWxlZ2VkPyAqLworI2RlZmluZSBTSUZfSU5J
VERPTUFJTiAgICAoMTw8MSkgIC8qIElzIHRoaXMgdGhlIGluaXRpYWwgY29udHJvbCBkb21haW4/
ICovCisjZGVmaW5lIFNJRl9NVUxUSUJPT1RfTU9EICgxPDwyKSAgLyogSXMgbW9kX3N0YXJ0IGEg
bXVsdGlib290IG1vZHVsZT8gKi8KKyNkZWZpbmUgU0lGX01PRF9TVEFSVF9QRk4gKDE8PDMpICAv
KiBJcyBtb2Rfc3RhcnQgYSBQRk4/ICovCisjZGVmaW5lIFNJRl9QTV9NQVNLICAgICAgICgweEZG
PDw4KSAvKiByZXNlcnZlIDEgYnl0ZSBmb3IgeGVuLXBtIG9wdGlvbnMgKi8KKworLyoKKyAqIEEg
bXVsdGlib290IG1vZHVsZSBpcyBhIHBhY2thZ2UgY29udGFpbmluZyBtb2R1bGVzIHZlcnkgc2lt
aWxhciB0byBhCisgKiBtdWx0aWJvb3QgbW9kdWxlIGFycmF5LiBUaGUgb25seSBkaWZmZXJlbmNl
cyBhcmU6CisgKiAtIHRoZSBhcnJheSBvZiBtb2R1bGUgZGVzY3JpcHRvcnMgaXMgYnkgY29udmVu
dGlvbiBzaW1wbHkgYXQgdGhlIGJlZ2lubmluZworICogICBvZiB0aGUgbXVsdGlib290IG1vZHVs
ZSwKKyAqIC0gYWRkcmVzc2VzIGluIHRoZSBtb2R1bGUgZGVzY3JpcHRvcnMgYXJlIGJhc2VkIG9u
IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgKiAgIG11bHRpYm9vdCBtb2R1bGUsCisgKiAtIHRoZSBu
dW1iZXIgb2YgbW9kdWxlcyBpcyBkZXRlcm1pbmVkIGJ5IGEgdGVybWluYXRpb24gZGVzY3JpcHRv
ciB0aGF0IGhhcworICogICBtb2Rfc3RhcnQgPT0gMC4KKyAqCisgKiBUaGlzIHBlcm1pdHMgdG8g
Ym90aCBidWlsZCBpdCBzdGF0aWNhbGx5IGFuZCByZWZlcmVuY2UgaXQgaW4gYSBjb25maWd1cmF0
aW9uCisgKiBmaWxlLCBhbmQgbGV0IHRoZSBQViBndWVzdCBlYXNpbHkgcmViYXNlIHRoZSBhZGRy
ZXNzZXMgdG8gdmlydHVhbCBhZGRyZXNzZXMKKyAqIGFuZCBhdCB0aGUgc2FtZSB0aW1lIGNvdW50
IHRoZSBudW1iZXIgb2YgbW9kdWxlcy4KKyAqLworc3RydWN0IHhlbl9tdWx0aWJvb3RfbW9kX2xp
c3QKK3sKKyAgICAvKiBBZGRyZXNzIG9mIGZpcnN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAqLworICAg
IHVpbnQzMl90IG1vZF9zdGFydDsKKyAgICAvKiBBZGRyZXNzIG9mIGxhc3QgYnl0ZSBvZiB0aGUg
bW9kdWxlIChpbmNsdXNpdmUpICovCisgICAgdWludDMyX3QgbW9kX2VuZDsKKyAgICAvKiBBZGRy
ZXNzIG9mIHplcm8tdGVybWluYXRlZCBjb21tYW5kIGxpbmUgKi8KKyAgICB1aW50MzJfdCBjbWRs
aW5lOworICAgIC8qIFVudXNlZCwgbXVzdCBiZSB6ZXJvICovCisgICAgdWludDMyX3QgcGFkOwor
fTsKKy8qCisgKiBgaW5jb250ZW50cyAyMDAgc3RhcnRvZmRheV9kb20wX2NvbnNvbGUgRG9tMF9j
b25zb2xlCisgKgorICogVGhlIGNvbnNvbGUgc3RydWN0dXJlIGluIHN0YXJ0X2luZm8uY29uc29s
ZS5kb20wCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgaW5jbHVkZXMgYSB2YXJpZXR5IG9mIGluZm9y
bWF0aW9uIHJlcXVpcmVkIHRvCisgKiBoYXZlIGEgd29ya2luZyBWR0EvVkVTQSBjb25zb2xlLgor
ICovCit0eXBlZGVmIHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8geworICAgIHVpbnQ4X3Qg
dmlkZW9fdHlwZTsgLyogRE9NMF9WR0FfQ09OU09MRV8/Pz8gKi8KKyNkZWZpbmUgWEVOX1ZHQVRZ
UEVfVEVYVF9NT0RFXzMgMHgwMworI2RlZmluZSBYRU5fVkdBVFlQRV9WRVNBX0xGQiAgICAweDIz
CisjZGVmaW5lIFhFTl9WR0FUWVBFX0VGSV9MRkIgICAgIDB4NzAKKworICAgIHVuaW9uIHsKKyAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIEZvbnQgaGVpZ2h0LCBpbiBwaXhlbHMuICov
CisgICAgICAgICAgICB1aW50MTZfdCBmb250X2hlaWdodDsKKyAgICAgICAgICAgIC8qIEN1cnNv
ciBsb2NhdGlvbiAoY29sdW1uLCByb3cpLiAqLworICAgICAgICAgICAgdWludDE2X3QgY3Vyc29y
X3gsIGN1cnNvcl95OworICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMg
KGRpbWVuc2lvbnMgaW4gY2hhcmFjdGVycykuICovCisgICAgICAgICAgICB1aW50MTZfdCByb3dz
LCBjb2x1bW5zOworICAgICAgICB9IHRleHRfbW9kZV8zOworCisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAvKiBXaWR0aCBhbmQgaGVpZ2h0LCBpbiBwaXhlbHMuICovCisgICAgICAgICAg
ICB1aW50MTZfdCB3aWR0aCwgaGVpZ2h0OworICAgICAgICAgICAgLyogQnl0ZXMgcGVyIHNjYW4g
bGluZS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IGJ5dGVzX3Blcl9saW5lOworICAgICAgICAg
ICAgLyogQml0cyBwZXIgcGl4ZWwuICovCisgICAgICAgICAgICB1aW50MTZfdCBiaXRzX3Blcl9w
aXhlbDsKKyAgICAgICAgICAgIC8qIExGQiBwaHlzaWNhbCBhZGRyZXNzLCBhbmQgc2l6ZSAoaW4g
dW5pdHMgb2YgNjRrQikuICovCisgICAgICAgICAgICB1aW50MzJfdCBsZmJfYmFzZTsKKyAgICAg
ICAgICAgIHVpbnQzMl90IGxmYl9zaXplOworICAgICAgICAgICAgLyogUkdCIG1hc2sgb2Zmc2V0
cyBhbmQgc2l6ZXMsIGFzIGRlZmluZWQgYnkgVkJFIDEuMisgKi8KKyAgICAgICAgICAgIHVpbnQ4
X3QgIHJlZF9wb3MsIHJlZF9zaXplOworICAgICAgICAgICAgdWludDhfdCAgZ3JlZW5fcG9zLCBn
cmVlbl9zaXplOworICAgICAgICAgICAgdWludDhfdCAgYmx1ZV9wb3MsIGJsdWVfc2l6ZTsKKyAg
ICAgICAgICAgIHVpbnQ4X3QgIHJzdmRfcG9zLCByc3ZkX3NpemU7CisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjA2CisgICAgICAgICAgICAvKiBWRVNBIGNhcGFiaWxp
dGllcyAob2Zmc2V0IDB4YSwgVkVTQSBjb21tYW5kIDB4NGYwMCkuICovCisgICAgICAgICAgICB1
aW50MzJfdCBnYmxfY2FwczsKKyAgICAgICAgICAgIC8qIE1vZGUgYXR0cmlidXRlcyAob2Zmc2V0
IDB4MCwgVkVTQSBjb21tYW5kIDB4NGYwMSkuICovCisgICAgICAgICAgICB1aW50MTZfdCBtb2Rl
X2F0dHJzOworI2VuZGlmCisgICAgICAgIH0gdmVzYV9sZmI7CisgICAgfSB1OworfSBkb20wX3Zn
YV9jb25zb2xlX2luZm9fdDsKKyNkZWZpbmUgeGVuX3ZnYV9jb25zb2xlX2luZm8gZG9tMF92Z2Ff
Y29uc29sZV9pbmZvCisjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvX3QgZG9tMF92Z2FfY29u
c29sZV9pbmZvX3QKKwordHlwZWRlZiB1aW50OF90IHhlbl9kb21haW5faGFuZGxlX3RbMTZdOwor
CisvKiBUdXJuIGEgcGxhaW4gbnVtYmVyIGludG8gYSBDIFVMT05HX1BUUiBjb25zdGFudC4gKi8K
KyNkZWZpbmUgX19ta191bnNpZ25lZF9sb25nKHgpIHggIyMgVUwKKyNkZWZpbmUgbWtfdW5zaWdu
ZWRfbG9uZyh4KSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkKKworX19ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh1aW50OCwgIHVpbnQ4X3QpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50MTYs
IHVpbnQxNl90KTsKK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDMyLCB1aW50MzJfdCk7
CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ2NCwgdWludDY0X3QpOworCisjZWxzZSAv
KiBfX0FTU0VNQkxZX18gKi8KKworLyogSW4gYXNzZW1ibHkgY29kZSB3ZSBjYW5ub3QgdXNlIEMg
bnVtZXJpYyBjb25zdGFudCBzdWZmaXhlcy4gKi8KKyNkZWZpbmUgbWtfdW5zaWduZWRfbG9uZyh4
KSB4CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisKKy8qIERlZmF1bHQgZGVmaW5pdGlv
bnMgZm9yIG1hY3JvcyB1c2VkIGJ5IGRvbWN0bC9zeXNjdGwuICovCisjaWYgZGVmaW5lZChfX1hF
Tl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNpZm5kZWYgaW50NjRfYWxpZ25lZF90
CisjZGVmaW5lIGludDY0X2FsaWduZWRfdCBpbnQ2NF90CisjZW5kaWYKKyNpZm5kZWYgdWludDY0
X2FsaWduZWRfdAorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90CisjZW5kaWYKKyNp
Zm5kZWYgWEVOX0dVRVNUX0hBTkRMRV82NAorI2RlZmluZSBYRU5fR1VFU1RfSEFORExFXzY0KG5h
bWUpIFhFTl9HVUVTVF9IQU5ETEUobmFtZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlf
Xworc3RydWN0IHhlbmN0bF9iaXRtYXAgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgp
IGJpdG1hcDsKKyAgICB1aW50MzJfdCBucl9iaXRzOworfTsKKyNlbmRpZgorCisjZW5kaWYgLyog
ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfWEVOX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog
bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq
IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm
ZiAtLWdpdCBhL2luY2x1ZGUveGVuL3NjaGVkLmggYi9pbmNsdWRlL3hlbi9zY2hlZC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWIxNDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUv
eGVuL3NjaGVkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgotICogc2NoZWQuaAotICoKLSAqIFNjaGVkdWxlciBzdGF0ZSBpbnRlcmFjdGlv
bnMKLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2Vp
ckB4ZW5zb3VyY2UuY29tPgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX1NDSEVEX0hfXwot
I2RlZmluZSBfX1hFTl9QVUJMSUNfU0NIRURfSF9fCi0KLSNpbmNsdWRlICJldmVudF9jaGFubmVs
LmgiCi0KLS8qCi0gKiBgaW5jb250ZW50cyAxNTAgc2NoZWQgR3Vlc3QgU2NoZWR1bGVyIE9wZXJh
dGlvbnMKLSAqCi0gKiBUaGUgU0NIRURPUCBpbnRlcmZhY2UgcHJvdmlkZXMgbWVjaGFuaXNtcyBm
b3IgYSBndWVzdCB0byBpbnRlcmFjdAotICogd2l0aCB0aGUgc2NoZWR1bGVyLCBpbmNsdWRpbmcg
eWllbGQsIGJsb2NraW5nIGFuZCBzaHV0dGluZyBpdHNlbGYKLSAqIGRvd24uCi0gKi8KLQotLyoK
LSAqIFRoZSBwcm90b3R5cGUgZm9yIHRoaXMgaHlwZXJjYWxsIGlzOgotICogYCBMT05HX1BUUiBI
WVBFUlZJU09SX3NjaGVkX29wKGVudW0gc2NoZWRfb3AgY21kLCB2b2lkICphcmcsIC4uLikKLSAq
Ci0gKiBAY21kID09IFNDSEVET1BfPz8/IChzY2hlZHVsZXIgb3BlcmF0aW9uKS4KLSAqIEBhcmcg
PT0gT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3VtZW50KHMpLCBhcyBkZXNjcmliZWQgYmVs
b3cuCi0gKiAuLi4gID09IEFkZGl0aW9uYWwgT3BlcmF0aW9uLXNwZWNpZmljIGV4dHJhIGFyZ3Vt
ZW50cywgZGVzY3JpYmVkIGJlbG93LgotICoKLSAqIFZlcnNpb25zIG9mIFhlbiBwcmlvciB0byAz
LjAuMiBwcm92aWRlZCBvbmx5IHRoZSBmb2xsb3dpbmcgbGVnYWN5IHZlcnNpb24KLSAqIG9mIHRo
aXMgaHlwZXJjYWxsLCBzdXBwb3J0aW5nIG9ubHkgdGhlIGNvbW1hbmRzIHlpZWxkLCBibG9jayBh
bmQgc2h1dGRvd246Ci0gKiAgTE9OR19QVFIgc2NoZWRfb3AoaW50IGNtZCwgVUxPTkdfUFRSIGFy
ZykKLSAqIEBjbWQgPT0gU0NIRURPUF8/Pz8gKHNjaGVkdWxlciBvcGVyYXRpb24pLgotICogQGFy
ZyA9PSAwICAgICAgICAgICAgICAgKFNDSEVET1BfeWllbGQgYW5kIFNDSEVET1BfYmxvY2spCi0g
KiAgICAgID09IFNIVVRET1dOXyogY29kZSAoU0NIRURPUF9zaHV0ZG93bikKLSAqCi0gKiBUaGlz
IGxlZ2FjeSB2ZXJzaW9uIGlzIGF2YWlsYWJsZSB0byBuZXcgZ3Vlc3RzIGFzOgotICogYCBMT05H
X1BUUiBIWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdChlbnVtIHNjaGVkX29wIGNtZCwgVUxPTkdf
UFRSIGFyZykKLSAqLwotCi0vKiBgIGVudW0gc2NoZWRfb3AgeyAvLyBTQ0hFRE9QXyogPT4gc3Ry
dWN0IHNjaGVkXyogKi8KLS8qCi0gKiBWb2x1bnRhcmlseSB5aWVsZCB0aGUgQ1BVLgotICogQGFy
ZyA9PSBOVUxMLgotICovCi0jZGVmaW5lIFNDSEVET1BfeWllbGQgICAgICAgMAotCi0vKgotICog
QmxvY2sgZXhlY3V0aW9uIG9mIHRoaXMgVkNQVSB1bnRpbCBhbiBldmVudCBpcyByZWNlaXZlZCBm
b3IgcHJvY2Vzc2luZy4KLSAqIElmIGNhbGxlZCB3aXRoIGV2ZW50IHVwY2FsbHMgbWFza2VkLCB0
aGlzIG9wZXJhdGlvbiB3aWxsIGF0b21pY2FsbHkKLSAqIHJlZW5hYmxlIGV2ZW50IGRlbGl2ZXJ5
IGFuZCBjaGVjayBmb3IgcGVuZGluZyBldmVudHMgYmVmb3JlIGJsb2NraW5nIHRoZQotICogVkNQ
VS4gVGhpcyBhdm9pZHMgYSAid2FrZXVwIHdhaXRpbmciIHJhY2UuCi0gKiBAYXJnID09IE5VTEwu
Ci0gKi8KLSNkZWZpbmUgU0NIRURPUF9ibG9jayAgICAgICAxCi0KLS8qCi0gKiBIYWx0IGV4ZWN1
dGlvbiBvZiB0aGlzIGRvbWFpbiAoYWxsIFZDUFVzKSBhbmQgbm90aWZ5IHRoZSBzeXN0ZW0gY29u
dHJvbGxlci4KLSAqIEBhcmcgPT0gcG9pbnRlciB0byBzY2hlZF9zaHV0ZG93bl90IHN0cnVjdHVy
ZS4KLSAqCi0gKiBJZiB0aGUgc2NoZWRfc2h1dGRvd25fdCByZWFzb24gaXMgU0hVVERPV05fc3Vz
cGVuZCB0aGVuCi0gKiB4ODYgUFYgZ3Vlc3RzIG11c3QgYWxzbyBzZXQgUkRYIChFRFggZm9yIDMy
LWJpdCBndWVzdHMpIHRvIHRoZSBNRk4KLSAqIG9mIHRoZSBndWVzdCdzIHN0YXJ0IGluZm8gcGFn
ZS4gIFJEWC9FRFggaXMgdGhlIHRoaXJkIGh5cGVyY2FsbAotICogYXJndW1lbnQuCi0gKgotICog
SW4gYWRkaXRpb24sIHdoaWNoIHJlYXNvbiBpcyBTSFVURE9XTl9zdXNwZW5kIHRoaXMgaHlwZXJj
YWxsCi0gKiByZXR1cm5zIDEgaWYgc3VzcGVuZCB3YXMgY2FuY2VsbGVkIG9yIHRoZSBkb21haW4g
d2FzIG1lcmVseQotICogY2hlY2twb2ludGVkLCBhbmQgMCBpZiBpdCBpcyByZXN1bWluZyBpbiBh
IG5ldyBkb21haW4uCi0gKi8KLSNkZWZpbmUgU0NIRURPUF9zaHV0ZG93biAgICAyCi0KLS8qCi0g
KiBQb2xsIGEgc2V0IG9mIGV2ZW50LWNoYW5uZWwgcG9ydHMuIFJldHVybiB3aGVuIG9uZSBvciBt
b3JlIGFyZSBwZW5kaW5nLiBBbgotICogb3B0aW9uYWwgdGltZW91dCBtYXkgYmUgc3BlY2lmaWVk
LgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3BvbGxfdCBzdHJ1Y3R1cmUuCi0gKi8KLSNk
ZWZpbmUgU0NIRURPUF9wb2xsICAgICAgICAzCi0KLS8qCi0gKiBEZWNsYXJlIGEgc2h1dGRvd24g
Zm9yIGFub3RoZXIgZG9tYWluLiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBpcwotICog
aW4gaW50ZXJwcmV0aW5nIHNodXRkb3duIHJlcXVlc3RzIGFuZCByZWFzb25zIGZvciBmdWxseS12
aXJ0dWFsaXplZAotICogZG9tYWlucy4gIEEgcGFyYS12aXJ0dWFsaXplZCBkb21haW4gbWF5IHVz
ZSBTQ0hFRE9QX3NodXRkb3duIGRpcmVjdGx5LgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVk
X3JlbW90ZV9zaHV0ZG93bl90IHN0cnVjdHVyZS4KLSAqLwotI2RlZmluZSBTQ0hFRE9QX3JlbW90
ZV9zaHV0ZG93biAgICAgICAgNAotCi0vKgotICogTGF0Y2ggYSBzaHV0ZG93biBjb2RlLCBzbyB0
aGF0IHdoZW4gdGhlIGRvbWFpbiBsYXRlciBzaHV0cyBkb3duIGl0Ci0gKiByZXBvcnRzIHRoaXMg
Y29kZSB0byB0aGUgY29udHJvbCB0b29scy4KLSAqIEBhcmcgPT0gc2NoZWRfc2h1dGRvd25fdCwg
YXMgZm9yIFNDSEVET1Bfc2h1dGRvd24uCi0gKi8KLSNkZWZpbmUgU0NIRURPUF9zaHV0ZG93bl9j
b2RlIDUKLQotLyoKLSAqIFNldHVwLCBwb2tlIGFuZCBkZXN0cm95IGEgZG9tYWluIHdhdGNoZG9n
IHRpbWVyLgotICogQGFyZyA9PSBwb2ludGVyIHRvIHNjaGVkX3dhdGNoZG9nX3Qgc3RydWN0dXJl
LgotICogV2l0aCBpZCA9PSAwLCBzZXR1cCBhIGRvbWFpbiB3YXRjaGRvZyB0aW1lciB0byBjYXVz
ZSBkb21haW4gc2h1dGRvd24KLSAqICAgICAgICAgICAgICAgYWZ0ZXIgdGltZW91dCwgcmV0dXJu
cyB3YXRjaGRvZyBpZC4KLSAqIFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCA9PSAwLCBkZXN0cm95
IGRvbWFpbiB3YXRjaGRvZyB0aW1lci4KLSAqIFdpdGggaWQgIT0gMCBhbmQgdGltZW91dCAhPSAw
LCBwb2tlIHdhdGNoZG9nIHRpbWVyIGFuZCBzZXQgbmV3IHRpbWVvdXQuCi0gKi8KLSNkZWZpbmUg
U0NIRURPUF93YXRjaGRvZyAgICA2Ci0vKiBgIH0gKi8KLQotc3RydWN0IHNjaGVkX3NodXRkb3du
IHsKLSAgICB1bnNpZ25lZCBpbnQgcmVhc29uOyAvKiBTSFVURE9XTl8qID0+IGVudW0gc2NoZWRf
c2h1dGRvd25fcmVhc29uICovCi19OwotdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfc2h1dGRvd24gc2No
ZWRfc2h1dGRvd25fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3NodXRkb3duX3Qp
OwotCi1zdHJ1Y3Qgc2NoZWRfcG9sbCB7Ci0gICAgWEVOX0dVRVNUX0hBTkRMRShldnRjaG5fcG9y
dF90KSBwb3J0czsKLSAgICB1bnNpZ25lZCBpbnQgbnJfcG9ydHM7Ci0gICAgdWludDY0X3QgdGlt
ZW91dDsKLX07Ci10eXBlZGVmIHN0cnVjdCBzY2hlZF9wb2xsIHNjaGVkX3BvbGxfdDsKLURFRklO
RV9YRU5fR1VFU1RfSEFORExFKHNjaGVkX3BvbGxfdCk7Ci0KLXN0cnVjdCBzY2hlZF9yZW1vdGVf
c2h1dGRvd24gewotICAgIGRvbWlkX3QgZG9tYWluX2lkOyAgICAgICAgIC8qIFJlbW90ZSBkb21h
aW4gSUQgKi8KLSAgICB1bnNpZ25lZCBpbnQgcmVhc29uOyAgICAgICAvKiBTSFVURE9XTl8qID0+
IGVudW0gc2NoZWRfc2h1dGRvd25fcmVhc29uICovCi19OwotdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRf
cmVtb3RlX3NodXRkb3duIHNjaGVkX3JlbW90ZV9zaHV0ZG93bl90OwotREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoc2NoZWRfcmVtb3RlX3NodXRkb3duX3QpOwotCi1zdHJ1Y3Qgc2NoZWRfd2F0Y2hk
b2cgewotICAgIHVpbnQzMl90IGlkOyAgICAgICAgICAgICAgICAvKiB3YXRjaGRvZyBJRCAqLwot
ICAgIHVpbnQzMl90IHRpbWVvdXQ7ICAgICAgICAgICAvKiB0aW1lb3V0ICovCi19OwotdHlwZWRl
ZiBzdHJ1Y3Qgc2NoZWRfd2F0Y2hkb2cgc2NoZWRfd2F0Y2hkb2dfdDsKLURFRklORV9YRU5fR1VF
U1RfSEFORExFKHNjaGVkX3dhdGNoZG9nX3QpOwotCi0vKgotICogUmVhc29uIGNvZGVzIGZvciBT
Q0hFRE9QX3NodXRkb3duLiBUaGVzZSBtYXkgYmUgaW50ZXJwcmV0ZWQgYnkgY29udHJvbAotICog
c29mdHdhcmUgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uIEZvciB0aGUgbW9z
dCBwYXJ0LCBYZW4gZG9lcwotICogbm90IGNhcmUgYWJvdXQgdGhlIHNodXRkb3duIGNvZGUuCi0g
Ki8KLS8qIGAgZW51bSBzY2hlZF9zaHV0ZG93bl9yZWFzb24geyAqLwotI2RlZmluZSBTSFVURE9X
Tl9wb3dlcm9mZiAgIDAgIC8qIERvbWFpbiBleGl0ZWQgbm9ybWFsbHkuIENsZWFuIHVwIGFuZCBr
aWxsLiAqLwotI2RlZmluZSBTSFVURE9XTl9yZWJvb3QgICAgIDEgIC8qIENsZWFuIHVwLCBraWxs
LCBhbmQgdGhlbiByZXN0YXJ0LiAgICAgICAgICAqLwotI2RlZmluZSBTSFVURE9XTl9zdXNwZW5k
ICAgIDIgIC8qIENsZWFuIHVwLCBzYXZlIHN1c3BlbmQgaW5mbywga2lsbC4gICAgICAgICAqLwot
I2RlZmluZSBTSFVURE9XTl9jcmFzaCAgICAgIDMgIC8qIFRlbGwgY29udHJvbGxlciB3ZSd2ZSBj
cmFzaGVkLiAgICAgICAgICAgICAqLwotI2RlZmluZSBTSFVURE9XTl93YXRjaGRvZyAgIDQgIC8q
IFJlc3RhcnQgYmVjYXVzZSB3YXRjaGRvZyB0aW1lIGV4cGlyZWQuICAgICAqLwotI2RlZmluZSBT
SFVURE9XTl9NQVggICAgICAgIDQgIC8qIE1heGltdW0gdmFsaWQgc2h1dGRvd24gcmVhc29uLiAg
ICAgICAgICAgICAqLwotLyogYCB9ICovCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfU0NIRURf
SF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUt
c3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBp
bmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW4vdHJhY2UuaCBiL2luY2x1ZGUveGVuL3RyYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhkZTYzMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS94ZW4vdHJhY2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDMzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBpbmNs
dWRlL3B1YmxpYy90cmFjZS5oCi0gKiAKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0cyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgot
ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotICoKLSAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK
LSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBNYXJrIFdpbGxpYW1zb24sIChD
KSAyMDA0IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQotICogQ29weXJpZ2h0IChDKSAyMDA1IEJp
biBSZW4KLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KLSNkZWZpbmUgX19Y
RU5fUFVCTElDX1RSQUNFX0hfXwotCi0jZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAgICA3Ci0jZGVm
aW5lIFRSQUNFX0VYVFJBX1NISUZUIDI4Ci0KLS8qIFRyYWNlIGNsYXNzZXMgKi8KLSNkZWZpbmUg
VFJDX0NMU19TSElGVCAxNgotI2RlZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAwMCAgICAvKiBH
ZW5lcmFsIHRyYWNlICAgICAgICAgICAgKi8KLSNkZWZpbmUgVFJDX1NDSEVEICAgIDB4MDAwMmYw
MDAgICAgLyogWGVuIFNjaGVkdWxlciB0cmFjZSAgICAgICovCi0jZGVmaW5lIFRSQ19ET00wT1Ag
ICAweDAwMDRmMDAwICAgIC8qIFhlbiBET00wIG9wZXJhdGlvbiB0cmFjZSAqLwotI2RlZmluZSBU
UkNfSFZNICAgICAgMHgwMDA4ZjAwMCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAgICAgICAgKi8K
LSNkZWZpbmUgVFJDX01FTSAgICAgIDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9yeSB0cmFjZSAg
ICAgICAgICovCi0jZGVmaW5lIFRSQ19QViAgICAgICAweDAwMjBmMDAwICAgIC8qIFhlbiBQViB0
cmFjZXMgICAgICAgICAgICAqLwotI2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQwZjAwMCAgICAv
KiBYZW4gc2hhZG93IHRyYWNpbmcgICAgICAgKi8KLSNkZWZpbmUgVFJDX0hXICAgICAgIDB4MDA4
MGYwMDAgICAgLyogWGVuIGhhcmR3YXJlLXJlbGF0ZWQgdHJhY2VzICovCi0jZGVmaW5lIFRSQ19H
VUVTVCAgICAweDA4MDBmMDAwICAgIC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMgICAqLwotI2Rl
ZmluZSBUUkNfQUxMICAgICAgMHgwZmZmZjAwMAotI2RlZmluZSBUUkNfSERfVE9fRVZFTlQoeCkg
KCh4KSYweDBmZmZmZmZmKQotI2RlZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVMPDwzMSkKLSNk
ZWZpbmUgVFJDX0hEX0lOQ0xVREVTX0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAmIFRSQ19IRF9D
WUNMRV9GTEFHICkgKQotI2RlZmluZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+PlRSQUNFX0VY
VFJBX1NISUZUKSZUUkFDRV9FWFRSQV9NQVgpCi0KLS8qIFRyYWNlIHN1YmNsYXNzZXMgKi8KLSNk
ZWZpbmUgVFJDX1NVQkNMU19TSElGVCAxMgotCi0vKiB0cmFjZSBzdWJjbGFzc2VzIGZvciBTVk0g
Ki8KLSNkZWZpbmUgVFJDX0hWTV9FTlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyogVk1FTlRSWSBh
bmQgI1ZNRVhJVCAgICAgICAqLwotI2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAgIDB4MDAwODIw
MDAgICAvKiB2YXJpb3VzIEhWTSBoYW5kbGVycyAgICAgICovCi0jZGVmaW5lIFRSQ19IVk1fRU1V
TCAgICAgICAgMHgwMDA4NDAwMCAgIC8qIGVtdWxhdGVkIGRldmljZXMgKi8KLQotI2RlZmluZSBU
UkNfU0NIRURfTUlOICAgICAgIDB4MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRlIGNoYW5nZXMg
Ki8KLSNkZWZpbmUgVFJDX1NDSEVEX0NMQVNTICAgICAweDAwMDIyMDAwICAgLyogU2NoZWR1bGVy
LXNwZWNpZmljICAgICovCi0jZGVmaW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgwMDAyODAwMCAg
IC8qIE1vcmUgaW5jbHVzaXZlIHNjaGVkdWxpbmcgKi8KLQotLyoKLSAqIFRoZSBoaWdoZXN0IDMg
Yml0cyBvZiB0aGUgbGFzdCAxMiBiaXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92ZSBhcmUKLSAq
IHJlc2VydmVkIGZvciBlbmNvZGluZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0aGUgaW5mb3Jt
YXRpb24uIFRoZQotICogYWN0dWFsIGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxhc3QgOSBiaXRz
LgotICoKLSAqIFRoaXMgbWVhbnMgd2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2YWlsYWJsZSAo
d2hpY2ggbWVhbnMgYXQgbW9zdCA4Ci0gKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcgZXZlbnRzKSBh
bmQsIGluIGVhY2ggc2NoZWR1bGVyLCB1cCB0byA1MTIKLSAqIGRpZmZlcmVudCBldmVudHMuCi0g
Ki8KLSNkZWZpbmUgVFJDX1NDSEVEX0lEX0JJVFMgMwotI2RlZmluZSBUUkNfU0NIRURfSURfU0hJ
RlQgKFRSQ19TVUJDTFNfU0hJRlQgLSBUUkNfU0NIRURfSURfQklUUykKLSNkZWZpbmUgVFJDX1ND
SEVEX0lEX01BU0sgKCgoMVVMPDxUUkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBUUkNfU0NIRURf
SURfU0hJRlQpCi0jZGVmaW5lIFRSQ19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NIRURfSURfTUFT
SykpCi0KLS8qIFBlci1zY2hlZHVsZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVsZXIgc3BlY2lm
aWMgZXZlbnRzICovCi0jZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQgICAwCi0jZGVmaW5lIFRSQ19T
Q0hFRF9DU0NIRUQyICAxCi0jZGVmaW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCi0jZGVmaW5lIFRS
Q19TQ0hFRF9BUklOQzY1MyAzCi0jZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0Ci0KLS8qIFBl
ci1zY2hlZHVsZXIgdHJhY2luZyAqLwotI2RlZmluZSBUUkNfU0NIRURfQ0xBU1NfRVZUKF9jLCBf
ZSkgXAotICAoICggVFJDX1NDSEVEX0NMQVNTIHwgXAotICAgICAgKChUUkNfU0NIRURfIyNfYyA8
PCBUUkNfU0NIRURfSURfU0hJRlQpICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBcCi0gICAgKF9l
ICYgVFJDX1NDSEVEX0VWVF9NQVNLKSApCi0KLS8qIFRyYWNlIGNsYXNzZXMgZm9yIEhhcmR3YXJl
ICovCi0jZGVmaW5lIFRSQ19IV19QTSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8qIFBvd2VyIG1h
bmFnZW1lbnQgdHJhY2VzICovCi0jZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAgMHgwMDgwMjAw
MCAgIC8qIFRyYWNlcyByZWxhdGluZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAqLwotCi0vKiBU
cmFjZSBldmVudHMgcGVyIGNsYXNzICovCi0jZGVmaW5lIFRSQ19MT1NUX1JFQ09SRFMgICAgICAg
IChUUkNfR0VOICsgMSkKLSNkZWZpbmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAoVFJDX0dFTiAr
IDIpCi0jZGVmaW5lIFRSQ19UUkFDRV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsgMykKLQotI2Rl
ZmluZSBUUkNfU0NIRURfUlVOU1RBVEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4gKyAxKQotI2Rl
ZmluZSBUUkNfU0NIRURfQ09OVElOVUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4gKyAyKQotI2Rl
ZmluZSBUUkNfU0NIRURfRE9NX0FERCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDEpCi0j
ZGVmaW5lIFRSQ19TQ0hFRF9ET01fUkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgMikK
LSNkZWZpbmUgVFJDX1NDSEVEX1NMRUVQICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICAz
KQotI2RlZmluZSBUUkNfU0NIRURfV0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsg
IDQpCi0jZGVmaW5lIFRSQ19TQ0hFRF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0Ug
KyAgNSkKLSNkZWZpbmUgVFJDX1NDSEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NIRURfVkVSQk9T
RSArICA2KQotI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV04gICAgICAgKFRSQ19TQ0hFRF9WRVJC
T1NFICsgIDcpCi0jZGVmaW5lIFRSQ19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJDX1NDSEVEX1ZF
UkJPU0UgKyAgOCkKLSNkZWZpbmUgVFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChUUkNfU0NIRURf
VkVSQk9TRSArICA5KQotI2RlZmluZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAgKFRSQ19TQ0hF
RF9WRVJCT1NFICsgMTApCi0jZGVmaW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAgICAoVFJDX1ND
SEVEX1ZFUkJPU0UgKyAxMSkKLSNkZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4gICAgIChUUkNf
U0NIRURfVkVSQk9TRSArIDEyKQotI2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVSX0ZOICAgKFRS
Q19TQ0hFRF9WRVJCT1NFICsgMTMpCi0jZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hfSU5GUFJFViAo
VFJDX1NDSEVEX1ZFUkJPU0UgKyAxNCkKLSNkZWZpbmUgVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhU
IChUUkNfU0NIRURfVkVSQk9TRSArIDE1KQotI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV05fQ09E
RSAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTYpCi0KLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5U
X01BUCAgICAgIChUUkNfTUVNICsgMSkKLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1VOTUFQ
ICAgIChUUkNfTUVNICsgMikKLSNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSIChU
UkNfTUVNICsgMykKLSNkZWZpbmUgVFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAgIChUUkNfTUVN
ICsgNCkKLSNkZWZpbmUgVFJDX01FTV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJDX01FTSArIDUp
Ci0jZGVmaW5lIFRSQ19NRU1fUE9EX1BPUFVMQVRFICAgICAgICAoVFJDX01FTSArIDE2KQotI2Rl
ZmluZSBUUkNfTUVNX1BPRF9aRVJPX1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykKLSNkZWZpbmUg
VFJDX01FTV9QT0RfU1VQRVJQQUdFX1NQTElOVEVSIChUUkNfTUVNICsgMTgpCi0KLSNkZWZpbmUg
VFJDX1BWX0VOVFJZICAgMHgwMDIwMTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBvaW50cyBmb3Ig
UFYgZ3Vlc3RzLiAqLwotI2RlZmluZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAwIC8qIFN1Yi1j
YWxsIGluIGEgbXVsdGljYWxsIGh5cGVyY2FsbCAqLwotCi0jZGVmaW5lIFRSQ19QVl9IWVBFUkNB
TEwgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAxKQotI2RlZmluZSBUUkNfUFZfVFJBUCAg
ICAgICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMykKLSNkZWZpbmUgVFJDX1BWX1BBR0Vf
RkFVTFQgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDQpCi0jZGVmaW5lIFRSQ19QVl9GT1JD
RURfSU5WQUxJRF9PUCAgICAgKFRSQ19QVl9FTlRSWSArICA1KQotI2RlZmluZSBUUkNfUFZfRU1V
TEFURV9QUklWT1AgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgNikKLSNkZWZpbmUgVFJDX1BWX0VN
VUxBVEVfNEdCICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDcpCi0jZGVmaW5lIFRSQ19QVl9N
QVRIX1NUQVRFX1JFU1RPUkUgICAgKFRSQ19QVl9FTlRSWSArICA4KQotI2RlZmluZSBUUkNfUFZf
UEFHSU5HX0ZJWFVQICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgOSkKLSNkZWZpbmUgVFJDX1BW
X0dEVF9MRFRfTUFQUElOR19GQVVMVCAoVFJDX1BWX0VOVFJZICsgMTApCi0jZGVmaW5lIFRSQ19Q
Vl9QVFdSX0VNVUxBVElPTiAgICAgICAgKFRSQ19QVl9FTlRSWSArIDExKQotI2RlZmluZSBUUkNf
UFZfUFRXUl9FTVVMQVRJT05fUEFFICAgIChUUkNfUFZfRU5UUlkgKyAxMikKLSNkZWZpbmUgVFJD
X1BWX0hZUEVSQ0FMTF9WMiAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCi0jZGVmaW5lIFRS
Q19QVl9IWVBFUkNBTExfU1VCQ0FMTCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQpCi0KLS8qCi0g
KiBUUkNfUFZfSFlQRVJDQUxMX1YyIGZvcm1hdAotICoKLSAqIE9ubHkgc29tZSBvZiB0aGUgaHlw
ZXJjYWxsIGFyZ3VtZW50IGFyZSByZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bwotICogQTUgaW4g
dGhlIGZpcnN0IGV4dHJhIHdvcmQgYXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMgcHJlc2VudCBh
bmQKLSAqIHRoZSBhcmd1bWVudHMgdGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVlbnRpYWxseSBp
biB0aGUgZm9sbG93aW5nCi0gKiB3b3Jkcy4KLSAqCi0gKiBUaGUgVFJDXzY0X0ZMQUcgYml0IGlz
IG5vdCBzZXQgZm9yIHRoZXNlIGV2ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKLSAqIDY0LWJpdCBh
cmd1bWVudHMgaW4gdGhlIHJlY29yZCkuCi0gKgotICogV29yZAotICogMCAgICBiaXQgMzEgMzB8
MjkgMjh8MjcgMjZ8MjUgMjR8MjMgMjJ8MjEgMjB8MTkgLi4uIDAKLSAqICAgICAgICAgIEE1ICAg
fEE0ICAgfEEzICAgfEEyICAgfEExICAgfEEwICAgfEh5cGVyY2FsbCBvcAotICogMSAgICBGaXJz
dCAzMiBiaXQgKG9yIGxvdyB3b3JkIG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZAotICog
MiAgICBTZWNvbmQgMzIgYml0IChvciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0KSBhcmcgaW4g
cmVjb3JkCi0gKiAuLi4KLSAqCi0gKiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6Ci0gKgotICogICAw
MGIgIEFyZ3VtZW50IG5vdCBwcmVzZW50Ci0gKiAgIDAxYiAgMzItYml0IGFyZ3VtZW50IHByZXNl
bnQKLSAqICAgMTBiICA2NC1iaXQgYXJndW1lbnQgcHJlc2VudAotICogICAxMWIgIFJlc2VydmVk
Ci0gKi8KLSNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4MSA8PCAoMjAg
KyAyKihpKSkpCi0jZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkpICgweDIgPDwg
KDIwICsgMiooaSkpKQotI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19NQVNLICAoMHhm
ZmYwMDAwMCkKLQotI2RlZmluZSBUUkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDEpCi0jZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9QQUdBVEUgICAg
ICAgICAgICAgKFRSQ19TSEFET1cgKyAgMikKLSNkZWZpbmUgVFJDX1NIQURPV19GQVNUX01NSU8g
ICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAzKQotI2RlZmluZSBUUkNfU0hBRE9XX0ZB
TFNFX0ZBU1RfUEFUSCAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDQpCi0jZGVmaW5lIFRSQ19T
SEFET1dfTU1JTyAgICAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNSkKLSNkZWZp
bmUgVFJDX1NIQURPV19GSVhVUCAgICAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA2
KQotI2RlZmluZSBUUkNfU0hBRE9XX0RPTUZfRFlJTkcgICAgICAgICAgICAgICAgIChUUkNfU0hB
RE9XICsgIDcpCi0jZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURSAgICAgICAgICAgICAgICAgICAg
KFRSQ19TSEFET1cgKyAgOCkKLSNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VOU0hBRE9XX1VT
RVIgICAgICAoVFJDX1NIQURPVyArICA5KQotI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5T
SEFET1dfRVZUSU5KICAgIChUUkNfU0hBRE9XICsgMTApCi0jZGVmaW5lIFRSQ19TSEFET1dfRU1V
TEFURV9VTlNIQURPV19VTkhBTkRMRUQgKFRSQ19TSEFET1cgKyAxMSkKLSNkZWZpbmUgVFJDX1NI
QURPV19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEyKQotI2RlZmlu
ZSBUUkNfU0hBRE9XX1BSRUFMTE9DX1VOUElOICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTMp
Ci0jZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAgKFRSQ19TSEFE
T1cgKyAxNCkKLSNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAgICAgICAgICAgICAgICAo
VFJDX1NIQURPVyArIDE1KQotCi0vKiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNzICovCi0jZGVm
aW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkKLSNkZWZpbmUgVFJDX0hWTV9WTUVO
VFJZICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMSkKLSNkZWZpbmUgVFJDX0hWTV9W
TUVYSVQgICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMikKLSNkZWZpbmUgVFJDX0hW
TV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZMQUcgKyAweDAy
KQotI2RlZmluZSBUUkNfSFZNX1BGX1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgw
MSkKLSNkZWZpbmUgVFJDX0hWTV9QRl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRS
Q182NF9GTEFHICsgMHgwMSkKLSNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MDIpCi0jZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDIpCi0jZGVmaW5lIFRSQ19IVk1fSU5KX0VY
QyAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAzKQotI2RlZmluZSBUUkNfSFZNX0lOSl9W
SVJRICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNCkKLSNkZWZpbmUgVFJDX0hWTV9SRUlO
Sl9WSVJRICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDUpCi0jZGVmaW5lIFRSQ19IVk1fSU9f
UkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA2KQotI2RlZmluZSBUUkNfSFZNX0lP
X1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykKLSNkZWZpbmUgVFJDX0hWTV9D
Ul9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDgpCi0jZGVmaW5lIFRSQ19IVk1f
Q1JfUkVBRDY0ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDgpCi0j
ZGVmaW5lIFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA5KQot
I2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0
X0ZMQUcgKyAweDA5KQotI2RlZmluZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgwQSkKLSNkZWZpbmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MEIpCi0jZGVmaW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDBDKQotI2RlZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwRCkKLSNkZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MEUpCi0jZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAgICAgIChUUkNf
SFZNX0hBTkRMRVIgKyAweDBGKQotI2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgxMCkKLSNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MTEpCi0jZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDEyKQotI2RlZmluZSBUUkNfSFZNX0hMVCAgICAgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgxMykKLSNkZWZpbmUgVFJDX0hWTV9JTlZMUEcgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MTQpCi0jZGVmaW5lIFRSQ19IVk1fSU5WTFBHNjQgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MTQpCi0jZGVmaW5lIFRSQ19IVk1f
TUNFICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE1KQotI2RlZmluZSBUUkNfSFZN
X0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNikKLSNkZWZpbmUgVFJDX0hW
TV9JT01FTV9SRUFEICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTcpCi0jZGVmaW5lIFRSQ19I
Vk1fQ0xUUyAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE4KQotI2RlZmluZSBUUkNf
SFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKLSNkZWZpbmUgVFJD
X0hWTV9MTVNXNjQgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgx
OSkKLSNkZWZpbmUgVFJDX0hWTV9SRFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MWEpCi0jZGVmaW5lIFRSQ19IVk1fSU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw
eDIwKQotI2RlZmluZSBUUkNfSFZNX05QRiAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgyMSkKLSNkZWZpbmUgVFJDX0hWTV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZNX0hBTkRMRVIg
KyAweDIyKQotI2RlZmluZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExF
UiArIDB4MjMpCi0jZGVmaW5lIFRSQ19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgyNCkKLSNkZWZpbmUgVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDI1KQotCi0jZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZN
X0hBTkRMRVIgKyAweDIxNikKLSNkZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MjE3KQotCi0vKiBUcmFjZSBldmVudHMgZm9yIGVtdWxhdGVkIGRldmlj
ZXMgKi8KLSNkZWZpbmUgVFJDX0hWTV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChUUkNfSFZNX0VN
VUwgKyAweDEpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIgICAoVFJDX0hW
TV9FTVVMICsgMHgyKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJTUVSICAgKFRS
Q19IVk1fRU1VTCArIDB4MykKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NUQVJUX1RJTUVS
IChUUkNfSFZNX0VNVUwgKyAweDQpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVUX1NUT1BfVElN
RVIgICAoVFJDX0hWTV9FTVVMICsgMHg1KQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1NUT1Bf
VElNRVIgICAgKFRSQ19IVk1fRU1VTCArIDB4NikKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX1JUQ19T
VE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDcpCi0jZGVmaW5lIFRSQ19IVk1fRU1VTF9M
QVBJQ19TVE9QX1RJTUVSICAoVFJDX0hWTV9FTVVMICsgMHg4KQotI2RlZmluZSBUUkNfSFZNX0VN
VUxfUElUX1RJTUVSX0NCICAgICAgKFRSQ19IVk1fRU1VTCArIDB4OSkKLSNkZWZpbmUgVFJDX0hW
TV9FTVVMX0xBUElDX1RJTUVSX0NCICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCi0jZGVmaW5lIFRS
Q19IVk1fRU1VTF9QSUNfSU5UX09VVFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhCKQotI2RlZmlu
ZSBUUkNfSFZNX0VNVUxfUElDX0tJQ0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4QykKLSNk
ZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEQp
Ci0jZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hWTV9FTVVMICsg
MHhFKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX05FR0VER0UgICAgICAgKFRSQ19IVk1fRU1V
TCArIDB4RikKLSNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxMIChUUkNfSFZN
X0VNVUwgKyAweDEwKQotI2RlZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lOVFIgICAgKFRS
Q19IVk1fRU1VTCArIDB4MTEpCi0KLS8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICovCi0j
ZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQotI2RlZmlu
ZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKLSNkZWZpbmUgVFJD
X1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCi0KLS8qIFRyYWNlIGV2ZW50
cyBmb3IgSVJRcyAqLwotI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9ERUxBWSAoVFJD
X0hXX0lSUSArIDB4MSkKLSNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAgICAgICAgKFRS
Q19IV19JUlEgKyAweDIpCi0jZGVmaW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1IgICAgICAgIChU
UkNfSFdfSVJRICsgMHgzKQotI2RlZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAo
VFJDX0hXX0lSUSArIDB4NCkKLSNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAg
KFRSQ19IV19JUlEgKyAweDUpCi0jZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAg
IChUUkNfSFdfSVJRICsgMHg2KQotI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAg
ICAoVFJDX0hXX0lSUSArIDB4NykKLSNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAg
ICAgKFRSQ19IV19JUlEgKyAweDgpCi0KLS8qCi0gKiBFdmVudCBGbGFncwotICoKLSAqIFNvbWUg
ZXZlbnRzIChlLmcsIFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUgbXVs
dGlwbGUKLSAqIHJlY29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGluZ3Vpc2gg
YmV0d2VlbiB0aGUKLSAqIGRpZmZlcmVudCBmb3JtYXRzLgotICovCi0jZGVmaW5lIFRSQ182NF9G
TEFHIDB4MTAwIC8qIEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAzMiBiaXRzKSAq
LwotCi0vKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlciBy
ZWNvcmQuICovCi1zdHJ1Y3QgdF9yZWMgewotICAgIHVpbnQzMl90IGV2ZW50OjI4OwotICAgIHVp
bnQzMl90IGV4dHJhX3UzMjozOyAgICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFpbGluZyBleHRy
YV91MzJbXSBhcnJheSAqLwotICAgIHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUu
Y3ljbGVzIG9yIHUubm9fY3ljbGVzPyAqLwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIHVpbnQzMl90IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3Vu
dGVyIHRpbWVzdGFtcCAqLwotICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMyWzddOyAgICAg
ICAgIC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KLSAgICAgICAgfSBjeWNsZXM7Ci0gICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICB1aW50MzJfdCBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZl
bnQgZGF0YSBpdGVtcyAqLwotICAgICAgICB9IG5vY3ljbGVzOwotICAgIH0gdTsKLX07Ci0KLS8q
Ci0gKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHRy
YWNlIGJ1ZmZlci4gIFRoZSBoZWFkCi0gKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFuIGFycmF5IG9m
IHN0cnVjdCB0X3JlYydzLgotICovCi1zdHJ1Y3QgdF9idWYgewotICAgIC8qIEFzc3VtZSB0aGUg
ZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4K
LSAgICAgKiBDT05TIGFuZCBQUk9EIGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6Ci0gICAg
ICogICAgIDAgPD0gY29ucyA8IDIqWAotICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgKLSAgICAg
KiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3
aGVuIFggaXMgbm90IGEKLSAgICAgKiBwb3dlciBvZiAyOgotICAgICAqICAgICAoKCgyXjMyIC0g
MSkgJSBYKSArIDEpICUgWCAhPSAoMl4zMikgJSBYCi0gICAgICovCi0gICAgdWludDMyX3QgY29u
czsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNvbnRyb2wgdG9v
bHMuICovCi0gICAgdWludDMyX3QgcHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJl
IHByb2R1Y2VkIGJ5IFhlbi4gICAgICAgICAgICovCi0gICAgLyogIFJlY29yZHMgZm9sbG93IGlt
bWVkaWF0ZWx5IGFmdGVyIHRoZSBtZXRhLWRhdGEgaGVhZGVyLiAgICAqLwotfTsKLQotLyogU3Ry
dWN0dXJlIHVzZWQgdG8gcGFzcyBNRk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJhY2sgdG8gdHJh
Y2UgY29uc3VtZXJzLgotICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgc3Ry
dWN0dXJlIHdoZXJlIHRoZSBtZm4gbGlzdCB3aWxsIGJlIGhlbGQuCi0gKiBNRk5zIHdpbGwgYmUg
YXQgKChVTE9OR19QVFIgKikodF9pbmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtjcHVdKS4KLSAq
Lwotc3RydWN0IHRfaW5mbyB7Ci0gICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBTaXplIGluIHBh
Z2VzIG9mIGVhY2ggdHJhY2UgYnVmZmVyICovCi0gICAgdWludDE2X3QgbWZuX29mZnNldFtdOyAg
LyogT2Zmc2V0IHdpdGhpbiB0X2luZm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxpc3QgcGVyIGNw
dSAqLwotICAgIC8qIE1GTiBsaXN0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyICovCi19
OwotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hfXyAqLwotCi0vKgotICogTG9jYWwg
dmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNp
Yy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0g
KiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3ZlcnNpb24uaCBiL2luY2x1ZGUv
eGVuL3ZlcnNpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmMjZiMC4uMDAw
MDAwMAotLS0gYS9pbmNsdWRlL3hlbi92ZXJzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiAr
MCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiB2ZXJzaW9uLmgKLSAqIAotICogWGVu
IHZlcnNpb24sIHR5cGUsIGFuZCBjb21waWxlIGluZm9ybWF0aW9uLgotICogCi0gKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0g
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB
UklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgot
ICogQ29weXJpZ2h0IChjKSAyMDA1LCBOZ3V5ZW4gQW5oIFF1eW5oIDxhcXV5bmhAZ21haWwuY29t
PgotICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlciA8a2VpckB4ZW5zb3VyY2UuY29t
PgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX1ZFUlNJT05fSF9fCi0jZGVmaW5lIF9fWEVO
X1BVQkxJQ19WRVJTSU9OX0hfXwotCi0jaW5jbHVkZSAieGVuLmgiCi0KLS8qIE5CLiBBbGwgb3Bz
IHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MsIGV4Y2VwdCBYRU5WRVJfe3ZlcnNpb24scGFnZXNpemV9
ICovCi0KLS8qIGFyZyA9PSBOVUxMOyByZXR1cm5zIG1ham9yOm1pbm9yICgxNjoxNikuICovCi0j
ZGVmaW5lIFhFTlZFUl92ZXJzaW9uICAgICAgMAotCi0vKiBhcmcgPT0geGVuX2V4dHJhdmVyc2lv
bl90LiAqLwotI2RlZmluZSBYRU5WRVJfZXh0cmF2ZXJzaW9uIDEKLXR5cGVkZWYgY2hhciB4ZW5f
ZXh0cmF2ZXJzaW9uX3RbMTZdOwotI2RlZmluZSBYRU5fRVhUUkFWRVJTSU9OX0xFTiAoc2l6ZW9m
KHhlbl9leHRyYXZlcnNpb25fdCkpCi0KLS8qIGFyZyA9PSB4ZW5fY29tcGlsZV9pbmZvX3QuICov
Ci0jZGVmaW5lIFhFTlZFUl9jb21waWxlX2luZm8gMgotc3RydWN0IHhlbl9jb21waWxlX2luZm8g
ewotICAgIGNoYXIgY29tcGlsZXJbNjRdOwotICAgIGNoYXIgY29tcGlsZV9ieVsxNl07Ci0gICAg
Y2hhciBjb21waWxlX2RvbWFpblszMl07Ci0gICAgY2hhciBjb21waWxlX2RhdGVbMzJdOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9jb21waWxlX2luZm8geGVuX2NvbXBpbGVfaW5mb190OwotCi0j
ZGVmaW5lIFhFTlZFUl9jYXBhYmlsaXRpZXMgMwotdHlwZWRlZiBjaGFyIHhlbl9jYXBhYmlsaXRp
ZXNfaW5mb190WzEwMjRdOwotI2RlZmluZSBYRU5fQ0FQQUJJTElUSUVTX0lORk9fTEVOIChzaXpl
b2YoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QpKQotCi0jZGVmaW5lIFhFTlZFUl9jaGFuZ2VzZXQg
NAotdHlwZWRlZiBjaGFyIHhlbl9jaGFuZ2VzZXRfaW5mb190WzY0XTsKLSNkZWZpbmUgWEVOX0NI
QU5HRVNFVF9JTkZPX0xFTiAoc2l6ZW9mKHhlbl9jaGFuZ2VzZXRfaW5mb190KSkKLQotI2RlZmlu
ZSBYRU5WRVJfcGxhdGZvcm1fcGFyYW1ldGVycyA1Ci1zdHJ1Y3QgeGVuX3BsYXRmb3JtX3BhcmFt
ZXRlcnMgewotICAgIHhlbl91bG9uZ190IHZpcnRfc3RhcnQ7Ci19OwotdHlwZWRlZiBzdHJ1Y3Qg
eGVuX3BsYXRmb3JtX3BhcmFtZXRlcnMgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnNfdDsKLQotI2Rl
ZmluZSBYRU5WRVJfZ2V0X2ZlYXR1cmVzIDYKLXN0cnVjdCB4ZW5fZmVhdHVyZV9pbmZvIHsKLSAg
ICB1bnNpZ25lZCBpbnQgc3VibWFwX2lkeDsgICAgLyogSU46IHdoaWNoIDMyLWJpdCBzdWJtYXAg
dG8gcmV0dXJuICovCi0gICAgdWludDMyX3QgICAgIHN1Ym1hcDsgICAgICAgIC8qIE9VVDogMzIt
Yml0IHN1Ym1hcCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9mZWF0dXJlX2luZm8geGVuX2Zl
YXR1cmVfaW5mb190OwotCi0vKiBEZWNsYXJlcyB0aGUgZmVhdHVyZXMgcmVwb3J0ZWQgYnkgWEVO
VkVSX2dldF9mZWF0dXJlcy4gKi8KLSNpbmNsdWRlICJmZWF0dXJlcy5oIgotCi0vKiBhcmcgPT0g
TlVMTDsgcmV0dXJucyBob3N0IG1lbW9yeSBwYWdlIHNpemUuICovCi0jZGVmaW5lIFhFTlZFUl9w
YWdlc2l6ZSA3Ci0KLS8qIGFyZyA9PSB4ZW5fZG9tYWluX2hhbmRsZV90LiAqLwotI2RlZmluZSBY
RU5WRVJfZ3Vlc3RfaGFuZGxlIDgKLQotI2RlZmluZSBYRU5WRVJfY29tbWFuZGxpbmUgOQotdHlw
ZWRlZiBjaGFyIHhlbl9jb21tYW5kbGluZV90WzEwMjRdOwotCi0jZW5kaWYgLyogX19YRU5fUFVC
TElDX1ZFUlNJT05fSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBD
Ci0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdp
ZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oIGIvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWI4MGEwLi4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL3hlbi1jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIHhlbi1jb21wYXQuaAotICogCi0gKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KLSAqIAotICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAot
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKLSAqLwotCi0jaWZuZGVmIF9fWEVO
X1BVQkxJQ19YRU5fQ09NUEFUX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9I
X18KLQotI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNDAw
Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLS8qIFhl
biBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVz
dCBpbnRlcmZhY2UuICovCi0jZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5f
TEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KLSNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18pCi0vKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdl
dCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KLSNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyAweDAwMDAwMDAwCi0jZW5kaWYKLQotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXwotI2Vycm9yICJUaGVzZSBoZWFkZXIg
ZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW4veGVuLmggYi9pbmNsdWRlL3hlbi94ZW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWNhNjViMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi94ZW4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDg5OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4uaAotICogCi0gKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8gWGVuLgotICogCi0gKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoK
LSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Ci0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBf
X1hFTl9QVUJMSUNfWEVOX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0hfXwotCi0jaW5j
bHVkZSAieGVuLWNvbXBhdC5oIgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf
X3g4Nl82NF9fKQotI2luY2x1ZGUgImFyY2gteDg2L3hlbi5oIgotI2VsaWYgZGVmaW5lZChfX2Fy
bV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSNpbmNsdWRlICJhcmNoLWFybS5oIgotI2Vs
c2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0KLSNpZm5kZWYg
X19BU1NFTUJMWV9fCi0vKiBHdWVzdCBoYW5kbGVzIGZvciBwcmltaXRpdmUgQyB0eXBlcy4gKi8K
LURFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1Y2hhciwgdW5zaWduZWQgY2hhcik7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShpbnQpOwot
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAgdW5zaWduZWQgaW50KTsKLSNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoTE9OR19QVFIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1bG9uZywgVUxPTkdfUFRS
KTsKLSNlbmRpZgotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm9pZCk7Ci0KLURFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQ2NF90KTsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9wZm5f
dCk7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7Ci0jZW5kaWYKLQotLyoK
LSAqIEhZUEVSQ0FMTFMKLSAqLwotCi0vKiBgaW5jb250ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2Yg
aHlwZXJjYWxscwotICogYCBlbnVtIGh5cGVyY2FsbF9udW0geyAvLyBfX0hZUEVSVklTT1JfKiA9
PiBIWVBFUlZJU09SXyooKQotICovCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90cmFwX3Rh
YmxlICAgICAgICAwCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVfdXBkYXRlICAgICAgICAgICAg
MQotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAgICAgICAgICAgICAgIDIKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAgICAzCi0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zZXRfY2FsbGJhY2tzICAgICAgICAgNAotI2RlZmluZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tz
d2l0Y2ggICAgICAgIDUKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdCAgICAg
ICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9w
bGF0Zm9ybV9vcCAgICAgICAgICAgNwotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2RlYnVncmVn
ICAgICAgICAgIDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyAgICAgICAgICA5
Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVzY3JpcHRvciAgICAxMAotI2RlZmluZSBf
X0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAgMTIKLSNkZWZpbmUgX19IWVBFUlZJU09S
X211bHRpY2FsbCAgICAgICAgICAgIDEzCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFf
bWFwcGluZyAgICAxNAotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3RpbWVyX29wICAgICAgICAg
MTUKLSNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0IDE2IC8qIGNv
bXBhdCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lv
biAgICAgICAgICAxNwotI2RlZmluZSBfX0hZUEVSVklTT1JfY29uc29sZV9pbyAgICAgICAgICAg
MTgKLSNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0ICAgIDE5IC8qIGNvbXBh
dCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ncmFudF90YWJsZV9v
cCAgICAgICAyMAotI2RlZmluZSBfX0hZUEVSVklTT1Jfdm1fYXNzaXN0ICAgICAgICAgICAgMjEK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluIDIyCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAgICAgICAgICAyMyAvKiB4ODYgb25seSAq
LwotI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAgICAgICAgICAgICAgMjQKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8qIHg4Ni82NCBvbmx5ICovCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAgICAgICAgICAyNgotI2RlZmluZSBfX0hZ
UEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcKLSNkZWZpbmUgX19IWVBFUlZJU09SX25t
aV9vcCAgICAgICAgICAgICAgIDI4Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcCAgICAg
ICAgICAgICAyOQotI2RlZmluZSBfX0hZUEVSVklTT1JfY2FsbGJhY2tfb3AgICAgICAgICAgMzAK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29wICAgICAgICAgIDMxCi0jZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAzMgotI2RlZmluZSBfX0hZUEVSVklTT1Jf
cGh5c2Rldl9vcCAgICAgICAgICAgMzMKLSNkZWZpbmUgX19IWVBFUlZJU09SX2h2bV9vcCAgICAg
ICAgICAgICAgIDM0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zeXNjdGwgICAgICAgICAgICAgICAz
NQotI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAgICAgICAgICAgICAgMzYKLSNkZWZpbmUg
X19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAgIDM3Ci0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul90bWVtX29wICAgICAgICAgICAgICAzOAotI2RlZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2
ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwotCi0vKiBBcmNoaXRl
Y3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBfX0hZUEVS
VklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hf
MSAgICAgICAgICAgICAgIDQ5Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzIgICAgICAgICAg
ICAgICA1MAotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8zICAgICAgICAgICAgICAgNTEKLSNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAgICAgIDUyCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1MwotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF82ICAgICAgICAgICAgICAgNTQKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNyAgICAgICAg
ICAgICAgIDU1Ci0KLS8qIGAgfSAqLwotCi0vKgotICogSFlQRVJDQUxMIENPTVBBVElCSUxJVFku
Ci0gKi8KLQotLyogTmV3IHNjaGVkX29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAx
MDEuICovCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAxMDEKLSN1bmRl
ZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKLSNlbmRpZgotCi0vKiBOZXcgZXZlbnQtY2hhbm5l
bCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMi4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMgotI3VuZGVmIF9fSFlQRVJW
SVNPUl9ldmVudF9jaGFubmVsX29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs
X29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdAotI3VuZGVmIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wX2NvbXBhdAotI2VuZGlmCi0KLS8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBl
cmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDMwMjA0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9kb20wX29wIF9fSFlQ
RVJWSVNPUl9wbGF0Zm9ybV9vcAotI2VuZGlmCi0KLS8qIAotICogVklSVFVBTCBJTlRFUlJVUFRT
Ci0gKiAKLSAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2VpdmUg
ZnJvbSBYZW4uCi0gKiAKLSAqIEluIHRoZSBzaWRlIGNvbW1lbnRzLCAnVi4nIGRlbm90ZXMgYSBw
ZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCi0gKiBnbG9iYWwgVklSUS4gVGhlIGZv
cm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fubm90IGJlIHJlLWJvdW5kLgot
ICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25jZSBwZXIgZ3Vlc3Q6IHRoZXkg
bXVzdCBpbml0aWFsbHkgYmUKLSAqIGFsbG9jYXRlZCB0byBWQ1BVMCBidXQgY2FuIHN1YnNlcXVl
bnRseSBiZSByZS1ib3VuZC4KLSAqLwotLyogYCBlbnVtIHZpcnEgeyAqLwotI2RlZmluZSBWSVJR
X1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRlLCBhbmQvb3IgcmVxdWVzdGVkIHRp
bWVvdXQuICAqLwotI2RlZmluZSBWSVJRX0RFQlVHICAgICAgMSAgLyogVi4gUmVxdWVzdCBndWVz
dCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0NPTlNPTEUg
ICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGVtZXJnZW5jeSBjb25zb2xlLiAq
LwotI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4gKERPTTApIEV4Y2VwdGlvbmFsIGV2
ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLwotI2RlZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyog
Ry4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFpbGFibGUuICAqLwotI2RlZmlu
ZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEgZG9tYWluIGhhcyBwYXVzZWQgZm9y
IGRlYnVnZ2luZy4gICAqLwotI2RlZmluZSBWSVJRX1hFTk9QUk9GICAgNyAgLyogVi4gWGVuT3By
b2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJsZSAqLwotI2RlZmluZSBWSVJRX0NP
Tl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGNvbnNvbGUgICAgICAg
ICAgICAqLwotI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyogRy4gKERPTTApIFBDUFUgc3Rh
dGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX01FTV9FVkVOVCAg
MTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1cmVkICAgICAgICAgICAqLwot
I2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJlc2VydmVkIGZvciBYZW5DbGllbnQg
ICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0VOT01FTSAgICAgMTIgLyogRy4g
KERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwotCi0vKiBBcmNoaXRlY3R1cmUtc3Bl
Y2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KLSNkZWZpbmUgVklSUV9BUkNIXzAgICAgMTYKLSNk
ZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKLSNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKLSNkZWZp
bmUgVklSUV9BUkNIXzMgICAgMTkKLSNkZWZpbmUgVklSUV9BUkNIXzQgICAgMjAKLSNkZWZpbmUg
VklSUV9BUkNIXzUgICAgMjEKLSNkZWZpbmUgVklSUV9BUkNIXzYgICAgMjIKLSNkZWZpbmUgVklS
UV9BUkNIXzcgICAgMjMKLS8qIGAgfSAqLwotCi0jZGVmaW5lIE5SX1ZJUlFTICAgICAgIDI0Ci0K
LS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11X3VwZGF0ZShj
b25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCi0gKiBgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0LAotICogYCAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKLSAqIGAKLSAqIEByZXFzIGlzIGFuIGFycmF5
IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2YWwpIHBhaXJzKS4KLSAqIEBjb3Vu
dCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4KLSAqIEBwZG9uZSBpcyBhbiBvdXRw
dXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCi0g
KiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBkYXRhIHBhZ2Vz
IHJlZmVyZW5jZWQgaW4gdGhpcwotICogICAgICAgICAgICAgICAgICAgIGh5cGVyY2FsbCBpbnZv
Y2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KLSAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0
aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKLSAqICAgICAg
ICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52b2NhdGlvbi4gVGhlIHZhbHVlIG9m
IHRoaXMgZmllbGQKLSAqICAgICAgICAgICAgICAgICAgICAgKHgpIGVuY29kZXMgdGhlIFBGRCBh
cyBmb2xsb3dzOgotICogICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlE
X1NFTEYKLSAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAwID0+IFBGRCA9PSB4IC0gMQotICog
Ci0gKiBTdWItY29tbWFuZHM6IHB0clsxOjBdIHNwZWNpZmllcyB0aGUgYXBwcm9wcmlhdGUgTU1V
XyogY29tbWFuZC4KLSAqIC0tLS0tLS0tLS0tLS0KLSAqIHB0clsxOjBdID09IE1NVV9OT1JNQUxf
UFRfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiBhIHBhZ2UgdGFibGUgYmVsb25naW5n
IHRvIFBGRC4gSWYgdXBkYXRpbmcgYW4gTDEgdGFibGUsCi0gKiBhbmQgdGhlIG5ldyB0YWJsZSBl
bnRyeSBpcyB2YWxpZC9wcmVzZW50LCB0aGUgbWFwcGVkIGZyYW1lIG11c3QgYmVsb25nIHRvCi0g
KiBGRC4gSWYgYXR0ZW1wdGluZyB0byBtYXAgYW4gSS9PIHBhZ2UgdGhlbiB0aGUgY2FsbGVyIGFz
c3VtZXMgdGhlIHByaXZpbGVnZQotICogb2YgdGhlIEZELgotICogRkQgPT0gRE9NSURfSU86IFBl
cm1pdCAvb25seS8gSS9PIG1hcHBpbmdzLCBhdCB0aGUgcHJpdiBsZXZlbCBvZiB0aGUgY2FsbGVy
LgotICogRkQgPT0gRE9NSURfWEVOOiBNYXAgcmVzdHJpY3RlZCBhcmVhcyBvZiBYZW4ncyBoZWFw
IHNwYWNlLgotICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIG9mIHRoZSBwYWdlLXRhYmxl
IGVudHJ5IHRvIG1vZGlmeS4KLSAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlLgotICoKLSAq
IFRoZXJlIGFsc28gY2VydGFpbiBpbXBsaWNpdCByZXF1aXJlbWVudHMgd2hlbiB1c2luZyB0aGlz
IGh5cGVyY2FsbC4gVGhlCi0gKiBwYWdlcyB0aGF0IG1ha2UgdXAgYSBwYWdldGFibGUgbXVzdCBi
ZSBtYXBwZWQgcmVhZC1vbmx5IGluIHRoZSBndWVzdC4KLSAqIFRoaXMgcHJldmVudHMgdW5jb250
cm9sbGVkIGd1ZXN0IHVwZGF0ZXMgdG8gdGhlIHBhZ2V0YWJsZS4gWGVuIHN0cmljdGx5Ci0gKiBl
bmZvcmNlcyB0aGlzLCBhbmQgd2lsbCBkaXNhbGxvdyBhbnkgcGFnZXRhYmxlIHVwZGF0ZSB3aGlj
aCB3aWxsIGVuZCB1cAotICogbWFwcGluZyBwYWdldGFibGUgcGFnZSBSVywgYW5kIHdpbGwgZGlz
YWxsb3cgdXNpbmcgYW55IHdyaXRhYmxlIHBhZ2UgYXMgYQotICogcGFnZXRhYmxlLiBJbiBwcmFj
dGljZSBpdCBtZWFucyB0aGF0IHdoZW4gY29uc3RydWN0aW5nIGEgcGFnZSB0YWJsZSBmb3IgYQot
ICogcHJvY2VzcywgdGhyZWFkLCBldGMsIHdlIE1VU1QgYmUgdmVyeSBkaWxsaWdpZW50IGluIGZv
bGxvd2luZyB0aGVzZSBydWxlczoKLSAqICAxKS4gU3RhcnQgd2l0aCB0b3AtbGV2ZWwgcGFnZSAo
UEdEIG9yIGluIFhlbiBsYW5ndWFnZTogTDQpLiBGaWxsIG91dAotICogICAgICB0aGUgZW50cmll
cy4KLSAqICAyKS4gS2VlcCBvbiBnb2luZywgZmlsbGluZyBvdXQgdGhlIHVwcGVyIChQVUQgb3Ig
TDMpLCBhbmQgbWlkZGxlIChQTUQKLSAqICAgICAgb3IgTDIpLgotICogIDMpLiBTdGFydCBmaWxs
aW5nIG91dCB0aGUgUFRFIHRhYmxlIChMMSkgd2l0aCB0aGUgUFRFIGVudHJpZXMuIE9uY2UKLSAq
ICAJZG9uZSwgbWFrZSBzdXJlIHRvIHNldCBlYWNoIG9mIHRob3NlIGVudHJpZXMgdG8gUk8gKHNv
IHdyaXRlYWJsZSBiaXQKLSAqICAJaXMgdW5zZXQpLiBPbmNlIHRoYXQgaGFzIGJlZW4gY29tcGxl
dGVkLCBzZXQgdGhlIFBNRCAoTDIpIGZvciB0aGlzCi0gKiAgCVBURSB0YWJsZSBhcyBSTy4KLSAq
ICA0KS4gV2hlbiBjb21wbGV0ZWQgd2l0aCBhbGwgb2YgdGhlIFBNRCAoTDIpIGVudHJpZXMsIGFu
ZCBhbGwgb2YgdGhlbSBoYXZlCi0gKiAgCWJlZW4gc2V0IHRvIFJPLCBtYWtlIHN1cmUgdG8gc2V0
IFJPIHRoZSBQVUQgKEwzKS4gRG8gdGhlIHNhbWUKLSAqICAJb3BlcmF0aW9uIG9uIFBHRCAoTDQp
IHBhZ2V0YWJsZSBlbnRyaWVzIHRoYXQgaGF2ZSBhIFBVRCAoTDMpIGVudHJ5LgotICogIDUpLiBO
b3cgYmVmb3JlIHlvdSBjYW4gdXNlIHRob3NlIHBhZ2VzIChzbyBzZXR0aW5nIHRoZSBjcjMpLCB5
b3UgTVVTVCBhbHNvCi0gKiAgICAgIHBpbiB0aGVtIHNvIHRoYXQgdGhlIGh5cGVydmlzb3IgY2Fu
IHZlcmlmeSB0aGUgZW50cmllcy4gVGhpcyBpcyBkb25lCi0gKiAgICAgIHZpYSB0aGUgSFlQRVJW
SVNPUl9tbXVleHRfb3AoTU1VRVhUX1BJTl9MNF9UQUJMRSwgZ3Vlc3QgcGh5c2ljYWwgZnJhbWUK
LSAqICAgICAgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkuIEFuZCB0aGlzIHBvaW50IHRoZSBIWVBF
UlZJU09SX21tdWV4dF9vcCgKLSAqICAgICAgTU1VRVhUX05FV19CQVNFUFRSLCBndWVzdCBwaHlz
aWNhbCBmcmFtZSBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKSBjYW4gYmUKLSAqICAgICAgaXNzdWVk
LgotICogRm9yIDMyLWJpdCBndWVzdHMsIHRoZSBMNCBpcyBub3QgdXNlZCAoYXMgdGhlcmUgaXMg
bGVzcyBwYWdldGFibGVzKSwgc28KLSAqIGluc3RlYWQgdXNlIEwzLgotICogQXQgdGhpcyBwb2lu
dCB0aGUgcGFnZXRhYmxlcyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIE1NVV9OT1JNQUxfUFRf
VVBEQVRFCi0gKiBoeXBlcmNhbGwuIEFsc28gaWYgc28gZGVzaXJlZCB0aGUgT1MgY2FuIGFsc28g
dHJ5IHRvIHdyaXRlIHRvIHRoZSBQVEUKLSAqIGFuZCBiZSB0cmFwcGVkIGJ5IHRoZSBoeXBlcnZp
c29yIChhcyB0aGUgUFRFIGVudHJ5IGlzIFJPKS4KLSAqCi0gKiBUbyBkZWFsbG9jYXRlIHRoZSBw
YWdlcywgdGhlIG9wZXJhdGlvbnMgYXJlIHRoZSByZXZlcnNlIG9mIHRoZSBzdGVwcwotICogbWVu
dGlvbmVkIGFib3ZlLiBUaGUgYXJndW1lbnQgaXMgTU1VRVhUX1VOUElOX1RBQkxFIGZvciBhbGwg
bGV2ZWxzIGFuZCB0aGUKLSAqIHBhZ2V0YWJsZSBNVVNUIG5vdCBiZSBpbiB1c2UgKG1lYW5pbmcg
dGhhdCB0aGUgY3IzIGlzIG5vdCBzZXQgdG8gaXQpLgotICogCi0gKiBwdHJbMTowXSA9PSBNTVVf
TUFDSFBIWVNfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiB0aGUgbWFjaGluZS0+cHNl
dWRvLXBoeXNpY2FsIG1hcHBpbmcgdGFibGUuCi0gKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBtYXBwaW5nIHRvIG1vZGlmeS4KLSAqICAgICAgICAg
ICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBpcyBzcGVjaWZpZWQu
Ci0gKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZSBpbnRvIHRoZSBtYXBwaW5nIGVudHJ5Lgot
ICogCi0gKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEOgotICogQXMgTU1V
X05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBjdXJyZW50bHkgaW4gdGhlIFBU
RSBhcmUgT1JlZAotICogd2l0aCB0aG9zZSBpbiBAdmFsLgotICoKLSAqIEB2YWwgaXMgdXN1YWxs
eSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBzb21lIGF0dHJpYnV0ZXMuCi0g
KiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmlu
ZWQgYml0cy4gTWVhbmluZyB0aGF0Ci0gKiBpZiB0aGlzIGlzIGEgWDg2XzY0IG1hY2hpbmUgYW5k
IGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxheW91dAotICogb2YgdmFsIGlz
OgotICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQotICogIC0gNDYtMTMgdGhl
IG1hY2hpbmUgZnJhbWUgbnVtYmVyCi0gKiAgLSAxMiBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAg
LSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAgLSAxMCBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0g
KiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKLSAqICAtIDggZ2xvYmFsCi0gKiAgLSA3IFBBVCAo
UFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8gbWFrZSA0TUIgb3IgMk1CIHBh
Z2VzKQotICogIC0gNiBkaXJ0eQotICogIC0gNSBhY2Nlc3NlZAotICogIC0gNCBwYWdlIGNhY2hl
ZCBkaXNhYmxlZAotICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gKLSAqICAtIDIgdXNlcnNwYWNl
IGFjY2Vzc2libGUKLSAqICAtIDEgd3JpdGVhYmxlCi0gKiAgLSAwIHByZXNlbnQKLSAqCi0gKiAg
VGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhlIGRlZmF1bHQgbGF5b3V0IGlz
IHRoZSBQQUdFX1BTRQotICogIGFsc28gY2FsbGVkIFBBR0VfUEFUKS4gVGhlIE1NVUVYVF9bVU5d
TUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCi0gKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2Vy
dmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBiZSA0TUIKLSAqICAob3IgMk1C
KSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCi0gKgotICogIFRoZSByZWFzb24g
dGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRv
IFhlbgotICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0ZSBUYWJsZSAoUEFUKSBiaXQg
LSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKLSAqICByZWZlciB0byBJbnRlbCBTRE0gMTAuMTIu
IFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRyaWJ1dGVzIG9mCi0gKiAgcGFn
ZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KLSAqCi0gKiAgVGhlIFBBVCBNU1IgaXMgYXMgZm9s
bG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkgaXMgOCBiaXRzKToKLSAqICAg
ICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQQVQwCi0gKiAgKy0tLS0tKy0t
LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKLSAqICB8IFVDICB8IFVDLSB8IFdD
IHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgKLSAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICogIHwgVUMgIHwgVUMtIHwgV1QgfCBX
QiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZhdWx0IHdoZW4gbWFjaGluZSBi
b290cykKLSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwot
ICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBYZW4K
LSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICoKLSAq
ICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0byBsb29raW5nIHVw
Ci0gKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVudHJ5OgotICoKLSAqICBQQVQv
UFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0IDMpLgotICoKLSAqICBJZiBh
bGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQwLiBJZiBiaXQgMyB0dXJuZWQg
b24sCi0gKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0IDMgYW5kIGJpdCA0LCB0aGVu
IFBBVDIuLgotICoKLSAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExpbnV4IFBBVDEgdHJhbnNsYXRl
cyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKLSAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhh
dCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQot
ICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQgZW50cnkuIE1lYW5pbmcgdGhh
dCBCaXQgNyAoUEFHRV9QQVQpIGlzCi0gKiAgc2V0LiBGb3IgZXhhbXBsZSwgdW5kZXIgTGludXgg
aXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0aGUKLSAqICBjYWNoaW5nIGFz
OgotICoKLSAqICAgV0IgPSBub25lIChzbyBQQVQwKQotICogICBXQyA9IFBXVCAoYml0IDMgb24p
Ci0gKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUgb24pLgotICoKLSAqIFRvIG1h
a2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMg
c286Ci0gKgotICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQgKHNvIGJpdCA3IGlzIG9uKSBh
bmQgY2xlYXIgYml0IDMKLSAqCi0gKiBBbmQgdG8gdHJhbnNsYXRlIGJhY2sgaXQgd291bGQ6Ci0g
KgotICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQgNy4K
LSAqLwotI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAgIDAgLyogY2hlY2tlZCAnKnB0
ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLwotI2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRF
ICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZvciAqLwotI2Rl
ZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZh
bCB8ICgqcHRyJihBfEQpKSAqLwotCi0vKgotICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMKLSAq
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4
dF9vcF90IHVvcHNbXSwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50LAotICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLAotICog
YCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkKLSAqLwotLyog
SFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVleHRfb3Agc3RydWN0
dXJlcy4KLSAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZpZWQgKG9yIERPTUlEX1NF
TEYgZm9yIG5vbmUpLgotICogV2hlcmUgdGhlIEZEIGhhcyBzb21lIGVmZmVjdCwgaXQgaXMgZGVz
Y3JpYmVkIGJlbG93LgotICoKLSAqIGNtZDogTU1VRVhUXyhVTilQSU5fKl9UQUJMRQotICogbWZu
OiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLgot
ICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lm
aWVkLgotICoKLSAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCi0gKiBtZm46IE1hY2hpbmUgZnJh
bWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCi0gKgot
ICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldCi0gKiBtZm46IE1h
Y2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBN
TVUKLSAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgotICoKLSAqIGNtZDogTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwgVExC
LgotICoKLSAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAotICogbGluZWFyX2FkZHI6IExpbmVh
ciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9NVUxUSQotICogdmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9m
IFZDUFVzIHRvIGJlIGZsdXNoZWQuCi0gKgotICogY21kOiBNTVVFWFRfSU5WTFBHX01VTFRJCi0g
KiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZC4KLSAqIHZjcHVtYXNr
OiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVzaGVkLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9BTEwKLSAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVz
IGFsbCBWQ1BVcycgVExCcy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMCi0gKiBsaW5l
YXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExC
cy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQotICogTm8gYWRkaXRpb25hbCBhcmd1
bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLgotICoKLSAqIGNt
ZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzCi0gKiBvbiBhbGwgQ1BVcyBp
biB0aGUgc3lzdGVtLgotICoKLSAqIGNtZDogTU1VRVhUX1NFVF9MRFQKLSAqIGxpbmVhcl9hZGRy
OiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4K
LSAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4KLSAqCi0gKiBjbWQ6IE1NVUVY
VF9DTEVBUl9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQu
Ci0gKgotICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgotICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBu
dW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgotICoKLSAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NV
UEVSCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRv
IGJlIFt1bl1tYXJrZWQuCi0gKi8KLS8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8KLSNkZWZpbmUg
TU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKLSNkZWZpbmUgTU1VRVhUX1BJTl9MMl9UQUJMRSAg
ICAgIDEKLSNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAgIDIKLSNkZWZpbmUgTU1VRVhU
X1BJTl9MNF9UQUJMRSAgICAgIDMKLSNkZWZpbmUgTU1VRVhUX1VOUElOX1RBQkxFICAgICAgIDQK
LSNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKLSNkZWZpbmUgTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTCAgIDYKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19MT0NBTCAgICAgIDcKLSNkZWZp
bmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxU
SSAgICAgIDkKLSNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTAKLSNkZWZpbmUgTU1V
RVhUX0lOVkxQR19BTEwgICAgICAgMTEKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAg
MTIKLSNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMKLSNkZWZpbmUgTU1VRVhUX05F
V19VU0VSX0JBU0VQVFIgMTUKLSNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYKLSNk
ZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NB
Q0hFX0dMT0JBTCAxOAotI2RlZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQotI2RlZmlu
ZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAotLyogYCB9ICovCi0KLSNpZm5kZWYgX19BU1NF
TUJMWV9fCi1zdHJ1Y3QgbW11ZXh0X29wIHsKLSAgICB1bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBl
bnVtIG1tdWV4dF9jbWQgKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIC8qIFtVTl1QSU5fVEFCTEUs
IE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCi0gICAgICAgICAqIENMRUFSX1BBR0UsIENP
UFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KLSAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47Ci0g
ICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLwotICAgICAgICBV
TE9OR19QVFIgbGluZWFyX2FkZHI7Ci0gICAgfSBhcmcxOwotICAgIHVuaW9uIHsKLSAgICAgICAg
LyogU0VUX0xEVCAqLwotICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsKLSAgICAgICAgLyog
VExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDUKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lk
KSB2Y3B1bWFzazsKLSNlbHNlCi0gICAgICAgIGNvbnN0IHZvaWQgKnZjcHVtYXNrOwotI2VuZGlm
Ci0gICAgICAgIC8qIENPUFlfUEFHRSAqLwotICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKLSAg
ICB9IGFyZzI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOwotI2VuZGlmCi0KLS8qCi0gKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdf
UFRSIHZhLCB1NjQgdmFsLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g
dXZtX2ZsYWdzIGZsYWdzKQotICogYAotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBF
UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0IHZh
bCwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2
bV9mbGFncyBmbGFncywKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb21pZF90IGRvbWlkKQotICogYAotICogYCBAdmE6IFRoZSB2aXJ0dWFsIGFkZHJlc3Mg
d2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQotICogYCBAdmFsOiBUaGUgbmV3IHBhZ2Ug
dGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRkcmVzcwotICogYCBAZmxhZ3M6
IENvbnRyb2wgVExCIGZsdXNoZXMKLSAqLwotLyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3Mn
IHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVkLiAqLwotLyogV2hlbiBzcGVj
aWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4g
ICAqLwotLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRt
YXAgcG9pbnRlci4gICAgICAgICAqLwotLyogYCBlbnVtIHV2bV9mbGFncyB7ICovCi0jZGVmaW5l
IFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5vIGZsdXNoaW5nIGF0IGFsbC4g
ICAqLwotI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAoMVVMPDwwKSAvKiBGbHVzaCBl
bnRpcmUgVExCKHMpLiAgKi8KLSNkZWZpbmUgVVZNRl9JTlZMUEcgICAgICAgICAgICAgKDJVTDw8
MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCi0jZGVmaW5lIFVWTUZfRkxVU0hUWVBFX01B
U0sgICAgICgzVUw8PDApCi0jZGVmaW5lIFVWTUZfTVVMVEkgICAgICAgICAgICAgICgwVUw8PDIp
IC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLwotI2RlZmluZSBVVk1GX0xPQ0FMICAgICAgICAg
ICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAgKi8KLSNkZWZpbmUgVVZNRl9B
TEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxsIFRMQnMuICAgICAgICovCi0v
KiBgIH0gKi8KLQotLyoKLSAqIENvbW1hbmRzIHRvIEhZUEVSVklTT1JfY29uc29sZV9pbygpLgot
ICovCi0jZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAKLSNkZWZpbmUgQ09OU09MRUlP
X3JlYWQgICAgICAgICAgMQotCi0vKgotICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl92bV9hc3Np
c3QoKS4KLSAqLwotI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAgICAgICAgICAgICAgICAwCi0j
ZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAgIDEKLQotLyogeDg2LzMyIGd1
ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMuICovCi0jZGVmaW5lIFZNQVNT
VF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKLQotLyogeDg2LzMyIGd1ZXN0czogdHJhcCAo
dmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1c2VkLiAqLwotI2RlZmluZSBW
TUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCi0KLS8qCi0gKiB4ODYgZ3Vlc3RzOiBz
dXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KLSAqIE5CMS4gUGFnZS1kaXJlY3Rv
cnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KLSAqIE5CMi4gR3Vlc3QgbXVzdCBjb250aW51
ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBURXMuCi0gKi8KLSNkZWZpbmUg
Vk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgotCi0vKiB4ODYvUEFFIGd1ZXN0czog
c3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCi0jZGVmaW5lIFZNQVNTVF9UWVBFX3BhZV9leHRl
bmRlZF9jcjMgICAgIDMKLQotI2RlZmluZSBNQVhfVk1BU1NUX1RZUEUgICAgICAgICAgICAgICAg
ICAzCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgdWludDE2X3QgZG9taWRfdDsK
LQotLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZFRCBjYW5ub3QgYmUgdXNlZCBm
b3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KLSNkZWZpbmUgRE9NSURfRklSU1RfUkVTRVJWRUQgKDB4
N0ZGMFUpCi0KLS8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0YWluIGNvbnRleHRzIHRvIHJl
ZmVyIHRvIG9uZXNlbGYuICovCi0jZGVmaW5lIERPTUlEX1NFTEYgKDB4N0ZGMFUpCi0KLS8qCi0g
KiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFibGUgdXBkYXRlcyB0byBtYXBw
aW5nIEkvTyBtZW1vcnkuCi0gKiBBbHRob3VnaCBubyBGb3JlaWduIERvbWFpbiBuZWVkIGJlIHNw
ZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTwotICogaXMgdXNlZnVsIHRvIGVuc3Vy
ZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFwIGFyZSBhY2NpZGVudGFsbHkK
LSAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291bGQgY2F1c2UgaGF2b2MgYXMg
cmVmZXJlbmNlIGNvdW50cwotICogYXJlbid0IGFkanVzdGVkIG9uIHRoZSBJL08tbWFwcGluZyBj
b2RlIHBhdGgpLgotICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIE1NVUVYVF9TRVRfRk9SRUlH
TkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KLSAqIGJlIHNwZWNpZmllZCBieSBhbnkgY2Fs
bGluZyBkb21haW4uCi0gKi8KLSNkZWZpbmUgRE9NSURfSU8gICAoMHg3RkYxVSkKLQotLyoKLSAq
IERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0byBtYXAgcmVz
dHJpY3RlZCBwYXJ0cyBvZgotICogWGVuJ3MgaGVhcCBzcGFjZSAoZS5nLiwgdGhlIG1hY2hpbmVf
dG9fcGh5cyB0YWJsZSkuCi0gKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NFVF9G
T1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKLSAqIHRoZSBjYWxsZXIgaXMgcHJp
dmlsZWdlZC4KLSAqLwotI2RlZmluZSBET01JRF9YRU4gICgweDdGRjJVKQotCi0vKgotICogRE9N
SURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxlIHBhZ2VzICovCi0jZGVmaW5l
IERPTUlEX0NPVyAgKDB4N0ZGM1UpCi0KLS8qIERPTUlEX0lOVkFMSUQgaXMgdXNlZCB0byBpZGVu
dGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCi0jZGVmaW5lIERPTUlEX0lOVkFMSUQg
KDB4N0ZGNFUpCi0KLS8qIElkbGUgZG9tYWluLiAqLwotI2RlZmluZSBET01JRF9JRExFICgweDdG
RkZVKQotCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX21tdV91
cGRhdGUoKS4KLSAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFsIHBvaW50ZXIvYWRkcmVzcyBz
aXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KLSAqLwotc3RydWN0IG1tdV91cGRhdGUgewotICAg
IHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNzIG9mIFBURS4gKi8KLSAgICB1
aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQVEUuICAgICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtbXVfdXBkYXRlX3QpOwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBI
WVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBjYWxsX2xpc3RbXSwKLSAqIGAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfY2FsbHMpOwotICoKLSAqIE5CLiBUaGUg
ZmllbGRzIGFyZSBsb2dpY2FsbHkgdGhlIG5hdHVyYWwgcmVnaXN0ZXIgc2l6ZSBmb3IgdGhpcwot
ICogYXJjaGl0ZWN0dXJlLiBJbiBjYXNlcyB3aGVyZSB4ZW5fdWxvbmdfdCBpcyBsYXJnZXIgdGhh
biB0aGlzIHRoZW4KLSAqIGFueSB1bnVzZWQgYml0cyBpbiB0aGUgdXBwZXIgcG9ydGlvbiBtdXN0
IGJlIHplcm8uCi0gKi8KLXN0cnVjdCBtdWx0aWNhbGxfZW50cnkgewotICAgIHhlbl91bG9uZ190
IG9wLCByZXN1bHQ7Ci0gICAgeGVuX3Vsb25nX3QgYXJnc1s2XTsKLX07Ci10eXBlZGVmIHN0cnVj
dCBtdWx0aWNhbGxfZW50cnkgbXVsdGljYWxsX2VudHJ5X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtdWx0aWNhbGxfZW50cnlfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9f
IDwgMHgwMDA0MDQwMAotLyoKLSAqIEV2ZW50IGNoYW5uZWwgZW5kcG9pbnRzIHBlciBkb21haW4g
KHdoZW4gdXNpbmcgdGhlIDItbGV2ZWwgQUJJKToKLSAqICAxMDI0IGlmIGEgTE9OR19QVFIgaXMg
MzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRSIGlzIDY0IGJpdHMuCi0gKi8KLSNkZWZpbmUgTlJf
RVZFTlRfQ0hBTk5FTFMgRVZUQ0hOXzJMX05SX0NIQU5ORUxTCi0jZW5kaWYKLQotc3RydWN0IHZj
cHVfdGltZV9pbmZvIHsKLSAgICAvKgotICAgICAqIFVwZGF0ZXMgdG8gdGhlIGZvbGxvd2luZyB2
YWx1ZXMgYXJlIHByZWNlZGVkIGFuZCBmb2xsb3dlZCBieSBhbgotICAgICAqIGluY3JlbWVudCBv
ZiAndmVyc2lvbicuIFRoZSBndWVzdCBjYW4gdGhlcmVmb3JlIGRldGVjdCB1cGRhdGVzIGJ5Ci0g
ICAgICogbG9va2luZyBmb3IgY2hhbmdlcyB0byAndmVyc2lvbicuIElmIHRoZSBsZWFzdC1zaWdu
aWZpY2FudCBiaXQgb2YKLSAgICAgKiB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IHRoZW4gYW4g
dXBkYXRlIGlzIGluIHByb2dyZXNzIGFuZCB0aGUgZ3Vlc3QKLSAgICAgKiBtdXN0IHdhaXQgdG8g
cmVhZCBhIGNvbnNpc3RlbnQgc2V0IG9mIHZhbHVlcy4KLSAgICAgKiBUaGUgY29ycmVjdCB3YXkg
dG8gaW50ZXJhY3Qgd2l0aCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2ltaWxhciB0bwotICAgICAq
IExpbnV4J3Mgc2VxbG9jazogc2VlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgcmVhZF9zZXFiZWdp
bi9yZWFkX3NlcXJldHJ5LgotICAgICAqLwotICAgIHVpbnQzMl90IHZlcnNpb247Ci0gICAgdWlu
dDMyX3QgcGFkMDsKLSAgICB1aW50NjRfdCB0c2NfdGltZXN0YW1wOyAgIC8qIFRTQyBhdCBsYXN0
IHVwZGF0ZSBvZiB0aW1lIHZhbHMuICAqLwotICAgIHVpbnQ2NF90IHN5c3RlbV90aW1lOyAgICAg
LyogVGltZSwgaW4gbmFub3NlY3MsIHNpbmNlIGJvb3QuICAgICovCi0gICAgLyoKLSAgICAgKiBD
dXJyZW50IHN5c3RlbSB0aW1lOgotICAgICAqICAgc3lzdGVtX3RpbWUgKwotICAgICAqICAgKCgo
KHRzYyAtIHRzY190aW1lc3RhbXApIDw8IHRzY19zaGlmdCkgKiB0c2NfdG9fc3lzdGVtX211bCkg
Pj4gMzIpCi0gICAgICogQ1BVIGZyZXF1ZW5jeSAoSHopOgotICAgICAqICAgKCgxMF45IDw8IDMy
KSAvIHRzY190b19zeXN0ZW1fbXVsKSA+PiB0c2Nfc2hpZnQKLSAgICAgKi8KLSAgICB1aW50MzJf
dCB0c2NfdG9fc3lzdGVtX211bDsKLSAgICBpbnQ4X3QgICB0c2Nfc2hpZnQ7Ci0gICAgaW50OF90
ICAgcGFkMVszXTsKLX07IC8qIDMyIGJ5dGVzICovCi10eXBlZGVmIHN0cnVjdCB2Y3B1X3RpbWVf
aW5mbyB2Y3B1X3RpbWVfaW5mb190OwotCi1zdHJ1Y3QgdmNwdV9pbmZvIHsKLSAgICAvKgotICAg
ICAqICdldnRjaG5fdXBjYWxsX3BlbmRpbmcnIGlzIHdyaXR0ZW4gbm9uLXplcm8gYnkgWGVuIHRv
IGluZGljYXRlCi0gICAgICogYSBwZW5kaW5nIG5vdGlmaWNhdGlvbiBmb3IgYSBwYXJ0aWN1bGFy
IFZDUFUuIEl0IGlzIHRoZW4gY2xlYXJlZCAKLSAgICAgKiBieSB0aGUgZ3Vlc3QgT1MgL2JlZm9y
ZS8gY2hlY2tpbmcgZm9yIHBlbmRpbmcgd29yaywgdGh1cyBhdm9pZGluZwotICAgICAqIGEgc2V0
LWFuZC1jaGVjayByYWNlLiBOb3RlIHRoYXQgdGhlIG1hc2sgaXMgb25seSBhY2Nlc3NlZCBieSBY
ZW4KLSAgICAgKiBvbiB0aGUgQ1BVIHRoYXQgaXMgY3VycmVudGx5IGhvc3RpbmcgdGhlIFZDUFUu
IFRoaXMgbWVhbnMgdGhhdCB0aGUKLSAgICAgKiBwZW5kaW5nIGFuZCBtYXNrIGZsYWdzIGNhbiBi
ZSB1cGRhdGVkIGJ5IHRoZSBndWVzdCB3aXRob3V0IHNwZWNpYWwKLSAgICAgKiBzeW5jaHJvbmlz
YXRpb24gKGkuZS4sIG5vIG5lZWQgZm9yIHRoZSB4ODYgTE9DSyBwcmVmaXgpLgotICAgICAqIFRo
aXMgbWF5IHNlZW0gc3Vib3B0aW1hbCBiZWNhdXNlIGlmIHRoZSBwZW5kaW5nIGZsYWcgaXMgc2V0
IGJ5Ci0gICAgICogYSBkaWZmZXJlbnQgQ1BVIHRoZW4gYW4gSVBJIG1heSBiZSBzY2hlZHVsZWQg
ZXZlbiB3aGVuIHRoZSBtYXNrCi0gICAgICogaXMgc2V0LiBIb3dldmVyLCBub3RlOgotICAgICAq
ICAxLiBUaGUgdGFzayBvZiAnaW50ZXJydXB0IGhvbGRvZmYnIGlzIGNvdmVyZWQgYnkgdGhlIHBl
ci1ldmVudC0KLSAgICAgKiAgICAgY2hhbm5lbCBtYXNrIGJpdHMuIEEgJ25vaXN5JyBldmVudCB0
aGF0IGlzIGNvbnRpbnVhbGx5IGJlaW5nCi0gICAgICogICAgIHRyaWdnZXJlZCBjYW4gYmUgbWFz
a2VkIGF0IHNvdXJjZSBhdCB0aGlzIHZlcnkgcHJlY2lzZQotICAgICAqICAgICBncmFudWxhcml0
eS4KLSAgICAgKiAgMi4gVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgcGVyLVZDUFUgbWFzayBpcyB0
aGVyZWZvcmUgdG8gcmVzdHJpY3QKLSAgICAgKiAgICAgcmVlbnRyYW50IGV4ZWN1dGlvbjogd2hl
dGhlciBmb3IgY29uY3VycmVuY3kgY29udHJvbCwgb3IgdG8KLSAgICAgKiAgICAgcHJldmVudCB1
bmJvdW5kZWQgc3RhY2sgdXNhZ2UuIFdoYXRldmVyIHRoZSBwdXJwb3NlLCB3ZSBleHBlY3QKLSAg
ICAgKiAgICAgdGhhdCB0aGUgbWFzayB3aWxsIGJlIGFzc2VydGVkIG9ubHkgZm9yIHNob3J0IHBl
cmlvZHMgYXQgYSB0aW1lLAotICAgICAqICAgICBhbmQgc28gdGhlIGxpa2VsaWhvb2Qgb2YgYSAn
c3B1cmlvdXMnIElQSSBpcyBzdWl0YWJseSBzbWFsbC4KLSAgICAgKiBUaGUgbWFzayBpcyByZWFk
IGJlZm9yZSBtYWtpbmcgYW4gZXZlbnQgdXBjYWxsIHRvIHRoZSBndWVzdDogYQotICAgICAqIG5v
bi16ZXJvIG1hc2sgdGhlcmVmb3JlIGd1YXJhbnRlZXMgdGhhdCB0aGUgVkNQVSB3aWxsIG5vdCBy
ZWNlaXZlCi0gICAgICogYW4gdXBjYWxsIGFjdGl2YXRpb24uIFRoZSBtYXNrIGlzIGNsZWFyZWQg
d2hlbiB0aGUgVkNQVSByZXF1ZXN0cwotICAgICAqIHRvIGJsb2NrOiB0aGlzIGF2b2lkcyB3YWtl
dXAtd2FpdGluZyByYWNlcy4KLSAgICAgKi8KLSAgICB1aW50OF90IGV2dGNobl91cGNhbGxfcGVu
ZGluZzsKLSNpZmRlZiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSwotICAgIHVpbnQ4X3QgZXZ0Y2hu
X3VwY2FsbF9tYXNrOwotI2Vsc2UgLyogWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sgKi8KLSAgICB1
aW50OF90IHBhZDA7Ci0jZW5kaWYgLyogWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sgKi8KLSAgICB4
ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGluZ19zZWw7Ci0gICAgc3RydWN0IGFyY2hfdmNwdV9pbmZv
IGFyY2g7Ci0gICAgc3RydWN0IHZjcHVfdGltZV9pbmZvIHRpbWU7Ci19OyAvKiA2NCBieXRlcyAo
eDg2KSAqLwotI2lmbmRlZiBfX1hFTl9fCi10eXBlZGVmIHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9p
bmZvX3Q7Ci0jZW5kaWYKLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5X3NoYXJl
ZCBTdGFydC1vZi1kYXkgc2hhcmVkIGRhdGEgc3RydWN0dXJlCi0gKiBYZW4va2VybmVsIHNoYXJl
ZCBkYXRhIC0tIHBvaW50ZXIgcHJvdmlkZWQgaW4gc3RhcnRfaW5mby4KLSAqCi0gKiBUaGlzIHN0
cnVjdHVyZSBpcyBkZWZpbmVkIHRvIGJlIGJvdGggc21hbGxlciB0aGFuIGEgcGFnZSwgYW5kIHRo
ZQotICogb25seSBkYXRhIG9uIHRoZSBzaGFyZWQgcGFnZSwgYnV0IG1heSB2YXJ5IGluIGFjdHVh
bCBzaXplIGV2ZW4gd2l0aGluCi0gKiBjb21wYXRpYmxlIFhlbiB2ZXJzaW9uczsgZ3Vlc3RzIHNo
b3VsZCBub3QgcmVseSBvbiB0aGUgc2l6ZQotICogb2YgdGhpcyBzdHJ1Y3R1cmUgcmVtYWluaW5n
IGNvbnN0YW50LgotICovCi1zdHJ1Y3Qgc2hhcmVkX2luZm8gewotICAgIHN0cnVjdCB2Y3B1X2lu
Zm8gdmNwdV9pbmZvW1hFTl9MRUdBQ1lfTUFYX1ZDUFVTXTsKLQotICAgIC8qCi0gICAgICogQSBk
b21haW4gY2FuIGNyZWF0ZSAiZXZlbnQgY2hhbm5lbHMiIG9uIHdoaWNoIGl0IGNhbiBzZW5kIGFu
ZCByZWNlaXZlCi0gICAgICogYXN5bmNocm9ub3VzIGV2ZW50IG5vdGlmaWNhdGlvbnMuIFRoZXJl
IGFyZSB0aHJlZSBjbGFzc2VzIG9mIGV2ZW50IHRoYXQKLSAgICAgKiBhcmUgZGVsaXZlcmVkIGJ5
IHRoaXMgbWVjaGFuaXNtOgotICAgICAqICAxLiBCaS1kaXJlY3Rpb25hbCBpbnRlci0gYW5kIGlu
dHJhLWRvbWFpbiBjb25uZWN0aW9ucy4gRG9tYWlucyBtdXN0Ci0gICAgICogICAgIGFycmFuZ2Ug
b3V0LW9mLWJhbmQgdG8gc2V0IHVwIGEgY29ubmVjdGlvbiAodXN1YWxseSBieSBhbGxvY2F0aW5n
Ci0gICAgICogICAgIGFuIHVuYm91bmQgJ2xpc3RlbmVyJyBwb3J0IGFuZCBhdmVydGlzaW5nIHRo
YXQgdmlhIGEgc3RvcmFnZSBzZXJ2aWNlCi0gICAgICogICAgIHN1Y2ggYXMgeGVuc3RvcmUpLgot
ICAgICAqICAyLiBQaHlzaWNhbCBpbnRlcnJ1cHRzLiBBIGRvbWFpbiB3aXRoIHN1aXRhYmxlIGhh
cmR3YXJlLWFjY2VzcwotICAgICAqICAgICBwcml2aWxlZ2VzIGNhbiBiaW5kIGFuIGV2ZW50LWNo
YW5uZWwgcG9ydCB0byBhIHBoeXNpY2FsIGludGVycnVwdAotICAgICAqICAgICBzb3VyY2UuCi0g
ICAgICogIDMuIFZpcnR1YWwgaW50ZXJydXB0cyAoJ2V2ZW50cycpLiBBIGRvbWFpbiBjYW4gYmlu
ZCBhbiBldmVudC1jaGFubmVsCi0gICAgICogICAgIHBvcnQgdG8gYSB2aXJ0dWFsIGludGVycnVw
dCBzb3VyY2UsIHN1Y2ggYXMgdGhlIHZpcnR1YWwtdGltZXIKLSAgICAgKiAgICAgZGV2aWNlIG9y
IHRoZSBlbWVyZ2VuY3kgY29uc29sZS4KLSAgICAgKiAKLSAgICAgKiBFdmVudCBjaGFubmVscyBh
cmUgYWRkcmVzc2VkIGJ5IGEgInBvcnQgaW5kZXgiLiBFYWNoIGNoYW5uZWwgaXMKLSAgICAgKiBh
c3NvY2lhdGVkIHdpdGggdHdvIGJpdHMgb2YgaW5mb3JtYXRpb246Ci0gICAgICogIDEuIFBFTkRJ
TkcgLS0gbm90aWZpZXMgdGhlIGRvbWFpbiB0aGF0IHRoZXJlIGlzIGEgcGVuZGluZyBub3RpZmlj
YXRpb24KLSAgICAgKiAgICAgdG8gYmUgcHJvY2Vzc2VkLiBUaGlzIGJpdCBpcyBjbGVhcmVkIGJ5
IHRoZSBndWVzdC4KLSAgICAgKiAgMi4gTUFTSyAtLSBpZiB0aGlzIGJpdCBpcyBjbGVhciB0aGVu
IGEgMC0+MSB0cmFuc2l0aW9uIG9mIFBFTkRJTkcKLSAgICAgKiAgICAgd2lsbCBjYXVzZSBhbiBh
c3luY2hyb25vdXMgdXBjYWxsIHRvIGJlIHNjaGVkdWxlZC4gVGhpcyBiaXQgaXMgb25seQotICAg
ICAqICAgICB1cGRhdGVkIGJ5IHRoZSBndWVzdC4gSXQgaXMgcmVhZC1vbmx5IHdpdGhpbiBYZW4u
IElmIGEgY2hhbm5lbAotICAgICAqICAgICBiZWNvbWVzIHBlbmRpbmcgd2hpbGUgdGhlIGNoYW5u
ZWwgaXMgbWFza2VkIHRoZW4gdGhlICdlZGdlJyBpcyBsb3N0Ci0gICAgICogICAgIChpLmUuLCB3
aGVuIHRoZSBjaGFubmVsIGlzIHVubWFza2VkLCB0aGUgZ3Vlc3QgbXVzdCBtYW51YWxseSBoYW5k
bGUKLSAgICAgKiAgICAgcGVuZGluZyBub3RpZmljYXRpb25zIGFzIG5vIHVwY2FsbCB3aWxsIGJl
IHNjaGVkdWxlZCBieSBYZW4pLgotICAgICAqIAotICAgICAqIFRvIGV4cGVkaXRlIHNjYW5uaW5n
IG9mIHBlbmRpbmcgbm90aWZpY2F0aW9ucywgYW55IDAtPjEgcGVuZGluZwotICAgICAqIHRyYW5z
aXRpb24gb24gYW4gdW5tYXNrZWQgY2hhbm5lbCBjYXVzZXMgYSBjb3JyZXNwb25kaW5nIGJpdCBp
biBhCi0gICAgICogcGVyLXZjcHUgc2VsZWN0b3Igd29yZCB0byBiZSBzZXQuIEVhY2ggYml0IGlu
IHRoZSBzZWxlY3RvciBjb3ZlcnMgYQotICAgICAqICdDIExPTkdfUFRSJyBpbiB0aGUgUEVORElO
RyBiaXRmaWVsZCBhcnJheS4KLSAgICAgKi8KLSAgICB4ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGlu
Z1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07Ci0gICAgeGVuX3Vsb25nX3QgZXZ0Y2huX21hc2tb
c2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOwotCi0gICAgLyoKLSAgICAgKiBXYWxsY2xvY2sgdGlt
ZTogdXBkYXRlZCBvbmx5IGJ5IGNvbnRyb2wgc29mdHdhcmUuIEd1ZXN0cyBzaG91bGQgYmFzZQot
ICAgICAqIHRoZWlyIGdldHRpbWVvZmRheSgpIHN5c2NhbGwgb24gdGhpcyB3YWxsY2xvY2stYmFz
ZSB2YWx1ZS4KLSAgICAgKi8KLSAgICB1aW50MzJfdCB3Y192ZXJzaW9uOyAgICAgIC8qIFZlcnNp
b24gY291bnRlcjogc2VlIHZjcHVfdGltZV9pbmZvX3QuICovCi0gICAgdWludDMyX3Qgd2Nfc2Vj
OyAgICAgICAgICAvKiBTZWNzICAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8KLSAgICB1
aW50MzJfdCB3Y19uc2VjOyAgICAgICAgIC8qIE5zZWNzIDAwOjAwOjAwIFVUQywgSmFuIDEsIDE5
NzAuICAqLwotCi0gICAgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaDsKLQotfTsKLSNpZm5k
ZWYgX19YRU5fXwotdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVkX2luZm8gc2hhcmVkX2luZm9fdDsKLSNl
bmRpZgotCi0vKgotICogYGluY29udGVudHMgMjAwIHN0YXJ0b2ZkYXkgU3RhcnQtb2YtZGF5IG1l
bW9yeSBsYXlvdXQKLSAqCi0gKiAgMS4gVGhlIGRvbWFpbiBpcyBzdGFydGVkIHdpdGhpbiBjb250
aWd1b3VzIHZpcnR1YWwtbWVtb3J5IHJlZ2lvbi4KLSAqICAyLiBUaGUgY29udGlndW91cyByZWdp
b24gZW5kcyBvbiBhbiBhbGlnbmVkIDRNQiBib3VuZGFyeS4KLSAqICAzLiBUaGlzIHRoZSBvcmRl
ciBvZiBib290c3RyYXAgZWxlbWVudHMgaW4gdGhlIGluaXRpYWwgdmlydHVhbCByZWdpb246Ci0g
KiAgICAgIGEuIHJlbG9jYXRlZCBrZXJuZWwgaW1hZ2UKLSAqICAgICAgYi4gaW5pdGlhbCByYW0g
ZGlzayAgICAgICAgICAgICAgW21vZF9zdGFydCwgbW9kX2xlbl0KLSAqICAgICAgYy4gbGlzdCBv
ZiBhbGxvY2F0ZWQgcGFnZSBmcmFtZXMgW21mbl9saXN0LCBucl9wYWdlc10KLSAqICAgICAgICAg
KHVubGVzcyByZWxvY2F0ZWQgZHVlIHRvIFhFTl9FTEZOT1RFX0lOSVRfUDJNKQotICogICAgICBk
LiBzdGFydF9pbmZvX3Qgc3RydWN0dXJlICAgICAgICBbcmVnaXN0ZXIgRVNJICh4ODYpXQotICog
ICAgICBlLiBib290c3RyYXAgcGFnZSB0YWJsZXMgICAgICAgICBbcHRfYmFzZSBhbmQgQ1IzICh4
ODYpXQotICogICAgICBmLiBib290c3RyYXAgc3RhY2sgICAgICAgICAgICAgICBbcmVnaXN0ZXIg
RVNQICh4ODYpXQotICogIDQuIEJvb3RzdHJhcCBlbGVtZW50cyBhcmUgcGFja2VkIHRvZ2V0aGVy
LCBidXQgZWFjaCBpcyA0a0ItYWxpZ25lZC4KLSAqICA1LiBUaGUgaW5pdGlhbCByYW0gZGlzayBt
YXkgYmUgb21pdHRlZC4KLSAqICA2LiBUaGUgbGlzdCBvZiBwYWdlIGZyYW1lcyBmb3JtcyBhIGNv
bnRpZ3VvdXMgJ3BzZXVkby1waHlzaWNhbCcgbWVtb3J5Ci0gKiAgICAgbGF5b3V0IGZvciB0aGUg
ZG9tYWluLiBJbiBwYXJ0aWN1bGFyLCB0aGUgYm9vdHN0cmFwIHZpcnR1YWwtbWVtb3J5Ci0gKiAg
ICAgcmVnaW9uIGlzIGEgMToxIG1hcHBpbmcgdG8gdGhlIGZpcnN0IHNlY3Rpb24gb2YgdGhlIHBz
ZXVkby1waHlzaWNhbCBtYXAuCi0gKiAgNy4gQWxsIGJvb3RzdHJhcCBlbGVtZW50cyBhcmUgbWFw
cGVkIHJlYWQtd3JpdGFibGUgZm9yIHRoZSBndWVzdCBPUy4gVGhlCi0gKiAgICAgb25seSBleGNl
cHRpb24gaXMgdGhlIGJvb3RzdHJhcCBwYWdlIHRhYmxlLCB3aGljaCBpcyBtYXBwZWQgcmVhZC1v
bmx5LgotICogIDguIFRoZXJlIGlzIGd1YXJhbnRlZWQgdG8gYmUgYXQgbGVhc3QgNTEya0IgcGFk
ZGluZyBhZnRlciB0aGUgZmluYWwKLSAqICAgICBib290c3RyYXAgZWxlbWVudC4gSWYgbmVjZXNz
YXJ5LCB0aGUgYm9vdHN0cmFwIHZpcnR1YWwgcmVnaW9uIGlzCi0gKiAgICAgZXh0ZW5kZWQgYnkg
YW4gZXh0cmEgNE1CIHRvIGVuc3VyZSB0aGlzLgotICoKLSAqIE5vdGU6IFByaW9yIHRvIDI1ODMz
OmJiODViYmNjYjFjOS4gKCJ4ODYvMzItb24tNjQgYWRqdXN0IERvbTAgaW5pdGlhbCBwYWdlCi0g
KiB0YWJsZSBsYXlvdXQiKSBhIGJ1ZyBjYXVzZWQgdGhlIHB0X2Jhc2UgKDMuZSBhYm92ZSkgYW5k
IGNyMyB0byBub3QgcG9pbnQKLSAqIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3Vlc3QgcGFnZSB0YWJs
ZXMgKGl0IHdhcyBvZmZzZXQgYnkgdHdvIHBhZ2VzKS4KLSAqIFRoaXMgb25seSBtYW5pZmVzdGVk
IGl0c2VsZiBvbiAzMi1vbi02NCBkb20wIGtlcm5lbHMgYW5kIG5vdCAzMi1vbi02NCBkb21VCi0g
KiBvciA2NC1iaXQga2VybmVscyBvZiBhbnkgY29sb3VyLiBUaGUgcGFnZSB0YWJsZXMgZm9yIGEg
MzItb24tNjQgZG9tMCBnb3QKLSAqIGFsbG9jYXRlZCBpbiB0aGUgb3JkZXI6ICdmaXJzdCBMMScs
J2ZpcnN0IEwyJywgJ2ZpcnN0IEwzJywgc28gdGhlIG9mZnNldAotICogdG8gdGhlIHBhZ2UgdGFi
bGUgYmFzZSBpcyBieSB0d28gcGFnZXMgYmFjay4gVGhlIGluaXRpYWwgZG9tYWluIGlmIGl0IGlz
Ci0gKiAzMi1iaXQgYW5kIHJ1bnMgdW5kZXIgYSA2NC1iaXQgaHlwZXJ2aXNvciBzaG91bGQgX05P
VF8gdXNlIHR3byBvZiB0aGUKLSAqIHBhZ2VzIHByZWNlZGluZyBwdF9iYXNlIGFuZCBtYXJrIHRo
ZW0gYXMgcmVzZXJ2ZWQvdW51c2VkLgotICovCi0jaWZkZWYgWEVOX0hBVkVfUFZfR1VFU1RfRU5U
UlkKLXN0cnVjdCBzdGFydF9pbmZvIHsKLSAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBGSUxMRUQg
SU4gQk9USCBPTiBJTklUSUFMIEJPT1QgQU5EIE9OIFJFU1VNRS4gICAgKi8KLSAgICBjaGFyIG1h
Z2ljWzMyXTsgICAgICAgICAgICAgLyogInhlbi08dmVyc2lvbj4tPHBsYXRmb3JtPiIuICAgICAg
ICAgICAgKi8KLSAgICBVTE9OR19QVFIgbnJfcGFnZXM7ICAgICAvKiBUb3RhbCBwYWdlcyBhbGxv
Y2F0ZWQgdG8gdGhpcyBkb21haW4uICAqLwotICAgIFVMT05HX1BUUiBzaGFyZWRfaW5mbzsgIC8q
IE1BQ0hJTkUgYWRkcmVzcyBvZiBzaGFyZWQgaW5mbyBzdHJ1Y3QuICovCi0gICAgdWludDMyX3Qg
ZmxhZ3M7ICAgICAgICAgICAgIC8qIFNJRl94eHggZmxhZ3MuICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgeGVuX3Bmbl90IHN0b3JlX21mbjsgICAgICAgIC8qIE1BQ0hJTkUgcGFnZSBu
dW1iZXIgb2Ygc2hhcmVkIHBhZ2UuICAgICovCi0gICAgdWludDMyX3Qgc3RvcmVfZXZ0Y2huOyAg
ICAgIC8qIEV2ZW50IGNoYW5uZWwgZm9yIHN0b3JlIGNvbW11bmljYXRpb24uICovCi0gICAgdW5p
b24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgeGVuX3Bmbl90IG1mbjsgICAgICAv
KiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9mIGNvbnNvbGUgcGFnZS4gICAqLwotICAgICAgICAgICAg
dWludDMyX3QgIGV2dGNobjsgICAvKiBFdmVudCBjaGFubmVsIGZvciBjb25zb2xlIHBhZ2UuICAg
ICAgICAqLwotICAgICAgICB9IGRvbVU7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1
aW50MzJfdCBpbmZvX29mZjsgIC8qIE9mZnNldCBvZiBjb25zb2xlX2luZm8gc3RydWN0LiAgICAg
ICAgICovCi0gICAgICAgICAgICB1aW50MzJfdCBpbmZvX3NpemU7IC8qIFNpemUgb2YgY29uc29s
ZV9pbmZvIHN0cnVjdCBmcm9tIHN0YXJ0LiovCi0gICAgICAgIH0gZG9tMDsKLSAgICB9IGNvbnNv
bGU7Ci0gICAgLyogVEhFIEZPTExPV0lORyBBUkUgT05MWSBGSUxMRUQgSU4gT04gSU5JVElBTCBC
T09UIChOT1QgUkVTVU1FKS4gICAgICovCi0gICAgVUxPTkdfUFRSIHB0X2Jhc2U7ICAgICAgLyog
VklSVFVBTCBhZGRyZXNzIG9mIHBhZ2UgZGlyZWN0b3J5LiAgICAgKi8KLSAgICBVTE9OR19QVFIg
bnJfcHRfZnJhbWVzOyAvKiBOdW1iZXIgb2YgYm9vdHN0cmFwIHAudC4gZnJhbWVzLiAgICAgICAq
LwotICAgIFVMT05HX1BUUiBtZm5fbGlzdDsgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdl
LWZyYW1lIGxpc3QuICAgICovCi0gICAgVUxPTkdfUFRSIG1vZF9zdGFydDsgICAgLyogVklSVFVB
TCBhZGRyZXNzIG9mIHByZS1sb2FkZWQgbW9kdWxlICAgKi8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogKFBGTiBvZiBwcmUtbG9hZGVkIG1vZHVsZSBpZiAgICAgICAgICAgKi8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFNJRl9NT0RfU1RBUlRfUEZOIHNl
dCBpbiBmbGFncykuICAgICAgKi8KLSAgICBVTE9OR19QVFIgbW9kX2xlbjsgICAgICAvKiBTaXpl
IChieXRlcykgb2YgcHJlLWxvYWRlZCBtb2R1bGUuICAgICAqLwotI2RlZmluZSBNQVhfR1VFU1Rf
Q01ETElORSAxMDI0Ci0gICAgaW50OF90IGNtZF9saW5lW01BWF9HVUVTVF9DTURMSU5FXTsKLSAg
ICAvKiBUaGUgcGZuIHJhbmdlIGhlcmUgY292ZXJzIGJvdGggcGFnZSB0YWJsZSBhbmQgcC0+bSB0
YWJsZSBmcmFtZXMuICAgKi8KLSAgICBVTE9OR19QVFIgZmlyc3RfcDJtX3BmbjsvKiAxc3QgcGZu
IGZvcm1pbmcgaW5pdGlhbCBQLT5NIHRhYmxlLiAgICAqLwotICAgIFVMT05HX1BUUiBucl9wMm1f
ZnJhbWVzOy8qICMgb2YgcGZucyBmb3JtaW5nIGluaXRpYWwgUC0+TSB0YWJsZS4gICovCi19Owot
dHlwZWRlZiBzdHJ1Y3Qgc3RhcnRfaW5mbyBzdGFydF9pbmZvX3Q7Ci0KLS8qIE5ldyBjb25zb2xl
IHVuaW9uIGZvciBkb20wIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMy4gKi8KLSNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMwotI2RlZmluZSBjb25zb2xlX21mbiAgICBj
b25zb2xlLmRvbVUubWZuCi0jZGVmaW5lIGNvbnNvbGVfZXZ0Y2huIGNvbnNvbGUuZG9tVS5ldnRj
aG4KLSNlbmRpZgotI2VuZGlmIC8qIFhFTl9IQVZFX1BWX0dVRVNUX0VOVFJZICovCi0KLS8qIFRo
ZXNlIGZsYWdzIGFyZSBwYXNzZWQgaW4gdGhlICdmbGFncycgZmllbGQgb2Ygc3RhcnRfaW5mb190
LiAqLwotI2RlZmluZSBTSUZfUFJJVklMRUdFRCAgICAoMTw8MCkgIC8qIElzIHRoZSBkb21haW4g
cHJpdmlsZWdlZD8gKi8KLSNkZWZpbmUgU0lGX0lOSVRET01BSU4gICAgKDE8PDEpICAvKiBJcyB0
aGlzIHRoZSBpbml0aWFsIGNvbnRyb2wgZG9tYWluPyAqLwotI2RlZmluZSBTSUZfTVVMVElCT09U
X01PRCAoMTw8MikgIC8qIElzIG1vZF9zdGFydCBhIG11bHRpYm9vdCBtb2R1bGU/ICovCi0jZGVm
aW5lIFNJRl9NT0RfU1RBUlRfUEZOICgxPDwzKSAgLyogSXMgbW9kX3N0YXJ0IGEgUEZOPyAqLwot
I2RlZmluZSBTSUZfUE1fTUFTSyAgICAgICAoMHhGRjw8OCkgLyogcmVzZXJ2ZSAxIGJ5dGUgZm9y
IHhlbi1wbSBvcHRpb25zICovCi0KLS8qCi0gKiBBIG11bHRpYm9vdCBtb2R1bGUgaXMgYSBwYWNr
YWdlIGNvbnRhaW5pbmcgbW9kdWxlcyB2ZXJ5IHNpbWlsYXIgdG8gYQotICogbXVsdGlib290IG1v
ZHVsZSBhcnJheS4gVGhlIG9ubHkgZGlmZmVyZW5jZXMgYXJlOgotICogLSB0aGUgYXJyYXkgb2Yg
bW9kdWxlIGRlc2NyaXB0b3JzIGlzIGJ5IGNvbnZlbnRpb24gc2ltcGx5IGF0IHRoZSBiZWdpbm5p
bmcKLSAqICAgb2YgdGhlIG11bHRpYm9vdCBtb2R1bGUsCi0gKiAtIGFkZHJlc3NlcyBpbiB0aGUg
bW9kdWxlIGRlc2NyaXB0b3JzIGFyZSBiYXNlZCBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICog
ICBtdWx0aWJvb3QgbW9kdWxlLAotICogLSB0aGUgbnVtYmVyIG9mIG1vZHVsZXMgaXMgZGV0ZXJt
aW5lZCBieSBhIHRlcm1pbmF0aW9uIGRlc2NyaXB0b3IgdGhhdCBoYXMKLSAqICAgbW9kX3N0YXJ0
ID09IDAuCi0gKgotICogVGhpcyBwZXJtaXRzIHRvIGJvdGggYnVpbGQgaXQgc3RhdGljYWxseSBh
bmQgcmVmZXJlbmNlIGl0IGluIGEgY29uZmlndXJhdGlvbgotICogZmlsZSwgYW5kIGxldCB0aGUg
UFYgZ3Vlc3QgZWFzaWx5IHJlYmFzZSB0aGUgYWRkcmVzc2VzIHRvIHZpcnR1YWwgYWRkcmVzc2Vz
Ci0gKiBhbmQgYXQgdGhlIHNhbWUgdGltZSBjb3VudCB0aGUgbnVtYmVyIG9mIG1vZHVsZXMuCi0g
Ki8KLXN0cnVjdCB4ZW5fbXVsdGlib290X21vZF9saXN0Ci17Ci0gICAgLyogQWRkcmVzcyBvZiBm
aXJzdCBieXRlIG9mIHRoZSBtb2R1bGUgKi8KLSAgICB1aW50MzJfdCBtb2Rfc3RhcnQ7Ci0gICAg
LyogQWRkcmVzcyBvZiBsYXN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAoaW5jbHVzaXZlKSAqLwotICAg
IHVpbnQzMl90IG1vZF9lbmQ7Ci0gICAgLyogQWRkcmVzcyBvZiB6ZXJvLXRlcm1pbmF0ZWQgY29t
bWFuZCBsaW5lICovCi0gICAgdWludDMyX3QgY21kbGluZTsKLSAgICAvKiBVbnVzZWQsIG11c3Qg
YmUgemVybyAqLwotICAgIHVpbnQzMl90IHBhZDsKLX07Ci0vKgotICogYGluY29udGVudHMgMjAw
IHN0YXJ0b2ZkYXlfZG9tMF9jb25zb2xlIERvbTBfY29uc29sZQotICoKLSAqIFRoZSBjb25zb2xl
IHN0cnVjdHVyZSBpbiBzdGFydF9pbmZvLmNvbnNvbGUuZG9tMAotICoKLSAqIFRoaXMgc3RydWN0
dXJlIGluY2x1ZGVzIGEgdmFyaWV0eSBvZiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0bwotICogaGF2
ZSBhIHdvcmtpbmcgVkdBL1ZFU0EgY29uc29sZS4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgZG9tMF92
Z2FfY29uc29sZV9pbmZvIHsKLSAgICB1aW50OF90IHZpZGVvX3R5cGU7IC8qIERPTTBfVkdBX0NP
TlNPTEVfPz8/ICovCi0jZGVmaW5lIFhFTl9WR0FUWVBFX1RFWFRfTU9ERV8zIDB4MDMKLSNkZWZp
bmUgWEVOX1ZHQVRZUEVfVkVTQV9MRkIgICAgMHgyMwotI2RlZmluZSBYRU5fVkdBVFlQRV9FRklf
TEZCICAgICAweDcwCi0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAg
ICAvKiBGb250IGhlaWdodCwgaW4gcGl4ZWxzLiAqLwotICAgICAgICAgICAgdWludDE2X3QgZm9u
dF9oZWlnaHQ7Ci0gICAgICAgICAgICAvKiBDdXJzb3IgbG9jYXRpb24gKGNvbHVtbiwgcm93KS4g
Ki8KLSAgICAgICAgICAgIHVpbnQxNl90IGN1cnNvcl94LCBjdXJzb3JfeTsKLSAgICAgICAgICAg
IC8qIE51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIChkaW1lbnNpb25zIGluIGNoYXJhY3RlcnMp
LiAqLwotICAgICAgICAgICAgdWludDE2X3Qgcm93cywgY29sdW1uczsKLSAgICAgICAgfSB0ZXh0
X21vZGVfMzsKLQotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogV2lkdGggYW5kIGhl
aWdodCwgaW4gcGl4ZWxzLiAqLwotICAgICAgICAgICAgdWludDE2X3Qgd2lkdGgsIGhlaWdodDsK
LSAgICAgICAgICAgIC8qIEJ5dGVzIHBlciBzY2FuIGxpbmUuICovCi0gICAgICAgICAgICB1aW50
MTZfdCBieXRlc19wZXJfbGluZTsKLSAgICAgICAgICAgIC8qIEJpdHMgcGVyIHBpeGVsLiAqLwot
ICAgICAgICAgICAgdWludDE2X3QgYml0c19wZXJfcGl4ZWw7Ci0gICAgICAgICAgICAvKiBMRkIg
cGh5c2ljYWwgYWRkcmVzcywgYW5kIHNpemUgKGluIHVuaXRzIG9mIDY0a0IpLiAqLwotICAgICAg
ICAgICAgdWludDMyX3QgbGZiX2Jhc2U7Ci0gICAgICAgICAgICB1aW50MzJfdCBsZmJfc2l6ZTsK
LSAgICAgICAgICAgIC8qIFJHQiBtYXNrIG9mZnNldHMgYW5kIHNpemVzLCBhcyBkZWZpbmVkIGJ5
IFZCRSAxLjIrICovCi0gICAgICAgICAgICB1aW50OF90ICByZWRfcG9zLCByZWRfc2l6ZTsKLSAg
ICAgICAgICAgIHVpbnQ4X3QgIGdyZWVuX3BvcywgZ3JlZW5fc2l6ZTsKLSAgICAgICAgICAgIHVp
bnQ4X3QgIGJsdWVfcG9zLCBibHVlX3NpemU7Ci0gICAgICAgICAgICB1aW50OF90ICByc3ZkX3Bv
cywgcnN2ZF9zaXplOwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIw
NgotICAgICAgICAgICAgLyogVkVTQSBjYXBhYmlsaXRpZXMgKG9mZnNldCAweGEsIFZFU0EgY29t
bWFuZCAweDRmMDApLiAqLwotICAgICAgICAgICAgdWludDMyX3QgZ2JsX2NhcHM7Ci0gICAgICAg
ICAgICAvKiBNb2RlIGF0dHJpYnV0ZXMgKG9mZnNldCAweDAsIFZFU0EgY29tbWFuZCAweDRmMDEp
LiAqLwotICAgICAgICAgICAgdWludDE2X3QgbW9kZV9hdHRyczsKLSNlbmRpZgotICAgICAgICB9
IHZlc2FfbGZiOwotICAgIH0gdTsKLX0gZG9tMF92Z2FfY29uc29sZV9pbmZvX3Q7Ci0jZGVmaW5l
IHhlbl92Z2FfY29uc29sZV9pbmZvIGRvbTBfdmdhX2NvbnNvbGVfaW5mbwotI2RlZmluZSB4ZW5f
dmdhX2NvbnNvbGVfaW5mb190IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190Ci0KLXR5cGVkZWYgdWlu
dDhfdCB4ZW5fZG9tYWluX2hhbmRsZV90WzE2XTsKLQotLyogVHVybiBhIHBsYWluIG51bWJlciBp
bnRvIGEgQyBVTE9OR19QVFIgY29uc3RhbnQuICovCi0jZGVmaW5lIF9fbWtfdW5zaWduZWRfbG9u
Zyh4KSB4ICMjIFVMCi0jZGVmaW5lIG1rX3Vuc2lnbmVkX2xvbmcoeCkgX19ta191bnNpZ25lZF9s
b25nKHgpCi0KLV9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDgsICB1aW50OF90KTsKLV9f
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDE2LCB1aW50MTZfdCk7Ci1fX0RFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQzMiwgdWludDMyX3QpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1aW50NjQsIHVpbnQ2NF90KTsKLQotI2Vsc2UgLyogX19BU1NFTUJMWV9fICovCi0KLS8qIElu
IGFzc2VtYmx5IGNvZGUgd2UgY2Fubm90IHVzZSBDIG51bWVyaWMgY29uc3RhbnQgc3VmZml4ZXMu
ICovCi0jZGVmaW5lIG1rX3Vuc2lnbmVkX2xvbmcoeCkgeAotCi0jZW5kaWYgLyogIV9fQVNTRU1C
TFlfXyAqLwotCi0vKiBEZWZhdWx0IGRlZmluaXRpb25zIGZvciBtYWNyb3MgdXNlZCBieSBkb21j
dGwvc3lzY3RsLiAqLwotI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09M
U19fKQotCi0jaWZuZGVmIHVpbnQ2NF9hbGlnbmVkX3QKLSNkZWZpbmUgdWludDY0X2FsaWduZWRf
dCB1aW50NjRfdAotI2VuZGlmCi0jaWZuZGVmIFhFTl9HVUVTVF9IQU5ETEVfNjQKLSNkZWZpbmUg
WEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBYRU5fR1VFU1RfSEFORExFKG5hbWUpCi0jZW5kaWYK
LQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXN0cnVjdCB4ZW5jdGxfYml0bWFwIHsKLSAgICBYRU5f
R1VFU1RfSEFORExFXzY0KHVpbnQ4KSBiaXRtYXA7Ci0gICAgdWludDMyX3QgbnJfYml0czsKLX07
Ci0jZW5kaWYKLQotI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9U
T09MU19fKSAqLwotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX1hFTl9IX18gKi8KLQotLyoKLSAq
IExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtZmlsZS1zdHlsZTogIkJTRCIKLSAq
IGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6
IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaCBi
L2luY2x1ZGUveGVuL3hlbi9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMxNzg0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaApA
QCAtMCwwICsxLDIwIEBACisjaWZuZGVmIF9fWEVOX0VSUk5PX0hfXworI2RlZmluZSBfX1hFTl9F
UlJOT19IX18KKworI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorCisjaWZuZGVmIF9fQVNTRU1C
TFlfXworCisjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1ZSkgbmFtZSA9IFhFTl8jI25hbWUs
CitlbnVtIHsKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KK307CisKKyNlbHNlIC8qICFfX0FT
U0VNQkxZX18gKi8KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIC5lcXUgbmFtZSwg
WEVOXyMjbmFtZQorI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorCisjZW5kaWYgLyogX19BU1NF
TUJMWV9fICovCisKKyNlbmRpZiAvKiAgX19YRU5fRVJSTk9fSF9fICovCmRpZmYgLS1naXQgYS9z
cmMveGVuL2RyaXZlci5jIGIvc3JjL3hlbi9kcml2ZXIuYwppbmRleCBhNGU5MWFhLi43MTYzNjdj
IDEwMDY0NAotLS0gYS9zcmMveGVuL2RyaXZlci5jCisrKyBiL3NyYy94ZW4vZHJpdmVyLmMKQEAg
LTc2LDEwICs3NiwxMSBAQCBYZW5Ub3VjaCgKICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMp
KTsKIAogICAgIExvZ1ByaW50ZihMT0dfTEVWRUxfSU5GTywKLSAgICAgICAgICAgICAgIlhFTjog
JXUuJXUlc1xuIiwKKyAgICAgICAgICAgICAgIlhFTjogJXUuJXUlcyAoX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXyA9ICUwOHgpXG4iLAogICAgICAgICAgICAgICBNYWpvciwKICAgICAgICAgICAg
ICAgTWlub3IsCi0gICAgICAgICAgICAgIEV4dHJhKTsKKyAgICAgICAgICAgICAgRXh0cmEsCisg
ICAgICAgICAgICAgIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18pOwogfQogCiBzdGF0aWMgVk9J
RApkaWZmIC0tZ2l0IGEvc3JjL3hlbi9odm0uYyBiL3NyYy94ZW4vaHZtLmMKaW5kZXggM2UzZTEy
Yy4uYWVhZWRhZCAxMDA2NDQKLS0tIGEvc3JjL3hlbi9odm0uYworKysgYi9zcmMveGVuL2h2bS5j
CkBAIC0xNzEsMTMgKzE3MSwxMyBAQCBfX2NoZWNrUmV0dXJuCiBYRU5fQVBJCiBOVFNUQVRVUwog
SHZtU2V0RXZ0Y2huVXBjYWxsVmVjdG9yKAotICAgIElOICB1bnNpZ25lZCBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICB2Y3B1X2lkLAotICAgIElOICBVQ0hBUiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZWN0b3IKKyAgICBJTiAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAg
ICB2Y3B1X2lkLAorICAgIElOICBVQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rv
cgogICAgICkKIHsKLSAgICBzdHJ1Y3QgeGVuX2h2bV9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3Ig
b3A7Ci0gICAgTE9OR19QVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOwotICAg
IE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM7CisgICAgc3Ry
dWN0IHhlbl9odm1fZXZ0Y2huX3VwY2FsbF92ZWN0b3Igb3A7CisgICAgTE9OR19QVFIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzOwogCiAgICAgb3AudmNwdSA9IHZjcHVfaWQ7CiAgICAgb3AudmVjdG9y
ID0gVmVjdG9yOwpkaWZmIC0tZ2l0IGEvc3JjL3hlbi9oeXBlcmNhbGwuaCBiL3NyYy94ZW4vaHlw
ZXJjYWxsLmgKaW5kZXggMDY2N2IzMS4uYjIwMWQxMiAxMDA2NDQKLS0tIGEvc3JjL3hlbi9oeXBl
cmNhbGwuaAorKysgYi9zcmMveGVuL2h5cGVyY2FsbC5oCkBAIC0zMyw5ICszMywxMSBAQAogI2Rl
ZmluZSAgX1hFTl9IWVBFUkNBTExfSAogCiAjaW5jbHVkZSA8bnRkZGsuaD4KKwogI2luY2x1ZGUg
PHhlbi10eXBlcy5oPgogI2luY2x1ZGUgPHhlbi13YXJuaW5ncy5oPgotI2luY2x1ZGUgPHhlbi94
ZW4uaD4KKworI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KIAogZXh0ZXJuIE5UU1RBVFVTCiBIeXBl
cmNhbGxJbml0aWFsaXplKApkaWZmIC0tZ2l0IGEvc3JjL3hlbmJ1cy9jYWNoZS5jIGIvc3JjL3hl
bmJ1cy9jYWNoZS5jCmluZGV4IGUyYzgzYTguLjM2MjBmODggMTAwNjQ0Ci0tLSBhL3NyYy94ZW5i
dXMvY2FjaGUuYworKysgYi9zcmMveGVuYnVzL2NhY2hlLmMKQEAgLTMyLDEyICszMiwxMiBAQAog
I2luY2x1ZGUgPG50ZGRrLmg+CiAjaW5jbHVkZSA8bnRzdHJzYWZlLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+Ci0jaW5jbHVkZSA8dXRpbC5oPgogCiAjaW5jbHVkZSAidGhyZWFkLmgiCiAjaW5jbHVk
ZSAiY2FjaGUuaCIKICNpbmNsdWRlICJkYmdfcHJpbnQuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIK
KyNpbmNsdWRlICJ1dGlsLmgiCiAKIGV4dGVybiBVTE9ORwogTlRBUEkKZGlmZiAtLWdpdCBhL3Zz
MjAxMi94ZW4veGVuLnZjeHByb2ogYi92czIwMTIveGVuL3hlbi52Y3hwcm9qCmluZGV4IDllZmVh
ZjEuLmU3MTgzZTMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW4veGVuLnZjeHByb2oKKysrIGIvdnMy
MDEyL3hlbi94ZW4udmN4cHJvagpAQCAtMjQsNyArMjQsNyBAQAogCTxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPiAKIAogCTxQcm9wZXJ0eUdy
b3VwPgotCQk8SW5jbHVkZVBhdGg+Li5cLi5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5j
bHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5c
Li5caW5jbHVkZVx4ZW47Li5cLi5cc3JjXGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+CiAJCTxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwvUnVuQ29kZUFuYWx5c2lzPgogICAgICAgICA8
RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5hYmxlSW5mMmNhdD4KICAgICAgICAgPEN1c3RvbUJ1aWxk
QmVmb3JlVGFyZ2V0cz5DbENvbXBpbGU8L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KZGlmZiAt
LWdpdCBhL3ZzMjAxMi94ZW5idXMveGVuYnVzLnZjeHByb2ogYi92czIwMTIveGVuYnVzL3hlbmJ1
cy52Y3hwcm9qCmluZGV4IDNjMTg0ZTAuLjlhMWVjNjkgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW5i
dXMveGVuYnVzLnZjeHByb2oKKysrIGIvdnMyMDEyL3hlbmJ1cy94ZW5idXMudmN4cHJvagpAQCAt
MjQsNyArMjQsNyBAQAogCTxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPiAKIAogCTxQcm9wZXJ0eUdyb3VwPgotCQk8SW5jbHVkZVBhdGg+Li5c
Li5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4K
KwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5caW5jbHVkZVx4ZW47Li5cLi5cc3Jj
XGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CiAJCTxSdW5Db2RlQW5hbHlzaXM+
dHJ1ZTwvUnVuQ29kZUFuYWx5c2lzPgogICAgICAgICA8RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5h
YmxlSW5mMmNhdD4KICAgICAgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz5TdGFtcEluZjwv
Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPgpkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmZpbHQveGVu
ZmlsdC52Y3hwcm9qIGIvdnMyMDEyL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCmluZGV4IDA2ZTlk
YjUuLmFhNDM2NDMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi94ZW5maWx0L3hlbmZpbHQudmN4cHJvagor
KysgYi92czIwMTIveGVuZmlsdC94ZW5maWx0LnZjeHByb2oKQEAgLTI0LDcgKzI0LDcgQEAKIAk8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4g
CiAKIAk8UHJvcGVydHlHcm91cD4KLQkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5c
c3JjXGNvbW1vbjskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CisJCTxJbmNsdWRlUGF0aD4u
LlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVuOy4uXC4uXHNyY1xjb21tb247JChJbmNsdWRl
UGF0aCk8L0luY2x1ZGVQYXRoPgogCQk8UnVuQ29kZUFuYWx5c2lzPnRydWU8L1J1bkNvZGVBbmFs
eXNpcz4KIAkJPEVuYWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+CiAJCTxJbnREaXI+
Li5cJChQcm9qZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlcPC9JbnRE
aXI+CmRpZmYgLS1naXQgYS92czIwMTMveGVuL3hlbi52Y3hwcm9qIGIvdnMyMDEzL3hlbi94ZW4u
dmN4cHJvagppbmRleCA3YTA5OTYwLi43MTk0MWRiIDEwMDY0NAotLS0gYS92czIwMTMveGVuL3hl
bi52Y3hwcm9qCisrKyBiL3ZzMjAxMy94ZW4veGVuLnZjeHByb2oKQEAgLTU0LDcgKzU0LDYgQEAK
ICAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPFByb3BlcnR5
R3JvdXA+Ci0gICAgPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5cLi5cc3JjXGNvbW1vbjsk
KEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+CiAgICAgPFJ1bkNvZGVBbmFseXNpcz50cnVlPC9S
dW5Db2RlQW5hbHlzaXM+CiAgICAgPEVuYWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+
CiAgICAgPEludERpcj4uLlwkKFByb2plY3ROYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBs
YXRmb3JtKVw8L0ludERpcj4KQEAgLTcwLDEyICs2OSwxNiBAQAogICAgICAgICA8SW5wdXRzPi4u
XC4uXGluY2x1ZGVcdmVyc2lvbi5oeDwvSW5wdXRzPgogICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+
CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQo
V2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVu
Oy4uXC4uXHNyY1xjb21tb247JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
X01PRFVMRV9fPSJYRU4iO1BPT0xfTlhfT1BUSU49MTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8V2FybmluZ0xldmVsPkVuYWJsZUFs
bFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
NDcxMTs0NTQ4OzQ4MjA7NDY2ODs0MjU1OzYwMDE7NjA1NDsyODE5NjslKERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+CiAgICAgICA8TXVsdGlQcm9jZXNz
b3JDb21waWxhdGlvbj50cnVlPC9NdWx0aVByb2Nlc3NvckNvbXBpbGF0aW9uPgogICAgICAgPEVu
YWJsZVBSRWZhc3Q+dHJ1ZTwvRW5hYmxlUFJFZmFzdD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
UmVzb3VyY2VDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5c
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgogICAg
ICAgPEltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPmZhbHNlPC9JbWFnZUhhc1NhZmVFeGNl
cHRpb25IYW5kbGVycz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoRERLX0xJQl9Q
QVRIKS9saWJjbnRwci5saWI7JChEREtfTElCX1BBVEgpL2F1eF9rbGliLmxpYjslKEFkZGl0aW9u
YWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgpAQCAtOTIsMTIgKzk1LDYg
QEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2lu
MzInIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9f
aTM4Nl9fOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO19YODZfPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzIn
Ij4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxr
bTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA3IFJlbGVhc2V8V2luMzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVc
a207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+
JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxJbmY+CiAgICAgICA8QXJjaGl0ZWN0dXJlPng4Njwv
QXJjaGl0ZWN0dXJlPgpAQCAtMTA2LDEyICsxMDMsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj4KICAgICA8Q2xDb21waWxlPgogICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9feDg2XzY0X187JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk7X0FNRDY0XzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNlfHg2NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVk
ZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIERlYnVnfHg2
NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRl
XGttOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNlfHg2NCci
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdXaW5kb3dzIDcgRGVidWd8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8SW5mPgogICAg
ICAgPEFyY2hpdGVjdHVyZT5hbWQ2NDwvQXJjaGl0ZWN0dXJlPgpkaWZmIC0tZ2l0IGEvdnMyMDEz
L3hlbmJ1cy94ZW5idXMudmN4cHJvaiBiL3ZzMjAxMy94ZW5idXMveGVuYnVzLnZjeHByb2oKaW5k
ZXggZWNiNjAyYi4uNDk4OGQ3ZCAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbmJ1cy94ZW5idXMudmN4
cHJvagorKysgYi92czIwMTMveGVuYnVzL3hlbmJ1cy52Y3hwcm9qCkBAIC01NCw3ICs1NCw2IEBA
CiAgIDxJbXBvcnQgUHJvamVjdD0iLi5cdGFyZ2V0cy5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxQcm9wZXJ0
eUdyb3VwPgotICAgIDxJbmNsdWRlUGF0aD4uLlwuLlxpbmNsdWRlOy4uXC4uXHNyY1xjb21tb247
JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPgogICAgIDxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwv
UnVuQ29kZUFuYWx5c2lzPgogICAgIDxFbmFibGVJbmYyY2F0PmZhbHNlPC9FbmFibGVJbmYyY2F0
PgogICAgIDxJbnREaXI+Li5cJChQcm9qZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlcJChQ
bGF0Zm9ybSlcPC9JbnREaXI+CkBAIC03MSwxMSArNzAsMTUgQEAKICAgICA8L0N1c3RvbUJ1aWxk
U3RlcD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9f
TU9EVUxFX189IlhFTkJVUyI7UE9PTF9OWF9PUFRJTj0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4u
XGluY2x1ZGVceGVuOy4uXC4uXHNyY1xjb21tb247PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgogICAgICAgPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJuaW5nczwvV2FybmluZ0xldmVs
PgogICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7NDU0ODs0ODIwOzQ2Njg7NDI1
NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPgogICAgICAgPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRpb24+dHJ1ZTwvTXVs
dGlQcm9jZXNzb3JDb21waWxhdGlvbj4KICAgICAgIDxFbmFibGVQUkVmYXN0PnRydWU8L0VuYWJs
ZVBSRWZhc3Q+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8
L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRp
b25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CiAgICAgICA8
QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKFByb2plY3REaXIpLi5cJChDb25maWd1cmF0aW9uTmFt
ZSlcJChQbGF0Zm9ybSlceGVuLmxpYjskKERES19MSUJfUEFUSCkvbGliY250cHIubGliOyUoQWRk
aXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CkBAIC05MSwxMiAr
OTQsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSdXaW4zMiciPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X19pMzg2X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X1g4Nl88L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXxX
aW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2lu
MzInIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMici
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3xXaW4zMiciPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nk
a0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPEluZj4KICAgICAgIDxBcmNoaXRlY3R1cmU+eDg2PC9BcmNoaXRlY3R1
cmU+CkBAIC0xMDUsMTIgKzEwMiw2IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+X194ODZfNjRfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtf
QU1ENjRfPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
V2luZG93cyA4IFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyBWaXN0YSBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZp
c3RhIFJlbGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IFJl
bGVhc2V8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfHg2
NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3x4NjQnIj4kKFdp
bmRvd3NTZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgog
ICAgIDwvQ2xDb21waWxlPgogICAgIDxJbmY+CiAgICAgICA8QXJjaGl0ZWN0dXJlPmFtZDY0PC9B
cmNoaXRlY3R1cmU+CmRpZmYgLS1naXQgYS92czIwMTMveGVuZmlsdC94ZW5maWx0LnZjeHByb2og
Yi92czIwMTMveGVuZmlsdC94ZW5maWx0LnZjeHByb2oKaW5kZXggMTY2MjNjZS4uZWNmYWVjOCAx
MDA2NDQKLS0tIGEvdnMyMDEzL3hlbmZpbHQveGVuZmlsdC52Y3hwcm9qCisrKyBiL3ZzMjAxMy94
ZW5maWx0L3hlbmZpbHQudmN4cHJvagpAQCAtNTQsNyArNTQsNiBAQAogICA8SW1wb3J0IFByb2pl
Y3Q9Ii4uXHRhcmdldHMucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cD4KLSAgICA8SW5j
bHVkZVBhdGg+Li5cLi5caW5jbHVkZTsuLlwuLlxzcmNcY29tbW9uOyQoSW5jbHVkZVBhdGgpPC9J
bmNsdWRlUGF0aD4KICAgICA8UnVuQ29kZUFuYWx5c2lzPnRydWU8L1J1bkNvZGVBbmFseXNpcz4K
ICAgICA8RW5hYmxlSW5mMmNhdD5mYWxzZTwvRW5hYmxlSW5mMmNhdD4KICAgICA8SW50RGlyPi4u
XCQoUHJvamVjdE5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGly
PgpAQCAtNjMsMTEgKzYyLDE1IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENv
bXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19NT0RVTEVfXz0iWEVORklM
VCI7UE9PTF9OWF9PUFRJTj0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGluY2x1ZGVceGVuOy4u
XC4uXHNyY1xjb21tb247PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFdh
cm5pbmdMZXZlbD5FbmFibGVBbGxXYXJuaW5nczwvV2FybmluZ0xldmVsPgogICAgICAgPERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7NDU0ODs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7Mjgx
OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgog
ICAgICAgPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRpb24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21w
aWxhdGlvbj4KICAgICAgIDxFbmFibGVQUkVmYXN0PnRydWU8L0VuYWJsZVBSRWZhc3Q+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGls
ZT4KICAgICA8TGluaz4KICAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxz
ZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CiAgICAgICA8QWRkaXRpb25hbERlcGVu
ZGVuY2llcz4kKFByb2plY3REaXIpLi5cJChDb25maWd1cmF0aW9uTmFtZSlcJChQbGF0Zm9ybSlc
eGVuLmxpYjskKERES19MSUJfUEFUSCkvbGliY250cHIubGliOyUoQWRkaXRpb25hbERlcGVuZGVu
Y2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CkBAIC04MywxMiArODYsNiBAQAogICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgogICAg
IDxDbENvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19pMzg2X187JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X1g4Nl88L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXxXaW4zMiciPiQoV2luZG93
c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8V2luMzInIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzInIj4kKFdpbmRvd3NT
ZGtEaXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMiciPiQoV2luZG93c1Nka0Rp
cilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5j
bHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1dpbmRvd3MgOCBEZWJ1Z3xXaW4zMiciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxr
bTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAg
PEluZj4KICAgICAgIDxBcmNoaXRlY3R1cmU+eDg2PC9BcmNoaXRlY3R1cmU+CkBAIC05NywxMiAr
OTQsNiBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9
PSd4NjQnIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
Pl9feDg2XzY0X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7X0FNRDY0XzwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBSZWxlYXNl
fHg2NCciPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgVmlzdGEgRGVidWd8eDY0
JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNsdWRlXGttOzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCci
PiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBSZWxlYXNlfHg2NCciPiQoV2lu
ZG93c1Nka0RpcilcaW5jbHVkZVxrbTs8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgNyBEZWJ1Z3x4NjQnIj4kKFdpbmRvd3NTZGtE
aXIpXGluY2x1ZGVca207PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+JChXaW5kb3dzU2RrRGlyKVxpbmNs
dWRlXGttOzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8SW5mPgogICAgICAgPEFyY2hpdGVjdHVyZT5hbWQ2NDwvQXJjaGl0ZWN0dXJlPgotLSAK
Mi4xLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3
aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 18:14:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 18:14:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYexE-0004ph-0Y; Thu, 19 Mar 2015 18:14:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YYexC-0004p7-C5; Thu, 19 Mar 2015 18:13:58 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	1E/05-24808-5E11B055; Thu, 19 Mar 2015 18:13:57 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426788836!13677075!1
X-Originating-IP: [209.85.212.174]
X-SpamReason: No, hits=0.6 required=7.0 tests=HTML_40_50,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20831 invoked from network); 19 Mar 2015 18:13:56 -0000
Received: from mail-wi0-f174.google.com (HELO mail-wi0-f174.google.com)
	(209.85.212.174)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 18:13:56 -0000
Received: by wixw10 with SMTP id w10so76884239wix.0;
	Thu, 19 Mar 2015 11:13:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=hWui+tvEB6AjvkSFj7qtmOHTGS9TB193APmSYKMDXbs=;
	b=0JMUwEnuSqcWRPahaB/MQVSmoR9ibV2dBiM47sZclCEuAI7w6PbeefZfhjboKEhDfI
	t1xCvqofqqUONgTUvQjm0fqCyINBx6SMjmGDbsmDz5PH273xMXcZ/s0FkomrSXxxUaWz
	uM2R8Q+Gy7YVl9jlRA4QQo42C9FOQrq2XHfvAsSGEdzL8bM8EshJfXros5tASGwPJBC6
	LT74WA/tiT7NC7CJ0FTQMphqbklyY1cV4p8y80q9ed3XRag+FmGlW4YRojn5org43I9w
	JCxJG/RfBhJ8u9C5a/92Epxl1wC5EbehLlj22PXv3ri2VzFskQtrYAUSQGlnjK88Z0Kc
	8GvA==
X-Received: by 10.180.80.37 with SMTP id o5mr18210767wix.65.1426788836212;
	Thu, 19 Mar 2015 11:13:56 -0700 (PDT)
Received: from dhcp-3-49.uk.xensource.com ([185.25.64.249])
	by mx.google.com with ESMTPSA id z13sm2935900wjr.44.2015.03.19.11.13.54
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 19 Mar 2015 11:13:55 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <9DD0E8BD-6EB6-4BDD-AE5B-C3F6642293AC@gmail.com>
Date: Thu, 19 Mar 2015 18:13:55 +0000
To: xen-devel <xen-devel@lists.xen.org>, xen-api@lists.xenproject.org,
	mirageos-devel@xenproject.org, Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] Outreachy / OPW application deadline on March 24th
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0683827764656554057=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============0683827764656554057==
Content-Type: multipart/alternative; boundary="Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE"


--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi all,
I have not seen anyone applying for Outreachy or working on any small =
projects for Xen Project. But then I spot checked a number of mailing =
lists for other orgs participating and it has not been that different =
for the other projects I checked. It is possible that the name change is =
having a negative impact. In any case, if you do know of applicants, do =
point them to your list as well as
* http://wiki.xenproject.org/wiki/Outreachy/Round10 =
<http://wiki.xenproject.org/wiki/Outreachy/Round10>=20
* =
https://blog.xenproject.org/2015/03/18/xen-project-participates-in-outreac=
hy-formerly-opw/ =
<https://blog.xenproject.org/2015/03/18/xen-project-participates-in-outrea=
chy-formerly-opw/>=20
Best Regards
Lars=20=

--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Hi all,<div class=3D"">I have not seen anyone applying for =
Outreachy or working on any small projects for Xen Project. But then I =
spot checked a number of mailing lists for other orgs participating and =
it has not been that different for the other projects I checked. It is =
possible that the name change is having a negative impact. In any case, =
if you do know of applicants, do point them to your list as well =
as</div><div class=3D"">*&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Outreachy/Round10" =
class=3D"">http://wiki.xenproject.org/wiki/Outreachy/Round10</a>&nbsp;</di=
v><div class=3D"">*&nbsp;<a =
href=3D"https://blog.xenproject.org/2015/03/18/xen-project-participates-in=
-outreachy-formerly-opw/" =
class=3D"">https://blog.xenproject.org/2015/03/18/xen-project-participates=
-in-outreachy-formerly-opw/</a>&nbsp;</div><div class=3D"">Best =
Regards</div><div class=3D"">Lars&nbsp;</div></body></html>=

--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE--


--===============0683827764656554057==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0683827764656554057==--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 19 18:14:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 19 Mar 2015 18:14:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYexE-0004ph-0Y; Thu, 19 Mar 2015 18:14:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YYexC-0004p7-C5; Thu, 19 Mar 2015 18:13:58 +0000
Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id
	1E/05-24808-5E11B055; Thu, 19 Mar 2015 18:13:57 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426788836!13677075!1
X-Originating-IP: [209.85.212.174]
X-SpamReason: No, hits=0.6 required=7.0 tests=HTML_40_50,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20831 invoked from network); 19 Mar 2015 18:13:56 -0000
Received: from mail-wi0-f174.google.com (HELO mail-wi0-f174.google.com)
	(209.85.212.174)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Mar 2015 18:13:56 -0000
Received: by wixw10 with SMTP id w10so76884239wix.0;
	Thu, 19 Mar 2015 11:13:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=hWui+tvEB6AjvkSFj7qtmOHTGS9TB193APmSYKMDXbs=;
	b=0JMUwEnuSqcWRPahaB/MQVSmoR9ibV2dBiM47sZclCEuAI7w6PbeefZfhjboKEhDfI
	t1xCvqofqqUONgTUvQjm0fqCyINBx6SMjmGDbsmDz5PH273xMXcZ/s0FkomrSXxxUaWz
	uM2R8Q+Gy7YVl9jlRA4QQo42C9FOQrq2XHfvAsSGEdzL8bM8EshJfXros5tASGwPJBC6
	LT74WA/tiT7NC7CJ0FTQMphqbklyY1cV4p8y80q9ed3XRag+FmGlW4YRojn5org43I9w
	JCxJG/RfBhJ8u9C5a/92Epxl1wC5EbehLlj22PXv3ri2VzFskQtrYAUSQGlnjK88Z0Kc
	8GvA==
X-Received: by 10.180.80.37 with SMTP id o5mr18210767wix.65.1426788836212;
	Thu, 19 Mar 2015 11:13:56 -0700 (PDT)
Received: from dhcp-3-49.uk.xensource.com ([185.25.64.249])
	by mx.google.com with ESMTPSA id z13sm2935900wjr.44.2015.03.19.11.13.54
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 19 Mar 2015 11:13:55 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <9DD0E8BD-6EB6-4BDD-AE5B-C3F6642293AC@gmail.com>
Date: Thu, 19 Mar 2015 18:13:55 +0000
To: xen-devel <xen-devel@lists.xen.org>, xen-api@lists.xenproject.org,
	mirageos-devel@xenproject.org, Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] Outreachy / OPW application deadline on March 24th
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0683827764656554057=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============0683827764656554057==
Content-Type: multipart/alternative; boundary="Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE"


--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi all,
I have not seen anyone applying for Outreachy or working on any small =
projects for Xen Project. But then I spot checked a number of mailing =
lists for other orgs participating and it has not been that different =
for the other projects I checked. It is possible that the name change is =
having a negative impact. In any case, if you do know of applicants, do =
point them to your list as well as
* http://wiki.xenproject.org/wiki/Outreachy/Round10 =
<http://wiki.xenproject.org/wiki/Outreachy/Round10>=20
* =
https://blog.xenproject.org/2015/03/18/xen-project-participates-in-outreac=
hy-formerly-opw/ =
<https://blog.xenproject.org/2015/03/18/xen-project-participates-in-outrea=
chy-formerly-opw/>=20
Best Regards
Lars=20=

--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Hi all,<div class=3D"">I have not seen anyone applying for =
Outreachy or working on any small projects for Xen Project. But then I =
spot checked a number of mailing lists for other orgs participating and =
it has not been that different for the other projects I checked. It is =
possible that the name change is having a negative impact. In any case, =
if you do know of applicants, do point them to your list as well =
as</div><div class=3D"">*&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Outreachy/Round10" =
class=3D"">http://wiki.xenproject.org/wiki/Outreachy/Round10</a>&nbsp;</di=
v><div class=3D"">*&nbsp;<a =
href=3D"https://blog.xenproject.org/2015/03/18/xen-project-participates-in=
-outreachy-formerly-opw/" =
class=3D"">https://blog.xenproject.org/2015/03/18/xen-project-participates=
-in-outreachy-formerly-opw/</a>&nbsp;</div><div class=3D"">Best =
Regards</div><div class=3D"">Lars&nbsp;</div></body></html>=

--Apple-Mail=_EFA12547-CE7E-49CD-9504-49CFD8A9CBCE--


--===============0683827764656554057==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0683827764656554057==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 10:22:49 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 10:22:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYu4n-0004DM-4p; Fri, 20 Mar 2015 10:22:49 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YYu4l-0004DB-MP
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 10:22:48 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
	62/A0-30447-6F4FB055; Fri, 20 Mar 2015 10:22:46 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426846965!11755585!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17631 invoked from network); 20 Mar 2015 10:22:45 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 10:22:45 -0000
X-IronPort-AV: E=Sophos;i="5.11,435,1422921600"; d="scan'208,217";a="32981274"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzA
Date: Fri, 20 Mar 2015 10:22:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
In-Reply-To: <5507ECF6.4080902@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1541416717452762882=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============1541416717452762882==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.





--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D062F7.D59CEDA0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service =
keys are
 named the same as the driver, so go look in HKLM/<span class=3D"SpellE">Cu=
rrentControlSet</span>/Services and find all the things starting with XEN a=
nd then either get rid of them or set the
<span class=3D"SpellE">StartType</span> value to 4 (disabled).<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 11/03/2015 16:22, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">As I reported time ago there was strang=
e thing when update network components: give &quot;ready to use&quot; inste=
ad
 of &quot;device updated&quot; message at end of driver component install.<=
br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">xen_platform_log xen platform: GNTTAB: =
MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_--


--===============1541416717452762882==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1541416717452762882==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 10:22:49 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 10:22:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYu4n-0004DM-4p; Fri, 20 Mar 2015 10:22:49 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YYu4l-0004DB-MP
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 10:22:48 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
	62/A0-30447-6F4FB055; Fri, 20 Mar 2015 10:22:46 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1426846965!11755585!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17631 invoked from network); 20 Mar 2015 10:22:45 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 10:22:45 -0000
X-IronPort-AV: E=Sophos;i="5.11,435,1422921600"; d="scan'208,217";a="32981274"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzA
Date: Fri, 20 Mar 2015 10:22:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
In-Reply-To: <5507ECF6.4080902@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1541416717452762882=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============1541416717452762882==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounce=
s@lists.xenproject.org] On Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.





--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D062F7.D59CEDA0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;<=
o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service =
keys are
 named the same as the driver, so go look in HKLM/<span class=3D"SpellE">Cu=
rrentControlSet</span>/Services and find all the things starting with XEN a=
nd then either get rid of them or set the
<span class=3D"SpellE">StartType</span> value to 4 (disabled).<o:p></o:p></=
span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-bounces@lis=
ts.xenproject.org]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 11/03/2015 16:22, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">As I reported time ago there was strang=
e thing when update network components: give &quot;ready to use&quot; inste=
ad
 of &quot;device updated&quot; message at end of driver component install.<=
br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">xen_platform_log xen platform: GNTTAB: =
MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584C15AAMSPEX01CL01cit_--


--===============1541416717452762882==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1541416717452762882==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:43:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:43:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHP-0007xN-RT; Fri, 20 Mar 2015 12:43:59 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHO-0007wY-Kc
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:43:58 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	48/F7-10326-D061C055; Fri, 20 Mar 2015 12:43:57 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1426855437!14003272!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15487 invoked from network); 20 Mar 2015 12:43:57 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:57 -0000
Received: by wegp1 with SMTP id p1so81197280weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=N2jZu1U4+0WL8fccY8KnHVW/D964iLFXLdqTKsldfgo=;
	b=TNC3SFlNCJ+Au7mYlQKhH48o0TYkPz3taSZ8uR6bImz8U04qDHaHQf7zy6LlbmIP5C
	hHCdwpDbPIt3mXd2krCOY+ahhABNM0mPrDFyUfmo49eD7HtMK4LZ2C3WzCRwl2jW7dXv
	1CSXyJc+YOeh2OMG2DcxoBhaLegUOb8qluBZVjBJnP0i5HT1sCYFC4rxDtP12GA0kNo0
	8FaMG+O2wDv4H8hIPvUXOTbPOPpwAVVnXZiO/lFwb2cv7cEY64PlqKks9bMtLuUfeoww
	0Lj/ycud6l5W2O6mWNAVmFapPRzyI9YvCnDCtHhT7ESiKx3/wUxqPS4B/5s+XD+X+o0B
	Ving==
X-Received: by 10.180.20.177 with SMTP id o17mr24204643wie.66.1426855436938;
	Fri, 20 Mar 2015 05:43:56 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.55
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:56 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:51 +0000
Message-Id: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 0/5] Make XENVIF package group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Windows has had the notion of processor groups for some time and it
is becoming increasingly hard to ignore them, even though an HVM guest
will have no more processors than would fit into a single group.

This series follows on from my recent patch series for XENBUS to do
the same thing for XENBUS. Similarly it removes use of non-group-aware
API functions and adds use of their group-aware equivalents. Doing this
also required changes to get rid of static arrays based on
MAXIMUM_PROCESSORS.

Patch #1 puts util.h in the place where it should be.

Patch #2 fixes line endings.

Patch #3 updates to a newer set of Xen headers, and also refines
get_xen_headers.py slightly to handle the git add. Note that this patch
is not a simple update to new headers though as recent changes in xen.git
had some fallout and meant some re-arrangement of the headers was required.

Patch #4 fixes some obvious stupidity in the vcxproj files

Patch #5 actually changes the API calls from non-group-aware to
group-aware and does the other necessary re-factoring, including updating
to the latest XENBUS EVTCHN interface.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:43:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:43:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHP-0007xN-RT; Fri, 20 Mar 2015 12:43:59 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHO-0007wY-Kc
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:43:58 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	48/F7-10326-D061C055; Fri, 20 Mar 2015 12:43:57 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1426855437!14003272!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15487 invoked from network); 20 Mar 2015 12:43:57 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:57 -0000
Received: by wegp1 with SMTP id p1so81197280weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=N2jZu1U4+0WL8fccY8KnHVW/D964iLFXLdqTKsldfgo=;
	b=TNC3SFlNCJ+Au7mYlQKhH48o0TYkPz3taSZ8uR6bImz8U04qDHaHQf7zy6LlbmIP5C
	hHCdwpDbPIt3mXd2krCOY+ahhABNM0mPrDFyUfmo49eD7HtMK4LZ2C3WzCRwl2jW7dXv
	1CSXyJc+YOeh2OMG2DcxoBhaLegUOb8qluBZVjBJnP0i5HT1sCYFC4rxDtP12GA0kNo0
	8FaMG+O2wDv4H8hIPvUXOTbPOPpwAVVnXZiO/lFwb2cv7cEY64PlqKks9bMtLuUfeoww
	0Lj/ycud6l5W2O6mWNAVmFapPRzyI9YvCnDCtHhT7ESiKx3/wUxqPS4B/5s+XD+X+o0B
	Ving==
X-Received: by 10.180.20.177 with SMTP id o17mr24204643wie.66.1426855436938;
	Fri, 20 Mar 2015 05:43:56 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.55
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:56 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:51 +0000
Message-Id: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 0/5] Make XENVIF package group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Windows has had the notion of processor groups for some time and it
is becoming increasingly hard to ignore them, even though an HVM guest
will have no more processors than would fit into a single group.

This series follows on from my recent patch series for XENBUS to do
the same thing for XENBUS. Similarly it removes use of non-group-aware
API functions and adds use of their group-aware equivalents. Doing this
also required changes to get rid of static arrays based on
MAXIMUM_PROCESSORS.

Patch #1 puts util.h in the place where it should be.

Patch #2 fixes line endings.

Patch #3 updates to a newer set of Xen headers, and also refines
get_xen_headers.py slightly to handle the git add. Note that this patch
is not a simple update to new headers though as recent changes in xen.git
had some fallout and meant some re-arrangement of the headers was required.

Patch #4 fixes some obvious stupidity in the vcxproj files

Patch #5 actually changes the API calls from non-group-aware to
group-aware and does the other necessary re-factoring, including updating
to the latest XENBUS EVTCHN interface.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHQ-0007y1-SV; Fri, 20 Mar 2015 12:44:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHQ-0007wv-4f
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:00 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	BB/28-16504-F061C055; Fri, 20 Mar 2015 12:43:59 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1426855438!14003279!1
X-Originating-IP: [74.125.82.47]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15785 invoked from network); 20 Mar 2015 12:43:58 -0000
Received: from mail-wg0-f47.google.com (HELO mail-wg0-f47.google.com)
	(74.125.82.47)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:58 -0000
Received: by wggv3 with SMTP id v3so88458990wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=Hzg4xkjCbRLygbOxtvqHK57htygJaafU+FPl5x+V4S0=;
	b=DoRjMVFvbMLXpSYIH9PsL97h5zrkGO5QAdahGkXcZGhIq8lujlJPsY07cA2NuRaaKj
	RNgr/r8R0W44uvOSMnxy2odfpUb0lvi3CygqDbYmdBZwNond/C2Ake4oaSdZPhIOLQpR
	G46j72cxNzp+FzpW53XMOiB8xD4PE0JVgja6kAlyphxhAUw6F22qqT1v9NzCTwKaKtWy
	RoSkwynDdcqNkJ81sA3aK4NLoKCkDE4ClpE0ITtLueTonu2L/ekdfjXSROpliOyN4nmz
	H4i5fiVLrodum+fCN4Xw+bJKnRhUCIkUG+jYn+pwmVy/p6xOWLRLQBb7V03+cxrJZRny
	lxVA==
X-Received: by 10.180.108.81 with SMTP id hi17mr4868394wib.91.1426855438648;
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.57
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:53 +0000
Message-Id: <1426855436-9864-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/5] Fix line endings
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/mrsw.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xenvif/mrsw.h b/src/xenvif/mrsw.h
index 1e549c4..7625135 100644
--- a/src/xenvif/mrsw.h
+++ b/src/xenvif/mrsw.h
@@ -35,6 +35,7 @@
 #include <ntddk.h>
 
 #include "assert.h"
+#include "util.h"
 
 #pragma warning(disable:4127)   // conditional expression is constant
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHQ-0007y1-SV; Fri, 20 Mar 2015 12:44:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHQ-0007wv-4f
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:00 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	BB/28-16504-F061C055; Fri, 20 Mar 2015 12:43:59 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-10.tower-31.messagelabs.com!1426855438!14003279!1
X-Originating-IP: [74.125.82.47]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15785 invoked from network); 20 Mar 2015 12:43:58 -0000
Received: from mail-wg0-f47.google.com (HELO mail-wg0-f47.google.com)
	(74.125.82.47)
	by server-10.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:58 -0000
Received: by wggv3 with SMTP id v3so88458990wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=Hzg4xkjCbRLygbOxtvqHK57htygJaafU+FPl5x+V4S0=;
	b=DoRjMVFvbMLXpSYIH9PsL97h5zrkGO5QAdahGkXcZGhIq8lujlJPsY07cA2NuRaaKj
	RNgr/r8R0W44uvOSMnxy2odfpUb0lvi3CygqDbYmdBZwNond/C2Ake4oaSdZPhIOLQpR
	G46j72cxNzp+FzpW53XMOiB8xD4PE0JVgja6kAlyphxhAUw6F22qqT1v9NzCTwKaKtWy
	RoSkwynDdcqNkJ81sA3aK4NLoKCkDE4ClpE0ITtLueTonu2L/ekdfjXSROpliOyN4nmz
	H4i5fiVLrodum+fCN4Xw+bJKnRhUCIkUG+jYn+pwmVy/p6xOWLRLQBb7V03+cxrJZRny
	lxVA==
X-Received: by 10.180.108.81 with SMTP id hi17mr4868394wib.91.1426855438648;
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.57
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:58 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:53 +0000
Message-Id: <1426855436-9864-3-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/5] Fix line endings
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/mrsw.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xenvif/mrsw.h b/src/xenvif/mrsw.h
index 1e549c4..7625135 100644
--- a/src/xenvif/mrsw.h
+++ b/src/xenvif/mrsw.h
@@ -35,6 +35,7 @@
 #include <ntddk.h>
 
 #include "assert.h"
+#include "util.h"
 
 #pragma warning(disable:4127)   // conditional expression is constant
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHQ-0007yB-Tg; Fri, 20 Mar 2015 12:44:00 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHP-0007wl-Vv
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:00 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	83/DD-02712-F061C055; Fri, 20 Mar 2015 12:43:59 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1426855437!11834495!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21948 invoked from network); 20 Mar 2015 12:43:58 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:58 -0000
Received: by wggv3 with SMTP id v3so88458620wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=EzqX6TAsiOEXUL0L9lkAFvfdCjH88AxmAn3RaRmk7PM=;
	b=jKAeMue0KOth8AD2lmPG5Tq3Myr88w8wWzHPceBGxUsKDb8l5EW0HJZKPazy8IyDJ6
	9OvHMH20zd1r9csoMy2ahMBwJ7d57SYGLlQ5l8c6albHjYP2plsny126Q75180H8ddnC
	sPqyBTQ2fnePtSzhPjtv2zV3880bgY1AUJ3JyaEwQ2yeqeFDBxzIoK/0iUc4Rxg9gvDr
	M6GUgW6gGdd9AVCGvp32cq+i6lIY91Plq6IBf2cSDC/we7mlFV1/12UOTdBcweU3CNUQ
	/TRzM7QVXO4j6CWfWnN/K0MnJznqj+4YH/G0hujNCSUPWT5Qohm53HyfzyeXJOyHtHcq
	PTIQ==
X-Received: by 10.194.62.52 with SMTP id v20mr161895417wjr.137.1426855437779; 
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.56
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:52 +0000
Message-Id: <1426855436-9864-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/5] Move util.h from include to src/xenvif
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It should be co-located with headers such as assert.h and names.h

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/util.h           | 343 -----------------------------------------------
 src/xenvif/bus.c         |   2 +-
 src/xenvif/checksum.c    |   3 +-
 src/xenvif/driver.c      |   2 +-
 src/xenvif/fdo.c         |   2 +-
 src/xenvif/frontend.c    |   2 +-
 src/xenvif/link.c        |   2 +-
 src/xenvif/mac.c         |   2 +-
 src/xenvif/parse.c       |   3 +-
 src/xenvif/pdo.c         |   3 +-
 src/xenvif/receiver.c    |   7 +-
 src/xenvif/registry.c    |   2 +-
 src/xenvif/thread.c      |   2 +-
 src/xenvif/transmitter.c |   7 +-
 src/xenvif/util.h        | 343 +++++++++++++++++++++++++++++++++++++++++++++++
 src/xenvif/vif.c         |   2 +-
 16 files changed, 366 insertions(+), 361 deletions(-)
 delete mode 100644 include/util.h
 create mode 100644 src/xenvif/util.h

diff --git a/include/util.h b/include/util.h
deleted file mode 100644
index c008960..0000000
--- a/include/util.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _UTIL_H
-#define _UTIL_H
-
-#include <ntddk.h>
-
-#include "assert.h"
-
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
-
-static FORCEINLINE LONG
-__ffs(
-    IN  unsigned long long  mask
-    )
-{
-    unsigned char           *array = (unsigned char *)&mask;
-    unsigned int            byte;
-    unsigned int            bit;
-    unsigned char           val;
-
-    val = 0;
-
-    byte = 0;
-    while (byte < 8) {
-        val = array[byte];
-
-        if (val != 0)
-            break;
-
-        byte++;
-    }
-    if (byte == 8)
-        return -1;
-
-    bit = 0;
-    while (bit < 8) {
-        if (val & 0x01)
-            break;
-
-        val >>= 1;
-        bit++;
-    }
-
-    return (byte * 8) + bit;
-}
-
-#define __ffu(_mask)  \
-        __ffs(~(_mask))
-
-static FORCEINLINE VOID
-__CpuId(
-    IN  ULONG   Leaf,
-    OUT PULONG  EAX OPTIONAL,
-    OUT PULONG  EBX OPTIONAL,
-    OUT PULONG  ECX OPTIONAL,
-    OUT PULONG  EDX OPTIONAL
-    )
-{
-    ULONG       Value[4] = {0};
-
-    __cpuid(Value, Leaf);
-
-    if (EAX)
-        *EAX = Value[0];
-
-    if (EBX)
-        *EBX = Value[1];
-
-    if (ECX)
-        *ECX = Value[2];
-
-    if (EDX)
-        *EDX = Value[3];
-}
-
-static FORCEINLINE LONG
-__InterlockedAdd(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old + Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE LONG
-__InterlockedSubtract(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old - Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-typedef struct _NON_PAGED_BUFFER_HEADER {
-    SIZE_T  Length;
-    ULONG   Tag;
-} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
-
-typedef struct _NON_PAGED_BUFFER_TRAILER {
-    ULONG   Tag;
-} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
-
-static FORCEINLINE PVOID
-__AllocateNonPagedPoolWithTag(
-    IN  SIZE_T                  Length,
-    IN  ULONG                   Tag
-    )
-{
-    PUCHAR                      Buffer;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
-
-    ASSERT(Length != 0);
-
-    Buffer = ExAllocatePoolWithTag(NonPagedPool,
-                                   sizeof (NON_PAGED_BUFFER_HEADER) +
-                                   Length +
-                                   sizeof (NON_PAGED_BUFFER_TRAILER),
-                                   Tag);
-    if (Buffer == NULL)
-        goto done;
-
-    RtlZeroMemory(Buffer, 
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER));
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    Header->Length = Length;
-    Header->Tag = Tag;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    Trailer->Tag = Tag;
-
-done:
-    return Buffer;
-}
-
-static FORCEINLINE VOID
-__FreePoolWithTag(
-    IN  PVOID                   _Buffer,
-    IN  ULONG                   Tag
-    )
-{
-    PUCHAR                      Buffer = _Buffer;
-    SIZE_T                      Length;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
-
-    ASSERT(Buffer != NULL);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    ASSERT3U(Tag, ==, Header->Tag);
-    Length = Header->Length;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    ASSERT3U(Tag, ==, Trailer->Tag);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    RtlFillMemory(Buffer, 
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER),
-                  0xAA);
-
-    ExFreePoolWithTag(Buffer, Tag);
-}
-
-static FORCEINLINE PMDL
-__AllocatePage(
-    VOID
-    )
-{
-    PHYSICAL_ADDRESS    LowAddress;
-    PHYSICAL_ADDRESS    HighAddress;
-    LARGE_INTEGER       SkipBytes;
-    SIZE_T              TotalBytes;
-    PMDL                Mdl;
-    PUCHAR              MdlMappedSystemVa;
-    NTSTATUS            status;
-
-    LowAddress.QuadPart = 0ull;
-    HighAddress.QuadPart = ~0ull;
-    SkipBytes.QuadPart = 0ull;
-    TotalBytes = (SIZE_T)PAGE_SIZE;
-
-    Mdl = MmAllocatePagesForMdlEx(LowAddress,
-                                  HighAddress,
-                                  SkipBytes,
-                                  TotalBytes,
-                                  MmCached,
-                                  0);
-
-    status = STATUS_NO_MEMORY;
-    if (Mdl == NULL)
-        goto fail1;
-
-    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
-                             MDL_PARTIAL_HAS_BEEN_MAPPED |
-                             MDL_PARTIAL |
-                             MDL_PARENT_MAPPED_SYSTEM_VA |
-                             MDL_SOURCE_IS_NONPAGED_POOL |
-                             MDL_IO_SPACE)) == 0);
-
-    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
-                                                     KernelMode,
-						                             MmCached,   
-						                             NULL,
-						                             FALSE,
-						                             NormalPagePriority);
-
-    status = STATUS_UNSUCCESSFUL;
-    if (MdlMappedSystemVa == NULL)
-        goto fail2;
-
-    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
-
-    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
-
-    return Mdl;
-
-fail2:
-    Error("fail2\n");
-
-    MmFreePagesFromMdl(Mdl);
-    ExFreePool(Mdl);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return NULL;
-}
-
-static FORCEINLINE VOID
-__FreePage(
-    IN	PMDL	Mdl
-    )
-{
-    PUCHAR	MdlMappedSystemVa;
-
-    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
-    MdlMappedSystemVa = Mdl->MappedSystemVa;
-
-    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
-    
-    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
-
-    MmFreePagesFromMdl(Mdl);
-}
-
-static FORCEINLINE PCHAR
-__strtok_r(
-    IN      PCHAR   Buffer,
-    IN      PCHAR   Delimiter,
-    IN OUT  PCHAR   *Context
-    )
-{
-    PCHAR           Token;
-    PCHAR           End;
-
-    if (Buffer != NULL)
-        *Context = Buffer;
-
-    Token = *Context;
-
-    if (Token == NULL)
-        return NULL;
-
-    while (*Token != L'\0' &&
-           strchr(Delimiter, *Token) != NULL)
-        Token++;
-
-    if (*Token == L'\0')
-        return NULL;
-
-    End = Token + 1;
-    while (*End != L'\0' &&
-           strchr(Delimiter, *End) == NULL)
-        End++;
-
-    if (*End != L'\0')
-        *End++ = L'\0';
-
-    *Context = End;
-
-    return Token;
-}
-
-#endif  // _UTIL_H
diff --git a/src/xenvif/bus.c b/src/xenvif/bus.c
index 07229ed..9190535 100644
--- a/src/xenvif/bus.c
+++ b/src/xenvif/bus.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "bus.h"
 #include "fdo.h"
 #include "pdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENVIF_BUS_CONTEXT {
     LONG                    References;
diff --git a/src/xenvif/checksum.c b/src/xenvif/checksum.c
index 19a9616..ad375f6 100644
--- a/src/xenvif/checksum.c
+++ b/src/xenvif/checksum.c
@@ -32,14 +32,15 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <ethernet.h>
 #include <tcpip.h>
+
 #include <vif_interface.h>
 
 #include "checksum.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 static FORCEINLINE VOID
 __AccumulateChecksum(
diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 083fa19..589bee9 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -30,7 +30,6 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 #include <version.h>
 
 #include "registry.h"
@@ -40,6 +39,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 extern PULONG       InitSafeBootMode;
 
diff --git a/src/xenvif/fdo.c b/src/xenvif/fdo.c
index 6b1aeff..4b40777 100644
--- a/src/xenvif/fdo.c
+++ b/src/xenvif/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 
 #include <evtchn_interface.h>
 #include <debug_interface.h>
@@ -54,6 +53,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define FDO_POOL 'ODF'
 
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 88e387f..12b9789 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -33,7 +33,6 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
-#include <util.h>
 #include <xen.h>
 
 #include "driver.h"
@@ -50,6 +49,7 @@
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_FRONTEND {
     PXENVIF_PDO                 Pdo;
diff --git a/src/xenvif/link.c b/src/xenvif/link.c
index 27a502b..0319767 100644
--- a/src/xenvif/link.c
+++ b/src/xenvif/link.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <aux_klib.h>
-#include <util.h>
 
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define LINK_TAG    'KNIL'
 
diff --git a/src/xenvif/mac.c b/src/xenvif/mac.c
index b745625..1d60a1f 100644
--- a/src/xenvif/mac.c
+++ b/src/xenvif/mac.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <ethernet.h>
 
 #include "pdo.h"
@@ -41,6 +40,7 @@
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_MAC {
     PXENVIF_FRONTEND        Frontend;
diff --git a/src/xenvif/parse.c b/src/xenvif/parse.c
index 491f834..4e70ed4 100644
--- a/src/xenvif/parse.c
+++ b/src/xenvif/parse.c
@@ -31,16 +31,17 @@
 
 #include <ntddk.h>
 #include <ntstrsafe.h>
-#include <util.h>
 #include <ethernet.h>
 #include <tcpip.h>
 #include <llc.h>
 #include <ipx.h>
+
 #include <vif_interface.h>
 
 #include "parse.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 static FORCEINLINE NTSTATUS
 __ParseTcpHeader(
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index 5ce6c50..369efb0 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -38,8 +38,8 @@
 #include <stdlib.h>
 #include <netioapi.h>
 #include <bcrypt.h>
-#include <util.h>
 #include <xen.h>
+
 #include <store_interface.h>
 #include <emulated_interface.h>
 
@@ -55,6 +55,7 @@
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_POOL 'ODP'
 
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 5318baf..6f45627 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -32,8 +32,10 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
+#include <ethernet.h>
+#include <tcpip.h>
+
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
@@ -44,8 +46,6 @@
 #define _NETRXF_gso_prefix     (4)
 #define  NETRXF_gso_prefix     (1U<<_NETRXF_gso_prefix)
 
-#include "ethernet.h"
-#include "tcpip.h"
 #include "pdo.h"
 #include "registry.h"
 #include "frontend.h"
@@ -59,6 +59,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXNAMELEN  128
 
diff --git a/src/xenvif/registry.c b/src/xenvif/registry.c
index 519d3f6..7f1c4cc 100644
--- a/src/xenvif/registry.c
+++ b/src/xenvif/registry.c
@@ -30,10 +30,10 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "registry.h"
 #include "assert.h"
+#include "util.h"
 
 #define REGISTRY_POOL 'GERX'
 
diff --git a/src/xenvif/thread.c b/src/xenvif/thread.c
index 12aa40e..2fa0c1c 100644
--- a/src/xenvif/thread.c
+++ b/src/xenvif/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_POOL 'ERHT'
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 8fd7d2d..9f81ca1 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -33,8 +33,10 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
-#include <util.h>
 #include <xen.h>
+#include <ethernet.h>
+#include <tcpip.h>
+
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
@@ -42,8 +44,6 @@
 #include <range_set_interface.h>
 #include <evtchn_interface.h>
 
-#include "ethernet.h"
-#include "tcpip.h"
 #include "pdo.h"
 #include "frontend.h"
 #include "checksum.h"
@@ -55,6 +55,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #ifndef XEN_NETIF_GSO_TYPE_TCPV6
 #define XEN_NETIF_GSO_TYPE_TCPV6    2
diff --git a/src/xenvif/util.h b/src/xenvif/util.h
new file mode 100644
index 0000000..c008960
--- /dev/null
+++ b/src/xenvif/util.h
@@ -0,0 +1,343 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+#define	P2ROUNDUP(_x, _a)   \
+        (-(-(_x) & -(_a)))
+
+static FORCEINLINE LONG
+__ffs(
+    IN  unsigned long long  mask
+    )
+{
+    unsigned char           *array = (unsigned char *)&mask;
+    unsigned int            byte;
+    unsigned int            bit;
+    unsigned char           val;
+
+    val = 0;
+
+    byte = 0;
+    while (byte < 8) {
+        val = array[byte];
+
+        if (val != 0)
+            break;
+
+        byte++;
+    }
+    if (byte == 8)
+        return -1;
+
+    bit = 0;
+    while (bit < 8) {
+        if (val & 0x01)
+            break;
+
+        val >>= 1;
+        bit++;
+    }
+
+    return (byte * 8) + bit;
+}
+
+#define __ffu(_mask)  \
+        __ffs(~(_mask))
+
+static FORCEINLINE VOID
+__CpuId(
+    IN  ULONG   Leaf,
+    OUT PULONG  EAX OPTIONAL,
+    OUT PULONG  EBX OPTIONAL,
+    OUT PULONG  ECX OPTIONAL,
+    OUT PULONG  EDX OPTIONAL
+    )
+{
+    ULONG       Value[4] = {0};
+
+    __cpuid(Value, Leaf);
+
+    if (EAX)
+        *EAX = Value[0];
+
+    if (EBX)
+        *EBX = Value[1];
+
+    if (ECX)
+        *ECX = Value[2];
+
+    if (EDX)
+        *EDX = Value[3];
+}
+
+static FORCEINLINE LONG
+__InterlockedAdd(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old + Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE LONG
+__InterlockedSubtract(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old - Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+typedef struct _NON_PAGED_BUFFER_HEADER {
+    SIZE_T  Length;
+    ULONG   Tag;
+} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
+
+typedef struct _NON_PAGED_BUFFER_TRAILER {
+    ULONG   Tag;
+} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
+
+static FORCEINLINE PVOID
+__AllocateNonPagedPoolWithTag(
+    IN  SIZE_T                  Length,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT(Length != 0);
+
+    Buffer = ExAllocatePoolWithTag(NonPagedPool,
+                                   sizeof (NON_PAGED_BUFFER_HEADER) +
+                                   Length +
+                                   sizeof (NON_PAGED_BUFFER_TRAILER),
+                                   Tag);
+    if (Buffer == NULL)
+        goto done;
+
+    RtlZeroMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER));
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    Header->Length = Length;
+    Header->Tag = Tag;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    Trailer->Tag = Tag;
+
+done:
+    return Buffer;
+}
+
+static FORCEINLINE VOID
+__FreePoolWithTag(
+    IN  PVOID                   _Buffer,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer = _Buffer;
+    SIZE_T                      Length;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT(Buffer != NULL);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    ASSERT3U(Tag, ==, Header->Tag);
+    Length = Header->Length;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    ASSERT3U(Tag, ==, Trailer->Tag);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    RtlFillMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER),
+                  0xAA);
+
+    ExFreePoolWithTag(Buffer, Tag);
+}
+
+static FORCEINLINE PMDL
+__AllocatePage(
+    VOID
+    )
+{
+    PHYSICAL_ADDRESS    LowAddress;
+    PHYSICAL_ADDRESS    HighAddress;
+    LARGE_INTEGER       SkipBytes;
+    SIZE_T              TotalBytes;
+    PMDL                Mdl;
+    PUCHAR              MdlMappedSystemVa;
+    NTSTATUS            status;
+
+    LowAddress.QuadPart = 0ull;
+    HighAddress.QuadPart = ~0ull;
+    SkipBytes.QuadPart = 0ull;
+    TotalBytes = (SIZE_T)PAGE_SIZE;
+
+    Mdl = MmAllocatePagesForMdlEx(LowAddress,
+                                  HighAddress,
+                                  SkipBytes,
+                                  TotalBytes,
+                                  MmCached,
+                                  0);
+
+    status = STATUS_NO_MEMORY;
+    if (Mdl == NULL)
+        goto fail1;
+
+    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
+                             MDL_PARTIAL_HAS_BEEN_MAPPED |
+                             MDL_PARTIAL |
+                             MDL_PARENT_MAPPED_SYSTEM_VA |
+                             MDL_SOURCE_IS_NONPAGED_POOL |
+                             MDL_IO_SPACE)) == 0);
+
+    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
+                                                     KernelMode,
+						                             MmCached,   
+						                             NULL,
+						                             FALSE,
+						                             NormalPagePriority);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (MdlMappedSystemVa == NULL)
+        goto fail2;
+
+    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
+
+    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
+
+    return Mdl;
+
+fail2:
+    Error("fail2\n");
+
+    MmFreePagesFromMdl(Mdl);
+    ExFreePool(Mdl);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return NULL;
+}
+
+static FORCEINLINE VOID
+__FreePage(
+    IN	PMDL	Mdl
+    )
+{
+    PUCHAR	MdlMappedSystemVa;
+
+    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
+    MdlMappedSystemVa = Mdl->MappedSystemVa;
+
+    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
+    
+    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
+
+    MmFreePagesFromMdl(Mdl);
+}
+
+static FORCEINLINE PCHAR
+__strtok_r(
+    IN      PCHAR   Buffer,
+    IN      PCHAR   Delimiter,
+    IN OUT  PCHAR   *Context
+    )
+{
+    PCHAR           Token;
+    PCHAR           End;
+
+    if (Buffer != NULL)
+        *Context = Buffer;
+
+    Token = *Context;
+
+    if (Token == NULL)
+        return NULL;
+
+    while (*Token != L'\0' &&
+           strchr(Delimiter, *Token) != NULL)
+        Token++;
+
+    if (*Token == L'\0')
+        return NULL;
+
+    End = Token + 1;
+    while (*End != L'\0' &&
+           strchr(Delimiter, *End) == NULL)
+        End++;
+
+    if (*End != L'\0')
+        *End++ = L'\0';
+
+    *Context = End;
+
+    return Token;
+}
+
+#endif  // _UTIL_H
diff --git a/src/xenvif/vif.c b/src/xenvif/vif.c
index 2375d82..35af384 100644
--- a/src/xenvif/vif.c
+++ b/src/xenvif/vif.c
@@ -33,7 +33,6 @@
 #include <ntstrsafe.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "pdo.h"
 #include "vif.h"
@@ -41,6 +40,7 @@
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_VIF_CONTEXT {
     PXENVIF_PDO                 Pdo;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHQ-0007yB-Tg; Fri, 20 Mar 2015 12:44:00 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHP-0007wl-Vv
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:00 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	83/DD-02712-F061C055; Fri, 20 Mar 2015 12:43:59 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1426855437!11834495!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21948 invoked from network); 20 Mar 2015 12:43:58 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:43:58 -0000
Received: by wggv3 with SMTP id v3so88458620wgg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=EzqX6TAsiOEXUL0L9lkAFvfdCjH88AxmAn3RaRmk7PM=;
	b=jKAeMue0KOth8AD2lmPG5Tq3Myr88w8wWzHPceBGxUsKDb8l5EW0HJZKPazy8IyDJ6
	9OvHMH20zd1r9csoMy2ahMBwJ7d57SYGLlQ5l8c6albHjYP2plsny126Q75180H8ddnC
	sPqyBTQ2fnePtSzhPjtv2zV3880bgY1AUJ3JyaEwQ2yeqeFDBxzIoK/0iUc4Rxg9gvDr
	M6GUgW6gGdd9AVCGvp32cq+i6lIY91Plq6IBf2cSDC/we7mlFV1/12UOTdBcweU3CNUQ
	/TRzM7QVXO4j6CWfWnN/K0MnJznqj+4YH/G0hujNCSUPWT5Qohm53HyfzyeXJOyHtHcq
	PTIQ==
X-Received: by 10.194.62.52 with SMTP id v20mr161895417wjr.137.1426855437779; 
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.56
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:57 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:52 +0000
Message-Id: <1426855436-9864-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/5] Move util.h from include to src/xenvif
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

It should be co-located with headers such as assert.h and names.h

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/util.h           | 343 -----------------------------------------------
 src/xenvif/bus.c         |   2 +-
 src/xenvif/checksum.c    |   3 +-
 src/xenvif/driver.c      |   2 +-
 src/xenvif/fdo.c         |   2 +-
 src/xenvif/frontend.c    |   2 +-
 src/xenvif/link.c        |   2 +-
 src/xenvif/mac.c         |   2 +-
 src/xenvif/parse.c       |   3 +-
 src/xenvif/pdo.c         |   3 +-
 src/xenvif/receiver.c    |   7 +-
 src/xenvif/registry.c    |   2 +-
 src/xenvif/thread.c      |   2 +-
 src/xenvif/transmitter.c |   7 +-
 src/xenvif/util.h        | 343 +++++++++++++++++++++++++++++++++++++++++++++++
 src/xenvif/vif.c         |   2 +-
 16 files changed, 366 insertions(+), 361 deletions(-)
 delete mode 100644 include/util.h
 create mode 100644 src/xenvif/util.h

diff --git a/include/util.h b/include/util.h
deleted file mode 100644
index c008960..0000000
--- a/include/util.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Copyright (c) Citrix Systems Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, 
- * with or without modification, are permitted provided 
- * that the following conditions are met:
- * 
- * *   Redistributions of source code must retain the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the 
- *     following disclaimer in the documentation and/or other 
- *     materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE.
- */
-
-#ifndef _UTIL_H
-#define _UTIL_H
-
-#include <ntddk.h>
-
-#include "assert.h"
-
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
-
-static FORCEINLINE LONG
-__ffs(
-    IN  unsigned long long  mask
-    )
-{
-    unsigned char           *array = (unsigned char *)&mask;
-    unsigned int            byte;
-    unsigned int            bit;
-    unsigned char           val;
-
-    val = 0;
-
-    byte = 0;
-    while (byte < 8) {
-        val = array[byte];
-
-        if (val != 0)
-            break;
-
-        byte++;
-    }
-    if (byte == 8)
-        return -1;
-
-    bit = 0;
-    while (bit < 8) {
-        if (val & 0x01)
-            break;
-
-        val >>= 1;
-        bit++;
-    }
-
-    return (byte * 8) + bit;
-}
-
-#define __ffu(_mask)  \
-        __ffs(~(_mask))
-
-static FORCEINLINE VOID
-__CpuId(
-    IN  ULONG   Leaf,
-    OUT PULONG  EAX OPTIONAL,
-    OUT PULONG  EBX OPTIONAL,
-    OUT PULONG  ECX OPTIONAL,
-    OUT PULONG  EDX OPTIONAL
-    )
-{
-    ULONG       Value[4] = {0};
-
-    __cpuid(Value, Leaf);
-
-    if (EAX)
-        *EAX = Value[0];
-
-    if (EBX)
-        *EBX = Value[1];
-
-    if (ECX)
-        *ECX = Value[2];
-
-    if (EDX)
-        *EDX = Value[3];
-}
-
-static FORCEINLINE LONG
-__InterlockedAdd(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old + Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-static FORCEINLINE LONG
-__InterlockedSubtract(
-    IN  LONG    *Value,
-    IN  LONG    Delta
-    )
-{
-    LONG        New;
-    LONG        Old;
-
-    do {
-        Old = *Value;
-        New = Old - Delta;
-    } while (InterlockedCompareExchange(Value, New, Old) != Old);
-
-    return New;
-}
-
-typedef struct _NON_PAGED_BUFFER_HEADER {
-    SIZE_T  Length;
-    ULONG   Tag;
-} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
-
-typedef struct _NON_PAGED_BUFFER_TRAILER {
-    ULONG   Tag;
-} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
-
-static FORCEINLINE PVOID
-__AllocateNonPagedPoolWithTag(
-    IN  SIZE_T                  Length,
-    IN  ULONG                   Tag
-    )
-{
-    PUCHAR                      Buffer;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
-
-    ASSERT(Length != 0);
-
-    Buffer = ExAllocatePoolWithTag(NonPagedPool,
-                                   sizeof (NON_PAGED_BUFFER_HEADER) +
-                                   Length +
-                                   sizeof (NON_PAGED_BUFFER_TRAILER),
-                                   Tag);
-    if (Buffer == NULL)
-        goto done;
-
-    RtlZeroMemory(Buffer, 
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER));
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    Header->Length = Length;
-    Header->Tag = Tag;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    Trailer->Tag = Tag;
-
-done:
-    return Buffer;
-}
-
-static FORCEINLINE VOID
-__FreePoolWithTag(
-    IN  PVOID                   _Buffer,
-    IN  ULONG                   Tag
-    )
-{
-    PUCHAR                      Buffer = _Buffer;
-    SIZE_T                      Length;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
-
-    ASSERT(Buffer != NULL);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    ASSERT3U(Tag, ==, Header->Tag);
-    Length = Header->Length;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    ASSERT3U(Tag, ==, Trailer->Tag);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    RtlFillMemory(Buffer, 
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER),
-                  0xAA);
-
-    ExFreePoolWithTag(Buffer, Tag);
-}
-
-static FORCEINLINE PMDL
-__AllocatePage(
-    VOID
-    )
-{
-    PHYSICAL_ADDRESS    LowAddress;
-    PHYSICAL_ADDRESS    HighAddress;
-    LARGE_INTEGER       SkipBytes;
-    SIZE_T              TotalBytes;
-    PMDL                Mdl;
-    PUCHAR              MdlMappedSystemVa;
-    NTSTATUS            status;
-
-    LowAddress.QuadPart = 0ull;
-    HighAddress.QuadPart = ~0ull;
-    SkipBytes.QuadPart = 0ull;
-    TotalBytes = (SIZE_T)PAGE_SIZE;
-
-    Mdl = MmAllocatePagesForMdlEx(LowAddress,
-                                  HighAddress,
-                                  SkipBytes,
-                                  TotalBytes,
-                                  MmCached,
-                                  0);
-
-    status = STATUS_NO_MEMORY;
-    if (Mdl == NULL)
-        goto fail1;
-
-    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
-                             MDL_PARTIAL_HAS_BEEN_MAPPED |
-                             MDL_PARTIAL |
-                             MDL_PARENT_MAPPED_SYSTEM_VA |
-                             MDL_SOURCE_IS_NONPAGED_POOL |
-                             MDL_IO_SPACE)) == 0);
-
-    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
-                                                     KernelMode,
-						                             MmCached,   
-						                             NULL,
-						                             FALSE,
-						                             NormalPagePriority);
-
-    status = STATUS_UNSUCCESSFUL;
-    if (MdlMappedSystemVa == NULL)
-        goto fail2;
-
-    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
-
-    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
-
-    return Mdl;
-
-fail2:
-    Error("fail2\n");
-
-    MmFreePagesFromMdl(Mdl);
-    ExFreePool(Mdl);
-
-fail1:
-    Error("fail1 (%08x)\n", status);
-
-    return NULL;
-}
-
-static FORCEINLINE VOID
-__FreePage(
-    IN	PMDL	Mdl
-    )
-{
-    PUCHAR	MdlMappedSystemVa;
-
-    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
-    MdlMappedSystemVa = Mdl->MappedSystemVa;
-
-    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
-    
-    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
-
-    MmFreePagesFromMdl(Mdl);
-}
-
-static FORCEINLINE PCHAR
-__strtok_r(
-    IN      PCHAR   Buffer,
-    IN      PCHAR   Delimiter,
-    IN OUT  PCHAR   *Context
-    )
-{
-    PCHAR           Token;
-    PCHAR           End;
-
-    if (Buffer != NULL)
-        *Context = Buffer;
-
-    Token = *Context;
-
-    if (Token == NULL)
-        return NULL;
-
-    while (*Token != L'\0' &&
-           strchr(Delimiter, *Token) != NULL)
-        Token++;
-
-    if (*Token == L'\0')
-        return NULL;
-
-    End = Token + 1;
-    while (*End != L'\0' &&
-           strchr(Delimiter, *End) == NULL)
-        End++;
-
-    if (*End != L'\0')
-        *End++ = L'\0';
-
-    *Context = End;
-
-    return Token;
-}
-
-#endif  // _UTIL_H
diff --git a/src/xenvif/bus.c b/src/xenvif/bus.c
index 07229ed..9190535 100644
--- a/src/xenvif/bus.c
+++ b/src/xenvif/bus.c
@@ -32,13 +32,13 @@
 #include <ntddk.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "bus.h"
 #include "fdo.h"
 #include "pdo.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 typedef struct _XENVIF_BUS_CONTEXT {
     LONG                    References;
diff --git a/src/xenvif/checksum.c b/src/xenvif/checksum.c
index 19a9616..ad375f6 100644
--- a/src/xenvif/checksum.c
+++ b/src/xenvif/checksum.c
@@ -32,14 +32,15 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <ethernet.h>
 #include <tcpip.h>
+
 #include <vif_interface.h>
 
 #include "checksum.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 static FORCEINLINE VOID
 __AccumulateChecksum(
diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 083fa19..589bee9 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -30,7 +30,6 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 #include <version.h>
 
 #include "registry.h"
@@ -40,6 +39,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 extern PULONG       InitSafeBootMode;
 
diff --git a/src/xenvif/fdo.c b/src/xenvif/fdo.c
index 6b1aeff..4b40777 100644
--- a/src/xenvif/fdo.c
+++ b/src/xenvif/fdo.c
@@ -35,7 +35,6 @@
 #include <wdmguid.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 
 #include <evtchn_interface.h>
 #include <debug_interface.h>
@@ -54,6 +53,7 @@
 #include "names.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define FDO_POOL 'ODF'
 
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 88e387f..12b9789 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -33,7 +33,6 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
-#include <util.h>
 #include <xen.h>
 
 #include "driver.h"
@@ -50,6 +49,7 @@
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_FRONTEND {
     PXENVIF_PDO                 Pdo;
diff --git a/src/xenvif/link.c b/src/xenvif/link.c
index 27a502b..0319767 100644
--- a/src/xenvif/link.c
+++ b/src/xenvif/link.c
@@ -32,11 +32,11 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <aux_klib.h>
-#include <util.h>
 
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define LINK_TAG    'KNIL'
 
diff --git a/src/xenvif/mac.c b/src/xenvif/mac.c
index b745625..1d60a1f 100644
--- a/src/xenvif/mac.c
+++ b/src/xenvif/mac.c
@@ -32,7 +32,6 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <ethernet.h>
 
 #include "pdo.h"
@@ -41,6 +40,7 @@
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_MAC {
     PXENVIF_FRONTEND        Frontend;
diff --git a/src/xenvif/parse.c b/src/xenvif/parse.c
index 491f834..4e70ed4 100644
--- a/src/xenvif/parse.c
+++ b/src/xenvif/parse.c
@@ -31,16 +31,17 @@
 
 #include <ntddk.h>
 #include <ntstrsafe.h>
-#include <util.h>
 #include <ethernet.h>
 #include <tcpip.h>
 #include <llc.h>
 #include <ipx.h>
+
 #include <vif_interface.h>
 
 #include "parse.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 static FORCEINLINE NTSTATUS
 __ParseTcpHeader(
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index 5ce6c50..369efb0 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -38,8 +38,8 @@
 #include <stdlib.h>
 #include <netioapi.h>
 #include <bcrypt.h>
-#include <util.h>
 #include <xen.h>
+
 #include <store_interface.h>
 #include <emulated_interface.h>
 
@@ -55,6 +55,7 @@
 #include "link.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define PDO_POOL 'ODP'
 
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 5318baf..6f45627 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -32,8 +32,10 @@
 #include <ntddk.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
-#include <util.h>
 #include <xen.h>
+#include <ethernet.h>
+#include <tcpip.h>
+
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
@@ -44,8 +46,6 @@
 #define _NETRXF_gso_prefix     (4)
 #define  NETRXF_gso_prefix     (1U<<_NETRXF_gso_prefix)
 
-#include "ethernet.h"
-#include "tcpip.h"
 #include "pdo.h"
 #include "registry.h"
 #include "frontend.h"
@@ -59,6 +59,7 @@
 #include "driver.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define MAXNAMELEN  128
 
diff --git a/src/xenvif/registry.c b/src/xenvif/registry.c
index 519d3f6..7f1c4cc 100644
--- a/src/xenvif/registry.c
+++ b/src/xenvif/registry.c
@@ -30,10 +30,10 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "registry.h"
 #include "assert.h"
+#include "util.h"
 
 #define REGISTRY_POOL 'GERX'
 
diff --git a/src/xenvif/thread.c b/src/xenvif/thread.c
index 12aa40e..2fa0c1c 100644
--- a/src/xenvif/thread.c
+++ b/src/xenvif/thread.c
@@ -30,11 +30,11 @@
  */
 
 #include <ntddk.h>
-#include <util.h>
 
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #define THREAD_POOL 'ERHT'
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 8fd7d2d..9f81ca1 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -33,8 +33,10 @@
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
-#include <util.h>
 #include <xen.h>
+#include <ethernet.h>
+#include <tcpip.h>
+
 #include <debug_interface.h>
 #include <store_interface.h>
 #include <cache_interface.h>
@@ -42,8 +44,6 @@
 #include <range_set_interface.h>
 #include <evtchn_interface.h>
 
-#include "ethernet.h"
-#include "tcpip.h"
 #include "pdo.h"
 #include "frontend.h"
 #include "checksum.h"
@@ -55,6 +55,7 @@
 #include "registry.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 #ifndef XEN_NETIF_GSO_TYPE_TCPV6
 #define XEN_NETIF_GSO_TYPE_TCPV6    2
diff --git a/src/xenvif/util.h b/src/xenvif/util.h
new file mode 100644
index 0000000..c008960
--- /dev/null
+++ b/src/xenvif/util.h
@@ -0,0 +1,343 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+#define	P2ROUNDUP(_x, _a)   \
+        (-(-(_x) & -(_a)))
+
+static FORCEINLINE LONG
+__ffs(
+    IN  unsigned long long  mask
+    )
+{
+    unsigned char           *array = (unsigned char *)&mask;
+    unsigned int            byte;
+    unsigned int            bit;
+    unsigned char           val;
+
+    val = 0;
+
+    byte = 0;
+    while (byte < 8) {
+        val = array[byte];
+
+        if (val != 0)
+            break;
+
+        byte++;
+    }
+    if (byte == 8)
+        return -1;
+
+    bit = 0;
+    while (bit < 8) {
+        if (val & 0x01)
+            break;
+
+        val >>= 1;
+        bit++;
+    }
+
+    return (byte * 8) + bit;
+}
+
+#define __ffu(_mask)  \
+        __ffs(~(_mask))
+
+static FORCEINLINE VOID
+__CpuId(
+    IN  ULONG   Leaf,
+    OUT PULONG  EAX OPTIONAL,
+    OUT PULONG  EBX OPTIONAL,
+    OUT PULONG  ECX OPTIONAL,
+    OUT PULONG  EDX OPTIONAL
+    )
+{
+    ULONG       Value[4] = {0};
+
+    __cpuid(Value, Leaf);
+
+    if (EAX)
+        *EAX = Value[0];
+
+    if (EBX)
+        *EBX = Value[1];
+
+    if (ECX)
+        *ECX = Value[2];
+
+    if (EDX)
+        *EDX = Value[3];
+}
+
+static FORCEINLINE LONG
+__InterlockedAdd(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old + Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+static FORCEINLINE LONG
+__InterlockedSubtract(
+    IN  LONG    *Value,
+    IN  LONG    Delta
+    )
+{
+    LONG        New;
+    LONG        Old;
+
+    do {
+        Old = *Value;
+        New = Old - Delta;
+    } while (InterlockedCompareExchange(Value, New, Old) != Old);
+
+    return New;
+}
+
+typedef struct _NON_PAGED_BUFFER_HEADER {
+    SIZE_T  Length;
+    ULONG   Tag;
+} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
+
+typedef struct _NON_PAGED_BUFFER_TRAILER {
+    ULONG   Tag;
+} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
+
+static FORCEINLINE PVOID
+__AllocateNonPagedPoolWithTag(
+    IN  SIZE_T                  Length,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT(Length != 0);
+
+    Buffer = ExAllocatePoolWithTag(NonPagedPool,
+                                   sizeof (NON_PAGED_BUFFER_HEADER) +
+                                   Length +
+                                   sizeof (NON_PAGED_BUFFER_TRAILER),
+                                   Tag);
+    if (Buffer == NULL)
+        goto done;
+
+    RtlZeroMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER));
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    Header->Length = Length;
+    Header->Tag = Tag;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    Trailer->Tag = Tag;
+
+done:
+    return Buffer;
+}
+
+static FORCEINLINE VOID
+__FreePoolWithTag(
+    IN  PVOID                   _Buffer,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer = _Buffer;
+    SIZE_T                      Length;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT(Buffer != NULL);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    ASSERT3U(Tag, ==, Header->Tag);
+    Length = Header->Length;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    ASSERT3U(Tag, ==, Trailer->Tag);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    RtlFillMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER),
+                  0xAA);
+
+    ExFreePoolWithTag(Buffer, Tag);
+}
+
+static FORCEINLINE PMDL
+__AllocatePage(
+    VOID
+    )
+{
+    PHYSICAL_ADDRESS    LowAddress;
+    PHYSICAL_ADDRESS    HighAddress;
+    LARGE_INTEGER       SkipBytes;
+    SIZE_T              TotalBytes;
+    PMDL                Mdl;
+    PUCHAR              MdlMappedSystemVa;
+    NTSTATUS            status;
+
+    LowAddress.QuadPart = 0ull;
+    HighAddress.QuadPart = ~0ull;
+    SkipBytes.QuadPart = 0ull;
+    TotalBytes = (SIZE_T)PAGE_SIZE;
+
+    Mdl = MmAllocatePagesForMdlEx(LowAddress,
+                                  HighAddress,
+                                  SkipBytes,
+                                  TotalBytes,
+                                  MmCached,
+                                  0);
+
+    status = STATUS_NO_MEMORY;
+    if (Mdl == NULL)
+        goto fail1;
+
+    ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
+                             MDL_PARTIAL_HAS_BEEN_MAPPED |
+                             MDL_PARTIAL |
+                             MDL_PARENT_MAPPED_SYSTEM_VA |
+                             MDL_SOURCE_IS_NONPAGED_POOL |
+                             MDL_IO_SPACE)) == 0);
+
+    MdlMappedSystemVa = MmMapLockedPagesSpecifyCache(Mdl,
+                                                     KernelMode,
+						                             MmCached,   
+						                             NULL,
+						                             FALSE,
+						                             NormalPagePriority);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (MdlMappedSystemVa == NULL)
+        goto fail2;
+
+    ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
+
+    RtlZeroMemory(MdlMappedSystemVa, PAGE_SIZE);
+
+    return Mdl;
+
+fail2:
+    Error("fail2\n");
+
+    MmFreePagesFromMdl(Mdl);
+    ExFreePool(Mdl);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return NULL;
+}
+
+static FORCEINLINE VOID
+__FreePage(
+    IN	PMDL	Mdl
+    )
+{
+    PUCHAR	MdlMappedSystemVa;
+
+    ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
+    MdlMappedSystemVa = Mdl->MappedSystemVa;
+
+    RtlFillMemory(MdlMappedSystemVa, PAGE_SIZE, 0xAA);
+    
+    MmUnmapLockedPages(MdlMappedSystemVa, Mdl);
+
+    MmFreePagesFromMdl(Mdl);
+}
+
+static FORCEINLINE PCHAR
+__strtok_r(
+    IN      PCHAR   Buffer,
+    IN      PCHAR   Delimiter,
+    IN OUT  PCHAR   *Context
+    )
+{
+    PCHAR           Token;
+    PCHAR           End;
+
+    if (Buffer != NULL)
+        *Context = Buffer;
+
+    Token = *Context;
+
+    if (Token == NULL)
+        return NULL;
+
+    while (*Token != L'\0' &&
+           strchr(Delimiter, *Token) != NULL)
+        Token++;
+
+    if (*Token == L'\0')
+        return NULL;
+
+    End = Token + 1;
+    while (*End != L'\0' &&
+           strchr(Delimiter, *End) == NULL)
+        End++;
+
+    if (*End != L'\0')
+        *End++ = L'\0';
+
+    *Context = End;
+
+    return Token;
+}
+
+#endif  // _UTIL_H
diff --git a/src/xenvif/vif.c b/src/xenvif/vif.c
index 2375d82..35af384 100644
--- a/src/xenvif/vif.c
+++ b/src/xenvif/vif.c
@@ -33,7 +33,6 @@
 #include <ntstrsafe.h>
 #include <stdarg.h>
 #include <xen.h>
-#include <util.h>
 
 #include "pdo.h"
 #include "vif.h"
@@ -41,6 +40,7 @@
 #include "thread.h"
 #include "dbg_print.h"
 #include "assert.h"
+#include "util.h"
 
 struct _XENVIF_VIF_CONTEXT {
     PXENVIF_PDO                 Pdo;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHV-00080b-06; Fri, 20 Mar 2015 12:44:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHU-00080O-1F
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:04 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	EF/52-18377-3161C055; Fri, 20 Mar 2015 12:44:03 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1426855440!11816022!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8837 invoked from network); 20 Mar 2015 12:44:00 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:00 -0000
Received: by wibg7 with SMTP id g7so26078433wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=29KBYaVj5r1skKe4LBxoXCH/2rwxmuuSEm2VGA1jbJo=;
	b=rvuE9PUaiWtBA8MpEXZ4BO+MDf8VHKzBMdarwaGbAA11pae2IK0WWh8mbjDl0BVX9G
	h+59f3gYwN5ES5Ha+00Q8Bi/DtXIrZRrCCgn+IhabsdehFe0GwXV9J0xLoqXA//nj2x/
	R8HOKGsN9F0fewlVD47DX51VzoCfEJink4yKwODPJ3wOyg9vSZLtJLwpiYJ+qRQGRaEJ
	1FnC5CR4qs7I8hA24I9pe53dA6NAGW4tUgFp5EtGJ2xyrTSp9wGJxVuJvBzhyV8bhPUb
	MSk8bdZzLZh/WqUilJkK5gghD9FWA+CrF9ktnbi8TWIXSBpZYpU4BHMU+7AT3e8SivrB
	E8yw==
X-Received: by 10.194.61.12 with SMTP id l12mr160219283wjr.139.1426855440759; 
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.59
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:55 +0000
Message-Id: <1426855436-9864-5-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 4/5] Fix various bits of (largely autogen)
	stupidity in vcxproj files
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 vs2012/package/package.vcxproj             | 107 +++++++--------
 vs2012/xenvif/xenvif.vcxproj               | 214 ++++++++++++++---------------
 vs2012/xenvif_coinst/xenvif_coinst.vcxproj | 132 +++++++++---------
 vs2013/package/package.vcxproj             |  40 +-----
 vs2013/xenvif/xenvif.vcxproj               |  53 +------
 vs2013/xenvif_coinst/xenvif_coinst.vcxproj |  41 +-----
 6 files changed, 220 insertions(+), 367 deletions(-)

diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index bfacbe4..c12fa60 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -1,60 +1,53 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Utility</ConfigurationType>
-		<DriverType>Package</DriverType>
-		<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<EnableInf2cat>true</EnableInf2cat>
-		<Inf2CatWindowsVersionList Condition="'$(Platform)'=='x64'">Vista_x64;7_x64;Server2008_x64;Server2008R2_x64;Server8_x64</Inf2CatWindowsVersionList>
-		<Inf2CatWindowsVersionList Condition="'$(Platform)'=='Win32'">Vista_x86;7_x86;Server2008_x86;8_x86</Inf2CatWindowsVersionList>
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-		<EnableDeployment>False</EnableDeployment>
-		<ImportToStore>False</ImportToStore>
-		<InstallMode>None</InstallMode>
-		<ScriptDeviceQuery>%PathToInf%</ScriptDeviceQuery>
-		<EnableVerifier>False</EnableVerifier>
-		<AllDrivers>False</AllDrivers>
-		<VerifyProjectOutput>True</VerifyProjectOutput>
-		<VerifyFlags>133563</VerifyFlags>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-		<PackageDir>..\..\xenvif\$(DDKPlatform)</PackageDir>
-	</PropertyGroup>
-	
-	<ItemGroup>
-		<ProjectReference Include="..\xenvif\xenvif.vcxproj">
-			<Project>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</Project>
-		</ProjectReference>
-		<ProjectReference Include="..\xenvif_coinst\xenvif_coinst.vcxproj">
-			<Project>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</Project>
-		</ProjectReference>
-	</ItemGroup>
-	<ItemGroup>
-		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
-		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x64\dpinst.exe" Condition="'$(Platform)'=='x64'" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-	<ImportGroup Label="ExtensionTargets">
-	</ImportGroup>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>Package</DriverType> 
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
+    <ConfigurationType>Utility</ConfigurationType>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <EnableInf2cat>true</EnableInf2cat>
+    <Inf2CatWindowsVersionList Condition="'$(Platform)'=='x64'">Vista_x64;7_x64;Server2008_x64;Server2008R2_x64;Server8_x64</Inf2CatWindowsVersionList>
+    <Inf2CatWindowsVersionList Condition="'$(Platform)'=='Win32'">Vista_x86;7_x86;Server2008_x86;8_x86</Inf2CatWindowsVersionList>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+    <EnableDeployment>False</EnableDeployment>
+    <ImportToStore>False</ImportToStore>
+    <InstallMode>None</InstallMode>
+    <ScriptDeviceQuery>%PathToInf%</ScriptDeviceQuery>
+    <EnableVerifier>False</EnableVerifier>
+    <AllDrivers>False</AllDrivers>
+    <VerifyProjectOutput>True</VerifyProjectOutput>
+    <VerifyFlags>133563</VerifyFlags>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+    <PackageDir>..\..\xenvif\$(DDKPlatform)</PackageDir>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\xenvif\xenvif.vcxproj">
+      <Project>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\xenvif_coinst\xenvif_coinst.vcxproj">
+      <Project>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x64\dpinst.exe" Condition="'$(Platform)'=='x64'" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index ee18fc6..d9deb03 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -1,116 +1,104 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<!-- configurations -->
-	<Import Project="..\configs.props" />
-	
-	<!-- global data -->
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<!-- project settings -->
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<!-- default targets/platform/toolset/etc -->
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
-            <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
-            <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-  
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="../../src/xenvif/bus.c" />
-		<ClCompile Include="../../src/xenvif/checksum.c" />
-		<ClCompile Include="../../src/xenvif/driver.c" />
-		<ClCompile Include="../../src/xenvif/fdo.c" />
-		<ClCompile Include="../../src/xenvif/frontend.c" />
-		<ClCompile Include="../../src/xenvif/link.c" />
-		<ClCompile Include="../../src/xenvif/mac.c" />
-		<ClCompile Include="../../src/xenvif/parse.c" />
-		<ClCompile Include="../../src/xenvif/pdo.c" />
-		<ClCompile Include="../../src/xenvif/receiver.c" />
-		<ClCompile Include="../../src/xenvif/registry.c" />
-		<ClCompile Include="../../src/xenvif/thread.c" />
-		<ClCompile Include="../../src/xenvif/transmitter.c" />
-		<ClCompile Include="../../src/xenvif/vif.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenvif\xenvif.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<Inf Include="..\xenvif.inf" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\package\package.vcxproj" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType> 
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command>echo "Build Inf"
+      powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
+      echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
+      <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
+      <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/xenvif/bus.c" />
+    <ClCompile Include="../../src/xenvif/checksum.c" />
+    <ClCompile Include="../../src/xenvif/driver.c" />
+    <ClCompile Include="../../src/xenvif/fdo.c" />
+    <ClCompile Include="../../src/xenvif/frontend.c" />
+    <ClCompile Include="../../src/xenvif/link.c" />
+    <ClCompile Include="../../src/xenvif/mac.c" />
+    <ClCompile Include="../../src/xenvif/parse.c" />
+    <ClCompile Include="../../src/xenvif/pdo.c" />
+    <ClCompile Include="../../src/xenvif/receiver.c" />
+    <ClCompile Include="../../src/xenvif/registry.c" />
+    <ClCompile Include="../../src/xenvif/thread.c" />
+    <ClCompile Include="../../src/xenvif/transmitter.c" />
+    <ClCompile Include="../../src/xenvif/vif.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenvif\xenvif.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Inf Include="..\xenvif.inf" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\package\package.vcxproj" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenvif_coinst/xenvif_coinst.vcxproj b/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
index 1eb1ea3..87256b0 100644
--- a/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
+++ b/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
@@ -1,73 +1,65 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
-		<ConfigurationType>DynamicLibrary</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-		<IncludePath>..\..\include;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-	
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENVIF_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4127;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
-		</ClCompile>
-		<Link>
-			<ModuleDefinitionFile>../../src/coinst/xenvif_coinst.def</ModuleDefinitionFile>
-			<AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-		</Link>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-  
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\coinst\coinst.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\coinst\xenvif_coinst.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType> 
+    <PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+    <IncludePath>..\..\include;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENVIF_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4127;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <ModuleDefinitionFile>../../src/coinst/xenvif_coinst.def</ModuleDefinitionFile>
+      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\coinst\coinst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\coinst\xenvif_coinst.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
\ No newline at end of file
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 6ebfcaf..44369e3 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -3,6 +3,7 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
     <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
@@ -13,45 +14,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index ef117e5..8dd18be 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -1,60 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <!-- configurations -->
   <Import Project="..\configs.props" />
-  <!-- global data -->
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
     <Platform Condition="'$(Platform)' == ''">Win32</Platform>
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
-  <!-- project settings -->
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
-  <!-- default targets/platform/toolset/etc -->
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
   </PropertyGroup>
@@ -70,10 +27,10 @@
   <ItemDefinitionGroup>
     <CustomBuildStep>
       <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
+      powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
+      echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
       <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
       <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
diff --git a/vs2013/xenvif_coinst/xenvif_coinst.vcxproj b/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
index 5624389..3b3607e 100644
--- a/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
+++ b/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
@@ -3,8 +3,8 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
@@ -12,45 +12,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
   </PropertyGroup>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHV-00080b-06; Fri, 20 Mar 2015 12:44:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHU-00080O-1F
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:04 +0000
Received: from [193.109.254.147] by server-8.bemta-14.messagelabs.com id
	EF/52-18377-3161C055; Fri, 20 Mar 2015 12:44:03 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1426855440!11816022!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8837 invoked from network); 20 Mar 2015 12:44:00 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:00 -0000
Received: by wibg7 with SMTP id g7so26078433wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=29KBYaVj5r1skKe4LBxoXCH/2rwxmuuSEm2VGA1jbJo=;
	b=rvuE9PUaiWtBA8MpEXZ4BO+MDf8VHKzBMdarwaGbAA11pae2IK0WWh8mbjDl0BVX9G
	h+59f3gYwN5ES5Ha+00Q8Bi/DtXIrZRrCCgn+IhabsdehFe0GwXV9J0xLoqXA//nj2x/
	R8HOKGsN9F0fewlVD47DX51VzoCfEJink4yKwODPJ3wOyg9vSZLtJLwpiYJ+qRQGRaEJ
	1FnC5CR4qs7I8hA24I9pe53dA6NAGW4tUgFp5EtGJ2xyrTSp9wGJxVuJvBzhyV8bhPUb
	MSk8bdZzLZh/WqUilJkK5gghD9FWA+CrF9ktnbi8TWIXSBpZYpU4BHMU+7AT3e8SivrB
	E8yw==
X-Received: by 10.194.61.12 with SMTP id l12mr160219283wjr.139.1426855440759; 
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.59
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:55 +0000
Message-Id: <1426855436-9864-5-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 4/5] Fix various bits of (largely autogen)
	stupidity in vcxproj files
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 vs2012/package/package.vcxproj             | 107 +++++++--------
 vs2012/xenvif/xenvif.vcxproj               | 214 ++++++++++++++---------------
 vs2012/xenvif_coinst/xenvif_coinst.vcxproj | 132 +++++++++---------
 vs2013/package/package.vcxproj             |  40 +-----
 vs2013/xenvif/xenvif.vcxproj               |  53 +------
 vs2013/xenvif_coinst/xenvif_coinst.vcxproj |  41 +-----
 6 files changed, 220 insertions(+), 367 deletions(-)

diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index bfacbe4..c12fa60 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -1,60 +1,53 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Utility</ConfigurationType>
-		<DriverType>Package</DriverType>
-		<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<EnableInf2cat>true</EnableInf2cat>
-		<Inf2CatWindowsVersionList Condition="'$(Platform)'=='x64'">Vista_x64;7_x64;Server2008_x64;Server2008R2_x64;Server8_x64</Inf2CatWindowsVersionList>
-		<Inf2CatWindowsVersionList Condition="'$(Platform)'=='Win32'">Vista_x86;7_x86;Server2008_x86;8_x86</Inf2CatWindowsVersionList>
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-		<EnableDeployment>False</EnableDeployment>
-		<ImportToStore>False</ImportToStore>
-		<InstallMode>None</InstallMode>
-		<ScriptDeviceQuery>%PathToInf%</ScriptDeviceQuery>
-		<EnableVerifier>False</EnableVerifier>
-		<AllDrivers>False</AllDrivers>
-		<VerifyProjectOutput>True</VerifyProjectOutput>
-		<VerifyFlags>133563</VerifyFlags>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-		<PackageDir>..\..\xenvif\$(DDKPlatform)</PackageDir>
-	</PropertyGroup>
-	
-	<ItemGroup>
-		<ProjectReference Include="..\xenvif\xenvif.vcxproj">
-			<Project>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</Project>
-		</ProjectReference>
-		<ProjectReference Include="..\xenvif_coinst\xenvif_coinst.vcxproj">
-			<Project>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</Project>
-		</ProjectReference>
-	</ItemGroup>
-	<ItemGroup>
-		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
-		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x64\dpinst.exe" Condition="'$(Platform)'=='x64'" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-	<ImportGroup Label="ExtensionTargets">
-	</ImportGroup>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>Package</DriverType> 
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
+    <ConfigurationType>Utility</ConfigurationType>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <EnableInf2cat>true</EnableInf2cat>
+    <Inf2CatWindowsVersionList Condition="'$(Platform)'=='x64'">Vista_x64;7_x64;Server2008_x64;Server2008R2_x64;Server8_x64</Inf2CatWindowsVersionList>
+    <Inf2CatWindowsVersionList Condition="'$(Platform)'=='Win32'">Vista_x86;7_x86;Server2008_x86;8_x86</Inf2CatWindowsVersionList>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+    <EnableDeployment>False</EnableDeployment>
+    <ImportToStore>False</ImportToStore>
+    <InstallMode>None</InstallMode>
+    <ScriptDeviceQuery>%PathToInf%</ScriptDeviceQuery>
+    <EnableVerifier>False</EnableVerifier>
+    <AllDrivers>False</AllDrivers>
+    <VerifyProjectOutput>True</VerifyProjectOutput>
+    <VerifyFlags>133563</VerifyFlags>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+    <PackageDir>..\..\xenvif\$(DDKPlatform)</PackageDir>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\xenvif\xenvif.vcxproj">
+      <Project>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\xenvif_coinst\xenvif_coinst.vcxproj">
+      <Project>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x64\dpinst.exe" Condition="'$(Platform)'=='x64'" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index ee18fc6..d9deb03 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -1,116 +1,104 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<!-- configurations -->
-	<Import Project="..\configs.props" />
-	
-	<!-- global data -->
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	<!-- project settings -->
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
-		<ConfigurationType>Driver</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	
-	<!-- default targets/platform/toolset/etc -->
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<IncludePath>..\..\include;..\..\include\xen;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-        <EnableInf2cat>false</EnableInf2cat>
-        <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CustomBuildStep>
-            <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
-            <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
-            <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
-        </CustomBuildStep>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-		</ClCompile>
-		<Link>
-			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-			<EnableCOMDATFolding>false</EnableCOMDATFolding>
-		</Link>
-		<Inf>
-			<SpecifyArchitecture>true</SpecifyArchitecture>
-			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-			<EnableVerbose>true</EnableVerbose>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>x86</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-		<Inf>
-			<Architecture>amd64</Architecture>
-		</Inf>
-	</ItemDefinitionGroup>
-  
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="../../src/xenvif/bus.c" />
-		<ClCompile Include="../../src/xenvif/checksum.c" />
-		<ClCompile Include="../../src/xenvif/driver.c" />
-		<ClCompile Include="../../src/xenvif/fdo.c" />
-		<ClCompile Include="../../src/xenvif/frontend.c" />
-		<ClCompile Include="../../src/xenvif/link.c" />
-		<ClCompile Include="../../src/xenvif/mac.c" />
-		<ClCompile Include="../../src/xenvif/parse.c" />
-		<ClCompile Include="../../src/xenvif/pdo.c" />
-		<ClCompile Include="../../src/xenvif/receiver.c" />
-		<ClCompile Include="../../src/xenvif/registry.c" />
-		<ClCompile Include="../../src/xenvif/thread.c" />
-		<ClCompile Include="../../src/xenvif/transmitter.c" />
-		<ClCompile Include="../../src/xenvif/vif.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<ResourceCompile Include="..\..\src\xenvif\xenvif.rc" />
-	</ItemGroup>
-	<ItemGroup>
-		<Inf Include="..\xenvif.inf" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\package\package.vcxproj" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType> 
+    <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> 
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <IncludePath>..\..\include;..\..\include\xen;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command>echo "Build Inf"
+      powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
+      echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
+      <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
+      <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
+    </CustomBuildStep>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/xenvif/bus.c" />
+    <ClCompile Include="../../src/xenvif/checksum.c" />
+    <ClCompile Include="../../src/xenvif/driver.c" />
+    <ClCompile Include="../../src/xenvif/fdo.c" />
+    <ClCompile Include="../../src/xenvif/frontend.c" />
+    <ClCompile Include="../../src/xenvif/link.c" />
+    <ClCompile Include="../../src/xenvif/mac.c" />
+    <ClCompile Include="../../src/xenvif/parse.c" />
+    <ClCompile Include="../../src/xenvif/pdo.c" />
+    <ClCompile Include="../../src/xenvif/receiver.c" />
+    <ClCompile Include="../../src/xenvif/registry.c" />
+    <ClCompile Include="../../src/xenvif/thread.c" />
+    <ClCompile Include="../../src/xenvif/transmitter.c" />
+    <ClCompile Include="../../src/xenvif/vif.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenvif\xenvif.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Inf Include="..\xenvif.inf" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\package\package.vcxproj" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2012/xenvif_coinst/xenvif_coinst.vcxproj b/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
index 1eb1ea3..87256b0 100644
--- a/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
+++ b/vs2012/xenvif_coinst/xenvif_coinst.vcxproj
@@ -1,73 +1,65 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-	<Import Project="..\configs.props" />
-	
-	<PropertyGroup Label="PropertySheets">
-	    <DriverType>WDM</DriverType> 
-		<PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
-		<ConfigurationType>DynamicLibrary</ConfigurationType>
-		<DriverType>WDM</DriverType>
-	</PropertyGroup>
-	<PropertyGroup Label="Globals">
-		<Configuration>Windows Vista Debug</Configuration>
-		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
-	</PropertyGroup>
-	
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-	
-	<PropertyGroup Label="Globals">
-		<ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
-	</PropertyGroup>
-	
-	<Import Project="..\targets.props" />
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
-
-	<PropertyGroup>
-		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-		<IncludePath>..\..\include;$(IncludePath)</IncludePath>
-		<RunCodeAnalysis>true</RunCodeAnalysis>
-		<EnableInf2cat>false</EnableInf2cat>
-		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
-		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
-	</PropertyGroup>
-	
-	<ItemDefinitionGroup>
-		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENVIF_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-			<WarningLevel>EnableAllWarnings</WarningLevel>
-			<DisableSpecificWarnings>4127;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-			<MultiProcessorCompilation>true</MultiProcessorCompilation>
-			<EnablePREfast>true</EnablePREfast>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
-			<RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
-		</ClCompile>
-		<Link>
-			<ModuleDefinitionFile>../../src/coinst/xenvif_coinst.def</ModuleDefinitionFile>
-			<AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-		</Link>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
-		<ClCompile>
-			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
-		<ClCompile>
-			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-		</ClCompile>
-	</ItemDefinitionGroup>
-  
-	<ItemGroup>
-		<FilesToPackage Include="$(TargetPath)" />
-		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
-	</ItemGroup>
-	<ItemGroup>
-		<ClCompile Include="..\..\src\coinst\coinst.c" />
-	</ItemGroup>
-	<ItemGroup>
-		<None Include="..\..\src\coinst\xenvif_coinst.def" />
-	</ItemGroup>
-	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType> 
+    <PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+  <PropertyGroup>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+    <IncludePath>..\..\include;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <PreprocessorDefinitions>__MODULE__="XENVIF_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4127;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <ModuleDefinitionFile>../../src/coinst/xenvif_coinst.def</ModuleDefinitionFile>
+      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\coinst\coinst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\coinst\xenvif_coinst.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
\ No newline at end of file
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 6ebfcaf..44369e3 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -3,6 +3,7 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>Utility</ConfigurationType>
     <DriverType>Package</DriverType>
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
@@ -13,45 +14,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{73768CC9-DB26-4297-9EC8-1042F815EB15}</ProjectGuid>
   </PropertyGroup>
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index ef117e5..8dd18be 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -1,60 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <!-- configurations -->
   <Import Project="..\configs.props" />
-  <!-- global data -->
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
     <Platform Condition="'$(Platform)' == ''">Win32</Platform>
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
-  <!-- project settings -->
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
     <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
-  <!-- default targets/platform/toolset/etc -->
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{C3F96D4C-E441-47F7-A44C-D2D0543C1D18}</ProjectGuid>
   </PropertyGroup>
@@ -70,10 +27,10 @@
   <ItemDefinitionGroup>
     <CustomBuildStep>
       <Command>echo "Build Inf"
-                powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
-            </Command>
+      powershell -Command "(Get-Content ..\..\src\xenvif.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\xenvif.inf"
+      echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h"
+      </Command>
       <Outputs>..\xenvif.inf;..\..\include\version.h</Outputs>
       <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
diff --git a/vs2013/xenvif_coinst/xenvif_coinst.vcxproj b/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
index 5624389..3b3607e 100644
--- a/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
+++ b/vs2013/xenvif_coinst/xenvif_coinst.vcxproj
@@ -3,8 +3,8 @@
   <Import Project="..\configs.props" />
   <PropertyGroup Label="PropertySheets">
     <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <DriverType>WDM</DriverType>
   </PropertyGroup>
   <PropertyGroup Label="Globals">
     <Configuration>Windows Vista Debug</Configuration>
@@ -12,45 +12,6 @@
     <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows8 Debug|x64'">
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
-    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
-  </PropertyGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{2BFAC7E6-3420-47A5-A092-BDC5C9D78A44}</ProjectGuid>
   </PropertyGroup>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:06 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHW-00081z-28; Fri, 20 Mar 2015 12:44:06 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHU-00080Z-S7
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:05 +0000
Received: from [85.158.137.68] by server-10.bemta-3.messagelabs.com id
	48/01-07799-4161C055; Fri, 20 Mar 2015 12:44:04 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-8.tower-31.messagelabs.com!1426855441!14065362!1
X-Originating-IP: [74.125.82.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7439 invoked from network); 20 Mar 2015 12:44:02 -0000
Received: from mail-we0-f172.google.com (HELO mail-we0-f172.google.com)
	(74.125.82.172)
	by server-8.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:02 -0000
Received: by wegp1 with SMTP id p1so81198964weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=M2yfSysLJsZht26ZTShll6QpX1eH55ga5jB++ez+XC0=;
	b=L71nMyt9cBvWZudH6J8XWyQsqFOyyUtm/DcYKaU5bbgAcFUDcJhe4NxU3kQ/PSMqUz
	UMQrosoYyVulcOaNawFsXvEvaUw6jWamI0qi763Xv0j2ucomBJzuLi2ZNnT4UQABoDpY
	pLa8rFflQiL+qnVnEi8HcA6laisQD6e5roO71BU1oJQLvNmYSh/y1B23rbLo22M7LXUY
	gvAVEAsApILhl58txy4NFKiy45LQ4SC3CEz3vAD4vIvcQcb2g4BrVplKKBa/+MjZFOlO
	+L6/S8hO7VAbjT1SkyjzF8nTPmvKNT7zuLngx+VLeoUKIsVCwR7k8xzR70PGcFC3lHDx
	F7Gg==
X-Received: by 10.180.87.33 with SMTP id u1mr5111884wiz.20.1426855441637;
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.44.00
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:56 +0000
Message-Id: <1426855436-9864-6-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 5/5] Make XENVIF processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCK multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/emulated_interface.h |   5 +-
 include/evtchn_interface.h   |  36 +++++-
 src/xenvif/driver.c          |  42 +------
 src/xenvif/driver.h          |   5 -
 src/xenvif/frontend.c        | 197 +++++++++++++++++++----------
 src/xenvif/frontend.h        |   7 +-
 src/xenvif/mac.c             |   7 ++
 src/xenvif/receiver.c        | 230 ++++++++++++++++-----------------
 src/xenvif/transmitter.c     | 294 +++++++++++++++++++++----------------------
 src/xenvif/transmitter.h     |   2 +-
 vs2012/xenvif/xenvif.vcxproj |   4 +-
 vs2013/xenvif/xenvif.vcxproj |   4 +-
 12 files changed, 430 insertions(+), 403 deletions(-)

diff --git a/include/emulated_interface.h b/include/emulated_interface.h
index 85ed2b8..9361f8d 100644
--- a/include/emulated_interface.h
+++ b/include/emulated_interface.h
@@ -66,7 +66,8 @@ typedef VOID
 
     \param Interface The interface header
     \param DeviceID The DeviceID of the device
-    \param InstanceID The (un-prefixed) InstanceID of the device
+    \param InstanceID The (un-prefixed) InstanceID of the device or
+           NULL to match any device instance
     \return TRUE if the specified device is present in the system or
     FALSE if it is not
 */  
@@ -74,7 +75,7 @@ typedef BOOLEAN
 (*XENFILT_EMULATED_IS_DEVICE_PRESENT)(
     IN  PVOID   Context,
     IN  PCHAR   DeviceID,
-    IN  PCHAR   InstanceID
+    IN  PCHAR   InstanceID OPTIONAL
     );
 
 /*! \typedef XENFILT_EMULATED_IS_DISK_PRESENT
diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h
index 1bc456a..6f8fe42 100644
--- a/include/evtchn_interface.h
+++ b/include/evtchn_interface.h
@@ -112,18 +112,27 @@ typedef PXENBUS_EVTCHN_CHANNEL
     ...
     );
 
+typedef NTSTATUS
+(*XENBUS_EVTCHN_BIND_V2)(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    );
+
 /*! \typedef XENBUS_EVTCHN_BIND
     \brief Bind an event channel to a specific CPU
 
     \param Interface The interface header
     \param Channel The channel handle
-    \param Cpu The CPU that should handle events
+    \param Group The group number of the CPU that should handle events
+    \param Number The relative number of the CPU that should handle events
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_BIND)(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     );
 
 typedef BOOLEAN
@@ -225,7 +234,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V2 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
-    XENBUS_EVTCHN_BIND      EvtchnBind;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
     XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1;
     XENBUS_EVTCHN_SEND      EvtchnSend;
     XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
@@ -242,6 +251,23 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
+    XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
+    XENBUS_EVTCHN_SEND      EvtchnSend;
+    XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
+    XENBUS_EVTCHN_GET_PORT  EvtchnGetPort;
+    XENBUS_EVTCHN_CLOSE     EvtchnClose;
+};
+
+/*! \struct _XENBUS_EVTCHN_INTERFACE_V4
+    \brief EVTCHN interface version 4
+    \ingroup interfaces
+*/
+struct _XENBUS_EVTCHN_INTERFACE_V4 {
+    INTERFACE               Interface;
+    XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
+    XENBUS_EVTCHN_RELEASE   EvtchnRelease;
+    XENBUS_EVTCHN_OPEN      EvtchnOpen;
     XENBUS_EVTCHN_BIND      EvtchnBind;
     XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
     XENBUS_EVTCHN_SEND      EvtchnSend;
@@ -250,7 +276,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_CLOSE     EvtchnClose;
 };
 
-typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
+typedef struct _XENBUS_EVTCHN_INTERFACE_V4 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
 
 /*! \def XENBUS_EVTCHN
     \brief Macro at assist in method invocation
@@ -261,7 +287,7 @@ typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVT
 #endif  // _WINDLL
 
 #define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 1
-#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 3
+#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 4
 
 #endif  // _XENBUS_EVTCHN_INTERFACE_H
 
diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 589bee9..8cf843f 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <version.h>
 
 #include "registry.h"
@@ -47,7 +48,6 @@ typedef struct _XENVIF_DRIVER {
     PDRIVER_OBJECT      DriverObject;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
-    ULONG               MaximumQueues;
 } XENVIF_DRIVER, *PXENVIF_DRIVER;
 
 static XENVIF_DRIVER    Driver;
@@ -124,30 +124,6 @@ DriverGetAddressesKey(
     return __DriverGetAddressesKey();
 }
 
-static FORCEINLINE VOID
-__DriverSetMaximumQueueCount(
-    IN  ULONG   Count
-    )
-{
-    Driver.MaximumQueues = Count;
-}
-
-static FORCEINLINE ULONG
-__DriverGetMaximumQueueCount(
-    VOID
-    )
-{
-    return Driver.MaximumQueues;
-}
-
-ULONG
-DriverGetMaximumQueueCount(
-    VOID
-    )
-{
-    return __DriverGetMaximumQueueCount();
-}
-
 DRIVER_UNLOAD       DriverUnload;
 
 VOID
@@ -173,8 +149,6 @@ DriverUnload(
     ParametersKey = __DriverGetParametersKey();
     __DriverSetParametersKey(NULL);
 
-    __DriverSetMaximumQueueCount(0);
-
     RegistryCloseKey(ParametersKey);
 
     RegistryTeardown();
@@ -281,13 +255,12 @@ DriverEntry(
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
     ULONG               Index;
-    ULONG               MaxQueues;
-    ULONG               Processors;
     NTSTATUS            status;
 
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
@@ -335,17 +308,6 @@ DriverEntry(
 
     __DriverSetAddressesKey(AddressesKey);
 
-    status = RegistryQueryDwordValue(ParametersKey,
-                                     "MultiQueueMaxQueues",
-                                     &MaxQueues);
-    if (!NT_SUCCESS(status))
-        MaxQueues = MAXIMUM_PROCESSORS;
-
-    Processors = KeQueryActiveProcessorCount(NULL);
-    __DriverSetMaximumQueueCount(MaxQueues > Processors ?
-                                        Processors :
-                                        MaxQueues);
-
     RegistryCloseKey(ServiceKey);
 
     DriverObject->DriverExtension->AddDevice = AddDevice;
diff --git a/src/xenvif/driver.h b/src/xenvif/driver.h
index bbea23b..cdef7d1 100644
--- a/src/xenvif/driver.h
+++ b/src/xenvif/driver.h
@@ -52,11 +52,6 @@ DriverGetAliasesKey(
     VOID
     );
 
-extern ULONG
-DriverGetMaximumQueueCount(
-    VOID
-    );
-
 typedef struct _XENVIF_PDO  XENVIF_PDO, *PXENVIF_PDO;
 typedef struct _XENVIF_FDO  XENVIF_FDO, *PXENVIF_FDO;
 
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 12b9789..3aed6a2 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
@@ -51,6 +52,10 @@
 #include "assert.h"
 #include "util.h"
 
+typedef struct _XENVIF_FRONTEND_STATISTICS {
+    ULONGLONG   Value[XENVIF_VIF_STATISTIC_COUNT];
+} XENVIF_FRONTEND_STATISTICS, *PXENVIF_FRONTEND_STATISTICS;
+
 struct _XENVIF_FRONTEND {
     PXENVIF_PDO                 Pdo;
     PCHAR                       Path;
@@ -62,7 +67,8 @@ struct _XENVIF_FRONTEND {
 
     PCHAR                       BackendPath;
     USHORT                      BackendDomain;
-    ULONG                       QueueCount;
+    ULONG                       MaxQueues;
+    ULONG                       NumQueues;
 
     PXENVIF_MAC                 Mac;
     PXENVIF_RECEIVER            Receiver;
@@ -76,7 +82,8 @@ struct _XENVIF_FRONTEND {
     PXENBUS_DEBUG_CALLBACK      DebugCallback;
     PXENBUS_STORE_WATCH         Watch;
 
-    ULONGLONG                   Statistic[XENVIF_VIF_STATISTIC_COUNT][MAXIMUM_PROCESSORS];
+    PXENVIF_FRONTEND_STATISTICS Statistics;
+    ULONG                       StatisticsCount;
 };
 
 static const PCHAR
@@ -201,28 +208,41 @@ FrontendGetBackendDomain(
 }
 
 static FORCEINLINE VOID
-__FrontendSetQueueCount(
-    IN  PXENVIF_FRONTEND    Frontend,
-    IN  ULONG               Count
+__FrontendSetMaxQueues(
+    IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    Frontend->QueueCount = Count;
+    HANDLE                  ParametersKey;
+    ULONG                   FrontendMaxQueues;
+    NTSTATUS                status;
+
+    Frontend->MaxQueues = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+
+    ParametersKey = DriverGetParametersKey();
+
+    status = RegistryQueryDwordValue(ParametersKey,
+                                     "FrontendMaxQueues",
+                                     &FrontendMaxQueues);
+    if (NT_SUCCESS(status) && FrontendMaxQueues < Frontend->MaxQueues)
+        Frontend->MaxQueues = FrontendMaxQueues;
+
+    Info("%u\n", Frontend->MaxQueues);
 }
 
 static FORCEINLINE ULONG
-__FrontendGetQueueCount(
+__FrontendGetMaxQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    return Frontend->QueueCount;
+    return Frontend->MaxQueues;
 }
 
 ULONG
-FrontendGetQueueCount(
+FrontendGetMaxQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    return __FrontendGetQueueCount(Frontend);
+    return __FrontendGetMaxQueues(Frontend);
 }
 
 PCHAR
@@ -1233,56 +1253,65 @@ fail1:
 static FORCEINLINE VOID
 __FrontendQueryStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     OUT PULONGLONG              Value
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
 
-    ASSERT(Index < XENVIF_VIF_STATISTIC_COUNT);
+    ASSERT(Name < XENVIF_VIF_STATISTIC_COUNT);
 
     *Value = 0;
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++)
-        *Value += Frontend->Statistic[Index][Cpu];
+    for (Index = 0; Index < Frontend->StatisticsCount; Index++) {
+        PXENVIF_FRONTEND_STATISTICS Statistics;
+
+        Statistics = &Frontend->Statistics[Index];
+        *Value += Statistics->Value[Name];
+    }
 }
 
 VOID
 FrontendQueryStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     OUT PULONGLONG              Value
     )
 {
-    __FrontendQueryStatistic(Frontend, Index, Value);
+    __FrontendQueryStatistic(Frontend, Name, Value);
 }
 
 VOID
 FrontendIncrementStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     IN  ULONGLONG               Delta
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
+    PXENVIF_FRONTEND_STATISTICS Statistics;
 
-    ASSERT(Index < XENVIF_VIF_STATISTIC_COUNT);
+    ASSERT(Name < XENVIF_VIF_STATISTIC_COUNT);
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
-    Cpu = KeGetCurrentProcessorNumber();
-    Frontend->Statistic[Index][Cpu] += Delta;
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+
+    ASSERT3U(Index, <, Frontend->StatisticsCount);
+    Statistics = &Frontend->Statistics[Index];
+
+    Statistics->Value[Name] += Delta;
 }
 
 static FORCEINLINE const CHAR *
 __FrontendStatisticName(
-    IN  XENVIF_VIF_STATISTIC    Index
+    IN  XENVIF_VIF_STATISTIC    Name
     )
 {
-#define _FRONTEND_STATISTIC_NAME(_Index)    \
-    case XENVIF_ ## _Index:                 \
-        return #_Index;
+#define _FRONTEND_STATISTIC_NAME(_Name)     \
+    case XENVIF_ ## _Name:                  \
+        return #_Name;
 
-    switch (Index) {
+    switch (Name) {
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_PACKETS_DROPPED);
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_BACKEND_ERRORS);
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_FRONTEND_ERRORS);
@@ -1317,7 +1346,7 @@ FrontendDebugCallback(
     )
 {
     PXENVIF_FRONTEND        Frontend = Argument;
-    XENVIF_VIF_STATISTIC    Index;
+    XENVIF_VIF_STATISTIC    Name;
 
     UNREFERENCED_PARAMETER(Crashing);
 
@@ -1330,33 +1359,28 @@ FrontendDebugCallback(
                  &Frontend->DebugInterface,
                  "STATISTICS:\n");
 
-    for (Index = 0; Index < XENVIF_VIF_STATISTIC_COUNT; Index++) {
+    for (Name = 0; Name < XENVIF_VIF_STATISTIC_COUNT; Name++) {
         ULONGLONG   Value;
 
-        __FrontendQueryStatistic(Frontend, Index, &Value);
+        __FrontendQueryStatistic(Frontend, Name, &Value);
 
         XENBUS_DEBUG(Printf,
                      &Frontend->DebugInterface,
                      " - %40s %lu\n",
-                     __FrontendStatisticName(Index),
+                     __FrontendStatisticName(Name),
                      Value);
     }
 }
 
 static FORCEINLINE VOID
-__FrontendReadQueueCount(
+__FrontendSetNumQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
     PCHAR                   Buffer;
-    ULONG                   Value;
+    ULONG                   BackendMaxQueues;
     NTSTATUS                status;
 
-    // default to 1 queue.
-    // backend must advertise "multi-queue-max-queues" to enable
-    // multi-queue support.
-    Value = 1;
-
     status = XENBUS_STORE(Read,
                           &Frontend->StoreInterface,
                           NULL,
@@ -1364,19 +1388,34 @@ __FrontendReadQueueCount(
                           "multi-queue-max-queues",
                           &Buffer);
     if (NT_SUCCESS(status)) {
-        Value = (ULONG)strtoul(Buffer, NULL, 10);
+        BackendMaxQueues = (ULONG)strtoul(Buffer, NULL, 10);
 
         XENBUS_STORE(Free,
                      &Frontend->StoreInterface,
                      Buffer);
-
-        // set value to minimum of what frontend supports (vCPUs) and
-        // what backend supports (Dom0 vCPUs)
-        if (Value > DriverGetMaximumQueueCount())
-            Value = DriverGetMaximumQueueCount();
+    } else {
+        BackendMaxQueues = 1;
     }
 
-    __FrontendSetQueueCount(Frontend, Value);
+    Frontend->NumQueues = __min(Frontend->MaxQueues, BackendMaxQueues);
+
+    Info("%u\n", Frontend->NumQueues);
+}
+
+static FORCEINLINE ULONG
+__FrontendGetNumQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    )
+{
+    return Frontend->NumQueues;
+}
+
+ULONG
+FrontendGetNumQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    )
+{
+    return __FrontendGetNumQueues(Frontend);
 }
 
 static FORCEINLINE NTSTATUS
@@ -1391,9 +1430,16 @@ __FrontendConnect(
 
     Trace("====>\n");
 
+    Frontend->StatisticsCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    Frontend->Statistics = __FrontendAllocate(sizeof (XENVIF_FRONTEND_STATISTICS) * Frontend->StatisticsCount);
+
+    status = STATUS_NO_MEMORY;
+    if (Frontend->Statistics == NULL)
+        goto fail1;
+
     status = XENBUS_DEBUG(Acquire, &Frontend->DebugInterface);
     if (!NT_SUCCESS(status))
-        goto fail1;
+        goto fail2;
 
     status = XENBUS_DEBUG(Register,
                           &Frontend->DebugInterface,
@@ -1402,20 +1448,21 @@ __FrontendConnect(
                           Frontend,
                           &Frontend->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail3;
 
     status = MacConnect(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail4;
+
+    __FrontendSetNumQueues(Frontend);
 
-    __FrontendReadQueueCount(Frontend);
     status = ReceiverConnect(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail5;
 
     status = TransmitterConnect(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     Attempt = 0;
     do {
@@ -1443,7 +1490,7 @@ __FrontendConnect(
                               __FrontendGetPath(Frontend),
                               "multi-queue-num-queues",
                               "%u",
-                              __FrontendGetQueueCount(Frontend));
+                              __FrontendGetNumQueues(Frontend));
         if (!NT_SUCCESS(status))
             goto abort;
 
@@ -1465,7 +1512,7 @@ abort:
     } while (status == STATUS_RETRY);
 
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail7;
 
     status = XENBUS_STORE(Printf,
                           &Frontend->StoreInterface,
@@ -1475,22 +1522,25 @@ abort:
                           "%u",
                           XenbusStateConnected);
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail8;
 
     State = XenbusStateInitWait;
     status = __FrontendWaitForStateChange(Frontend, Path, &State);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail9;
 
     status = STATUS_UNSUCCESSFUL;
     if (State != XenbusStateConnected)
-        goto fail9;
+        goto fail10;
 
     ThreadWake(Frontend->MibThread);
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
+fail10:
+    Error("fail10\n");
+
 fail9:
     Error("fail9\n");
 
@@ -1500,33 +1550,38 @@ fail8:
 fail7:
     Error("fail7\n");
 
+    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
+
 fail6:
     Error("fail6\n");
 
-    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
+    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
 
 fail5:
     Error("fail5\n");
 
-    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
+    MacDisconnect(__FrontendGetMac(Frontend));
+
+    Frontend->NumQueues = 0;
 
 fail4:
     Error("fail4\n");
 
-    MacDisconnect(__FrontendGetMac(Frontend));
-
-fail3:
-    Error("fail3\n");
-
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
                  Frontend->DebugCallback);
     Frontend->DebugCallback = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_DEBUG(Release, &Frontend->DebugInterface);
+
 fail2:
     Error("fail2\n");
 
-    XENBUS_DEBUG(Release, &Frontend->DebugInterface);
+    __FrontendFree(Frontend->Statistics);
+    Frontend->StatisticsCount = 0;   
 
 fail1:
     Error("fail1 (%08x)\n", status);
@@ -1546,6 +1601,8 @@ __FrontendDisconnect(
     ReceiverDisconnect(__FrontendGetReceiver(Frontend));
     MacDisconnect(__FrontendGetMac(Frontend));
 
+    Frontend->NumQueues = 0;
+
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
                  Frontend->DebugCallback);
@@ -1553,7 +1610,8 @@ __FrontendDisconnect(
 
     XENBUS_DEBUG(Release, &Frontend->DebugInterface);
 
-    RtlZeroMemory(&Frontend->Statistic, sizeof (Frontend->Statistic));
+    __FrontendFree(Frontend->Statistics);
+    Frontend->StatisticsCount = 0;
 
     Trace("<====\n");
 }
@@ -1958,6 +2016,8 @@ FrontendInitialize(
     FdoGetSuspendInterface(PdoGetFdo(Pdo), &(*Frontend)->SuspendInterface);
     FdoGetStoreInterface(PdoGetFdo(Pdo), &(*Frontend)->StoreInterface);
 
+    __FrontendSetMaxQueues(*Frontend);
+
     status = MacInitialize(*Frontend, &(*Frontend)->Mac);
     if (!NT_SUCCESS(status))
         goto fail6;
@@ -2010,6 +2070,8 @@ fail7:
 fail6:
     Error("fail6\n");
 
+    (*Frontend)->MaxQueues = 0;
+
     RtlZeroMemory(&(*Frontend)->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
@@ -2020,6 +2082,7 @@ fail6:
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
     (*Frontend)->State = FRONTEND_STATE_INVALID;
+
     RtlZeroMemory(&(*Frontend)->Lock, sizeof (KSPIN_LOCK));
 
     (*Frontend)->BackendDomain = 0;
@@ -2091,6 +2154,8 @@ FrontendTeardown(
     MacTeardown(__FrontendGetMac(Frontend));
     Frontend->Mac = NULL;
 
+    Frontend->MaxQueues = 0;
+
     RtlZeroMemory(&Frontend->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
@@ -2101,10 +2166,10 @@ FrontendTeardown(
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
     Frontend->State = FRONTEND_STATE_INVALID;
+
     RtlZeroMemory(&Frontend->Lock, sizeof (KSPIN_LOCK));
 
     Frontend->BackendDomain = 0;
-    __FrontendSetQueueCount(Frontend, 0);
 
     __FrontendFree(Frontend->Prefix);
     Frontend->Prefix = NULL;
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index adcf53c..1673fac 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -113,7 +113,12 @@ FrontendGetBackendDomain(
     );
 
 extern ULONG
-FrontendGetQueueCount(
+FrontendGetMaxQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    );
+
+extern ULONG
+FrontendGetNumQueues(
     IN  PXENVIF_FRONTEND    Frontend
     );
 
diff --git a/src/xenvif/mac.c b/src/xenvif/mac.c
index 1d60a1f..b255d58 100644
--- a/src/xenvif/mac.c
+++ b/src/xenvif/mac.c
@@ -349,6 +349,8 @@ MacEnable(
     PXENVIF_THREAD      Thread;
     NTSTATUS            status;
 
+    Trace("====>\n");
+
     Frontend = Mac->Frontend;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
@@ -370,6 +372,7 @@ MacEnable(
 
     KeReleaseSpinLockFromDpcLevel(&Mac->Lock);
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail1:
@@ -387,6 +390,8 @@ MacDisable(
 {
     PXENVIF_FRONTEND    Frontend;
 
+    Trace("====>\n");
+
     Frontend = Mac->Frontend;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
@@ -401,6 +406,8 @@ MacDisable(
     Mac->Watch = NULL;
 
     KeReleaseSpinLockFromDpcLevel(&Mac->Lock);
+
+    Trace("<====\n");
 }
 
 VOID
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 6f45627..f09b71c 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <xen.h>
@@ -108,7 +109,9 @@ struct _XENVIF_RECEIVER {
     XENBUS_CACHE_INTERFACE  CacheInterface;
     XENBUS_GNTTAB_INTERFACE GnttabInterface;
     XENBUS_EVTCHN_INTERFACE EvtchnInterface;
-    PXENVIF_RECEIVER_RING   Rings[MAXIMUM_PROCESSORS];
+    PXENVIF_RECEIVER_RING   *Ring;
+    LONG                    MaxQueues;
+    LONG                    NumQueues;
     BOOLEAN                 Split;
     LONG                    Loaned;
     LONG                    Returned;
@@ -1914,13 +1917,10 @@ ReceiverRingDpc(
     Frontend = Receiver->Frontend;
 
     if (Ring->Enabled) {
-        if (Receiver->Split) {
-            __ReceiverRingNotify(Ring);
-        } else {
-            TransmitterRingNotify(FrontendGetTransmitter(Frontend),
-                                  Ring->Index);
-            __ReceiverRingNotify(Ring);
-        }
+        __ReceiverRingNotify(Ring);
+        if (!Receiver->Split)
+            TransmitterNotify(FrontendGetTransmitter(Frontend),
+                              Ring->Index);
     }
 
     __ReceiverRingUnmask(Ring);
@@ -2175,6 +2175,7 @@ __ReceiverRingConnect(
     PFN_NUMBER                  Pfn;
     CHAR                        Name[MAXNAMELEN];
     ULONG                       Index;
+    PROCESSOR_NUMBER            ProcNumber;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
@@ -2249,15 +2250,16 @@ __ReceiverRingConnect(
     if (Ring->Channel == NULL)
         goto fail6;
 
-    if (FrontendGetQueueCount(Frontend) > 1) {
-        (VOID) XENBUS_EVTCHN(Bind,
-                                &Receiver->EvtchnInterface,
-                                Ring->Channel,
-                                Ring->Index);
+    status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
 
-        KeSetTargetProcessorDpc(&Ring->Dpc,
-                                (CCHAR)Ring->Index);
-    }
+    KeSetTargetProcessorDpcEx(&Ring->Dpc, &ProcNumber);
+
+    (VOID) XENBUS_EVTCHN(Bind,
+                         &Receiver->EvtchnInterface,
+                         Ring->Channel,
+                         ProcNumber.Group,
+                         ProcNumber.Number);
 
     XENBUS_EVTCHN(Unmask,
                   &Receiver->EvtchnInterface,
@@ -2344,10 +2346,9 @@ __ReceiverRingStoreWrite(
     Receiver = Ring->Receiver;
     Frontend = Receiver->Frontend;
 
-    ASSERT(IMPLY(FrontendGetQueueCount(Frontend) == 1, Ring->Index == 0));
-    Path = (FrontendGetQueueCount(Frontend) == 1) ?
-                    FrontendGetPath(Frontend) :
-                    Ring->Path;
+    Path = (Receiver->NumQueues == 1) ?
+           FrontendGetPath(Frontend) :
+           Ring->Path;
 
     status = XENBUS_STORE(Printf,
                           &Receiver->StoreInterface,
@@ -2581,11 +2582,9 @@ ReceiverInitialize(
     )
 {
     HANDLE                  ParametersKey;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Count = DriverGetMaximumQueueCount();
     *Receiver = __ReceiverAllocate(sizeof (XENVIF_RECEIVER));
 
     status = STATUS_NO_MEMORY;
@@ -2600,7 +2599,6 @@ ReceiverInitialize(
     (*Receiver)->DisableIpVersion6Gso = 0;
     (*Receiver)->IpAlignOffset = 0;
     (*Receiver)->AlwaysPullup = 0;
-    (*Receiver)->Split = FALSE;
 
     if (ParametersKey != NULL) {
         ULONG   ReceiverCalculateChecksums;
@@ -2670,34 +2668,46 @@ ReceiverInitialize(
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-    for (Index = 0; Index < Count; ++Index) {
+    (*Receiver)->MaxQueues = FrontendGetMaxQueues(Frontend);
+    (*Receiver)->Ring = __ReceiverAllocate(sizeof (PXENVIF_RECEIVER_RING) *
+                                           (*Receiver)->MaxQueues);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Receiver)->Ring == NULL)
+        goto fail3;
+
+    Index = 0;
+    while (Index < (*Receiver)->MaxQueues) {
         PXENVIF_RECEIVER_RING   Ring;
 
         status = __ReceiverRingInitialize(*Receiver, Index, &Ring);
         if (!NT_SUCCESS(status))
-            goto fail3;
+            goto fail4;
 
-        (*Receiver)->Rings[Index] = Ring;
+        (*Receiver)->Ring[Index] = Ring;
+        Index++;
     }
 
     return STATUS_SUCCESS;
 
-fail3:
-    Error("fail3\n");
-
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = (*Receiver)->Rings[Index];
-        (*Receiver)->Rings[Index] = NULL;
+fail4:
+    Error("fail4\n");
 
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = (*Receiver)->Ring[Index];
 
+        (*Receiver)->Ring[Index] = NULL;
         __ReceiverRingTeardown(Ring);
     }
 
+    __ReceiverFree((*Receiver)->Ring);
+    (*Receiver)->Ring = NULL;
+
+fail3:
+    Error("fail3\n");
+
+    (*Receiver)->MaxQueues = 0;
+
     XENBUS_CACHE(Release, &(*Receiver)->CacheInterface);
 
 fail2:
@@ -2728,7 +2738,6 @@ fail2:
     (*Receiver)->DisableIpVersion6Gso = 0;
     (*Receiver)->IpAlignOffset = 0;
     (*Receiver)->AlwaysPullup = 0;
-    (*Receiver)->Split = FALSE;
 
     ASSERT(IsZeroMemory(*Receiver, sizeof (XENVIF_RECEIVER)));
     __ReceiverFree(*Receiver);
@@ -2745,8 +2754,7 @@ ReceiverConnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     PCHAR                   Buffer;
     NTSTATUS                status;
 
@@ -2784,19 +2792,18 @@ ReceiverConnect(
                      Buffer);
     }
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Receiver->NumQueues = FrontendGetNumQueues(Frontend);
+    ASSERT3U(Receiver->NumQueues, <=, Receiver->MaxQueues);
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingConnect(Ring);
         if (!NT_SUCCESS(status))
             goto fail5;
+
+        Index++;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -2813,19 +2820,19 @@ ReceiverConnect(
 fail6:
     Error("fail6\n");
 
+    Index = Receiver->NumQueues;
+
 fail5:
     Error("fail5\n");
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisconnect(Ring);
     }
 
+    Receiver->NumQueues = 0;
+
     XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
 
 fail4:
@@ -2940,8 +2947,7 @@ ReceiverStoreWrite(
     )
 {
     PXENVIF_FRONTEND                Frontend;
-    ULONG                           Index;
-    ULONG                           Count;
+    LONG                            Index;
     NTSTATUS                        status;
 
     Frontend = Receiver->Frontend;
@@ -2984,19 +2990,15 @@ ReceiverStoreWrite(
     if (!NT_SUCCESS(status))
         goto fail5;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingStoreWrite(Ring, Transaction);
         if (!NT_SUCCESS(status))
             goto fail6;
+
+        Index++;
     }    
 
     return STATUS_SUCCESS;
@@ -3027,37 +3029,32 @@ ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Frontend = Receiver->Frontend;
-
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Trace("====>\n");
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingEnable(Ring);
         if (!NT_SUCCESS(status))
             goto fail1;
+
+        Index++;
     }    
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail1:
     Error("fail1 (%08x)\n", status);
 
-    for (Index = 0; Index < Count; ++Index) {
+    while (--Index >= 0) {
         PXENVIF_RECEIVER_RING   Ring;
 
-        Ring = Receiver->Rings[Index];
+        Ring = Receiver->Ring[Index];
         if (Ring == NULL)
             break;
 
@@ -3072,21 +3069,18 @@ ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
 
-    Count = FrontendGetQueueCount(Receiver->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Trace("====>\n");
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Receiver->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisable(Ring);
     }
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3095,8 +3089,7 @@ ReceiverDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
 
     Frontend = Receiver->Frontend;
 
@@ -3107,19 +3100,15 @@ ReceiverDisconnect(
                  Receiver->DebugCallback);
     Receiver->DebugCallback = NULL;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Receiver->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisconnect(Ring);
     }
 
+    Receiver->NumQueues = 0;
+
     XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
 
     XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
@@ -3134,7 +3123,7 @@ ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3143,22 +3132,21 @@ ReceiverTeardown(
     Receiver->Loaned = 0;
     Receiver->Returned = 0;
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        Receiver->Rings[Index] = NULL;
-
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    Index = Receiver->MaxQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
+        Receiver->Ring[Index] = NULL;
         __ReceiverRingTeardown(Ring);
     }
 
+    __ReceiverFree(Receiver->Ring);
+    Receiver->Ring = NULL;
+    Receiver->MaxQueues;
+
     XENBUS_CACHE(Release, &Receiver->CacheInterface);
 
     Receiver->Frontend = NULL;
-    Receiver->Split = FALSE;
 
     RtlZeroMemory(&Receiver->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
@@ -3194,8 +3182,7 @@ ReceiverSetOffloadOptions(
     IN  XENVIF_VIF_OFFLOAD_OPTIONS  Options
     )
 {
-    ULONG                           Index;
-    ULONG                           Count;
+    LONG                            Index;
 
     if (Receiver->AllowGsoPackets == 0) {
         Warning("RECEIVER GSO DISALLOWED\n");
@@ -3203,13 +3190,10 @@ ReceiverSetOffloadOptions(
         Options.OffloadIpVersion6LargePacket = 0;
     }
 
-    Count = FrontendGetQueueCount(Receiver->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
+    for (Index = 0; Index < Receiver->MaxQueues; ++Index) {
         PXENVIF_RECEIVER_RING   Ring;
 
-        Ring = Receiver->Rings[Index];
+        Ring = Receiver->Ring[Index];
         if (Ring == NULL)
             break;
 
@@ -3304,12 +3288,8 @@ ReceiverSend(
 {
     PXENVIF_RECEIVER_RING   Ring;
 
-    if (Index >= MAXIMUM_PROCESSORS)
-        return;
-
-    Ring = Receiver->Rings[Index];
-    if (Ring == NULL)
-        return;
+    ASSERT3U(Index, <, (ULONG)Receiver->NumQueues);
+    Ring = Receiver->Ring[Index];
 
     __ReceiverRingSend(Ring, FALSE);
 }
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 9f81ca1..7fe1738 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
@@ -149,7 +150,9 @@ struct _XENVIF_TRANSMITTER {
     XENBUS_GNTTAB_INTERFACE     GnttabInterface;
     XENBUS_RANGE_SET_INTERFACE  RangeSetInterface;
     XENBUS_EVTCHN_INTERFACE     EvtchnInterface;
-    PXENVIF_TRANSMITTER_RING    Rings[MAXIMUM_PROCESSORS];
+    PXENVIF_TRANSMITTER_RING    *Ring;
+    LONG                        MaxQueues;
+    LONG                        NumQueues;
     LONG_PTR                    Offset[XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT];
     BOOLEAN                     Split;
     ULONG                       DisableIpVersion4Gso;
@@ -3030,6 +3033,7 @@ __TransmitterRingConnect(
     PFN_NUMBER                      Pfn;
     CHAR                            Name[MAXNAMELEN];
     ULONG                           Index;
+    PROCESSOR_NUMBER                ProcNumber;
     NTSTATUS                        status;
 
     ASSERT(!Ring->Connected);
@@ -3107,15 +3111,16 @@ __TransmitterRingConnect(
         if (Ring->Channel == NULL)
             goto fail6;
 
-        if (FrontendGetQueueCount(Frontend) > 1) {
-            (VOID) XENBUS_EVTCHN(Bind,
-                                 &Transmitter->EvtchnInterface,
-                                 Ring->Channel,
-                                 Ring->Index);
+        status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
 
-            KeSetTargetProcessorDpc(&Ring->Dpc,
-                                    (CCHAR)Ring->Index);
-        }
+        KeSetTargetProcessorDpcEx(&Ring->Dpc, &ProcNumber);
+
+        (VOID) XENBUS_EVTCHN(Bind,
+                             &Transmitter->EvtchnInterface,
+                             Ring->Channel,
+                             ProcNumber.Group,
+                             ProcNumber.Number);
 
         XENBUS_EVTCHN(Unmask,
                       &Transmitter->EvtchnInterface,
@@ -3201,10 +3206,9 @@ __TransmitterRingStoreWrite(
     Transmitter = Ring->Transmitter;
     Frontend = Transmitter->Frontend;
 
-    ASSERT(IMPLY(FrontendGetQueueCount(Frontend) == 1, Ring->Index == 0));
-    Path = (FrontendGetQueueCount(Frontend) == 1) ?
-                    FrontendGetPath(Frontend) :
-                    Ring->Path;
+    Path = (Transmitter->NumQueues == 1) ?
+           FrontendGetPath(Frontend) :
+           Ring->Path;
 
     status = XENBUS_STORE(Printf,
                           &Transmitter->StoreInterface,
@@ -3290,9 +3294,8 @@ __TransmitterRingDisable(
     Packet = __TransmitterRingUnpreparePacket(Ring);
 
     // Put any packet back on the head of the queue
-    if (Packet != NULL) {
+    if (Packet != NULL)
         InsertHeadList(&Ring->Queued, &Packet->ListEntry);
-    }
 
     Ring->AddressIndex = 0;
 
@@ -3559,11 +3562,9 @@ TransmitterInitialize(
     )
 {
     HANDLE                  ParametersKey;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Count = DriverGetMaximumQueueCount();
     *Transmitter = __TransmitterAllocate(sizeof (XENVIF_TRANSMITTER));
 
     status = STATUS_NO_MEMORY;
@@ -3575,7 +3576,6 @@ TransmitterInitialize(
     (*Transmitter)->DisableIpVersion4Gso = 0;
     (*Transmitter)->DisableIpVersion6Gso = 0;
     (*Transmitter)->AlwaysCopy = 0;
-    (*Transmitter)->Split = FALSE;
 
     if (ParametersKey != NULL) {
         ULONG   TransmitterDisableIpVersion4Gso;
@@ -3630,34 +3630,46 @@ TransmitterInitialize(
     if (!NT_SUCCESS(status))
         goto fail3;
 
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-    for (Index = 0; Index < Count; ++Index) {
+    (*Transmitter)->MaxQueues = FrontendGetMaxQueues(Frontend);
+    (*Transmitter)->Ring = __TransmitterAllocate(sizeof (PXENVIF_TRANSMITTER_RING) *
+                                                 (*Transmitter)->MaxQueues);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Transmitter)->Ring == NULL)
+        goto fail4;
+
+    Index = 0;
+    while (Index < (*Transmitter)->MaxQueues) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
         status = __TransmitterRingInitialize(*Transmitter, Index, &Ring);
         if (!NT_SUCCESS(status))
-            goto fail4;
+            goto fail5;
 
-        (*Transmitter)->Rings[Index] = Ring;
+        (*Transmitter)->Ring[Index] = Ring;
+        Index++;
     }
 
     return STATUS_SUCCESS;
 
-fail4:
-    Error("fail4\n");
-
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = (*Transmitter)->Rings[Index];
-        (*Transmitter)->Rings[Index] = NULL;
+fail5:
+    Error("fail5\n");
 
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    while (--Index > 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = (*Transmitter)->Ring[Index];
 
+        (*Transmitter)->Ring[Index] = NULL;
         __TransmitterRingTeardown(Ring);
     }
 
+    __TransmitterFree((*Transmitter)->Ring);
+    (*Transmitter)->Ring = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    (*Transmitter)->MaxQueues = 0;
+
     XENBUS_CACHE(Release, &(*Transmitter)->CacheInterface);
 
 fail3:
@@ -3709,8 +3721,7 @@ TransmitterConnect(
     PXENVIF_FRONTEND            Frontend;
     CHAR                        Name[MAXNAMELEN];
     PCHAR                       Buffer;
-    ULONG                       Index;
-    ULONG                       Count;
+    LONG                        Index;
     NTSTATUS                    status;
 
     Frontend = Transmitter->Frontend;
@@ -3772,19 +3783,18 @@ TransmitterConnect(
                      Buffer);
     }
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Transmitter->NumQueues = FrontendGetNumQueues(Frontend);
+    ASSERT3U(Transmitter->NumQueues, <=, Transmitter->MaxQueues);
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         status = __TransmitterRingConnect(Ring);
         if (!NT_SUCCESS(status))
             goto fail7;
+
+        Index++;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -3801,19 +3811,21 @@ TransmitterConnect(
 fail8:
     Error("fail8\n");
 
+    Index = Transmitter->NumQueues;
+
 fail7:
     Error("fail7\n");
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+        Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
     }
 
+    Transmitter->NumQueues = 0;
+
     XENBUS_CACHE(Destroy,
                  &Transmitter->CacheInterface,
                  Transmitter->PacketCache);
@@ -3855,22 +3867,17 @@ TransmitterStoreWrite(
     )
 {
     NTSTATUS                        status;
-    ULONG                           Index;
-    ULONG                           Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    LONG                            Index;
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         status = __TransmitterRingStoreWrite(Ring, Transaction);
         if (!NT_SUCCESS(status))
             goto fail1;
+
+        Index++;
     }    
 
     return STATUS_SUCCESS;
@@ -3886,22 +3893,19 @@ TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
+    LONG                    Index;
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Trace("====>\n");
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingEnable(Ring);
+        Index++;
     }    
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 }
 
@@ -3910,21 +3914,18 @@ TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
+    LONG                   Index;
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Trace("====>\n");
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisable(Ring);
     }
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3934,7 +3935,6 @@ TransmitterDisconnect(
 {
     PXENVIF_FRONTEND        Frontend;
     ULONG                   Index;
-    ULONG                   Count;
 
     Frontend = Transmitter->Frontend;
 
@@ -3945,19 +3945,15 @@ TransmitterDisconnect(
                  Transmitter->DebugCallback);
     Transmitter->DebugCallback = NULL;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >- 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
     }
 
+    Transmitter->NumQueues = 0;
+
     XENBUS_CACHE(Destroy,
                  &Transmitter->CacheInterface,
                  Transmitter->PacketCache);
@@ -3985,24 +3981,23 @@ TransmitterTeardown(
     RtlZeroMemory(Transmitter->Offset,
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        Transmitter->Rings[Index] = NULL;
-
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    Index = Transmitter->MaxQueues;
+    while (--Index >- 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
+        Transmitter->Ring[Index] = NULL;
         __TransmitterRingTeardown(Ring);
     }
 
+    __TransmitterFree(Transmitter->Ring);
+    Transmitter->Ring = NULL;
+    Transmitter->MaxQueues;
+
     XENBUS_CACHE(Release, &Transmitter->CacheInterface);
 
     XENBUS_RANGE_SET(Release, &Transmitter->RangeSetInterface);
 
     Transmitter->Frontend = NULL;
-    Transmitter->Split = FALSE;
 
     RtlZeroMemory(&Transmitter->Lock,
                   sizeof (KSPIN_LOCK));
@@ -4047,7 +4042,7 @@ TransmitterUpdateAddressTable(
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
 
     // Use the first ring for address advertisment
-    Ring = Transmitter->Rings[0];
+    Ring = Transmitter->Ring[0];
     ASSERT3U(Ring, !=, NULL);
 
     __TransmitterRingUpdateAddressTable(Ring, Table, Count);
@@ -4063,7 +4058,7 @@ TransmitterAdvertiseAddresses(
     PXENVIF_TRANSMITTER_RING    Ring;
 
     // Use the first ring for address advertisment
-    Ring = Transmitter->Rings[0];
+    Ring = Transmitter->Ring[0];
     ASSERT3U(Ring, !=, NULL);
 
     __TransmitterRingAdvertiseAddresses(Ring);
@@ -4248,64 +4243,66 @@ TransmitterQueuePacketsVersion1(
 #undef OFFSET_EXISTS
 }
 
-static FORCEINLINE ULONG
-__GetQueue(
-    IN  ULONG       QueueCount,
-    IN  ULONG       HashValue
-    )
-{
-    return HashValue % QueueCount;
-}
-
 VOID
 TransmitterQueuePackets(
-    IN  PXENVIF_TRANSMITTER Transmitter,
-    IN  PLIST_ENTRY         List
+    IN  PXENVIF_TRANSMITTER     Transmitter,
+    IN  PLIST_ENTRY             List
     )
 {
     PXENVIF_TRANSMITTER_RING    Ring;
     PXENVIF_FRONTEND            Frontend;
-    ULONG                       QueueCount;
 
     Frontend = Transmitter->Frontend;
 
-    QueueCount = FrontendGetQueueCount(Frontend);
-
-    if (QueueCount == 1) {
-        Ring = Transmitter->Rings[0];
-        ASSERT3P(Ring, !=, NULL);
+    if (Transmitter->NumQueues == 1) {
+        Ring = Transmitter->Ring[0];
 
         __TransmitterRingQueuePackets(Ring, List);
     } else {
         while (!IsListEmpty(List)) {
             PXENVIF_TRANSMITTER_PACKET  Packet;
-            PLIST_ENTRY                 ListEntry;
-            LIST_ENTRY                  ListHead;
-            ULONG                       Queue;
+            LIST_ENTRY                  HashList;
+            ULONG                       Index;
 
-            InitializeListHead(&ListHead);
+            InitializeListHead(&HashList);
+            Index = 0;
 
-            ListEntry = List->Flink;
-            Packet = CONTAINING_RECORD(ListEntry, XENVIF_TRANSMITTER_PACKET, ListEntry);
-            Queue = __GetQueue(QueueCount, Packet->Value);
+            while (!IsListEmpty(List)) {            
+                PLIST_ENTRY ListEntry;
+                ULONG       Hash;
+
+                ListEntry = RemoveHeadList(List);
+                ASSERT3P(ListEntry, !=, List);
 
-            (VOID) RemoveHeadList(List);
-            InsertTailList(&ListHead, ListEntry);
+                RtlZeroMemory(ListEntry, sizeof (LIST_ENTRY));
 
-            while (!IsListEmpty(List)) {
-                ListEntry = List->Flink;
                 Packet = CONTAINING_RECORD(ListEntry, XENVIF_TRANSMITTER_PACKET, ListEntry);
-                if (Queue != __GetQueue(QueueCount, Packet->Value))
-                    break;
 
-                (VOID) RemoveHeadList(List);
-                InsertTailList(&ListHead, ListEntry);
+                Hash = Packet->Value % Transmitter->NumQueues;
+                if (Hash != Index) {
+                    if (!IsListEmpty(&HashList)) {
+                        Ring = Transmitter->Ring[Index];
+                        ASSERT3P(Ring, !=, NULL);
+
+                        __TransmitterRingQueuePackets(Ring, &HashList);
+                        InitializeListHead(&HashList);
+                    }
+
+                    Index = Hash;
+                }
+
+                InsertTailList(&HashList, ListEntry);
             }
 
-            Ring = Transmitter->Rings[Queue];
-            ASSERT3P(Ring, !=, NULL);
+            if (!IsListEmpty(&HashList)) {
+                Ring = Transmitter->Ring[Index];
+                ASSERT3P(Ring, !=, NULL);
+
+                __TransmitterRingQueuePackets(Ring, &HashList);
+                InitializeListHead(&HashList);
+            }
 
-            __TransmitterRingQueuePackets(Ring, &ListHead);
+            ASSERT(IsListEmpty(&HashList));
         }
     }
 }
@@ -4315,21 +4312,14 @@ TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
     KIRQL                   Irql;
+    LONG                    Index;
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
 
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingAbortPackets(Ring);
     }    
@@ -4349,19 +4339,15 @@ TransmitterQueryRingSize(
 }
 
 VOID
-TransmitterRingNotify(
-    IN  PXENVIF_TRANSMITTER Transmitter,
-    IN  ULONG               Index
+TransmitterNotify(
+    IN  PXENVIF_TRANSMITTER     Transmitter,
+    IN  ULONG                   Index
     )
 {
     PXENVIF_TRANSMITTER_RING    Ring;
 
-    if (Index >= MAXIMUM_PROCESSORS)
-        return;
-
-    Ring = Transmitter->Rings[Index];
-    if (Ring == NULL)
-        return;
+    ASSERT3U(Index, <, (ULONG)Transmitter->NumQueues);
+    Ring = Transmitter->Ring[Index];
 
     __TransmitterRingNotify(Ring);
 }
diff --git a/src/xenvif/transmitter.h b/src/xenvif/transmitter.h
index 8dc4e3c..fad0762 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -78,7 +78,7 @@ TransmitterTeardown(
     );
 
 extern VOID
-TransmitterRingNotify(
+TransmitterNotify(
     IN  PXENVIF_TRANSMITTER Transmitter,
     IN  ULONG               Index
     );
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index d9deb03..0429bd0 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -36,7 +36,7 @@
       <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -44,7 +44,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index 8dd18be..e6a0ac4 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -36,7 +36,7 @@
     </CustomBuildStep>
     <ClCompile>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -47,7 +47,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:06 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHW-00081z-28; Fri, 20 Mar 2015 12:44:06 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHU-00080Z-S7
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:05 +0000
Received: from [85.158.137.68] by server-10.bemta-3.messagelabs.com id
	48/01-07799-4161C055; Fri, 20 Mar 2015 12:44:04 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-8.tower-31.messagelabs.com!1426855441!14065362!1
X-Originating-IP: [74.125.82.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7439 invoked from network); 20 Mar 2015 12:44:02 -0000
Received: from mail-we0-f172.google.com (HELO mail-we0-f172.google.com)
	(74.125.82.172)
	by server-8.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:02 -0000
Received: by wegp1 with SMTP id p1so81198964weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=M2yfSysLJsZht26ZTShll6QpX1eH55ga5jB++ez+XC0=;
	b=L71nMyt9cBvWZudH6J8XWyQsqFOyyUtm/DcYKaU5bbgAcFUDcJhe4NxU3kQ/PSMqUz
	UMQrosoYyVulcOaNawFsXvEvaUw6jWamI0qi763Xv0j2ucomBJzuLi2ZNnT4UQABoDpY
	pLa8rFflQiL+qnVnEi8HcA6laisQD6e5roO71BU1oJQLvNmYSh/y1B23rbLo22M7LXUY
	gvAVEAsApILhl58txy4NFKiy45LQ4SC3CEz3vAD4vIvcQcb2g4BrVplKKBa/+MjZFOlO
	+L6/S8hO7VAbjT1SkyjzF8nTPmvKNT7zuLngx+VLeoUKIsVCwR7k8xzR70PGcFC3lHDx
	F7Gg==
X-Received: by 10.180.87.33 with SMTP id u1mr5111884wiz.20.1426855441637;
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.44.00
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:44:01 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:56 +0000
Message-Id: <1426855436-9864-6-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 5/5] Make XENVIF processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCK multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 include/emulated_interface.h |   5 +-
 include/evtchn_interface.h   |  36 +++++-
 src/xenvif/driver.c          |  42 +------
 src/xenvif/driver.h          |   5 -
 src/xenvif/frontend.c        | 197 +++++++++++++++++++----------
 src/xenvif/frontend.h        |   7 +-
 src/xenvif/mac.c             |   7 ++
 src/xenvif/receiver.c        | 230 ++++++++++++++++-----------------
 src/xenvif/transmitter.c     | 294 +++++++++++++++++++++----------------------
 src/xenvif/transmitter.h     |   2 +-
 vs2012/xenvif/xenvif.vcxproj |   4 +-
 vs2013/xenvif/xenvif.vcxproj |   4 +-
 12 files changed, 430 insertions(+), 403 deletions(-)

diff --git a/include/emulated_interface.h b/include/emulated_interface.h
index 85ed2b8..9361f8d 100644
--- a/include/emulated_interface.h
+++ b/include/emulated_interface.h
@@ -66,7 +66,8 @@ typedef VOID
 
     \param Interface The interface header
     \param DeviceID The DeviceID of the device
-    \param InstanceID The (un-prefixed) InstanceID of the device
+    \param InstanceID The (un-prefixed) InstanceID of the device or
+           NULL to match any device instance
     \return TRUE if the specified device is present in the system or
     FALSE if it is not
 */  
@@ -74,7 +75,7 @@ typedef BOOLEAN
 (*XENFILT_EMULATED_IS_DEVICE_PRESENT)(
     IN  PVOID   Context,
     IN  PCHAR   DeviceID,
-    IN  PCHAR   InstanceID
+    IN  PCHAR   InstanceID OPTIONAL
     );
 
 /*! \typedef XENFILT_EMULATED_IS_DISK_PRESENT
diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h
index 1bc456a..6f8fe42 100644
--- a/include/evtchn_interface.h
+++ b/include/evtchn_interface.h
@@ -112,18 +112,27 @@ typedef PXENBUS_EVTCHN_CHANNEL
     ...
     );
 
+typedef NTSTATUS
+(*XENBUS_EVTCHN_BIND_V2)(
+    IN  PINTERFACE              Interface,
+    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
+    IN  ULONG                   Cpu
+    );
+
 /*! \typedef XENBUS_EVTCHN_BIND
     \brief Bind an event channel to a specific CPU
 
     \param Interface The interface header
     \param Channel The channel handle
-    \param Cpu The CPU that should handle events
+    \param Group The group number of the CPU that should handle events
+    \param Number The relative number of the CPU that should handle events
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_BIND)(
     IN  PINTERFACE              Interface,
     IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Cpu
+    IN  USHORT                  Group,
+    IN  UCHAR                   Number
     );
 
 typedef BOOLEAN
@@ -225,7 +234,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V2 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
-    XENBUS_EVTCHN_BIND      EvtchnBind;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
     XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1;
     XENBUS_EVTCHN_SEND      EvtchnSend;
     XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
@@ -242,6 +251,23 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
     XENBUS_EVTCHN_RELEASE   EvtchnRelease;
     XENBUS_EVTCHN_OPEN      EvtchnOpen;
+    XENBUS_EVTCHN_BIND_V2   EvtchnBindVersion2;
+    XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
+    XENBUS_EVTCHN_SEND      EvtchnSend;
+    XENBUS_EVTCHN_TRIGGER   EvtchnTrigger;
+    XENBUS_EVTCHN_GET_PORT  EvtchnGetPort;
+    XENBUS_EVTCHN_CLOSE     EvtchnClose;
+};
+
+/*! \struct _XENBUS_EVTCHN_INTERFACE_V4
+    \brief EVTCHN interface version 4
+    \ingroup interfaces
+*/
+struct _XENBUS_EVTCHN_INTERFACE_V4 {
+    INTERFACE               Interface;
+    XENBUS_EVTCHN_ACQUIRE   EvtchnAcquire;
+    XENBUS_EVTCHN_RELEASE   EvtchnRelease;
+    XENBUS_EVTCHN_OPEN      EvtchnOpen;
     XENBUS_EVTCHN_BIND      EvtchnBind;
     XENBUS_EVTCHN_UNMASK    EvtchnUnmask;
     XENBUS_EVTCHN_SEND      EvtchnSend;
@@ -250,7 +276,7 @@ struct _XENBUS_EVTCHN_INTERFACE_V3 {
     XENBUS_EVTCHN_CLOSE     EvtchnClose;
 };
 
-typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
+typedef struct _XENBUS_EVTCHN_INTERFACE_V4 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE;
 
 /*! \def XENBUS_EVTCHN
     \brief Macro at assist in method invocation
@@ -261,7 +287,7 @@ typedef struct _XENBUS_EVTCHN_INTERFACE_V3 XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVT
 #endif  // _WINDLL
 
 #define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 1
-#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 3
+#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 4
 
 #endif  // _XENBUS_EVTCHN_INTERFACE_H
 
diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 589bee9..8cf843f 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <version.h>
 
 #include "registry.h"
@@ -47,7 +48,6 @@ typedef struct _XENVIF_DRIVER {
     PDRIVER_OBJECT      DriverObject;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
-    ULONG               MaximumQueues;
 } XENVIF_DRIVER, *PXENVIF_DRIVER;
 
 static XENVIF_DRIVER    Driver;
@@ -124,30 +124,6 @@ DriverGetAddressesKey(
     return __DriverGetAddressesKey();
 }
 
-static FORCEINLINE VOID
-__DriverSetMaximumQueueCount(
-    IN  ULONG   Count
-    )
-{
-    Driver.MaximumQueues = Count;
-}
-
-static FORCEINLINE ULONG
-__DriverGetMaximumQueueCount(
-    VOID
-    )
-{
-    return Driver.MaximumQueues;
-}
-
-ULONG
-DriverGetMaximumQueueCount(
-    VOID
-    )
-{
-    return __DriverGetMaximumQueueCount();
-}
-
 DRIVER_UNLOAD       DriverUnload;
 
 VOID
@@ -173,8 +149,6 @@ DriverUnload(
     ParametersKey = __DriverGetParametersKey();
     __DriverSetParametersKey(NULL);
 
-    __DriverSetMaximumQueueCount(0);
-
     RegistryCloseKey(ParametersKey);
 
     RegistryTeardown();
@@ -281,13 +255,12 @@ DriverEntry(
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
     ULONG               Index;
-    ULONG               MaxQueues;
-    ULONG               Processors;
     NTSTATUS            status;
 
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     __DbgPrintEnable();
 
@@ -335,17 +308,6 @@ DriverEntry(
 
     __DriverSetAddressesKey(AddressesKey);
 
-    status = RegistryQueryDwordValue(ParametersKey,
-                                     "MultiQueueMaxQueues",
-                                     &MaxQueues);
-    if (!NT_SUCCESS(status))
-        MaxQueues = MAXIMUM_PROCESSORS;
-
-    Processors = KeQueryActiveProcessorCount(NULL);
-    __DriverSetMaximumQueueCount(MaxQueues > Processors ?
-                                        Processors :
-                                        MaxQueues);
-
     RegistryCloseKey(ServiceKey);
 
     DriverObject->DriverExtension->AddDevice = AddDevice;
diff --git a/src/xenvif/driver.h b/src/xenvif/driver.h
index bbea23b..cdef7d1 100644
--- a/src/xenvif/driver.h
+++ b/src/xenvif/driver.h
@@ -52,11 +52,6 @@ DriverGetAliasesKey(
     VOID
     );
 
-extern ULONG
-DriverGetMaximumQueueCount(
-    VOID
-    );
-
 typedef struct _XENVIF_PDO  XENVIF_PDO, *PXENVIF_PDO;
 typedef struct _XENVIF_FDO  XENVIF_FDO, *PXENVIF_FDO;
 
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 12b9789..3aed6a2 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
@@ -51,6 +52,10 @@
 #include "assert.h"
 #include "util.h"
 
+typedef struct _XENVIF_FRONTEND_STATISTICS {
+    ULONGLONG   Value[XENVIF_VIF_STATISTIC_COUNT];
+} XENVIF_FRONTEND_STATISTICS, *PXENVIF_FRONTEND_STATISTICS;
+
 struct _XENVIF_FRONTEND {
     PXENVIF_PDO                 Pdo;
     PCHAR                       Path;
@@ -62,7 +67,8 @@ struct _XENVIF_FRONTEND {
 
     PCHAR                       BackendPath;
     USHORT                      BackendDomain;
-    ULONG                       QueueCount;
+    ULONG                       MaxQueues;
+    ULONG                       NumQueues;
 
     PXENVIF_MAC                 Mac;
     PXENVIF_RECEIVER            Receiver;
@@ -76,7 +82,8 @@ struct _XENVIF_FRONTEND {
     PXENBUS_DEBUG_CALLBACK      DebugCallback;
     PXENBUS_STORE_WATCH         Watch;
 
-    ULONGLONG                   Statistic[XENVIF_VIF_STATISTIC_COUNT][MAXIMUM_PROCESSORS];
+    PXENVIF_FRONTEND_STATISTICS Statistics;
+    ULONG                       StatisticsCount;
 };
 
 static const PCHAR
@@ -201,28 +208,41 @@ FrontendGetBackendDomain(
 }
 
 static FORCEINLINE VOID
-__FrontendSetQueueCount(
-    IN  PXENVIF_FRONTEND    Frontend,
-    IN  ULONG               Count
+__FrontendSetMaxQueues(
+    IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    Frontend->QueueCount = Count;
+    HANDLE                  ParametersKey;
+    ULONG                   FrontendMaxQueues;
+    NTSTATUS                status;
+
+    Frontend->MaxQueues = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+
+    ParametersKey = DriverGetParametersKey();
+
+    status = RegistryQueryDwordValue(ParametersKey,
+                                     "FrontendMaxQueues",
+                                     &FrontendMaxQueues);
+    if (NT_SUCCESS(status) && FrontendMaxQueues < Frontend->MaxQueues)
+        Frontend->MaxQueues = FrontendMaxQueues;
+
+    Info("%u\n", Frontend->MaxQueues);
 }
 
 static FORCEINLINE ULONG
-__FrontendGetQueueCount(
+__FrontendGetMaxQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    return Frontend->QueueCount;
+    return Frontend->MaxQueues;
 }
 
 ULONG
-FrontendGetQueueCount(
+FrontendGetMaxQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
-    return __FrontendGetQueueCount(Frontend);
+    return __FrontendGetMaxQueues(Frontend);
 }
 
 PCHAR
@@ -1233,56 +1253,65 @@ fail1:
 static FORCEINLINE VOID
 __FrontendQueryStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     OUT PULONGLONG              Value
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
 
-    ASSERT(Index < XENVIF_VIF_STATISTIC_COUNT);
+    ASSERT(Name < XENVIF_VIF_STATISTIC_COUNT);
 
     *Value = 0;
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++)
-        *Value += Frontend->Statistic[Index][Cpu];
+    for (Index = 0; Index < Frontend->StatisticsCount; Index++) {
+        PXENVIF_FRONTEND_STATISTICS Statistics;
+
+        Statistics = &Frontend->Statistics[Index];
+        *Value += Statistics->Value[Name];
+    }
 }
 
 VOID
 FrontendQueryStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     OUT PULONGLONG              Value
     )
 {
-    __FrontendQueryStatistic(Frontend, Index, Value);
+    __FrontendQueryStatistic(Frontend, Name, Value);
 }
 
 VOID
 FrontendIncrementStatistic(
     IN  PXENVIF_FRONTEND        Frontend,
-    IN  XENVIF_VIF_STATISTIC    Index,
+    IN  XENVIF_VIF_STATISTIC    Name,
     IN  ULONGLONG               Delta
     )
 {
-    ULONG                       Cpu;
+    ULONG                       Index;
+    PXENVIF_FRONTEND_STATISTICS Statistics;
 
-    ASSERT(Index < XENVIF_VIF_STATISTIC_COUNT);
+    ASSERT(Name < XENVIF_VIF_STATISTIC_COUNT);
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
 
-    Cpu = KeGetCurrentProcessorNumber();
-    Frontend->Statistic[Index][Cpu] += Delta;
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+
+    ASSERT3U(Index, <, Frontend->StatisticsCount);
+    Statistics = &Frontend->Statistics[Index];
+
+    Statistics->Value[Name] += Delta;
 }
 
 static FORCEINLINE const CHAR *
 __FrontendStatisticName(
-    IN  XENVIF_VIF_STATISTIC    Index
+    IN  XENVIF_VIF_STATISTIC    Name
     )
 {
-#define _FRONTEND_STATISTIC_NAME(_Index)    \
-    case XENVIF_ ## _Index:                 \
-        return #_Index;
+#define _FRONTEND_STATISTIC_NAME(_Name)     \
+    case XENVIF_ ## _Name:                  \
+        return #_Name;
 
-    switch (Index) {
+    switch (Name) {
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_PACKETS_DROPPED);
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_BACKEND_ERRORS);
     _FRONTEND_STATISTIC_NAME(TRANSMITTER_FRONTEND_ERRORS);
@@ -1317,7 +1346,7 @@ FrontendDebugCallback(
     )
 {
     PXENVIF_FRONTEND        Frontend = Argument;
-    XENVIF_VIF_STATISTIC    Index;
+    XENVIF_VIF_STATISTIC    Name;
 
     UNREFERENCED_PARAMETER(Crashing);
 
@@ -1330,33 +1359,28 @@ FrontendDebugCallback(
                  &Frontend->DebugInterface,
                  "STATISTICS:\n");
 
-    for (Index = 0; Index < XENVIF_VIF_STATISTIC_COUNT; Index++) {
+    for (Name = 0; Name < XENVIF_VIF_STATISTIC_COUNT; Name++) {
         ULONGLONG   Value;
 
-        __FrontendQueryStatistic(Frontend, Index, &Value);
+        __FrontendQueryStatistic(Frontend, Name, &Value);
 
         XENBUS_DEBUG(Printf,
                      &Frontend->DebugInterface,
                      " - %40s %lu\n",
-                     __FrontendStatisticName(Index),
+                     __FrontendStatisticName(Name),
                      Value);
     }
 }
 
 static FORCEINLINE VOID
-__FrontendReadQueueCount(
+__FrontendSetNumQueues(
     IN  PXENVIF_FRONTEND    Frontend
     )
 {
     PCHAR                   Buffer;
-    ULONG                   Value;
+    ULONG                   BackendMaxQueues;
     NTSTATUS                status;
 
-    // default to 1 queue.
-    // backend must advertise "multi-queue-max-queues" to enable
-    // multi-queue support.
-    Value = 1;
-
     status = XENBUS_STORE(Read,
                           &Frontend->StoreInterface,
                           NULL,
@@ -1364,19 +1388,34 @@ __FrontendReadQueueCount(
                           "multi-queue-max-queues",
                           &Buffer);
     if (NT_SUCCESS(status)) {
-        Value = (ULONG)strtoul(Buffer, NULL, 10);
+        BackendMaxQueues = (ULONG)strtoul(Buffer, NULL, 10);
 
         XENBUS_STORE(Free,
                      &Frontend->StoreInterface,
                      Buffer);
-
-        // set value to minimum of what frontend supports (vCPUs) and
-        // what backend supports (Dom0 vCPUs)
-        if (Value > DriverGetMaximumQueueCount())
-            Value = DriverGetMaximumQueueCount();
+    } else {
+        BackendMaxQueues = 1;
     }
 
-    __FrontendSetQueueCount(Frontend, Value);
+    Frontend->NumQueues = __min(Frontend->MaxQueues, BackendMaxQueues);
+
+    Info("%u\n", Frontend->NumQueues);
+}
+
+static FORCEINLINE ULONG
+__FrontendGetNumQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    )
+{
+    return Frontend->NumQueues;
+}
+
+ULONG
+FrontendGetNumQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    )
+{
+    return __FrontendGetNumQueues(Frontend);
 }
 
 static FORCEINLINE NTSTATUS
@@ -1391,9 +1430,16 @@ __FrontendConnect(
 
     Trace("====>\n");
 
+    Frontend->StatisticsCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    Frontend->Statistics = __FrontendAllocate(sizeof (XENVIF_FRONTEND_STATISTICS) * Frontend->StatisticsCount);
+
+    status = STATUS_NO_MEMORY;
+    if (Frontend->Statistics == NULL)
+        goto fail1;
+
     status = XENBUS_DEBUG(Acquire, &Frontend->DebugInterface);
     if (!NT_SUCCESS(status))
-        goto fail1;
+        goto fail2;
 
     status = XENBUS_DEBUG(Register,
                           &Frontend->DebugInterface,
@@ -1402,20 +1448,21 @@ __FrontendConnect(
                           Frontend,
                           &Frontend->DebugCallback);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail3;
 
     status = MacConnect(__FrontendGetMac(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail4;
+
+    __FrontendSetNumQueues(Frontend);
 
-    __FrontendReadQueueCount(Frontend);
     status = ReceiverConnect(__FrontendGetReceiver(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail5;
 
     status = TransmitterConnect(__FrontendGetTransmitter(Frontend));
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     Attempt = 0;
     do {
@@ -1443,7 +1490,7 @@ __FrontendConnect(
                               __FrontendGetPath(Frontend),
                               "multi-queue-num-queues",
                               "%u",
-                              __FrontendGetQueueCount(Frontend));
+                              __FrontendGetNumQueues(Frontend));
         if (!NT_SUCCESS(status))
             goto abort;
 
@@ -1465,7 +1512,7 @@ abort:
     } while (status == STATUS_RETRY);
 
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail7;
 
     status = XENBUS_STORE(Printf,
                           &Frontend->StoreInterface,
@@ -1475,22 +1522,25 @@ abort:
                           "%u",
                           XenbusStateConnected);
     if (!NT_SUCCESS(status))
-        goto fail7;
+        goto fail8;
 
     State = XenbusStateInitWait;
     status = __FrontendWaitForStateChange(Frontend, Path, &State);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail9;
 
     status = STATUS_UNSUCCESSFUL;
     if (State != XenbusStateConnected)
-        goto fail9;
+        goto fail10;
 
     ThreadWake(Frontend->MibThread);
 
     Trace("<====\n");
     return STATUS_SUCCESS;
 
+fail10:
+    Error("fail10\n");
+
 fail9:
     Error("fail9\n");
 
@@ -1500,33 +1550,38 @@ fail8:
 fail7:
     Error("fail7\n");
 
+    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
+
 fail6:
     Error("fail6\n");
 
-    TransmitterDisconnect(__FrontendGetTransmitter(Frontend));
+    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
 
 fail5:
     Error("fail5\n");
 
-    ReceiverDisconnect(__FrontendGetReceiver(Frontend));
+    MacDisconnect(__FrontendGetMac(Frontend));
+
+    Frontend->NumQueues = 0;
 
 fail4:
     Error("fail4\n");
 
-    MacDisconnect(__FrontendGetMac(Frontend));
-
-fail3:
-    Error("fail3\n");
-
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
                  Frontend->DebugCallback);
     Frontend->DebugCallback = NULL;
 
+fail3:
+    Error("fail3\n");
+
+    XENBUS_DEBUG(Release, &Frontend->DebugInterface);
+
 fail2:
     Error("fail2\n");
 
-    XENBUS_DEBUG(Release, &Frontend->DebugInterface);
+    __FrontendFree(Frontend->Statistics);
+    Frontend->StatisticsCount = 0;   
 
 fail1:
     Error("fail1 (%08x)\n", status);
@@ -1546,6 +1601,8 @@ __FrontendDisconnect(
     ReceiverDisconnect(__FrontendGetReceiver(Frontend));
     MacDisconnect(__FrontendGetMac(Frontend));
 
+    Frontend->NumQueues = 0;
+
     XENBUS_DEBUG(Deregister,
                  &Frontend->DebugInterface,
                  Frontend->DebugCallback);
@@ -1553,7 +1610,8 @@ __FrontendDisconnect(
 
     XENBUS_DEBUG(Release, &Frontend->DebugInterface);
 
-    RtlZeroMemory(&Frontend->Statistic, sizeof (Frontend->Statistic));
+    __FrontendFree(Frontend->Statistics);
+    Frontend->StatisticsCount = 0;
 
     Trace("<====\n");
 }
@@ -1958,6 +2016,8 @@ FrontendInitialize(
     FdoGetSuspendInterface(PdoGetFdo(Pdo), &(*Frontend)->SuspendInterface);
     FdoGetStoreInterface(PdoGetFdo(Pdo), &(*Frontend)->StoreInterface);
 
+    __FrontendSetMaxQueues(*Frontend);
+
     status = MacInitialize(*Frontend, &(*Frontend)->Mac);
     if (!NT_SUCCESS(status))
         goto fail6;
@@ -2010,6 +2070,8 @@ fail7:
 fail6:
     Error("fail6\n");
 
+    (*Frontend)->MaxQueues = 0;
+
     RtlZeroMemory(&(*Frontend)->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
@@ -2020,6 +2082,7 @@ fail6:
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
     (*Frontend)->State = FRONTEND_STATE_INVALID;
+
     RtlZeroMemory(&(*Frontend)->Lock, sizeof (KSPIN_LOCK));
 
     (*Frontend)->BackendDomain = 0;
@@ -2091,6 +2154,8 @@ FrontendTeardown(
     MacTeardown(__FrontendGetMac(Frontend));
     Frontend->Mac = NULL;
 
+    Frontend->MaxQueues = 0;
+
     RtlZeroMemory(&Frontend->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
@@ -2101,10 +2166,10 @@ FrontendTeardown(
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
     Frontend->State = FRONTEND_STATE_INVALID;
+
     RtlZeroMemory(&Frontend->Lock, sizeof (KSPIN_LOCK));
 
     Frontend->BackendDomain = 0;
-    __FrontendSetQueueCount(Frontend, 0);
 
     __FrontendFree(Frontend->Prefix);
     Frontend->Prefix = NULL;
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index adcf53c..1673fac 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -113,7 +113,12 @@ FrontendGetBackendDomain(
     );
 
 extern ULONG
-FrontendGetQueueCount(
+FrontendGetMaxQueues(
+    IN  PXENVIF_FRONTEND    Frontend
+    );
+
+extern ULONG
+FrontendGetNumQueues(
     IN  PXENVIF_FRONTEND    Frontend
     );
 
diff --git a/src/xenvif/mac.c b/src/xenvif/mac.c
index 1d60a1f..b255d58 100644
--- a/src/xenvif/mac.c
+++ b/src/xenvif/mac.c
@@ -349,6 +349,8 @@ MacEnable(
     PXENVIF_THREAD      Thread;
     NTSTATUS            status;
 
+    Trace("====>\n");
+
     Frontend = Mac->Frontend;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
@@ -370,6 +372,7 @@ MacEnable(
 
     KeReleaseSpinLockFromDpcLevel(&Mac->Lock);
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail1:
@@ -387,6 +390,8 @@ MacDisable(
 {
     PXENVIF_FRONTEND    Frontend;
 
+    Trace("====>\n");
+
     Frontend = Mac->Frontend;
 
     ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
@@ -401,6 +406,8 @@ MacDisable(
     Mac->Watch = NULL;
 
     KeReleaseSpinLockFromDpcLevel(&Mac->Lock);
+
+    Trace("<====\n");
 }
 
 VOID
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 6f45627..f09b71c 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <xen.h>
@@ -108,7 +109,9 @@ struct _XENVIF_RECEIVER {
     XENBUS_CACHE_INTERFACE  CacheInterface;
     XENBUS_GNTTAB_INTERFACE GnttabInterface;
     XENBUS_EVTCHN_INTERFACE EvtchnInterface;
-    PXENVIF_RECEIVER_RING   Rings[MAXIMUM_PROCESSORS];
+    PXENVIF_RECEIVER_RING   *Ring;
+    LONG                    MaxQueues;
+    LONG                    NumQueues;
     BOOLEAN                 Split;
     LONG                    Loaned;
     LONG                    Returned;
@@ -1914,13 +1917,10 @@ ReceiverRingDpc(
     Frontend = Receiver->Frontend;
 
     if (Ring->Enabled) {
-        if (Receiver->Split) {
-            __ReceiverRingNotify(Ring);
-        } else {
-            TransmitterRingNotify(FrontendGetTransmitter(Frontend),
-                                  Ring->Index);
-            __ReceiverRingNotify(Ring);
-        }
+        __ReceiverRingNotify(Ring);
+        if (!Receiver->Split)
+            TransmitterNotify(FrontendGetTransmitter(Frontend),
+                              Ring->Index);
     }
 
     __ReceiverRingUnmask(Ring);
@@ -2175,6 +2175,7 @@ __ReceiverRingConnect(
     PFN_NUMBER                  Pfn;
     CHAR                        Name[MAXNAMELEN];
     ULONG                       Index;
+    PROCESSOR_NUMBER            ProcNumber;
     NTSTATUS                    status;
 
     Receiver = Ring->Receiver;
@@ -2249,15 +2250,16 @@ __ReceiverRingConnect(
     if (Ring->Channel == NULL)
         goto fail6;
 
-    if (FrontendGetQueueCount(Frontend) > 1) {
-        (VOID) XENBUS_EVTCHN(Bind,
-                                &Receiver->EvtchnInterface,
-                                Ring->Channel,
-                                Ring->Index);
+    status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
 
-        KeSetTargetProcessorDpc(&Ring->Dpc,
-                                (CCHAR)Ring->Index);
-    }
+    KeSetTargetProcessorDpcEx(&Ring->Dpc, &ProcNumber);
+
+    (VOID) XENBUS_EVTCHN(Bind,
+                         &Receiver->EvtchnInterface,
+                         Ring->Channel,
+                         ProcNumber.Group,
+                         ProcNumber.Number);
 
     XENBUS_EVTCHN(Unmask,
                   &Receiver->EvtchnInterface,
@@ -2344,10 +2346,9 @@ __ReceiverRingStoreWrite(
     Receiver = Ring->Receiver;
     Frontend = Receiver->Frontend;
 
-    ASSERT(IMPLY(FrontendGetQueueCount(Frontend) == 1, Ring->Index == 0));
-    Path = (FrontendGetQueueCount(Frontend) == 1) ?
-                    FrontendGetPath(Frontend) :
-                    Ring->Path;
+    Path = (Receiver->NumQueues == 1) ?
+           FrontendGetPath(Frontend) :
+           Ring->Path;
 
     status = XENBUS_STORE(Printf,
                           &Receiver->StoreInterface,
@@ -2581,11 +2582,9 @@ ReceiverInitialize(
     )
 {
     HANDLE                  ParametersKey;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Count = DriverGetMaximumQueueCount();
     *Receiver = __ReceiverAllocate(sizeof (XENVIF_RECEIVER));
 
     status = STATUS_NO_MEMORY;
@@ -2600,7 +2599,6 @@ ReceiverInitialize(
     (*Receiver)->DisableIpVersion6Gso = 0;
     (*Receiver)->IpAlignOffset = 0;
     (*Receiver)->AlwaysPullup = 0;
-    (*Receiver)->Split = FALSE;
 
     if (ParametersKey != NULL) {
         ULONG   ReceiverCalculateChecksums;
@@ -2670,34 +2668,46 @@ ReceiverInitialize(
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-    for (Index = 0; Index < Count; ++Index) {
+    (*Receiver)->MaxQueues = FrontendGetMaxQueues(Frontend);
+    (*Receiver)->Ring = __ReceiverAllocate(sizeof (PXENVIF_RECEIVER_RING) *
+                                           (*Receiver)->MaxQueues);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Receiver)->Ring == NULL)
+        goto fail3;
+
+    Index = 0;
+    while (Index < (*Receiver)->MaxQueues) {
         PXENVIF_RECEIVER_RING   Ring;
 
         status = __ReceiverRingInitialize(*Receiver, Index, &Ring);
         if (!NT_SUCCESS(status))
-            goto fail3;
+            goto fail4;
 
-        (*Receiver)->Rings[Index] = Ring;
+        (*Receiver)->Ring[Index] = Ring;
+        Index++;
     }
 
     return STATUS_SUCCESS;
 
-fail3:
-    Error("fail3\n");
-
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = (*Receiver)->Rings[Index];
-        (*Receiver)->Rings[Index] = NULL;
+fail4:
+    Error("fail4\n");
 
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = (*Receiver)->Ring[Index];
 
+        (*Receiver)->Ring[Index] = NULL;
         __ReceiverRingTeardown(Ring);
     }
 
+    __ReceiverFree((*Receiver)->Ring);
+    (*Receiver)->Ring = NULL;
+
+fail3:
+    Error("fail3\n");
+
+    (*Receiver)->MaxQueues = 0;
+
     XENBUS_CACHE(Release, &(*Receiver)->CacheInterface);
 
 fail2:
@@ -2728,7 +2738,6 @@ fail2:
     (*Receiver)->DisableIpVersion6Gso = 0;
     (*Receiver)->IpAlignOffset = 0;
     (*Receiver)->AlwaysPullup = 0;
-    (*Receiver)->Split = FALSE;
 
     ASSERT(IsZeroMemory(*Receiver, sizeof (XENVIF_RECEIVER)));
     __ReceiverFree(*Receiver);
@@ -2745,8 +2754,7 @@ ReceiverConnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     PCHAR                   Buffer;
     NTSTATUS                status;
 
@@ -2784,19 +2792,18 @@ ReceiverConnect(
                      Buffer);
     }
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Receiver->NumQueues = FrontendGetNumQueues(Frontend);
+    ASSERT3U(Receiver->NumQueues, <=, Receiver->MaxQueues);
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingConnect(Ring);
         if (!NT_SUCCESS(status))
             goto fail5;
+
+        Index++;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -2813,19 +2820,19 @@ ReceiverConnect(
 fail6:
     Error("fail6\n");
 
+    Index = Receiver->NumQueues;
+
 fail5:
     Error("fail5\n");
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisconnect(Ring);
     }
 
+    Receiver->NumQueues = 0;
+
     XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
 
 fail4:
@@ -2940,8 +2947,7 @@ ReceiverStoreWrite(
     )
 {
     PXENVIF_FRONTEND                Frontend;
-    ULONG                           Index;
-    ULONG                           Count;
+    LONG                            Index;
     NTSTATUS                        status;
 
     Frontend = Receiver->Frontend;
@@ -2984,19 +2990,15 @@ ReceiverStoreWrite(
     if (!NT_SUCCESS(status))
         goto fail5;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingStoreWrite(Ring, Transaction);
         if (!NT_SUCCESS(status))
             goto fail6;
+
+        Index++;
     }    
 
     return STATUS_SUCCESS;
@@ -3027,37 +3029,32 @@ ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Frontend = Receiver->Frontend;
-
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Trace("====>\n");
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Receiver->NumQueues) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         status = __ReceiverRingEnable(Ring);
         if (!NT_SUCCESS(status))
             goto fail1;
+
+        Index++;
     }    
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail1:
     Error("fail1 (%08x)\n", status);
 
-    for (Index = 0; Index < Count; ++Index) {
+    while (--Index >= 0) {
         PXENVIF_RECEIVER_RING   Ring;
 
-        Ring = Receiver->Rings[Index];
+        Ring = Receiver->Ring[Index];
         if (Ring == NULL)
             break;
 
@@ -3072,21 +3069,18 @@ ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
 
-    Count = FrontendGetQueueCount(Receiver->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
+    Trace("====>\n");
 
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Receiver->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisable(Ring);
     }
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3095,8 +3089,7 @@ ReceiverDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
 
     Frontend = Receiver->Frontend;
 
@@ -3107,19 +3100,15 @@ ReceiverDisconnect(
                  Receiver->DebugCallback);
     Receiver->DebugCallback = NULL;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Receiver->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
         __ReceiverRingDisconnect(Ring);
     }
 
+    Receiver->NumQueues = 0;
+
     XENBUS_GNTTAB(Release, &Receiver->GnttabInterface);
 
     XENBUS_EVTCHN(Release, &Receiver->EvtchnInterface);
@@ -3134,7 +3123,7 @@ ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3143,22 +3132,21 @@ ReceiverTeardown(
     Receiver->Loaned = 0;
     Receiver->Returned = 0;
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_RECEIVER_RING   Ring;
-
-        Ring = Receiver->Rings[Index];
-        Receiver->Rings[Index] = NULL;
-
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    Index = Receiver->MaxQueues;
+    while (--Index >= 0) {
+        PXENVIF_RECEIVER_RING   Ring = Receiver->Ring[Index];
 
+        Receiver->Ring[Index] = NULL;
         __ReceiverRingTeardown(Ring);
     }
 
+    __ReceiverFree(Receiver->Ring);
+    Receiver->Ring = NULL;
+    Receiver->MaxQueues;
+
     XENBUS_CACHE(Release, &Receiver->CacheInterface);
 
     Receiver->Frontend = NULL;
-    Receiver->Split = FALSE;
 
     RtlZeroMemory(&Receiver->EvtchnInterface,
                   sizeof (XENBUS_EVTCHN_INTERFACE));
@@ -3194,8 +3182,7 @@ ReceiverSetOffloadOptions(
     IN  XENVIF_VIF_OFFLOAD_OPTIONS  Options
     )
 {
-    ULONG                           Index;
-    ULONG                           Count;
+    LONG                            Index;
 
     if (Receiver->AllowGsoPackets == 0) {
         Warning("RECEIVER GSO DISALLOWED\n");
@@ -3203,13 +3190,10 @@ ReceiverSetOffloadOptions(
         Options.OffloadIpVersion6LargePacket = 0;
     }
 
-    Count = FrontendGetQueueCount(Receiver->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
+    for (Index = 0; Index < Receiver->MaxQueues; ++Index) {
         PXENVIF_RECEIVER_RING   Ring;
 
-        Ring = Receiver->Rings[Index];
+        Ring = Receiver->Ring[Index];
         if (Ring == NULL)
             break;
 
@@ -3304,12 +3288,8 @@ ReceiverSend(
 {
     PXENVIF_RECEIVER_RING   Ring;
 
-    if (Index >= MAXIMUM_PROCESSORS)
-        return;
-
-    Ring = Receiver->Rings[Index];
-    if (Ring == NULL)
-        return;
+    ASSERT3U(Index, <, (ULONG)Receiver->NumQueues);
+    Ring = Receiver->Ring[Index];
 
     __ReceiverRingSend(Ring, FALSE);
 }
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 9f81ca1..7fe1738 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -30,6 +30,7 @@
  */
 
 #include <ntddk.h>
+#include <procgrp.h>
 #include <ntstrsafe.h>
 #include <stdlib.h>
 #include <netioapi.h>
@@ -149,7 +150,9 @@ struct _XENVIF_TRANSMITTER {
     XENBUS_GNTTAB_INTERFACE     GnttabInterface;
     XENBUS_RANGE_SET_INTERFACE  RangeSetInterface;
     XENBUS_EVTCHN_INTERFACE     EvtchnInterface;
-    PXENVIF_TRANSMITTER_RING    Rings[MAXIMUM_PROCESSORS];
+    PXENVIF_TRANSMITTER_RING    *Ring;
+    LONG                        MaxQueues;
+    LONG                        NumQueues;
     LONG_PTR                    Offset[XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT];
     BOOLEAN                     Split;
     ULONG                       DisableIpVersion4Gso;
@@ -3030,6 +3033,7 @@ __TransmitterRingConnect(
     PFN_NUMBER                      Pfn;
     CHAR                            Name[MAXNAMELEN];
     ULONG                           Index;
+    PROCESSOR_NUMBER                ProcNumber;
     NTSTATUS                        status;
 
     ASSERT(!Ring->Connected);
@@ -3107,15 +3111,16 @@ __TransmitterRingConnect(
         if (Ring->Channel == NULL)
             goto fail6;
 
-        if (FrontendGetQueueCount(Frontend) > 1) {
-            (VOID) XENBUS_EVTCHN(Bind,
-                                 &Transmitter->EvtchnInterface,
-                                 Ring->Channel,
-                                 Ring->Index);
+        status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+        ASSERT(NT_SUCCESS(status));
 
-            KeSetTargetProcessorDpc(&Ring->Dpc,
-                                    (CCHAR)Ring->Index);
-        }
+        KeSetTargetProcessorDpcEx(&Ring->Dpc, &ProcNumber);
+
+        (VOID) XENBUS_EVTCHN(Bind,
+                             &Transmitter->EvtchnInterface,
+                             Ring->Channel,
+                             ProcNumber.Group,
+                             ProcNumber.Number);
 
         XENBUS_EVTCHN(Unmask,
                       &Transmitter->EvtchnInterface,
@@ -3201,10 +3206,9 @@ __TransmitterRingStoreWrite(
     Transmitter = Ring->Transmitter;
     Frontend = Transmitter->Frontend;
 
-    ASSERT(IMPLY(FrontendGetQueueCount(Frontend) == 1, Ring->Index == 0));
-    Path = (FrontendGetQueueCount(Frontend) == 1) ?
-                    FrontendGetPath(Frontend) :
-                    Ring->Path;
+    Path = (Transmitter->NumQueues == 1) ?
+           FrontendGetPath(Frontend) :
+           Ring->Path;
 
     status = XENBUS_STORE(Printf,
                           &Transmitter->StoreInterface,
@@ -3290,9 +3294,8 @@ __TransmitterRingDisable(
     Packet = __TransmitterRingUnpreparePacket(Ring);
 
     // Put any packet back on the head of the queue
-    if (Packet != NULL) {
+    if (Packet != NULL)
         InsertHeadList(&Ring->Queued, &Packet->ListEntry);
-    }
 
     Ring->AddressIndex = 0;
 
@@ -3559,11 +3562,9 @@ TransmitterInitialize(
     )
 {
     HANDLE                  ParametersKey;
-    ULONG                   Index;
-    ULONG                   Count;
+    LONG                    Index;
     NTSTATUS                status;
 
-    Count = DriverGetMaximumQueueCount();
     *Transmitter = __TransmitterAllocate(sizeof (XENVIF_TRANSMITTER));
 
     status = STATUS_NO_MEMORY;
@@ -3575,7 +3576,6 @@ TransmitterInitialize(
     (*Transmitter)->DisableIpVersion4Gso = 0;
     (*Transmitter)->DisableIpVersion6Gso = 0;
     (*Transmitter)->AlwaysCopy = 0;
-    (*Transmitter)->Split = FALSE;
 
     if (ParametersKey != NULL) {
         ULONG   TransmitterDisableIpVersion4Gso;
@@ -3630,34 +3630,46 @@ TransmitterInitialize(
     if (!NT_SUCCESS(status))
         goto fail3;
 
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-    for (Index = 0; Index < Count; ++Index) {
+    (*Transmitter)->MaxQueues = FrontendGetMaxQueues(Frontend);
+    (*Transmitter)->Ring = __TransmitterAllocate(sizeof (PXENVIF_TRANSMITTER_RING) *
+                                                 (*Transmitter)->MaxQueues);
+
+    status = STATUS_NO_MEMORY;
+    if ((*Transmitter)->Ring == NULL)
+        goto fail4;
+
+    Index = 0;
+    while (Index < (*Transmitter)->MaxQueues) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
         status = __TransmitterRingInitialize(*Transmitter, Index, &Ring);
         if (!NT_SUCCESS(status))
-            goto fail4;
+            goto fail5;
 
-        (*Transmitter)->Rings[Index] = Ring;
+        (*Transmitter)->Ring[Index] = Ring;
+        Index++;
     }
 
     return STATUS_SUCCESS;
 
-fail4:
-    Error("fail4\n");
-
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = (*Transmitter)->Rings[Index];
-        (*Transmitter)->Rings[Index] = NULL;
+fail5:
+    Error("fail5\n");
 
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    while (--Index > 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = (*Transmitter)->Ring[Index];
 
+        (*Transmitter)->Ring[Index] = NULL;
         __TransmitterRingTeardown(Ring);
     }
 
+    __TransmitterFree((*Transmitter)->Ring);
+    (*Transmitter)->Ring = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    (*Transmitter)->MaxQueues = 0;
+
     XENBUS_CACHE(Release, &(*Transmitter)->CacheInterface);
 
 fail3:
@@ -3709,8 +3721,7 @@ TransmitterConnect(
     PXENVIF_FRONTEND            Frontend;
     CHAR                        Name[MAXNAMELEN];
     PCHAR                       Buffer;
-    ULONG                       Index;
-    ULONG                       Count;
+    LONG                        Index;
     NTSTATUS                    status;
 
     Frontend = Transmitter->Frontend;
@@ -3772,19 +3783,18 @@ TransmitterConnect(
                      Buffer);
     }
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Transmitter->NumQueues = FrontendGetNumQueues(Frontend);
+    ASSERT3U(Transmitter->NumQueues, <=, Transmitter->MaxQueues);
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         status = __TransmitterRingConnect(Ring);
         if (!NT_SUCCESS(status))
             goto fail7;
+
+        Index++;
     }    
 
     status = XENBUS_DEBUG(Register,
@@ -3801,19 +3811,21 @@ TransmitterConnect(
 fail8:
     Error("fail8\n");
 
+    Index = Transmitter->NumQueues;
+
 fail7:
     Error("fail7\n");
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring;
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+        Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
     }
 
+    Transmitter->NumQueues = 0;
+
     XENBUS_CACHE(Destroy,
                  &Transmitter->CacheInterface,
                  Transmitter->PacketCache);
@@ -3855,22 +3867,17 @@ TransmitterStoreWrite(
     )
 {
     NTSTATUS                        status;
-    ULONG                           Index;
-    ULONG                           Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    LONG                            Index;
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         status = __TransmitterRingStoreWrite(Ring, Transaction);
         if (!NT_SUCCESS(status))
             goto fail1;
+
+        Index++;
     }    
 
     return STATUS_SUCCESS;
@@ -3886,22 +3893,19 @@ TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
+    LONG                    Index;
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Trace("====>\n");
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = 0;
+    while (Index < Transmitter->NumQueues) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingEnable(Ring);
+        Index++;
     }    
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 }
 
@@ -3910,21 +3914,18 @@ TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
-
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
+    LONG                   Index;
 
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
+    Trace("====>\n");
 
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisable(Ring);
     }
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3934,7 +3935,6 @@ TransmitterDisconnect(
 {
     PXENVIF_FRONTEND        Frontend;
     ULONG                   Index;
-    ULONG                   Count;
 
     Frontend = Transmitter->Frontend;
 
@@ -3945,19 +3945,15 @@ TransmitterDisconnect(
                  Transmitter->DebugCallback);
     Transmitter->DebugCallback = NULL;
 
-    Count = FrontendGetQueueCount(Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >- 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
     }
 
+    Transmitter->NumQueues = 0;
+
     XENBUS_CACHE(Destroy,
                  &Transmitter->CacheInterface,
                  Transmitter->PacketCache);
@@ -3985,24 +3981,23 @@ TransmitterTeardown(
     RtlZeroMemory(Transmitter->Offset,
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
-    for (Index = 0; Index < MAXIMUM_PROCESSORS; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        Transmitter->Rings[Index] = NULL;
-
-        if (Ring == NULL)
-            continue; // ensure all rings are destroyed
+    Index = Transmitter->MaxQueues;
+    while (--Index >- 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
+        Transmitter->Ring[Index] = NULL;
         __TransmitterRingTeardown(Ring);
     }
 
+    __TransmitterFree(Transmitter->Ring);
+    Transmitter->Ring = NULL;
+    Transmitter->MaxQueues;
+
     XENBUS_CACHE(Release, &Transmitter->CacheInterface);
 
     XENBUS_RANGE_SET(Release, &Transmitter->RangeSetInterface);
 
     Transmitter->Frontend = NULL;
-    Transmitter->Split = FALSE;
 
     RtlZeroMemory(&Transmitter->Lock,
                   sizeof (KSPIN_LOCK));
@@ -4047,7 +4042,7 @@ TransmitterUpdateAddressTable(
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
 
     // Use the first ring for address advertisment
-    Ring = Transmitter->Rings[0];
+    Ring = Transmitter->Ring[0];
     ASSERT3U(Ring, !=, NULL);
 
     __TransmitterRingUpdateAddressTable(Ring, Table, Count);
@@ -4063,7 +4058,7 @@ TransmitterAdvertiseAddresses(
     PXENVIF_TRANSMITTER_RING    Ring;
 
     // Use the first ring for address advertisment
-    Ring = Transmitter->Rings[0];
+    Ring = Transmitter->Ring[0];
     ASSERT3U(Ring, !=, NULL);
 
     __TransmitterRingAdvertiseAddresses(Ring);
@@ -4248,64 +4243,66 @@ TransmitterQueuePacketsVersion1(
 #undef OFFSET_EXISTS
 }
 
-static FORCEINLINE ULONG
-__GetQueue(
-    IN  ULONG       QueueCount,
-    IN  ULONG       HashValue
-    )
-{
-    return HashValue % QueueCount;
-}
-
 VOID
 TransmitterQueuePackets(
-    IN  PXENVIF_TRANSMITTER Transmitter,
-    IN  PLIST_ENTRY         List
+    IN  PXENVIF_TRANSMITTER     Transmitter,
+    IN  PLIST_ENTRY             List
     )
 {
     PXENVIF_TRANSMITTER_RING    Ring;
     PXENVIF_FRONTEND            Frontend;
-    ULONG                       QueueCount;
 
     Frontend = Transmitter->Frontend;
 
-    QueueCount = FrontendGetQueueCount(Frontend);
-
-    if (QueueCount == 1) {
-        Ring = Transmitter->Rings[0];
-        ASSERT3P(Ring, !=, NULL);
+    if (Transmitter->NumQueues == 1) {
+        Ring = Transmitter->Ring[0];
 
         __TransmitterRingQueuePackets(Ring, List);
     } else {
         while (!IsListEmpty(List)) {
             PXENVIF_TRANSMITTER_PACKET  Packet;
-            PLIST_ENTRY                 ListEntry;
-            LIST_ENTRY                  ListHead;
-            ULONG                       Queue;
+            LIST_ENTRY                  HashList;
+            ULONG                       Index;
 
-            InitializeListHead(&ListHead);
+            InitializeListHead(&HashList);
+            Index = 0;
 
-            ListEntry = List->Flink;
-            Packet = CONTAINING_RECORD(ListEntry, XENVIF_TRANSMITTER_PACKET, ListEntry);
-            Queue = __GetQueue(QueueCount, Packet->Value);
+            while (!IsListEmpty(List)) {            
+                PLIST_ENTRY ListEntry;
+                ULONG       Hash;
+
+                ListEntry = RemoveHeadList(List);
+                ASSERT3P(ListEntry, !=, List);
 
-            (VOID) RemoveHeadList(List);
-            InsertTailList(&ListHead, ListEntry);
+                RtlZeroMemory(ListEntry, sizeof (LIST_ENTRY));
 
-            while (!IsListEmpty(List)) {
-                ListEntry = List->Flink;
                 Packet = CONTAINING_RECORD(ListEntry, XENVIF_TRANSMITTER_PACKET, ListEntry);
-                if (Queue != __GetQueue(QueueCount, Packet->Value))
-                    break;
 
-                (VOID) RemoveHeadList(List);
-                InsertTailList(&ListHead, ListEntry);
+                Hash = Packet->Value % Transmitter->NumQueues;
+                if (Hash != Index) {
+                    if (!IsListEmpty(&HashList)) {
+                        Ring = Transmitter->Ring[Index];
+                        ASSERT3P(Ring, !=, NULL);
+
+                        __TransmitterRingQueuePackets(Ring, &HashList);
+                        InitializeListHead(&HashList);
+                    }
+
+                    Index = Hash;
+                }
+
+                InsertTailList(&HashList, ListEntry);
             }
 
-            Ring = Transmitter->Rings[Queue];
-            ASSERT3P(Ring, !=, NULL);
+            if (!IsListEmpty(&HashList)) {
+                Ring = Transmitter->Ring[Index];
+                ASSERT3P(Ring, !=, NULL);
+
+                __TransmitterRingQueuePackets(Ring, &HashList);
+                InitializeListHead(&HashList);
+            }
 
-            __TransmitterRingQueuePackets(Ring, &ListHead);
+            ASSERT(IsListEmpty(&HashList));
         }
     }
 }
@@ -4315,21 +4312,14 @@ TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
-    ULONG                   Count;
     KIRQL                   Irql;
+    LONG                    Index;
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
 
-    Count = FrontendGetQueueCount(Transmitter->Frontend);
-    ASSERT3U(Count, <=, MAXIMUM_PROCESSORS);
-
-    for (Index = 0; Index < Count; ++Index) {
-        PXENVIF_TRANSMITTER_RING    Ring;
-
-        Ring = Transmitter->Rings[Index];
-        if (Ring == NULL)
-            break;
+    Index = Transmitter->NumQueues;
+    while (--Index >= 0) {
+        PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingAbortPackets(Ring);
     }    
@@ -4349,19 +4339,15 @@ TransmitterQueryRingSize(
 }
 
 VOID
-TransmitterRingNotify(
-    IN  PXENVIF_TRANSMITTER Transmitter,
-    IN  ULONG               Index
+TransmitterNotify(
+    IN  PXENVIF_TRANSMITTER     Transmitter,
+    IN  ULONG                   Index
     )
 {
     PXENVIF_TRANSMITTER_RING    Ring;
 
-    if (Index >= MAXIMUM_PROCESSORS)
-        return;
-
-    Ring = Transmitter->Rings[Index];
-    if (Ring == NULL)
-        return;
+    ASSERT3U(Index, <, (ULONG)Transmitter->NumQueues);
+    Ring = Transmitter->Ring[Index];
 
     __TransmitterRingNotify(Ring);
 }
diff --git a/src/xenvif/transmitter.h b/src/xenvif/transmitter.h
index 8dc4e3c..fad0762 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -78,7 +78,7 @@ TransmitterTeardown(
     );
 
 extern VOID
-TransmitterRingNotify(
+TransmitterNotify(
     IN  PXENVIF_TRANSMITTER Transmitter,
     IN  ULONG               Index
     );
diff --git a/vs2012/xenvif/xenvif.vcxproj b/vs2012/xenvif/xenvif.vcxproj
index d9deb03..0429bd0 100644
--- a/vs2012/xenvif/xenvif.vcxproj
+++ b/vs2012/xenvif/xenvif.vcxproj
@@ -36,7 +36,7 @@
       <Inputs>..\..\src\xenvif.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -44,7 +44,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
diff --git a/vs2013/xenvif/xenvif.vcxproj b/vs2013/xenvif/xenvif.vcxproj
index 8dd18be..e6a0ac4 100644
--- a/vs2013/xenvif/xenvif.vcxproj
+++ b/vs2013/xenvif/xenvif.vcxproj
@@ -36,7 +36,7 @@
     </CustomBuildStep>
     <ClCompile>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENVIF";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -47,7 +47,7 @@
     </ResourceCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:12 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHc-00085b-5M; Fri, 20 Mar 2015 12:44:12 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHa-00083x-7i
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:11 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	23/4C-05830-9161C055; Fri, 20 Mar 2015 12:44:09 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426855440!13912889!1
X-Originating-IP: [74.125.82.178]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13719 invoked from network); 20 Mar 2015 12:44:00 -0000
Received: from mail-we0-f178.google.com (HELO mail-we0-f178.google.com)
	(74.125.82.178)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:00 -0000
Received: by webcq43 with SMTP id cq43so81274167web.2
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=Mpx6VwcX+7pfW2kQcX19VEmWMotP4EGdOgoIollJeCI=;
	b=EDeqV0HIK3Wz8iZ9z4nroNOo/iejn5Hy8Oyywa9PIA0UWNuGtk73wfyr12BSwJfgs3
	j2yfEa1wfiGBgNsfFUtjkO1AoBgoPuUMkFDG+KAxyPuDWpzqqpo93CaShiQg7sjFbexC
	AWUPUjpEOOOVvCG4GmsgxYjzVNCrhWq1gpkcPwVIdLZLQ4wUm4+aMiQPWkhYCiL4LJRn
	87JcCvBbLymoP5k0vZn8OORK6YUVCy8h7T6SgzihkdwQErRLe/Hl17im5vbAvZ8LiH00
	0ceGOwNoWN0GPJX3r5goYVS95kTehReXvY2Oizdg5qgkOoDGFYHc4W9Erx/O7wq/WQUK
	+W/A==
X-Received: by 10.180.198.37 with SMTP id iz5mr4787008wic.95.1426855439937;
	Fri, 20 Mar 2015 05:43:59 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:59 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:54 +0000
Message-Id: <1426855436-9864-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 367165
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/5] Update headers to
	xen.git:f919dbc0583797d1c5c09da815518084ce77eb81
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

VGhpcyBicmluZ3MgdGhlIGhlYWRlcnMgaW50byBsaW5lIHdpdGggWEVOQlVTLiBUaGVyZSdzIG5v
IHJlbGlhbmNlIG9uIGEKcG9zdC00LjUuMCBjaGFuZ2UgaW4gWEVOVklGIGJ1dCB0aGUgcmUtc3Ry
dWN0dXJpbmcgaW4gdGhlIGhlYWRlcnMgZG9uZQphZnRlciA0LjUuMCBkb2VzIG1lYW4gY2hhbmdl
IGlzIG5lY2Vzc2FyeSBhbmQgd2UgbWF5IGFzIHdlbGwgdGFrZSB0aGUgcGFpbgpzb29uZXIgcmF0
aGVyIHRoYW4gbGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu
dEBjaXRyaXguY29tPgotLS0KIGdldF94ZW5faGVhZGVycy5weSAgICAgICAgICAgICAgICAgICAg
ICAgfCAgNTkgKy0KIGluY2x1ZGUveGVuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDcgKy0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfMzIuaCAgICAgICAgfCAxNzEgLS0t
LS0tCiBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmggICAgICAgIHwgMjAyIC0tLS0t
LS0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oICAgICAgICAgICAgICAgfCAyNjQgLS0tLS0t
LS0tCiBpbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oICAgICAgICAgICAgICAgIHwgNjYyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL25ldGlmLmggICAgICAgICAgICAgICAg
ICAgfCAyMzYgLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL3JpbmcuaCAgICAgICAgICAgICAgICAg
ICAgfCAzMjMgLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL3hlbmJ1cy5oICAgICAgICAgICAg
ICAgICAgfCAgODAgLS0tCiBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5o
IHwgMTcyICsrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaCB8
IDIwMiArKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmggICAgICAgIHwg
MzA3ICsrKysrKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaCAgICAgICAgICAgICAg
IHwgIDkzICsrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oICAgICAgICAgfCA2
ODIgKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9uZXRpZi5o
ICAgICAgICAgICAgfCA0MjIgKysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9y
aW5nLmggICAgICAgICAgICAgfCAzMTIgKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9p
by94ZW5idXMuaCAgICAgICAgICAgfCAgODAgKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2Uu
aCAgICAgICAgICAgICAgIHwgMzMxICsrKysrKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVu
LWNvbXBhdC5oICAgICAgICAgIHwgIDQ0ICsrCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmggICAg
ICAgICAgICAgICAgIHwgOTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1
ZGUveGVuL3hlbi1jb21wYXQuaCAgICAgICAgICAgICAgICAgfCAgNDQgLS0KIGluY2x1ZGUveGVu
L3hlbi5oICAgICAgICAgICAgICAgICAgICAgICAgfCA4OTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBpbmNsdWRlL3hlbi94ZW4vZXJybm8uaCAgICAgICAgICAgICAgICAgIHwgIDIw
ICsKIHZzMjAxMi94ZW52aWYveGVudmlmLnZjeHByb2ogICAgICAgICAgICAgfCAgIDIgKy0KIHZz
MjAxMy94ZW52aWYveGVudmlmLnZjeHByb2ogICAgICAgICAgICAgfCAgIDUgKy0KIDI1IGZpbGVz
IGNoYW5nZWQsIDM2MTkgaW5zZXJ0aW9ucygrKSwgMjkwNCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUveGVuL2dyYW50X3RhYmxlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9pby9u
ZXRpZi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vaW8vcmluZy5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vaW8veGVuYnVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4uaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVk
ZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hl
bi9wdWJsaWMvaW8vbmV0aWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy9pby9yaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvaW8veGVu
YnVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3hlbi94ZW4tY29tcGF0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi94
ZW4uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3hlbi9lcnJuby5oCgpkaWZmIC0t
Z2l0IGEvZ2V0X3hlbl9oZWFkZXJzLnB5IGIvZ2V0X3hlbl9oZWFkZXJzLnB5CmluZGV4IDE2ODA3
YmIuLjFkMmEwYzggMTAwNzU1Ci0tLSBhL2dldF94ZW5faGVhZGVycy5weQorKysgYi9nZXRfeGVu
X2hlYWRlcnMucHkKQEAgLTUsMzQgKzUsMzkgQEAgaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCByZQogCi1kZWYgc2hlbGwoY29tbWFuZCk6Ci0gICAgcHJpbnQoY29tbWFu
ZCkKK2RlZiBzaGVsbChjb21tYW5kLCBkaXIgPSAnLicpOgorICAgIHByaW50KCJpbiAnJXMnIGV4
ZWN1dGUgJyVzJyIgJSAoZGlyLCAnICcuam9pbihjb21tYW5kKSkpCiAgICAgc3lzLnN0ZG91dC5m
bHVzaCgpCiAKLSAgICBwaXBlID0gb3MucG9wZW4oJyAnLmpvaW4oY29tbWFuZCksICdyJywgMSkK
KyAgICBzdWIgPSBzdWJwcm9jZXNzLlBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCBjd2Q9ZGlyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAotICAgIGZv
ciBsaW5lIGluIHBpcGU6Ci0gICAgICAgIHByaW50KGxpbmUucnN0cmlwKCkpCisgICAgZm9yIGxp
bmUgaW4gc3ViLnN0ZG91dDoKKyAgICAgICAgcHJpbnQobGluZS5kZWNvZGUoc3lzLmdldGRlZmF1
bHRlbmNvZGluZygpKS5yc3RyaXAoKSkKIAotICAgIHJldHVybiBwaXBlLmNsb3NlKCkKKyAgICBz
dWIud2FpdCgpCisKKyAgICByZXR1cm4gc3ViLnJldHVybmNvZGUKIAogZGVmIGdldF9yZXBvKHVy
bCwgd29ya2luZyk6CiAgICAgc2hlbGwoWydnaXQnLCAnY2xvbmUnLCAnLS1uby1jaGVja291dCcs
IHVybCwgd29ya2luZ10pCiAKIGRlZiBnZXRfYnJhbmNoKHRhZywgd29ya2luZyk6Ci0gICAgY3dk
ID0gb3MuZ2V0Y3dkKCkKLSAgICBvcy5jaGRpcih3b3JraW5nKQotICAgIHNoZWxsKFsnZ2l0Jywg
J2NoZWNrb3V0JywgJy1iJywgdGFnXSkKLSAgICBvcy5jaGRpcihjd2QpCisgICAgc2hlbGwoWydn
aXQnLCAnY2hlY2tvdXQnLCAnLWInLCAndG1wJywgdGFnXSwgd29ya2luZykKKworZGVmIHB1dF9i
cmFuY2god29ya2luZyk6CisgICAgc2hlbGwoWydnaXQnLCAnY2hlY2tvdXQnLCAnbWFzdGVyJ10s
IHdvcmtpbmcpCisgICAgc2hlbGwoWydnaXQnLCAnYnJhbmNoJywgJy1kJywgJ3RtcCddLCB3b3Jr
aW5nKQogCi1kZWYgY29weV9maWxlKHdvcmtpbmcsIHNyY19kaXIsIGRzdF9kaXIsIG5hbWUpOgor
ZGVmIGNvcHlfZmlsZSh3b3JraW5nLCBkaXIsIG5hbWUpOgogICAgIHRyeToKLSAgICAgICAgb3Mu
bWFrZWRpcnMoJ2luY2x1ZGVcXHhlblxcJXMnICUgZHN0X2RpcikKKyAgICAgICAgb3MubWFrZWRp
cnMoJ2luY2x1ZGVcXHhlblxcJXMnICUgZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAg
ICBOb25lCiAKLSAgICBzcmMgPSBvcGVuKCclc1xceGVuXFxpbmNsdWRlXFwlc1xcJXMnICUgKHdv
cmtpbmcsIHNyY19kaXIsIG5hbWUpLCAncicpCi0gICAgZHN0ID0gb3BlbignaW5jbHVkZVxceGVu
XFwlc1xcJXMnICUgKGRzdF9kaXIsIG5hbWUpLCAndycsIG5ld2xpbmU9J1xuJykKKyAgICBzcmMg
PSBvcGVuKCclc1xceGVuXFxpbmNsdWRlXFwlc1xcJXMnICUgKHdvcmtpbmcsIGRpciwgbmFtZSks
ICdyJykKKyAgICBkc3QgPSBvcGVuKCdpbmNsdWRlXFx4ZW5cXCVzXFwlcycgJSAoZGlyLCBuYW1l
KSwgJ3cnLCBuZXdsaW5lPSdcbicpCiAKICAgICBwcmludChuYW1lKQogCkBAIC01MywxNCArNTgs
MjQgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBnZXRfcmVwbygnZ2l0Oi8veGVu
Yml0cy54ZW4ub3JnL3hlbi5naXQnLCB3b3JraW5nKQogICAgIGdldF9icmFuY2godGFnLCB3b3Jr
aW5nKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd4ZW4uaCcpCisg
ICAgc2hlbGwoWydnaXQnLCAncm0nLCAnLXInLCAnLWYnLCAneGVuJ10sICdpbmNsdWRlJykKKwor
ICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ3hlbi5oJykKKyAgICBjb3B5X2ZpbGUo
d29ya2luZywgJ3B1YmxpYycsICd4ZW4tY29tcGF0LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5n
LCAncHVibGljJywgJ3RyYWNlLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywg
J2dyYW50X3RhYmxlLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2Vycm5v
LmgnKQorCisgICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnZXJybm8uaCcpCisKKyAgICBj
b3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAneGVuLmgnKQorICAgIGNvcHlf
ZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4ZW4teDg2XzMyLmgnKQorICAgIGNv
cHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4ZW4teDg2XzY0LmgnKQogCi0g
ICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd4ZW4tY29tcGF0LmgnKQotICAg
IGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAndHJhY2UuaCcpCi0gICAgY29weV9m
aWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICdncmFudF90YWJsZS5oJykKKyAgICBjb3B5X2Zp
bGUod29ya2luZywgJ3B1YmxpY1xcaW8nLCAncmluZy5oJykKKyAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpY1xcaW8nLCAnbmV0aWYuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJs
aWNcXGlvJywgJ3hlbmJ1cy5oJykKIAotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxh
cmNoLXg4NicsICdhcmNoLXg4NicsICd4ZW4uaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi14ODZfMzIuaCcpCi0gICAgY29weV9m
aWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi14ODZfNjQu
aCcpCisgICAgcHV0X2JyYW5jaCh3b3JraW5nKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGlvJywgJ2lvJywgJ25ldGlmLmgnKQorICAgIHNoZWxsKFsnZ2l0JywgJ2FkZCcsICd4
ZW4nXSwgJ2luY2x1ZGUnKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4uaCBiL2luY2x1ZGUveGVu
LmgKaW5kZXggOTU3NTI4NS4uOWRjY2QwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW4uaAorKysg
Yi9pbmNsdWRlL3hlbi5oCkBAIC0zNyw4ICszNyw5IEBACiAjaW5jbHVkZSA8eGVuLXZlcnNpb24u
aD4KICNpbmNsdWRlIDx4ZW4tdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4td2FybmluZ3MuaD4KLSNp
bmNsdWRlIDx4ZW4vaW8vcmluZy5oPgotI2luY2x1ZGUgPHhlbi9pby9uZXRpZi5oPgotI2luY2x1
ZGUgPHhlbi9pby94ZW5idXMuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9pby9yaW5nLmg+CisjaW5j
bHVkZSA8cHVibGljL2lvL25ldGlmLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL3hlbmJ1cy5oPgog
CiAjZW5kaWYgIC8vIF9YRU5fSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVu
LXg4Nl8zMi5oIGIvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMWVkZjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2Fy
Y2gteDg2L3hlbi14ODZfMzIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCi0gKiB4ZW4teDg2XzMyLmgKLSAqIAotICogR3Vlc3QgT1MgaW50
ZXJmYWNlIHRvIHg4NiAzMi1iaXQgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0g
KiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz
b25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu
Ci0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K
LSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U
WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9N
LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S
IE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChj
KSAyMDA0LTIwMDcsIEsgQSBGcmFzZXIKLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNI
X1g4Nl9YRU5fWDg2XzMyX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4
Nl8zMl9IX18KLQotLyoKLSAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6Ci0gKiAgSW5wdXQ6ICAlZWJ4
LCAlZWN4LCAlZWR4LCAlZXNpLCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQotICogIE91dHB1
dDogJWVheAotICogQWNjZXNzIGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0
IGxvYWRlciBvciB2aWEgYSBYZW4gTVNSKToKLSAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlw
ZXJjYWxsLW51bWJlciAqIDMyCi0gKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5n
LiwgMi1hcmcgaHlwZXJjYWxsIGNsb2JiZXJzICVlYngsJWVjeCkKLSAqLwotCi0vKgotICogVGhl
c2UgZmxhdCBzZWdtZW50cyBhcmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkg
R0RULiBTaW5jZSB0aGVzZQotICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQs
IG1hbnkgT1NlcyB3aWxsIGJlIGFibGUgdG8gYXZvaWQKLSAqIGluc3RhbGxpbmcgdGhlaXIgb3du
IEdEVC4KLSAqLwotI2RlZmluZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXgg
MjU5ICovCi0jZGVmaW5lIEZMQVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAg
Ki8KLSNkZWZpbmUgRkxBVF9SSU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwot
I2RlZmluZSBGTEFUX1JJTkczX0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCi0jZGVm
aW5lIEZMQVRfUklORzNfRFMgMHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUg
RkxBVF9SSU5HM19TUyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZM
QVRfS0VSTkVMX0NTIEZMQVRfUklORzFfQ1MKLSNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9S
SU5HMV9EUwotI2RlZmluZSBGTEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCi0jZGVmaW5lIEZM
QVRfVVNFUl9DUyAgICBGTEFUX1JJTkczX0NTCi0jZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFU
X1JJTkczX0RTCi0jZGVmaW5lIEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCi0KLSNkZWZp
bmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9TVEFSVF9QQUUgICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBI
WVNfVklSVF9FTkRfUEFFICAgICAgIDB4RjY4MDAwMDAKLSNkZWZpbmUgSFlQRVJWSVNPUl9WSVJU
X1NUQVJUX1BBRSAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJU
X1NUQVJUX1BBRSkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKLSAg
ICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQotI2RlZmluZSBN
QUNIMlBIWVNfVklSVF9FTkRfUEFFICAgICAgICAgXAotICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19N
QUNIMlBIWVNfVklSVF9FTkRfUEFFKQotCi0vKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUu
ICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCi0j
ZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCi0jZGVmaW5l
IF9fTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAweEZDNDAwMDAwCi0jZGVmaW5lIEhZUEVS
VklTT1JfVklSVF9TVEFSVF9OT05QQUUgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVS
VklTT1JfVklSVF9TVEFSVF9OT05QQUUpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05P
TlBBRSAgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05P
TlBBRSkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKLSAgICBta191
bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKLQotI2RlZmluZSBfX0hZ
UEVSVklTT1JfVklSVF9TVEFSVCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUg
X19NQUNIMlBIWVNfVklSVF9TVEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKLSNkZWZp
bmUgX19NQUNIMlBIWVNfVklSVF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCi0KLSNp
Zm5kZWYgSFlQRVJWSVNPUl9WSVJUX1NUQVJUCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFS
VCBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQotI2VuZGlmCi0KLSNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNf
VklSVF9TVEFSVCkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xv
bmcoX19NQUNIMlBIWVNfVklSVF9FTkQpCi0jZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAo
KE1BQ0gyUEhZU19WSVJUX0VORC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCi0jaWZuZGVmIG1h
Y2hpbmVfdG9fcGh5c19tYXBwaW5nCi0jZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgo
VUxPTkdfUFRSICopTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZW5kaWYKLQotLyogMzItLzY0LWJp
dCBpbnZhcmlhYmlsaXR5IGZvciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAq
LwotI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQotI3VuZGVm
IF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFCi0jZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKG5hbWUsIHR5cGUpICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgc3RydWN0
IHsgdHlwZSAqcDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
X19ndWVzdF9oYW5kbGVfICMjIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdHlwZWRlZiBzdHJ1Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3Qg
cTsgfTsgfSAgXAotICAgICAgICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQotI3VuZGVmIHNl
dF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdwotI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXco
aG5kLCB2YWwpICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9
PSA4ICkgKih1aW50NjRfdCAqKSYoaG5kKSA9IDA7ICAgXAotICAgICAgICAgKGhuZCkucCA9IHZh
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKCAw
ICkKLSNkZWZpbmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGln
bmVkKDgpKSkKLSNkZWZpbmUgX19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFu
ZGxlXzY0XyAjIyBuYW1lCi0jZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5f
R1VFU1RfSEFORExFXzY0KG5hbWUpCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQot
c3RydWN0IGNwdV91c2VyX3JlZ3MgewotICAgIHVpbnQzMl90IGVieDsKLSAgICB1aW50MzJfdCBl
Y3g7Ci0gICAgdWludDMyX3QgZWR4OwotICAgIHVpbnQzMl90IGVzaTsKLSAgICB1aW50MzJfdCBl
ZGk7Ci0gICAgdWludDMyX3QgZWJwOwotICAgIHVpbnQzMl90IGVheDsKLSAgICB1aW50MTZfdCBl
cnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCi0gICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAg
LyogcHJpdmF0ZSAqLwotICAgIHVpbnQzMl90IGVpcDsKLSAgICB1aW50MTZfdCBjczsKLSAgICB1
aW50OF90ICBzYXZlZF91cGNhbGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMDsKLSAgICB1aW50
MzJfdCBlZmxhZ3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICov
Ci0gICAgdWludDMyX3QgZXNwOwotICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKLSAgICB1aW50MTZf
dCBlcywgX3BhZDI7Ci0gICAgdWludDE2X3QgZHMsIF9wYWQzOwotICAgIHVpbnQxNl90IGZzLCBf
cGFkNDsKLSAgICB1aW50MTZfdCBncywgX3BhZDU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3Vz
ZXJfcmVncyBjcHVfdXNlcl9yZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNl
cl9yZWdzX3QpOwotCi0vKgotICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBk
byBub3QgZml0IGludG8gYXJjaGl0ZWN0dXJhbCAlY3IzLgotICogV2hlbiBhY2Nlc3NpbmcgJWNy
Mywgb3IgZXF1aXZhbGVudCBmaWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cwotICog
bXVzdCB1c2UgdGhlIGZvbGxvd2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFs
aWQgTUZOcy4KLSAqLwotI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShw
Zm4pIDw8IDEyKSB8ICgodW5zaWduZWQpKHBmbikgPj4gMjApKQotI2RlZmluZSB4ZW5fY3IzX3Rv
X3BmbihjcjMpICgoKHVuc2lnbmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwg
MjApKQotCi1zdHJ1Y3QgYXJjaF92Y3B1X2luZm8gewotICAgIFVMT05HX1BUUiBjcjI7Ci0gICAg
VUxPTkdfUFRSIHBhZFs1XTsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLwotfTsKLXR5
cGVkZWYgc3RydWN0IGFyY2hfdmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7Ci0KLXN0cnVjdCB4
ZW5fY2FsbGJhY2sgewotICAgIFVMT05HX1BUUiBjczsKLSAgICBVTE9OR19QVFIgZWlwOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKLQotI2VuZGlmIC8q
ICFfX0FTU0VNQkxZX18gKi8KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5f
WDg2XzMyX0hfXyAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICog
Yy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDog
NAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hl
bi14ODZfNjQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhNDMzYS4uMDAwMDAw
MAotLS0gYS9pbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogeGVuLXg4Nl82NC5o
Ci0gKiAKLSAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgNjQtYml0IFhlbi4KLSAqIAotICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZQotICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh
cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAq
Ci0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS
V0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF
LgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lm
bmRlZiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18KLSNkZWZpbmUgX19YRU5f
UFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fCi0KLS8qCi0gKiBIeXBlcmNhbGwgaW50ZXJm
YWNlOgotICogIElucHV0OiAgJXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkgKGFyZ3Vt
ZW50cyAxLTYpCi0gKiAgT3V0cHV0OiAlcmF4Ci0gKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBw
YWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgotICogIGNhbGwg
aHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNhbGwtbnVtYmVyICogMzIKLSAqIENsb2JiZXJlZDogYXJn
dW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJkaSwlcnNp
KQotICovCi0KLS8qCi0gKiA2NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKLSAqIFRoZXNlIGZsYXQg
c2VnbWVudHMgYXJlIGluIHRoZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdEVC4gU2lu
Y2UgdGhlc2UKLSAqIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBtYW55IE9T
ZXMgd2lsbCBiZSBhYmxlIHRvIGF2b2lkCi0gKiBpbnN0YWxsaW5nIHRoZWlyIG93biBHRFQuCi0g
Ki8KLQotI2RlZmluZSBGTEFUX1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXggMjYwICov
Ci0jZGVmaW5lIEZMQVRfUklORzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEgKi8KLSNk
ZWZpbmUgRkxBVF9SSU5HM19EUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotI2RlZmlu
ZSBGTEFUX1JJTkczX0RTNjQgMHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCi0jZGVmaW5lIEZM
QVRfUklORzNfU1MzMiAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9S
SU5HM19TUzY0IDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VS
TkVMX0RTNjQgRkxBVF9SSU5HM19EUzY0Ci0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIgRkxBVF9S
SU5HM19EUzMyCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2NAotI2Rl
ZmluZSBGTEFUX0tFUk5FTF9DUzY0IEZMQVRfUklORzNfQ1M2NAotI2RlZmluZSBGTEFUX0tFUk5F
TF9DUzMyIEZMQVRfUklORzNfQ1MzMgotI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZMQVRfS0VS
TkVMX0NTNjQKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQKLSNkZWZp
bmUgRkxBVF9LRVJORUxfU1MzMiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9LRVJORUxf
U1MgICBGTEFUX0tFUk5FTF9TUzY0Ci0KLSNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxBVF9SSU5H
M19EUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgotI2RlZmluZSBG
TEFUX1VTRVJfRFMgICBGTEFUX1VTRVJfRFM2NAotI2RlZmluZSBGTEFUX1VTRVJfQ1M2NCBGTEFU
X1JJTkczX0NTNjQKLSNkZWZpbmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMyCi0jZGVm
aW5lIEZMQVRfVVNFUl9DUyAgIEZMQVRfVVNFUl9DUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9TUzY0
IEZMQVRfUklORzNfU1M2NAotI2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkczX1NTMzIK
LSNkZWZpbmUgRkxBVF9VU0VSX1NTICAgRkxBVF9VU0VSX1NTNjQKLQotI2RlZmluZSBfX0hZUEVS
VklTT1JfVklSVF9TVEFSVCAweEZGRkY4MDAwMDAwMDAwMDAKLSNkZWZpbmUgX19IWVBFUlZJU09S
X1ZJUlRfRU5EICAgMHhGRkZGODgwMDAwMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRf
U1RBUlQgIDB4RkZGRjgwMDAwMDAwMDAwMAotI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORCAg
ICAweEZGRkY4MDQwMDAwMDAwMDAKLQotI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKLSNk
ZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlQpCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNpZ25lZF9s
b25nKF9fSFlQRVJWSVNPUl9WSVJUX0VORCkKLSNlbmRpZgotCi0jZGVmaW5lIE1BQ0gyUEhZU19W
SVJUX1NUQVJUICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZGVm
aW5lIE1BQ0gyUEhZU19WSVJUX0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJ
UlRfRU5EKQotI2RlZmluZSBNQUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNfVklSVF9F
TkQtTUFDSDJQSFlTX1ZJUlRfU1RBUlQpPj4zKQotI2lmbmRlZiBtYWNoaW5lX3RvX3BoeXNfbWFw
cGluZwotI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAqKUhZUEVS
VklTT1JfVklSVF9TVEFSVCkKLSNlbmRpZgotCi0vKgotICogaW50IEhZUEVSVklTT1Jfc2V0X3Nl
Z21lbnRfYmFzZSh1bnNpZ25lZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQotICogIEB3aGlj
aCA9PSBTRUdCQVNFXyogIDsgIEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKLSAqIFJldHVy
bnMgMCBvbiBzdWNjZXNzLgotICovCi0jZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAgMAotI2Rl
ZmluZSBTRUdCQVNFX0dTX1VTRVIgICAgIDEKLSNkZWZpbmUgU0VHQkFTRV9HU19LRVJORUwgICAy
Ci0jZGVmaW5lIFNFR0JBU0VfR1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3BlY2lmaWVk
IGluIGJhc2VbMTU6MF0gKi8KLQotLyoKLSAqIGludCBIWVBFUlZJU09SX2lyZXQodm9pZCkKLSAq
IEFsbCBhcmd1bWVudHMgYXJlIG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xsb3dpbmcg
Zm9ybWF0LgotICogTmV2ZXIgcmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtlcm5lbCBj
b250ZXh0IGlzIGxvc3QuCi0gKiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxvd3M6Ci0g
KiAgIFJJTkcwIC0+IFJJTkczIGtlcm5lbCBtb2RlLgotICogICBSSU5HMSAtPiBSSU5HMyBrZXJu
ZWwgbW9kZS4KLSAqICAgUklORzIgLT4gUklORzMga2VybmVsIG1vZGUuCi0gKiAgIFJJTkczIC0+
IFJJTkczIHVzZXIgbW9kZS4KLSAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQgdGhlIGd1
ZXN0IGtlcm5lbCBzaG91bGQgcmV0dXJuIHRvIGl0ZXNlbGYKLSAqIGRpcmVjdGx5IHdpdGgKLSAq
ICAgICAgb3JiICAgJDMsMSo4KCVyc3ApCi0gKiAgICAgIGlyZXRxCi0gKiBJZiBmbGFncyBjb250
YWlucyBWR0NGX2luX3N5c2NhbGw6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFHUywgUlNQ
LgotICogICBEaXNjYXJkIFIxMSwgUkNYLCBDUywgU1MuCi0gKiBPdGhlcndpc2U6Ci0gKiAgIFJl
c3RvcmUgUkFYLCBSMTEsIFJDWCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KLSAqIEFsbCBvdGhl
ciByZWdpc3RlcnMgYXJlIHNhdmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9yZWQgdG8g
dXNlci4KLSAqLwotLyogR3Vlc3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0dXJuIHRv
IGd1ZXN0IHdpdGggU1lTUkVUPyAqLwotI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgKLSNkZWZp
bmUgVkdDRl9pbl9zeXNjYWxsICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKLSNkZWZpbmUgVkdDRl9J
Tl9TWVNDQUxMICBWR0NGX2luX3N5c2NhbGwKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3Ry
dWN0IGlyZXRfY29udGV4dCB7Ci0gICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9m
IGh5cGVyY2FsbCkuICovCi0gICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3MsIHJpcCwg
Y3MsIHJmbGFncywgcnNwLCBzczsKLSAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBmcmFtZS4g
Ki8KLX07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJ
X18pCi0vKiBBbm9ueW1vdXMgdW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJpdCBuYW1l
cyAoZS5nLiwgZWF4L3JheCkuICovCi0jZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5pb24geyBc
Ci0gICAgdWludDY0X3QgciAjIyBuYW1lLCBlICMjIG5hbWU7IFwKLSAgICB1aW50MzJfdCBfZSAj
IyBuYW1lOyBcCi19Ci0jZWxzZQotLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlzIHVzZSB0
aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcuLCByYXgpLiAqLwotI2RlZmluZSBfX0RFQ0xfUkVH
KG5hbWUpIHVpbnQ2NF90IHIgIyMgbmFtZQotI2VuZGlmCi0KLXN0cnVjdCBjcHVfdXNlcl9yZWdz
IHsKLSAgICB1aW50NjRfdCByMTU7Ci0gICAgdWludDY0X3QgcjE0OwotICAgIHVpbnQ2NF90IHIx
MzsKLSAgICB1aW50NjRfdCByMTI7Ci0gICAgX19ERUNMX1JFRyhicCk7Ci0gICAgX19ERUNMX1JF
RyhieCk7Ci0gICAgdWludDY0X3QgcjExOwotICAgIHVpbnQ2NF90IHIxMDsKLSAgICB1aW50NjRf
dCByOTsKLSAgICB1aW50NjRfdCByODsKLSAgICBfX0RFQ0xfUkVHKGF4KTsKLSAgICBfX0RFQ0xf
UkVHKGN4KTsKLSAgICBfX0RFQ0xfUkVHKGR4KTsKLSAgICBfX0RFQ0xfUkVHKHNpKTsKLSAgICBf
X0RFQ0xfUkVHKGRpKTsKLSAgICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICov
Ci0gICAgdWludDMyX3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAgIF9fREVDTF9S
RUcoaXApOwotICAgIHVpbnQxNl90IGNzLCBfcGFkMFsxXTsKLSAgICB1aW50OF90ICBzYXZlZF91
cGNhbGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMVszXTsKLSAgICBfX0RFQ0xfUkVHKGZsYWdz
KTsgICAgICAvKiByZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgX19ERUNM
X1JFRyhzcCk7Ci0gICAgdWludDE2X3Qgc3MsIF9wYWQyWzNdOwotICAgIHVpbnQxNl90IGVzLCBf
cGFkM1szXTsKLSAgICB1aW50MTZfdCBkcywgX3BhZDRbM107Ci0gICAgdWludDE2X3QgZnMsIF9w
YWQ1WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFzZS4gICAg
ICovCi0gICAgdWludDE2X3QgZ3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVj
ZWRlbmNlIG92ZXIgZ3NfYmFzZV91c3IuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJf
cmVncyBjcHVfdXNlcl9yZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9y
ZWdzX3QpOwotCi0jdW5kZWYgX19ERUNMX1JFRwotCi0jZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBm
bikgKChVTE9OR19QVFIpKHBmbikgPDwgMTIpCi0jZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykg
KChVTE9OR19QVFIpKGNyMykgPj4gMTIpCi0KLXN0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7Ci0gICAg
VUxPTkdfUFRSIGNyMjsKLSAgICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9pbmZvX3Qp
ID09IDY0ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2lu
Zm9fdDsKLQotdHlwZWRlZiBVTE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7Ci0KLSNlbmRpZiAvKiAh
X19BU1NFTUJMWV9fICovCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4
Nl82NF9IX18gKi8KLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMt
ZmlsZS1zdHlsZTogIkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQK
LSAqIGluZGVudC10YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNs
dWRlL3hlbi9hcmNoLXg4Ni94ZW4uaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2MyMmZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUv
eGVuL2FyY2gteDg2L3hlbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIGFyY2gteDg2L3hlbi5oCi0gKiAKLSAqIEd1ZXN0IE9TIGlu
dGVyZmFjZSB0byB4ODYgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
LSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0g
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
Ci0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0
LTIwMDYsIEsgQSBGcmFzZXIKLSAqLwotCi0jaW5jbHVkZSAiLi4veGVuLmgiCi0KLSNpZm5kZWYg
X19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hf
WDg2X1hFTl9IX18KLQotLyogU3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4g
MHgwMDAzMDIwMS4gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAy
MDEKLSNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAg
IHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQotI2Vs
c2UKLSNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAg
IHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lCi0jZW5kaWYKLQotLyoKLSAq
IFhFTl9HVUVTVF9IQU5ETEUgcmVwcmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2Vk
IGFzIGEgZmllbGQKLSAqIGluIGEgc3RydWN0IGluIG1lbW9yeS4KLSAqIFhFTl9HVUVTVF9IQU5E
TEVfUEFSQU0gcmVwcmVzZW50IGEgZ3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KLSAq
IGh5cGVyY2FsbCBhcmd1bWVudC4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9H
VUVTVF9IQU5ETEUgYXJlIHRoZSBzYW1lIG9uIFg4NiBidXQKLSAqIHRoZXkgbWlnaHQgbm90IGJl
IG9uIG90aGVyIGFyY2hpdGVjdHVyZXMuCi0gKi8KLSNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShuYW1lLCB0eXBlKSBcCi0gICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFt
ZSwgdHlwZSk7ICAgXAotICAgIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFt
ZSwgY29uc3QgdHlwZSkKLSNkZWZpbmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBf
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIG5hbWUpCi0jZGVmaW5lIF9fWEVOX0dVRVNU
X0hBTkRMRShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKLSNkZWZpbmUgWEVO
X0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKLSNk
ZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5h
bWUpCi0jZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhu
ZCkucCA9IHZhbDsgfSB3aGlsZSAoMCkKLSNpZmRlZiBfX1hFTl9UT09MU19fCi0jZGVmaW5lIGdl
dF94ZW5fZ3Vlc3RfaGFuZGxlKHZhbCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxl
ICgwKQotI2VuZGlmCi0jZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRf
eGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpCi0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQot
I2luY2x1ZGUgInhlbi14ODZfMzIuaCIKLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLSNpbmNs
dWRlICJ4ZW4teDg2XzY0LmgiCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXR5cGVk
ZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsKLSNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgotI2VuZGlm
Ci0KLSNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkgMQotCi0jZGVmaW5lIFhFTl9IQVZF
X1BWX1VQQ0FMTF9NQVNLIDEKLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21l
bnQgRGVzY3JpcHRvciBUYWJsZXMKLSAqLwotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAq
IGAgSFlQRVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQg
aW50IGVudHJpZXMpOwotICogYAotICovCi0vKgotICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMg
YXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKLSAqIHN0
YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVk
IHNlbGVjdG9yIHZhbHVlcwotICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVl
cyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBHRFQsCi0gKiBzbyBYZW4gcGxhY2Vz
IGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KLSAqCi0g
KiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJW
SVNPUl9tbXVleHRfb3AKLSAqLwotI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQK
LSNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFH
RSAqIDQwOTYpCi0jZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJW
RURfR0RUX0JZVEUgLyA4KQotCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZ
UEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7Ci0gKiBgCi0gKiBg
IEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8K
LSAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3
cml0YWJsZS4KLSAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0
aGUgc2FtZSBmb3JtYXQgYXMgYQotICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBl
bnRyeS4KLSAqLwotCi0vKiBNYXhpbXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5
IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovCi0jZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVT
IDMyCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9u
Z190OwotI2RlZmluZSBQUklfeGVuX3Vsb25nICJseCIKLQotLyoKLSAqIGAgZW51bSBuZWdfZXJy
bm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19Q
VFIgZXNwKTsKLSAqIGAKLSAqIFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9y
IHRoZSBjdXJyZW50IHZjcHUuCi0gKi8KLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAq
IGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBz
W10pOwotICogYAotICovCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJ
U09SX3NldF90cmFwX3RhYmxlKCkuCi0gKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50
aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAuCi0gKiBUaGUgcHJpdmlsZWdlIGxl
dmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJl
Ci0gKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFp
bGFibGUsIHdlIGFsbG9jYXRlCi0gKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6Ci0gKiAg
TGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCi0gKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBl
bnRlcgotICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50ZXIKLSAqICBMZXZlbCA9PSAzOiBF
dmVyeW9uZSBtYXkgZW50ZXIKLSAqLwotI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90
aSktPmZsYWdzICYgMykKLSNkZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFn
cyAmIDQpCi0jZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9k
cGwpKQotI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEo
X2lmKSk8PDIpKQotc3RydWN0IHRyYXBfaW5mbyB7Ci0gICAgdWludDhfdCAgICAgICB2ZWN0b3I7
ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVh
ciBldmVudCBlbmFibGU/ICAqLwotICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBz
ZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgVUxPTkdfUFRS
IGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KTsKLQotdHlwZWRlZiB1aW50NjRfdCB0c2NfdGlt
ZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLwotCi0vKgotICogVGhlIGZvbGxvd2luZyBp
cyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVk
IAotICogaW4gYnkgRlhTQVZFIGlmIHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNl
IEZTQVZFIGlzIHVzZWQuCi0gKi8KLXN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewotICAgIC8q
IEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVkIGZvciBGWFNB
VkUvRlhSU1RPUi4gKi8KLSAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVfY3R4dDsgICAg
ICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLwotI2RlZmluZSBWR0NGX0kzODdf
VkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCi0jZGVmaW5lIFZHQ0ZfSU5fS0VSTkVMICAgICAg
ICAgICAgICAgICAoMTw8MikKLSNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAgICAgICAgICAg
IDAKLSNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxfVkdDRl9pMzg3
X3ZhbGlkKQotI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAgMgotI2RlZmlu
ZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tlcm5lbCkKLSNk
ZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKLSNkZWZpbmUgVkdDRl9mYWls
c2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMp
Ci0jZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0Ci0jZGVmaW5lIFZHQ0Zf
c3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVu
dHMpCi0jZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1Ci0jZGVmaW5lIFZH
Q0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQotICAgIFVMT05H
X1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAgICAgICAgICAg
ICAgICAgKi8KLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAgICAgICAgLyog
VXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLwotICAgIHN0cnVjdCB0cmFwX2luZm8gdHJh
cF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAgICAgICovCi0g
ICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChsaW5lYXIgYWRk
cmVzcywgIyBlbnRzKSAqLwotICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwgZ2R0X2VudHM7
IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KLSAgICBVTE9OR19QVFIga2VybmVs
X3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1AxKSAgICovCi0g
ICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4gY3RybHJlZ1sx
XS4gKi8KLSAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAvKiBDUjAtQ1I3
IChjb250cm9sIHJlZ2lzdGVycykgICovCi0gICAgVUxPTkdfUFRSIGRlYnVncmVnWzhdOyAgICAg
ICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLwotI2lmZGVmIF9faTM4
Nl9fCi0gICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyogQ1M6RUlQIG9m
IGV2ZW50IGNhbGxiYWNrICAgICAqLwotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7
Ci0gICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6RUlQIG9mIGZh
aWxzYWZlIGNhbGxiYWNrICAqLwotICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxsYmFja19laXA7
Ci0jZWxzZQotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7Ci0gICAgVUxPTkdfUFRS
IGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKLSNpZmRlZiBfX1hFTl9fCi0gICAgdW5pb24gewotICAg
ICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7Ci0gICAgICAgIHN0cnVjdCB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8qIGNvbXBhdCBD
UyBvZiBldmVudCBjYiAgICAgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBmYWlsc2FmZV9j
YWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLwotICAgICAgICB9Owot
ICAgIH07Ci0jZWxzZQotICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsKLSNlbmRp
ZgotI2VuZGlmCi0gICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAgICAgLyogVk1B
U1NUX1RZUEVfKiBiaXRtYXAgKi8KLSNpZmRlZiBfX3g4Nl82NF9fCi0gICAgLyogU2VnbWVudCBi
YXNlIGFkZHJlc3Nlcy4gKi8KLSAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7Ci0gICAgdWludDY0
X3QgICAgICBnc19iYXNlX2tlcm5lbDsKLSAgICB1aW50NjRfdCAgICAgIGdzX2Jhc2VfdXNlcjsK
LSNlbmRpZgotfTsKLXR5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2Y3B1X2d1ZXN0
X2NvbnRleHRfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4dF90
KTsKLQotc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gewotICAgIFVMT05HX1BUUiBtYXhfcGZuOyAg
ICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRhYmxlICovCi0gICAg
LyogRnJhbWUgY29udGFpbmluZyBsaXN0IG9mIG1mbnMgY29udGFpbmluZyBsaXN0IG9mIG1mbnMg
Y29udGFpbmluZyBwMm0uICovCi0gICAgeGVuX3Bmbl90ICAgICBwZm5fdG9fbWZuX2ZyYW1lX2xp
c3RfbGlzdDsKLSAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsKLSAgICB1aW50NjRfdCBwYWRbMzJd
OwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaF9zaGFyZWRfaW5mb190
OwotCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJu
b3ZhbAotICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOwotICogYAotICog
U2V0cyAoaWYgc2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgotICovCi0KLS8q
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jfc2V0X2RlYnVncmVnKGlu
dCByZWdubywgVUxPTkdfUFRSIHZhbHVlKTsKLSAqCi0gKiBgIFVMT05HX1BUUgotICogYCBIWVBF
UlZJU09SX2dldF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOwotICogRm9yIDA8PXJlZzw9NywgcmV0dXJu
cyB0aGUgZGVidWcgcmVnaXN0ZXIgdmFsdWUuCi0gKiBGb3Igb3RoZXIgdmFsdWVzIG9mIHJlZywg
cmV0dXJucyAoKFVMT05HX1BUUiktRUlOVkFMKS4KLSAqIChVbmZvcnR1bmF0ZWx5LCB0aGlzIGlu
dGVyZmFjZSBpcyBkZWZlY3RpdmUuKQotICovCi0KLS8qCi0gKiBQcmVmaXggZm9yY2VzIGVtdWxh
dGlvbiBvZiBzb21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCi0gKiBDdXJyZW50bHkgb25s
eSBDUFVJRC4KLSAqLwotI2lmZGVmIF9fQVNTRU1CTFlfXwotI2RlZmluZSBYRU5fRU1VTEFURV9Q
UkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKLSNkZWZpbmUgWEVOX0NQVUlE
ICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAotI2Vsc2UKLSNkZWZpbmUgWEVOX0VN
VUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAiCi0jZGVmaW5l
IFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgotI2VuZGlmCi0K
LSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLwotCi0vKgotICogTG9j
YWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1i
YXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmls
Ci0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi9p
bmNsdWRlL3hlbi9ncmFudF90YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
YmZmMzc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogZ3JhbnRf
dGFibGUuaAotICoKLSAqIEludGVyZmFjZSBmb3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8g
cGFnZSBmcmFtZXMsIGFuZCByZWNlaXZpbmcKLSAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4K
LSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQot
I2lmbmRlZiBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCi0jZGVmaW5lIF9fWEVOX1BVQkxJ
Q19HUkFOVF9UQUJMRV9IX18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogYGluY29udGVu
dHMgMTUwIGdudHRhYiBHcmFudCBUYWJsZXMKLSAqCi0gKiBYZW4ncyBncmFudCB0YWJsZXMgcHJv
dmlkZSBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIG1lbW9yeSBzaGFyaW5nCi0gKiBiZXR3ZWVuIGRv
bWFpbnMuIFRoaXMgc2hhcmVkIG1lbW9yeSBpbnRlcmZhY2UgdW5kZXJwaW5zIHRoZSBzcGxpdAot
ICogZGV2aWNlIGRyaXZlcnMgZm9yIGJsb2NrIGFuZCBuZXR3b3JrIElPLgotICoKLSAqIEVhY2gg
ZG9tYWluIGhhcyBpdHMgb3duIGdyYW50IHRhYmxlLiBUaGlzIGlzIGEgZGF0YSBzdHJ1Y3R1cmUg
dGhhdAotICogaXMgc2hhcmVkIHdpdGggWGVuOyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0ZWxs
IFhlbiB3aGF0IGtpbmQgb2YKLSAqIHBlcm1pc3Npb25zIG90aGVyIGRvbWFpbnMgaGF2ZSBvbiBp
dHMgcGFnZXMuIEVudHJpZXMgaW4gdGhlIGdyYW50Ci0gKiB0YWJsZSBhcmUgaWRlbnRpZmllZCBi
eSBncmFudCByZWZlcmVuY2VzLiBBIGdyYW50IHJlZmVyZW5jZSBpcyBhbgotICogaW50ZWdlciwg
d2hpY2ggaW5kZXhlcyBpbnRvIHRoZSBncmFudCB0YWJsZS4gSXQgYWN0cyBhcyBhCi0gKiBjYXBh
YmlsaXR5IHdoaWNoIHRoZSBncmFudGVlIGNhbiB1c2UgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9u
IHRoZQotICogZ3JhbnRlcuKAmXMgbWVtb3J5LgotICoKLSAqIFRoaXMgY2FwYWJpbGl0eS1iYXNl
ZCBzeXN0ZW0gYWxsb3dzIHNoYXJlZC1tZW1vcnkgY29tbXVuaWNhdGlvbnMKLSAqIGJldHdlZW4g
dW5wcml2aWxlZ2VkIGRvbWFpbnMuIEEgZ3JhbnQgcmVmZXJlbmNlIGFsc28gZW5jYXBzdWxhdGVz
Ci0gKiB0aGUgZGV0YWlscyBvZiBhIHNoYXJlZCBwYWdlLCByZW1vdmluZyB0aGUgbmVlZCBmb3Ig
YSBkb21haW4gdG8KLSAqIGtub3cgdGhlIHJlYWwgbWFjaGluZSBhZGRyZXNzIG9mIGEgcGFnZSBp
dCBpcyBzaGFyaW5nLiBUaGlzIG1ha2VzCi0gKiBpdCBwb3NzaWJsZSB0byBzaGFyZSBtZW1vcnkg
Y29ycmVjdGx5IHdpdGggZG9tYWlucyBydW5uaW5nIGluCi0gKiBmdWxseSB2aXJ0dWFsaXNlZCBt
ZW1vcnkuCi0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBH
UkFOVCBUQUJMRSBSRVBSRVNFTlRBVElPTgotICovCi0KLS8qIFNvbWUgcm91Z2ggZ3VpZGVsaW5l
cyBvbiBhY2Nlc3NpbmcgYW5kIHVwZGF0aW5nIGdyYW50LXRhYmxlIGVudHJpZXMKLSAqIGluIGEg
Y29uY3VycmVuY3ktc2FmZSBtYW5uZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBMaW51eCBjb250
YWlucyBhCi0gKiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGd1ZXN0IE9TZXMgKGRyaXZl
cnMveGVuL2dyYW50X3RhYmxlLmMsIHNlZQotICogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxp
bnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0O2E9YmxvYjtmPWRyaXZlcnMveGVuL2dy
YW50LXRhYmxlLmM7aGI9SEVBRAotICoKLSAqIE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50
LWdlbmVyYXRpb24geDg2IHByb2Nlc3NvcnMuIEhvd2V2ZXIsIGEKLSAqICAgICBjb21waWxlciBi
YXJyaWVyIHdpbGwgc3RpbGwgYmUgcmVxdWlyZWQuCi0gKgotICogSW50cm9kdWNpbmcgYSB2YWxp
ZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJsZToKLSAqICAxLiBXcml0ZSBlbnQtPmRvbWlkLgot
ICogIDIuIFdyaXRlIGVudC0+ZnJhbWU6Ci0gKiAgICAgIEdURl9wZXJtaXRfYWNjZXNzOiAgIEZy
YW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJtaXR0ZWQuCi0gKiAgICAgIEdURl9hY2NlcHRfdHJh
bnNmZXI6IFBzZXVkby1waHlzIGZyYW1lIHNsb3QgYmVpbmcgZmlsbGVkIGJ5IG5ldwotICogICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSwgb3IgemVybyBpZiBub25lLgotICogIDMuIFdy
aXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLgotICogIDQuIFdyaXRlIGVudC0+ZmxhZ3MsIGluYy4g
dmFsaWQgdHlwZS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9wZXJtaXRfYWNj
ZXNzIGVudHJ5OgotICogIDEuIGZsYWdzID0gZW50LT5mbGFncy4KLSAqICAyLiBPYnNlcnZlIHRo
YXQgIShmbGFncyAmIChHVEZfcmVhZGluZ3xHVEZfd3JpdGluZykpLgotICogIDMuIENoZWNrIHJl
c3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCi0gKiAgTkIu
IE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBv
biBzdWNjZXNzIG9mCi0gKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJh
bnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCi0gKgotICogSW52YWxpZGF0aW5nIGFu
IGluLXVzZSBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToKLSAqICBUaGlzIGNhbm5vdCBiZSBkb25l
IGRpcmVjdGx5LiBSZXF1ZXN0IGFzc2lzdGFuY2UgZnJvbSB0aGUgZG9tYWluIGNvbnRyb2xsZXIK
LSAqICB3aGljaCBjYW4gc2V0IGEgdGltZW91dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQgZW50cnkg
YW5kIHRha2UgbmVjZXNzYXJ5Ci0gKiAgYWN0aW9uLiAoTkIuIFRoaXMgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCEpLgotICoKLSAqIEludmFsaWRhdGluZyBhbiB1bnVzZWQgR1RGX2FjY2VwdF90cmFu
c2ZlciBlbnRyeToKLSAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCi0gKiAgMi4gT2JzZXJ2ZSB0
aGF0ICEoZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tbWl0dGVkKS4gWypdCi0gKiAgMy4gQ2hlY2sg
cmVzdWx0IG9mIFNNUC1zYWZlIENNUFhDSEcoJmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KLSAqICBO
Qi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNlIG9mIGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50
IG9uIHN1Y2Nlc3Mgb2YKLSAqICAgICAgc3RlcCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3Vh
cmFudGVlIG9yZGVyaW5nIG9mIGN0cmwtZGVwIHdyaXRlcy4KLSAqICBbKl0gSWYgR1RGX3RyYW5z
ZmVyX2NvbW1pdHRlZCBpcyBzZXQgdGhlbiB0aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcu
Ci0gKiAgICAgIFRoZSBndWVzdCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50
aWwgdGhlIGFkZHJlc3Mgb2YgdGhlCi0gKiAgICAgIHRyYW5zZmVycmVkIGZyYW1lIGlzIHdyaXR0
ZW4uIEl0IGlzIHNhZmUgZm9yIHRoZSBndWVzdCB0byBzcGluIHdhaXRpbmcKLSAqICAgICAgZm9y
IHRoaXMgdG8gb2NjdXIgKGRldGVjdCBieSBvYnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBsZXRl
ZCBpbgotICogICAgICBlbnQtPmZsYWdzKS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYSBjb21taXR0
ZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKLSAqICAxLiBXYWl0IGZvciAoZW50LT5mbGFn
cyAmIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQpLgotICoKLSAqIENoYW5naW5nIGEgR1RGX3Blcm1p
dF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byByZWFkLW9ubHk6Ci0gKiAgVXNlIFNNUC1zYWZlIENN
UFhDSEcgdG8gc2V0IEdURl9yZWFkb25seSwgd2hpbGUgY2hlY2tpbmcgIUdURl93cml0aW5nLgot
ICoKLSAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJvbSByZWFkLW9ubHkgdG8gd3Jp
dGFibGU6Ci0gKiAgVXNlIFNNUC1zYWZlIGJpdC1zZXR0aW5nIGluc3RydWN0aW9uLgotICovCi0K
LS8qCi0gKiBSZWZlcmVuY2UgdG8gYSBncmFudCBlbnRyeSBpbiBhIHNwZWNpZmllZCBkb21haW4n
cyBncmFudCB0YWJsZS4KLSAqLwotdHlwZWRlZiB1aW50MzJfdCBncmFudF9yZWZfdDsKLQotLyoK
LSAqIEEgZ3JhbnQgdGFibGUgY29tcHJpc2VzIGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJp
ZXMgaW4gb25lIG9yIG1vcmUKLSAqIHBhZ2UgZnJhbWVzIHNoYXJlZCBiZXR3ZWVuIFhlbiBhbmQg
YSBndWVzdC4KLSAqIFtYRU5dOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgWGVuIGFuZCByZWFk
IGJ5IHRoZSBzaGFyaW5nIGd1ZXN0LgotICogW0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBi
eSB0aGUgZ3Vlc3QgYW5kIHJlYWQgYnkgWGVuLgotICovCi0KLS8qCi0gKiBWZXJzaW9uIDEgb2Yg
dGhlIGdyYW50IHRhYmxlIGVudHJ5IHN0cnVjdHVyZSBpcyBtYWludGFpbmVkIHB1cmVseQotICog
Zm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgTmV3IGd1ZXN0cyBzaG91bGQgdXNlIHZlcnNp
b24gMi4KLSAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjBhCi0j
ZGVmaW5lIGdyYW50X2VudHJ5X3YxIGdyYW50X2VudHJ5Ci0jZGVmaW5lIGdyYW50X2VudHJ5X3Yx
X3QgZ3JhbnRfZW50cnlfdAotI2VuZGlmCi1zdHJ1Y3QgZ3JhbnRfZW50cnlfdjEgewotICAgIC8q
IEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQgZmxhZyBpbmZvcm1hdGlvbi4gIFtYRU4sR1NUXSAq
LwotICAgIHVpbnQxNl90IGZsYWdzOwotICAgIC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBm
b3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICovCi0gICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgLyoK
LSAgICAgKiBHVEZfcGVybWl0X2FjY2VzczogRnJhbWUgdGhhdCBAZG9taWQgaXMgYWxsb3dlZCB0
byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KLSAgICAgKiBHVEZfYWNjZXB0X3RyYW5zZmVyOiBGcmFt
ZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJyZWQgYnkgQGRvbWlkLiBbWEVOXQotICAgICAqLwot
ICAgIHVpbnQzMl90IGZyYW1lOwotfTsKLXR5cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X3YxIGdy
YW50X2VudHJ5X3YxX3Q7Ci0KLS8qIFRoZSBmaXJzdCBmZXcgZ3JhbnQgdGFibGUgZW50cmllcyB3
aWxsIGJlIHByZXNlcnZlZCBhY3Jvc3MgZ3JhbnQgdGFibGUKLSAqIHZlcnNpb24gY2hhbmdlcyBh
bmQgbWF5IGJlIHByZS1wb3B1bGF0ZWQgYXQgZG9tYWluIGNyZWF0aW9uIGJ5IHRvb2xzLgotICov
Ci0jZGVmaW5lIEdOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTICAgICA4Ci0jZGVmaW5lIEdOVFRB
Ql9SRVNFUlZFRF9DT05TT0xFICAgICAgICAwCi0jZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9YRU5T
VE9SRSAgICAgICAxCi0KLS8qCi0gKiBUeXBlIG9mIGdyYW50IGVudHJ5LgotICogIEdURl9pbnZh
bGlkOiBUaGlzIGdyYW50IGVudHJ5IGdyYW50cyBubyBwcml2aWxlZ2VzLgotICogIEdURl9wZXJt
aXRfYWNjZXNzOiBBbGxvdyBAZG9taWQgdG8gbWFwL2FjY2VzcyBAZnJhbWUuCi0gKiAgR1RGX2Fj
Y2VwdF90cmFuc2ZlcjogQWxsb3cgQGRvbWlkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBvbmUg
cGFnZSBmcmFtZQotICogICAgICAgICAgICAgICAgICAgICAgIHRvIHRoaXMgZ3Vlc3QuIFhlbiB3
cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIEBmcmFtZS4KLSAqICBHVEZfdHJhbnNpdGl2ZTogQWxs
b3cgQGRvbWlkIHRvIHRyYW5zaXRpdmVseSBhY2Nlc3MgYSBzdWJyYW5nZSBvZgotICogICAgICAg
ICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4gQHRyYW5zX2RvbWlkLiAgTm8gbWFwcGluZ3MgYXJl
IGFsbG93ZWQuCi0gKi8KLSNkZWZpbmUgR1RGX2ludmFsaWQgICAgICAgICAoMFU8PDApCi0jZGVm
aW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFVPDwwKQotI2RlZmluZSBHVEZfYWNjZXB0X3RyYW5z
ZmVyICgyVTw8MCkKLSNkZWZpbmUgR1RGX3RyYW5zaXRpdmUgICAgICAoM1U8PDApCi0jZGVmaW5l
IEdURl90eXBlX21hc2sgICAgICAgKDNVPDwwKQotCi0vKgotICogU3ViZmxhZ3MgZm9yIEdURl9w
ZXJtaXRfYWNjZXNzLgotICogIEdURl9yZWFkb25seTogUmVzdHJpY3QgQGRvbWlkIHRvIHJlYWQt
b25seSBtYXBwaW5ncyBhbmQgYWNjZXNzZXMuIFtHU1RdCi0gKiAgR1RGX3JlYWRpbmc6IEdyYW50
IGVudHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQgZm9yIHJlYWRpbmcgYnkgQGRvbWlkLiBbWEVOXQot
ICogIEdURl93cml0aW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciB3cml0
aW5nIGJ5IEBkb21pZC4gW1hFTl0KLSAqICBHVEZfUEFULCBHVEZfUFdULCBHVEZfUENEOiAoeDg2
KSBjYWNoZSBhdHRyaWJ1dGUgZmxhZ3MgZm9yIHRoZSBncmFudCBbR1NUXQotICogIEdURl9zdWJf
cGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkgYSBzdWJyYW5nZSBvZiB0aGUgcGFnZS4gIEBkb21p
ZAotICogICAgICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGFsbG93ZWQgdG8gY29weSBmcm9tIHRo
ZSBncmFudCwgYW5kIG5vdAotICogICAgICAgICAgICAgICAgbWFwIGl0LiBbR1NUXQotICovCi0j
ZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAgKDIpCi0jZGVmaW5lIEdURl9yZWFkb25seSAgICAg
ICAgKDFVPDxfR1RGX3JlYWRvbmx5KQotI2RlZmluZSBfR1RGX3JlYWRpbmcgICAgICAgICgzKQot
I2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAgICgxVTw8X0dURl9yZWFkaW5nKQotI2RlZmluZSBf
R1RGX3dyaXRpbmcgICAgICAgICg0KQotI2RlZmluZSBHVEZfd3JpdGluZyAgICAgICAgICgxVTw8
X0dURl93cml0aW5nKQotI2RlZmluZSBfR1RGX1BXVCAgICAgICAgICAgICg1KQotI2RlZmluZSBH
VEZfUFdUICAgICAgICAgICAgICgxVTw8X0dURl9QV1QpCi0jZGVmaW5lIF9HVEZfUENEICAgICAg
ICAgICAgKDYpCi0jZGVmaW5lIEdURl9QQ0QgICAgICAgICAgICAgKDFVPDxfR1RGX1BDRCkKLSNk
ZWZpbmUgX0dURl9QQVQgICAgICAgICAgICAoNykKLSNkZWZpbmUgR1RGX1BBVCAgICAgICAgICAg
ICAoMVU8PF9HVEZfUEFUKQotI2RlZmluZSBfR1RGX3N1Yl9wYWdlICAgICAgICg4KQotI2RlZmlu
ZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8X0dURl9zdWJfcGFnZSkKLQotLyoKLSAqIFN1YmZs
YWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVyOgotICogIEdURl90cmFuc2Zlcl9jb21taXR0ZWQ6
IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIGNvbW1pdHRlZAotICog
ICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwIG9mIGEgcGFnZSBmcmFtZS4gV2hlbiBhIGd1
ZXN0IHNlZXMgdGhpcyBmbGFnCi0gKiAgICAgIGl0IG11c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFu
dCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJfY29tcGxldGVkIGlzCi0gKiAgICAgIHNldCBieSBY
ZW4uCi0gKiAgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZDogSXQgaXMgc2FmZSBmb3IgdGhlIGd1ZXN0
IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcKLSAqICAgICAgYWZ0ZXIgcmVhZGluZyBHVEZfdHJh
bnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBhbHdheXMgd3JpdGUgdGhlIGZyYW1lCi0gKiAgICAg
IGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5nIHRoaXMgZmxhZywgaW4gYSB0aW1lbHkgbWFubmVy
LgotICovCi0jZGVmaW5lIF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkICgyKQotI2RlZmluZSBHVEZf
dHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkKQotI2RlZmlu
ZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAoMykKLSNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCkKLQotLyoKLSAqIFZlcnNpb24gMiBn
cmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2UgZnVsZmlsIHRoZSBzYW1lIHJvbGUgYXMKLSAqIHZl
cnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJlcHJlc2VudCBtb3JlIGNvbXBsaWNhdGVkIG9wZXJh
dGlvbnMuCi0gKiBBbnkgZ2l2ZW4gZG9tYWluIHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJzaW9uIDEg
b3IgYSB2ZXJzaW9uIDIgdGFibGUsCi0gKiBhbmQgZXZlcnkgZW50cnkgaW4gdGhlIHRhYmxlIHdp
bGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KLSAqCi0gKiBUaGUgaW50ZXJmYWNlIGJ5IHdoaWNoIGRv
bWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMgZG9lcyBub3QgZGVwZW5kCi0gKiBvbiB0aGUgZ3Jh
bnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkgdGhlIG90aGVyIGRvbWFpbi4KLSAqLwotI2lmIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQotLyoKLSAqIFZlcnNpb24gMSBh
bmQgdmVyc2lvbiAyIGdyYW50IGVudHJpZXMgc2hhcmUgYSBjb21tb24gcHJlZml4LiAgVGhlCi0g
KiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUgZG9jdW1lbnRlZCBhcyBwYXJ0IG9mIHN0cnVjdAot
ICogZ3JhbnRfZW50cnlfdjEuCi0gKi8KLXN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgewotICAg
IHVpbnQxNl90IGZsYWdzOwotICAgIGRvbWlkX3QgIGRvbWlkOwotfTsKLXR5cGVkZWYgc3RydWN0
IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9lbnRyeV9oZWFkZXJfdDsKLQotLyoKLSAqIFZlcnNp
b24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3RydWN0dXJlLgotICovCi11bmlvbiBncmFudF9lbnRy
eV92MiB7Ci0gICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOwotCi0gICAgLyoKLSAgICAgKiBU
aGlzIG1lbWJlciBpcyB1c2VkIGZvciBWMS1zdHlsZSBmdWxsIHBhZ2UgZ3JhbnRzLCB3aGVyZSBl
aXRoZXI6Ci0gICAgICoKLSAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfYWNjZXB0X3RyYW5zZmVy
LCBvcgotICAgICAqIC0tIGhkci50eXBlIGlzIEdURl9wZXJtaXRfYWNjZXNzIGFuZCBHVEZfc3Vi
X3BhZ2UgaXMgbm90IHNldC4KLSAgICAgKgotICAgICAqIEluIHRoYXQgY2FzZSwgdGhlIGZyYW1l
IGZpZWxkIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlCi0gICAgICogZmllbGQgb2YgdGhl
IHNhbWUgbmFtZSBpbiB0aGUgVjEgZW50cnkgc3RydWN0dXJlLgotICAgICAqLwotICAgIHN0cnVj
dCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKLSAgICAgICAgdWludDMyX3Qg
cGFkMDsKLSAgICAgICAgdWludDY0X3QgZnJhbWU7Ci0gICAgfSBmdWxsX3BhZ2U7Ci0KLSAgICAv
KgotICAgICAqIElmIHRoZSBncmFudCB0eXBlIGlzIEdURl9ncmFudF9hY2Nlc3MgYW5kIEdURl9z
dWJfcGFnZSBpcyBzZXQsCi0gICAgICogQGRvbWlkIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGJ5dGVz
IFtAcGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5ndGgpCi0gICAgICogaW4gZnJhbWUgQGZyYW1lLgot
ICAgICAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsK
LSAgICAgICAgdWludDE2X3QgcGFnZV9vZmY7Ci0gICAgICAgIHVpbnQxNl90IGxlbmd0aDsKLSAg
ICAgICAgdWludDY0X3QgZnJhbWU7Ci0gICAgfSBzdWJfcGFnZTsKLQotICAgIC8qCi0gICAgICog
SWYgdGhlIGdyYW50IGlzIEdURl90cmFuc2l0aXZlLCBAZG9taWQgaXMgYWxsb3dlZCB0byB1c2Ug
dGhlCi0gICAgICogZ3JhbnQgQGdyZWYgaW4gZG9tYWluIEB0cmFuc19kb21pZCwgYXMgaWYgaXQg
d2FzIHRoZSBsb2NhbAotICAgICAqIGRvbWFpbi4gIE9idmlvdXNseSwgdGhlIHRyYW5zaXRpdmUg
YWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQotICAgICAqIHdpdGggdGhlIG9yaWdpbmFsIGdyYW50
LgotICAgICAqCi0gICAgICogVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBYZW4gZG9lcyBub3QgYWxs
b3cgdHJhbnNpdGl2ZSBncmFudHMKLSAgICAgKiB0byBiZSBtYXBwZWQuCi0gICAgICovCi0gICAg
c3RydWN0IHsKLSAgICAgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOwotICAgICAgICBkb21p
ZF90IHRyYW5zX2RvbWlkOwotICAgICAgICB1aW50MTZfdCBwYWQwOwotICAgICAgICBncmFudF9y
ZWZfdCBncmVmOwotICAgIH0gdHJhbnNpdGl2ZTsKLQotICAgIHVpbnQzMl90IF9fc3BhY2VyWzRd
OyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28gKi8KLX07Ci10eXBlZGVmIHVuaW9uIGdyYW50X2Vu
dHJ5X3YyIGdyYW50X2VudHJ5X3YyX3Q7Ci0KLXR5cGVkZWYgdWludDE2X3QgZ3JhbnRfc3RhdHVz
X3Q7Ci0KLSNlbmRpZiAvKiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fICovCi0KLS8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR1JBTlQgVEFCTEUgUVVFUklFUyBBTkQg
VVNFUwotICovCi0KLS8qIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9ncmFu
dF90YWJsZV9vcChlbnVtIGdyYW50X3RhYmxlX29wIGNtZCwKLSAqIGAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICphcmdzLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBjb3VudCkKLSAqIGAKLSAqCi0gKiBAYXJncyBwb2ludHMgdG8gYW4gYXJyYXkg
b2YgYSBwZXItY29tbWFuZCBkYXRhIHN0cnVjdHVyZS4gVGhlIGFycmF5Ci0gKiBoYXMgQGNvdW50
IG1lbWJlcnMKLSAqLwotCi0vKiBgIGVudW0gZ3JhbnRfdGFibGVfb3AgeyAvLyBHTlRUQUJPUF8q
ID0+IHN0cnVjdCBnbnR0YWJfKiAqLwotI2RlZmluZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmICAg
ICAgICAwCi0jZGVmaW5lIEdOVFRBQk9QX3VubWFwX2dyYW50X3JlZiAgICAgIDEKLSNkZWZpbmUg
R05UVEFCT1Bfc2V0dXBfdGFibGUgICAgICAgICAgMgotI2RlZmluZSBHTlRUQUJPUF9kdW1wX3Rh
YmxlICAgICAgICAgICAzCi0jZGVmaW5lIEdOVFRBQk9QX3RyYW5zZmVyICAgICAgICAgICAgIDQK
LSNkZWZpbmUgR05UVEFCT1BfY29weSAgICAgICAgICAgICAgICAgNQotI2RlZmluZSBHTlRUQUJP
UF9xdWVyeV9zaXplICAgICAgICAgICA2Ci0jZGVmaW5lIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBs
YWNlICAgIDcKLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKLSNk
ZWZpbmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24gICAgICAgICAgOAotI2RlZmluZSBHTlRUQUJPUF9n
ZXRfc3RhdHVzX2ZyYW1lcyAgICA5Ci0jZGVmaW5lIEdOVFRBQk9QX2dldF92ZXJzaW9uICAgICAg
ICAgIDEwCi0jZGVmaW5lIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmCSAgICAgIDExCi0jZW5kaWYg
LyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLwotLyogYCB9ICovCi0KLS8qCi0gKiBIYW5k
bGUgdG8gdHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQgcmVmZXJlbmNlLgotICov
Ci10eXBlZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OwotCi0vKgotICogR05UVEFCT1BfbWFw
X2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJlZj4pIGZvciBhY2Nlc3MK
LSAqIGJ5IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vzc2Z1bCwgPGhhbmRsZT4g
aXMgYSB0cmFja2luZyBudW1iZXIKLSAqIHRoYXQgbXVzdCBiZSBwcmVzZW50ZWQgbGF0ZXIgdG8g
ZGVzdHJveSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxoYW5kbGU+Ci0gKiBpcyBhIG5lZ2F0
aXZlIHN0YXR1cyBjb2RlLgotICogTk9URVM6Ci0gKiAgMS4gSWYgR05UTUFQX2RldmljZV9tYXAg
aXMgc3BlY2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFkZHJlc3MKLSAqICAgICB2
aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRlZCBmcmFtZS4KLSAqICAy
LiBJZiBHTlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBtYXBwaW5nIHdpbGwgYmUg
YWRkZWQgYXQKLSAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgY3Vy
cmVudCBhZGRyZXNzIHNwYWNlLCBvciBhdAotICogICAgIGEgUFRFIGF0IHRoZSBzcGVjaWZpZWQg
bWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bwotICogICAgIHBlcmZvcm0g
aXMgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0ZSBmbGFnLCBhbmQgdGhl
Ci0gKiAgICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRkcj4uCi0gKiAgMy4gTWFw
cGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91bm1hcF9ncmFudF9y
ZWYuIElmIGEKLSAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVkIGJ5IG90aGVyIG1lYW5z
IHRoZW4gaXQgaXMgKk5PVCogZ3VhcmFudGVlZAotICogICAgIHRvIGJlIGFjY291bnRlZCB0byB0
aGUgY29ycmVjdCBncmFudCByZWZlcmVuY2UhCi0gKi8KLXN0cnVjdCBnbnR0YWJfbWFwX2dyYW50
X3JlZiB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8KLSAgICB1aW50NjRfdCBob3N0X2FkZHI7
Ci0gICAgdWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAgICAgLyogR05UTUFQXyogKi8KLSAgICBn
cmFudF9yZWZfdCByZWY7Ci0gICAgZG9taWRfdCAgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJz
LiAqLwotICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRf
c3RhdHVzICovCi0gICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIHVpbnQ2NF90IGRldl9i
dXNfYWRkcjsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiBnbnR0YWJf
bWFwX2dyYW50X3JlZl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX21hcF9ncmFu
dF9yZWZfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWY6IERlc3Ryb3kgb25l
IG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCi0gKiB0cmFja2VkIGJ5IDxoYW5kbGU+
LiBJZiA8aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBpcyB6ZXJvLCB0aGF0Ci0gKiBmaWVs
ZCBpcyBpZ25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0IHJlZmVyIHRvIGEgZGV2aWNlL2hv
c3QgbWFwcGluZwotICogdGhhdCBpcyB0cmFja2VkIGJ5IDxoYW5kbGU+Ci0gKiBOT1RFUzoKLSAq
ICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBt
YXBwaW5nIGlzIG5vdAotICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCi0gKiAgMy4gQWZ0ZXIg
ZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3Rh
bGUKLSAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExC
cy4KLSAqLwotc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgewotICAgIC8qIElOIHBhcmFt
ZXRlcnMuICovCi0gICAgdWludDY0X3QgaG9zdF9hZGRyOwotICAgIHVpbnQ2NF90IGRldl9idXNf
YWRkcjsKLSAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCi0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9z
dGF0dXMgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIGdudHRh
Yl91bm1hcF9ncmFudF9yZWZfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl91bm1h
cF9ncmFudF9yZWZfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF9zZXR1cF90YWJsZTogU2V0IHVwIGEg
Z3JhbnQgdGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QKLSAqIDxucl9mcmFtZXM+
IHBhZ2VzLiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRvIHRoZSA8ZnJhbWVfbGlz
dD4uCi0gKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRlbiwgZXZlbiBpZiB0
aGUgdGFibGUgaXMgbGFyZ2VyLgotICogTk9URVM6Ci0gKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNp
ZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdl
ZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KLSAqICAzLiBYZW4gbWF5
IG5vdCBzdXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJsZSBwYWdlIHBlciBkb21h
aW4uCi0gKi8KLXN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgZG9taWRfdCAgZG9tOwotICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKLSAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAv
KiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PCAweDAwMDQwMzAwCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJhbWVfbGlzdDsKLSNl
bHNlCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGZyYW1lX2xpc3Q7Ci0jZW5kaWYK
LX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgZ250dGFiX3NldHVwX3RhYmxl
X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0dXBfdGFibGVfdCk7Ci0KLS8q
Ci0gKiBHTlRUQUJPUF9kdW1wX3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JhbnQg
dGFibGUgdG8gdGhlCi0gKiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBvbmx5LgotICovCi1z
dHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAg
ZG9taWRfdCBkb207Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgaW50MTZfdCBzdGF0
dXM7ICAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KLX07Ci10eXBlZGVm
IHN0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90OwotREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF90
cmFuc2Zlcl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3JlaWduIGRvbWFpbi4g
VGhlCi0gKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3RlcmVkIGl0cyBpbnRl
cmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCi0gKiA8ZG9taWQsIHJlZj4uCi0gKgotICogTm90ZSB0
aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmllZCBwYWdlIG5vIExP
TkdfUFRSZXIgYmVsb25ncwotICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1bmxlc3MqIHRoZSBl
cnJvciBpcyBHTlRTVF9iYWRfcGFnZS4KLSAqLwotc3RydWN0IGdudHRhYl90cmFuc2ZlciB7Ci0g
ICAgLyogSU4gcGFyYW1ldGVycy4gKi8KLSAgICB4ZW5fcGZuX3QgICAgIG1mbjsKLSAgICBkb21p
ZF90ICAgICAgIGRvbWlkOwotICAgIGdyYW50X3JlZl90ICAgcmVmOwotICAgIC8qIE9VVCBwYXJh
bWV0ZXJzLiAqLwotICAgIGludDE2X3QgICAgICAgc3RhdHVzOwotfTsKLXR5cGVkZWYgc3RydWN0
IGdudHRhYl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFO
RExFKGdudHRhYl90cmFuc2Zlcl90KTsKLQotCi0vKgotICogR05UVEFCT1BfY29weTogSHlwZXJ2
aXNvciBiYXNlZCBjb3B5Ci0gKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBjYW4gYmUgZWl0aGVy
cyBNRk5zIG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAotICogZ3JhbnQgcmVmZXJlbmNlcy4gdGhl
IGZvcmVpZ24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2VzcwotICogaW4gaXRz
IGdyYW50IHRhYmxlLgotICoKLSAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQgdHlwZSBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KLSAqIG9yIGdyYW50IHJlZmVyZW5jZSku
Ci0gKgotICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBjb3B5IGRhdGEgYmV0
d2VlbiB0d28gZG9tYWlucwotICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhlIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQotICogZ3JhbnQgYXBwcm9wcmlhdGUg
YWNjZXNzIHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KLSAqCi0gKiBzb3VyY2Vf
b2Zmc2V0IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFtZSwgZGVzdF9vZmZz
ZXQKLSAqIHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxlbiBzcGVjaWZpZXMg
dGhlIG51bWJlciBvZgotICogYnl0ZXMgdG8gYmUgY29waWVkLgotICovCi0KLSNkZWZpbmUgX0dO
VENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKLSNkZWZpbmUgR05UQ09QWV9zb3VyY2VfZ3JlZiAg
ICAgICAoMTw8X0dOVENPUFlfc291cmNlX2dyZWYpCi0jZGVmaW5lIF9HTlRDT1BZX2Rlc3RfZ3Jl
ZiAgICAgICAgKDEpCi0jZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAgICAgKDE8PF9HTlRD
T1BZX2Rlc3RfZ3JlZikKLQotc3RydWN0IGdudHRhYl9jb3B5IHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIGdyYW50
X3JlZl90IHJlZjsKLSAgICAgICAgICAgIHhlbl9wZm5fdCAgIGdtZm47Ci0gICAgICAgIH0gdTsK
LSAgICAgICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgICAgIHVpbnQxNl90IG9mZnNldDsKLSAgICB9
IHNvdXJjZSwgZGVzdDsKLSAgICB1aW50MTZfdCAgICAgIGxlbjsKLSAgICB1aW50MTZfdCAgICAg
IGZsYWdzOyAgICAgICAgICAvKiBHTlRDT1BZXyogKi8KLSAgICAvKiBPVVQgcGFyYW1ldGVycy4g
Ki8KLSAgICBpbnQxNl90ICAgICAgIHN0YXR1czsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJf
Y29weSAgZ250dGFiX2NvcHlfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9jb3B5
X3QpOwotCi0vKgotICogR05UVEFCT1BfcXVlcnlfc2l6ZTogUXVlcnkgdGhlIGN1cnJlbnQgYW5k
IG1heGltdW0gc2l6ZXMgb2YgdGhlIHNoYXJlZAotICogZ3JhbnQgdGFibGUuCi0gKiBOT1RFUzoK
LSAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCi0gKiAgMi4gT25s
eSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBE
T01JRF9TRUxGLgotICovCi1zdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgewotICAgIC8qIElOIHBh
cmFtZXRlcnMuICovCi0gICAgZG9taWRfdCAgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAq
LwotICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKLSAgICB1aW50MzJfdCBtYXhfbnJfZnJhbWVzOwot
ICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVz
ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgZ250dGFiX3F1ZXJ5X3Np
emVfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9xdWVyeV9zaXplX3QpOwotCi0v
KgotICogR05UVEFCT1BfdW5tYXBfYW5kX3JlcGxhY2U6IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3Jh
bnQtcmVmZXJlbmNlIG1hcHBpbmdzCi0gKiB0cmFja2VkIGJ5IDxoYW5kbGU+IGJ1dCBhdG9taWNh
bGx5IHJlcGxhY2UgdGhlIHBhZ2UgdGFibGUgZW50cnkgd2l0aCBvbmUKLSAqIHBvaW50aW5nIHRv
IHRoZSBtYWNoaW5lIGFkZHJlc3MgdW5kZXIgPG5ld19hZGRyPi4gIDxuZXdfYWRkcj4gd2lsbCBi
ZQotICogcmVkaXJlY3RlZCB0byB0aGUgbnVsbCBlbnRyeS4KLSAqIE5PVEVTOgotICogIDEuIFRo
ZSBjYWxsIG1heSBmYWlsIGluIGFuIHVuZGVmaW5lZCBtYW5uZXIgaWYgZWl0aGVyIG1hcHBpbmcg
aXMgbm90Ci0gKiAgICAgdHJhY2tlZCBieSA8aGFuZGxlPi4KLSAqICAyLiBBZnRlciBleGVjdXRp
bmcgYSBiYXRjaCBvZiB1bm1hcHMsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQotICog
ICAgIG1hcHBpbmdzIHdpbGwgcmVtYWluIGluIHRoZSBkZXZpY2Ugb3IgaG9zdCBUTEJzLgotICov
Ci1zdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLwotICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKLSAgICB1aW50NjRfdCBuZXdfYWRkcjsKLSAg
ICBncmFudF9oYW5kbGVfdCBoYW5kbGU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAg
aW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8K
LX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfYW5kX3JlcGxhY2UgZ250dGFiX3VubWFw
X2FuZF9yZXBsYWNlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdW5tYXBfYW5k
X3JlcGxhY2VfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAy
MGEKLS8qCi0gKiBHTlRUQUJPUF9zZXRfdmVyc2lvbjogUmVxdWVzdCBhIHBhcnRpY3VsYXIgdmVy
c2lvbiBvZiB0aGUgZ3JhbnQKLSAqIHRhYmxlIHNoYXJlZCB0YWJsZSBzdHJ1Y3R1cmUuICBUaGlz
IG9wZXJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQKLSAqIG9uY2UgaW4gYW55IGdpdmVuIGRv
bWFpbi4gIEl0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBhbnkgZ3JhbnRzCi0gKiBhcmUgYWN0
aXZhdGVkOyBvdGhlcndpc2UsIHRoZSBkb21haW4gd2lsbCBiZSBzdHVjayB3aXRoIHZlcnNpb24g
MS4KLSAqIFRoZSBvbmx5IGRlZmluZWQgdmVyc2lvbnMgYXJlIDEgYW5kIDIuCi0gKi8KLXN0cnVj
dCBnbnR0YWJfc2V0X3ZlcnNpb24gewotICAgIC8qIElOL09VVCBwYXJhbWV0ZXJzICovCi0gICAg
dWludDMyX3QgdmVyc2lvbjsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0X3ZlcnNpb24g
Z250dGFiX3NldF92ZXJzaW9uX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0
X3ZlcnNpb25fdCk7Ci0KLQotLyoKLSAqIEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzOiBHZXQg
dGhlIGxpc3Qgb2YgZnJhbWVzIHVzZWQgdG8gc3RvcmUgZ3JhbnQKLSAqIHN0YXR1cyBmb3IgPGRv
bT4uIEluIGdyYW50IGZvcm1hdCB2ZXJzaW9uIDIsIHRoZSBzdGF0dXMgaXMgc2VwYXJhdGVkCi0g
KiBmcm9tIHRoZSBvdGhlciBzaGFyZWQgZ3JhbnQgZmllbGRzIHRvIGFsbG93IG1vcmUgZWZmaWNp
ZW50IHN5bmNocm9uaXphdGlvbgotICogdXNpbmcgYmFycmllcnMgaW5zdGVhZCBvZiBhdG9taWMg
Y21wZXhjaCBvcGVyYXRpb25zLgotICogPG5yX2ZyYW1lcz4gc3BlY2lmeSB0aGUgc2l6ZSBvZiB2
ZWN0b3IgPGZyYW1lX2xpc3Q+LgotICogVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQg
aW4gdGhlIDxmcmFtZV9saXN0Pi4KLSAqIE9ubHkgPG5yX2ZyYW1lcz4gYWRkcmVzc2VzIGFyZSBy
ZXR1cm5lZCwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgotICogTk9URVM6Ci0gKiAgMS4g
PGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBzdWZm
aWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VM
Ri4KLSAqLwotc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyB7Ci0gICAgLyogSU4gcGFy
YW1ldGVycy4gKi8KLSAgICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgZG9taWRfdCAgZG9tOwot
ICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAg
ICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50
NjRfdCkgZnJhbWVfbGlzdDsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19m
cmFtZXMgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF9nZXRfdmVy
c2lvbjogR2V0IHRoZSBncmFudCB0YWJsZSB2ZXJzaW9uIHdoaWNoIGlzIGluCi0gKiBlZmZlY3Qg
Zm9yIGRvbWFpbiA8ZG9tPi4KLSAqLwotc3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiB7Ci0gICAg
LyogSU4gcGFyYW1ldGVycyAqLwotICAgIGRvbWlkX3QgZG9tOwotICAgIHVpbnQxNl90IHBhZDsK
LSAgICAvKiBPVVQgcGFyYW1ldGVycyAqLwotICAgIHVpbnQzMl90IHZlcnNpb247Ci19OwotdHlw
ZWRlZiBzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIGdudHRhYl9nZXRfdmVyc2lvbl90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF92ZXJzaW9uX3QpOwotCi0vKgotICogR05U
VEFCT1Bfc3dhcF9ncmFudF9yZWY6IFN3YXAgdGhlIGNvbnRlbnRzIG9mIHR3byBncmFudCBlbnRy
aWVzLgotICovCi1zdHJ1Y3QgZ250dGFiX3N3YXBfZ3JhbnRfcmVmIHsKLSAgICAvKiBJTiBwYXJh
bWV0ZXJzICovCi0gICAgZ3JhbnRfcmVmX3QgcmVmX2E7Ci0gICAgZ3JhbnRfcmVmX3QgcmVmX2I7
Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICBpbnQxNl90IHN0YXR1czsgICAgICAgICAg
ICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJf
c3dhcF9ncmFudF9yZWYgZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3Q7Ci1ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShnbnR0YWJfc3dhcF9ncmFudF9yZWZfdCk7Ci0KLSNlbmRpZiAvKiBfX1hFTl9JTlRF
UkZBQ0VfVkVSU0lPTl9fICovCi0KLS8qCi0gKiBCaXRmaWVsZCB2YWx1ZXMgZm9yIGdudHRhYl9t
YXBfZ3JhbnRfcmVmLmZsYWdzLgotICovCi0gLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNj
ZXNzIGJ5IEkvTyBkZXZpY2VzLiAqLwotI2RlZmluZSBfR05UTUFQX2RldmljZV9tYXAgICAgICAo
MCkKLSNkZWZpbmUgR05UTUFQX2RldmljZV9tYXAgICAgICAgKDE8PF9HTlRNQVBfZGV2aWNlX21h
cCkKLSAvKiBNYXAgdGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgaG9zdCBDUFVzLiAqLwot
I2RlZmluZSBfR05UTUFQX2hvc3RfbWFwICAgICAgICAoMSkKLSNkZWZpbmUgR05UTUFQX2hvc3Rf
bWFwICAgICAgICAgKDE8PF9HTlRNQVBfaG9zdF9tYXApCi0gLyogQWNjZXNzZXMgdG8gdGhlIGdy
YW50ZWQgZnJhbWUgd2lsbCBiZSByZXN0cmljdGVkIHRvIHJlYWQtb25seSBhY2Nlc3MuICovCi0j
ZGVmaW5lIF9HTlRNQVBfcmVhZG9ubHkgICAgICAgICgyKQotI2RlZmluZSBHTlRNQVBfcmVhZG9u
bHkgICAgICAgICAoMTw8X0dOVE1BUF9yZWFkb25seSkKLSAvKgotICAqIEdOVE1BUF9ob3N0X21h
cCBzdWJmbGFnOgotICAqICAwID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIG9ubHkgYnkg
dGhlIGd1ZXN0IE9TLgotICAqICAxID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIGJ5IGd1
ZXN0IE9TICsgY3VycmVudCBhcHBsaWNhdGlvbi4KLSAgKi8KLSNkZWZpbmUgX0dOVE1BUF9hcHBs
aWNhdGlvbl9tYXAgKDMpCi0jZGVmaW5lIEdOVE1BUF9hcHBsaWNhdGlvbl9tYXAgICgxPDxfR05U
TUFQX2FwcGxpY2F0aW9uX21hcCkKLQotIC8qCi0gICogR05UTUFQX2NvbnRhaW5zX3B0ZSBzdWJm
bGFnOgotICAqICAwID0+IFRoaXMgbWFwIHJlcXVlc3QgY29udGFpbnMgYSBob3N0IHZpcnR1YWwg
YWRkcmVzcy4KLSAgKiAgMSA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIHRoZSBtYWNoaW5l
IGFkZGVzcyBvZiB0aGUgUFRFIHRvIHVwZGF0ZS4KLSAgKi8KLSNkZWZpbmUgX0dOVE1BUF9jb250
YWluc19wdGUgICAgKDQpCi0jZGVmaW5lIEdOVE1BUF9jb250YWluc19wdGUgICAgICgxPDxfR05U
TUFQX2NvbnRhaW5zX3B0ZSkKLQotI2RlZmluZSBfR05UTUFQX2Nhbl9mYWlsICAgICAgICAoNSkK
LSNkZWZpbmUgR05UTUFQX2Nhbl9mYWlsICAgICAgICAgKDE8PF9HTlRNQVBfY2FuX2ZhaWwpCi0K
LS8qCi0gKiBCaXRzIHRvIGJlIHBsYWNlZCBpbiBndWVzdCBrZXJuZWwgYXZhaWxhYmxlIFBURSBi
aXRzIChhcmNoaXRlY3R1cmUKLSAqIGRlcGVuZGVudDsgb25seSBzdXBwb3J0ZWQgd2hlbiBYRU5G
RUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyBpcyBzZXQpLgotICovCi0jZGVmaW5lIF9HTlRNQVBf
Z3Vlc3RfYXZhaWwwICAgICgxNikKLSNkZWZpbmUgR05UTUFQX2d1ZXN0X2F2YWlsX21hc2sgKCh1
aW50MzJfdCl+MCA8PCBfR05UTUFQX2d1ZXN0X2F2YWlsMCkKLQotLyoKLSAqIFZhbHVlcyBmb3Ig
ZXJyb3Igc3RhdHVzIHJldHVybnMuIEFsbCBlcnJvcnMgYXJlIC12ZS4KLSAqLwotLyogYCBlbnVt
IGdyYW50X3N0YXR1cyB7ICovCi0jZGVmaW5lIEdOVFNUX29rYXkgICAgICAgICAgICAgKDApICAv
KiBOb3JtYWwgcmV0dXJuLiAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNU
X2dlbmVyYWxfZXJyb3IgICAgKC0xKSAvKiBHZW5lcmFsIHVuZGVmaW5lZCBlcnJvci4gICAgICAg
ICAgICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9kb21haW4gICAgICAgKC0yKSAvKiBVbnJlY29n
bnNlZCBkb21haW4gaWQuICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9nbnRy
ZWYgICAgICAgKC0zKSAvKiBVbnJlY29nbmlzZWQgb3IgaW5hcHByb3ByaWF0ZSBnbnRyZWYuICov
Ci0jZGVmaW5lIEdOVFNUX2JhZF9oYW5kbGUgICAgICAgKC00KSAvKiBVbnJlY29nbmlzZWQgb3Ig
aW5hcHByb3ByaWF0ZSBoYW5kbGUuICovCi0jZGVmaW5lIEdOVFNUX2JhZF92aXJ0X2FkZHIgICAg
KC01KSAvKiBJbmFwcHJvcHJpYXRlIHZpcnR1YWwgYWRkcmVzcyB0byBtYXAuICovCi0jZGVmaW5l
IEdOVFNUX2JhZF9kZXZfYWRkciAgICAgKC02KSAvKiBJbmFwcHJvcHJpYXRlIGRldmljZSBhZGRy
ZXNzIHRvIHVubWFwLiovCi0jZGVmaW5lIEdOVFNUX25vX2RldmljZV9zcGFjZSAgKC03KSAvKiBP
dXQgb2Ygc3BhY2UgaW4gSS9PIE1NVS4gICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNUX3Bl
cm1pc3Npb25fZGVuaWVkICgtOCkgLyogTm90IGVub3VnaCBwcml2aWxlZ2UgZm9yIG9wZXJhdGlv
bi4gICovCi0jZGVmaW5lIEdOVFNUX2JhZF9wYWdlICAgICAgICAgKC05KSAvKiBTcGVjaWZpZWQg
cGFnZSB3YXMgaW52YWxpZCBmb3Igb3AuICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9jb3B5X2Fy
ZyAgICAoLTEwKSAvKiBjb3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5LiAgICovCi0j
ZGVmaW5lIEdOVFNUX2FkZHJlc3NfdG9vX2JpZyAoLTExKSAvKiB0cmFuc2ZlciBwYWdlIGFkZHJl
c3MgdG9vIGxhcmdlLiAgICAgICovCi0jZGVmaW5lIEdOVFNUX2VhZ2FpbiAgICAgICAgICAoLTEy
KSAvKiBPcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2Fpbi4gICAgICAgICovCi0vKiBgIH0gKi8K
LQotI2RlZmluZSBHTlRUQUJPUF9lcnJvcl9tc2dzIHsgICAgICAgICAgICAgICAgICAgXAotICAg
ICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJ1bmRl
ZmluZWQgZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJ1bnJlY29nbmlz
ZWQgZG9tYWluIGlkIiwgICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIGdyYW50IHJl
ZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIG1hcHBpbmcgaGFuZGxl
IiwgICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIHZpcnR1YWwgYWRkcmVzcyIsICAg
ICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIGRldmljZSBhZGRyZXNzIiwgICAgICAgICAg
ICAgICAgICAgXAotICAgICJubyBzcGFyZSB0cmFuc2xhdGlvbiBzbG90IGluIHRoZSBJL08gTU1V
IiwgXAotICAgICJwZXJtaXNzaW9uIGRlbmllZCIsICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICJiYWQgcGFnZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJj
b3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5IiwgICAgICAgXAotICAgICJwYWdlIGFk
ZHJlc3Mgc2l6ZSB0b28gbGFyZ2UiLCAgICAgICAgICAgICAgXAotICAgICJvcGVyYXRpb24gbm90
IGRvbmU7IHRyeSBhZ2FpbiIgICAgICAgICAgICAgXAotfQotCi0jZW5kaWYgLyogX19YRU5fUFVC
TElDX0dSQU5UX1RBQkxFX0hfXyAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9k
ZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRh
Yi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuL2lvL25ldGlmLmggYi9pbmNsdWRlL3hlbi9pby9uZXRpZi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWEyZGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL2lvL25ldGlmLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotICogbmV0aWYuaAotICogCi0gKiBVbmlmaWVkIG5ldHdvcmstZGV2
aWNlIEkvTyBpbnRlcmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLgotICogCi0gKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICog
Q29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIEtlaXIgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfSU9fTkVUSUZfSF9fCi0jZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19ORVRJRl9IX18K
LQotI2luY2x1ZGUgInJpbmcuaCIKLSNpbmNsdWRlICIuLi9ncmFudF90YWJsZS5oIgotCi0vKgot
ICogT2xkZXIgaW1wbGVtZW50YXRpb24gb2YgWGVuIG5ldHdvcmsgZnJvbnRlbmQgLyBiYWNrZW5k
IGhhcyBhbgotICogaW1wbGljaXQgZGVwZW5kZW5jeSBvbiB0aGUgTUFYX1NLQl9GUkFHUyBhcyB0
aGUgbWF4aW11bSBudW1iZXIgb2YKLSAqIHJpbmcgc2xvdHMgYSBza2IgY2FuIHVzZS4gTmV0ZnJv
bnQgLyBuZXRiYWNrIG1heSBub3Qgd29yayBhcwotICogZXhwZWN0ZWQgd2hlbiBmcm9udGVuZCBh
bmQgYmFja2VuZCBoYXZlIGRpZmZlcmVudCBNQVhfU0tCX0ZSQUdTLgotICoKLSAqIEEgYmV0dGVy
IGFwcHJvYWNoIGlzIHRvIGFkZCBtZWNoYW5pc20gZm9yIG5ldGZyb250IC8gbmV0YmFjayB0bwot
ICogbmVnb3RpYXRlIHRoaXMgdmFsdWUuIEhvd2V2ZXIgd2UgY2Fubm90IGZpeCBhbGwgcG9zc2li
bGUKLSAqIGZyb250ZW5kcywgc28gd2UgbmVlZCB0byBkZWZpbmUgYSB2YWx1ZSB3aGljaCBzdGF0
ZXMgdGhlIG1pbmltdW0KLSAqIHNsb3RzIGJhY2tlbmQgbXVzdCBzdXBwb3J0LgotICoKLSAqIFRo
ZSBtaW5pbXVtIHZhbHVlIGRlcml2ZXMgZnJvbSBvbGRlciBMaW51eCBrZXJuZWwncyBNQVhfU0tC
X0ZSQUdTCi0gKiAoMTgpLCB3aGljaCBpcyBwcm92ZWQgdG8gd29yayB3aXRoIG1vc3QgZnJvbnRl
bmRzLiBBbnkgbmV3IGJhY2tlbmQKLSAqIHdoaWNoIGRvZXNuJ3QgbmVnb3RpYXRlIHdpdGggZnJv
bnRlbmQgc2hvdWxkIGV4cGVjdCBmcm9udGVuZCB0bwotICogc2VuZCBhIHZhbGlkIHBhY2tldCB1
c2luZyBzbG90cyB1cCB0byB0aGlzIHZhbHVlLgotICovCi0jZGVmaW5lIFhFTl9ORVRJRl9OUl9T
TE9UU19NSU4gMTgKLQotLyoKLSAqIE5vdGlmaWNhdGlvbnMgYWZ0ZXIgZW5xdWV1aW5nIGFueSB0
eXBlIG9mIG1lc3NhZ2Ugc2hvdWxkIGJlIGNvbmRpdGlvbmFsIG9uCi0gKiB0aGUgYXBwcm9wcmlh
dGUgcmVxX2V2ZW50IG9yIHJzcF9ldmVudCBmaWVsZCBpbiB0aGUgc2hhcmVkIHJpbmcuCi0gKiBJ
ZiB0aGUgY2xpZW50IHNlbmRzIG5vdGlmaWNhdGlvbiBmb3IgcnggcmVxdWVzdHMgdGhlbiBpdCBz
aG91bGQgc3BlY2lmeQotICogZmVhdHVyZSAnZmVhdHVyZS1yeC1ub3RpZnknIHZpYSB4ZW5idXMu
IE90aGVyd2lzZSB0aGUgYmFja2VuZCB3aWxsIGFzc3VtZQotICogdGhhdCBpdCBjYW5ub3Qgc2Fm
ZWx5IHF1ZXVlIHBhY2tldHMgKGFzIGl0IG1heSBub3QgYmUga2lja2VkIHRvIHNlbmQgdGhlbSku
Ci0gKi8KLQotLyoKLSAqICJmZWF0dXJlLXNwbGl0LWV2ZW50LWNoYW5uZWxzIiBpcyBpbnRyb2R1
Y2VkIHRvIHNlcGFyYXRlIGd1ZXN0IFRYCi0gKiBhbmQgUlggbm90aWZpY2F0aW9uLiBCYWNrZW5k
IGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlIG9yCi0gKiBhZHZlcnRpc2VzIGl0
IHZpYSB4ZW5zdG9yZSBhcyAwIChkaXNhYmxlZCkgb3IgMSAoZW5hYmxlZCkuCi0gKgotICogVG8g
bWFrZSB1c2Ugb2YgdGhpcyBmZWF0dXJlLCBmcm9udGVuZCBzaG91bGQgYWxsb2NhdGUgdHdvIGV2
ZW50Ci0gKiBjaGFubmVscyBmb3IgVFggYW5kIFJYLCBhZHZlcnRpc2UgdGhlbSB0byBiYWNrZW5k
IGFzCi0gKiAiZXZlbnQtY2hhbm5lbC10eCIgYW5kICJldmVudC1jaGFubmVsLXJ4IiByZXNwZWN0
aXZlbHkuIElmIGZyb250ZW5kCi0gKiBkb2Vzbid0IHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZSwg
aXQganVzdCB3cml0ZXMgImV2ZW50LWNoYW5uZWwiCi0gKiBub2RlIGFzIGJlZm9yZS4KLSAqLwot
Ci0vKgotICogVGhpcyBpcyB0aGUgJ3dpcmUnIGZvcm1hdCBmb3IgcGFja2V0czoKLSAqICBSZXF1
ZXN0IDE6IG5ldGlmX3R4X3JlcXVlc3QgLS0gTkVUVFhGXyogKGFueSBmbGFncykKLSAqIFtSZXF1
ZXN0IDI6IG5ldGlmX3R4X2V4dHJhXSAgKG9ubHkgaWYgcmVxdWVzdCAxIGhhcyBORVRUWEZfZXh0
cmFfaW5mbykKLSAqIFtSZXF1ZXN0IDM6IG5ldGlmX3R4X2V4dHJhXSAgKG9ubHkgaWYgcmVxdWVz
dCAyIGhhcyBYRU5fTkVUSUZfRVhUUkFfTU9SRSkKLSAqICBSZXF1ZXN0IDQ6IG5ldGlmX3R4X3Jl
cXVlc3QgLS0gTkVUVFhGX21vcmVfZGF0YQotICogIFJlcXVlc3QgNTogbmV0aWZfdHhfcmVxdWVz
dCAtLSBORVRUWEZfbW9yZV9kYXRhCi0gKiAgLi4uCi0gKiAgUmVxdWVzdCBOOiBuZXRpZl90eF9y
ZXF1ZXN0IC0tIDAKLSAqLwotCi0vKiBQcm90b2NvbCBjaGVja3N1bSBmaWVsZCBpcyBibGFuayBp
biB0aGUgcGFja2V0IChoYXJkd2FyZSBvZmZsb2FkKT8gKi8KLSNkZWZpbmUgX05FVFRYRl9jc3Vt
X2JsYW5rICAgICAoMCkKLSNkZWZpbmUgIE5FVFRYRl9jc3VtX2JsYW5rICAgICAoMVU8PF9ORVRU
WEZfY3N1bV9ibGFuaykKLQotLyogUGFja2V0IGRhdGEgaGFzIGJlZW4gdmFsaWRhdGVkIGFnYWlu
c3QgcHJvdG9jb2wgY2hlY2tzdW0uICovCi0jZGVmaW5lIF9ORVRUWEZfZGF0YV92YWxpZGF0ZWQg
KDEpCi0jZGVmaW5lICBORVRUWEZfZGF0YV92YWxpZGF0ZWQgKDFVPDxfTkVUVFhGX2RhdGFfdmFs
aWRhdGVkKQotCi0vKiBQYWNrZXQgY29udGludWVzIGluIHRoZSBuZXh0IHJlcXVlc3QgZGVzY3Jp
cHRvci4gKi8KLSNkZWZpbmUgX05FVFRYRl9tb3JlX2RhdGEgICAgICAoMikKLSNkZWZpbmUgIE5F
VFRYRl9tb3JlX2RhdGEgICAgICAoMVU8PF9ORVRUWEZfbW9yZV9kYXRhKQotCi0vKiBQYWNrZXQg
dG8gYmUgZm9sbG93ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4gKi8KLSNkZWZpbmUgX05FVFRY
Rl9leHRyYV9pbmZvICAgICAoMykKLSNkZWZpbmUgIE5FVFRYRl9leHRyYV9pbmZvICAgICAoMVU8
PF9ORVRUWEZfZXh0cmFfaW5mbykKLQotI2RlZmluZSBYRU5fTkVUSUZfTUFYX1RYX1NJWkUgMHhG
RkZGCi1zdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdCB7Ci0gICAgZ3JhbnRfcmVmX3QgZ3JlZjsgICAg
ICAvKiBSZWZlcmVuY2UgdG8gYnVmZmVyIHBhZ2UgKi8KLSAgICB1aW50MTZfdCBvZmZzZXQ7ICAg
ICAgIC8qIE9mZnNldCB3aXRoaW4gYnVmZmVyIHBhZ2UgKi8KLSAgICB1aW50MTZfdCBmbGFnczsg
ICAgICAgIC8qIE5FVFRYRl8qICovCi0gICAgdWludDE2X3QgaWQ7ICAgICAgICAgICAvKiBFY2hv
ZWQgaW4gcmVzcG9uc2UgbWVzc2FnZS4gKi8KLSAgICB1aW50MTZfdCBzaXplOyAgICAgICAgIC8q
IFBhY2tldCBzaXplIGluIGJ5dGVzLiAgICAgICAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlm
X3R4X3JlcXVlc3QgbmV0aWZfdHhfcmVxdWVzdF90OwotCi0vKiBUeXBlcyBvZiBuZXRpZl9leHRy
YV9pbmZvIGRlc2NyaXB0b3JzLiAqLwotI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9OT05F
ICAgICAgKDApICAvKiBOZXZlciB1c2VkIC0gaW52YWxpZCAqLwotI2RlZmluZSBYRU5fTkVUSUZf
RVhUUkFfVFlQRV9HU08gICAgICAgKDEpICAvKiB1LmdzbyAqLwotI2RlZmluZSBYRU5fTkVUSUZf
RVhUUkFfVFlQRV9NQ0FTVF9BREQgKDIpICAvKiB1Lm1jYXN0ICovCi0jZGVmaW5lIFhFTl9ORVRJ
Rl9FWFRSQV9UWVBFX01DQVNUX0RFTCAoMykgIC8qIHUubWNhc3QgKi8KLSNkZWZpbmUgWEVOX05F
VElGX0VYVFJBX1RZUEVfTUFYICAgICAgICg0KQotCi0vKiBuZXRpZl9leHRyYV9pbmZvIGZsYWdz
LiAqLwotI2RlZmluZSBfWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAoMCkKLSNkZWZpbmUgWEVO
X05FVElGX0VYVFJBX0ZMQUdfTU9SRSAgKDFVPDxfWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSkK
LQotLyogR1NPIHR5cGVzIC0gb25seSBUQ1B2NCBjdXJyZW50bHkgc3VwcG9ydGVkLiAqLwotI2Rl
ZmluZSBYRU5fTkVUSUZfR1NPX1RZUEVfVENQVjQgICAgICAgICgxKQotCi0vKgotICogVGhpcyBz
dHJ1Y3R1cmUgbmVlZHMgdG8gZml0IHdpdGhpbiBib3RoIG5ldGlmX3R4X3JlcXVlc3QgYW5kCi0g
KiBuZXRpZl9yeF9yZXNwb25zZSBmb3IgY29tcGF0aWJpbGl0eS4KLSAqLwotc3RydWN0IG5ldGlm
X2V4dHJhX2luZm8gewotICAgIHVpbnQ4X3QgdHlwZTsgIC8qIFhFTl9ORVRJRl9FWFRSQV9UWVBF
XyogKi8KLSAgICB1aW50OF90IGZsYWdzOyAvKiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qICovCi0K
LSAgICB1bmlvbiB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIFhFTl9ORVRJRl9FWFRSQV9UWVBF
X0dTTzoKLSAgICAgICAgICovCi0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvKgotICAg
ICAgICAgICAgICogTWF4aW11bSBwYXlsb2FkIHNpemUgb2YgZWFjaCBzZWdtZW50LiBGb3IgZXhh
bXBsZSwgZm9yIFRDUCB0aGlzCi0gICAgICAgICAgICAgKiBpcyBqdXN0IHRoZSBwYXRoIE1TUy4K
LSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdWludDE2X3Qgc2l6ZTsKLQotICAgICAgICAg
ICAgLyoKLSAgICAgICAgICAgICAqIEdTTyB0eXBlLiBUaGlzIGRldGVybWluZXMgdGhlIHByb3Rv
Y29sIG9mIHRoZSBwYWNrZXQgYW5kIGFueQotICAgICAgICAgICAgICogZXh0cmEgZmVhdHVyZXMg
cmVxdWlyZWQgdG8gc2VnbWVudCB0aGUgcGFja2V0IHByb3Blcmx5LgotICAgICAgICAgICAgICov
Ci0gICAgICAgICAgICB1aW50OF90IHR5cGU7IC8qIFhFTl9ORVRJRl9HU09fVFlQRV8qICovCi0K
LSAgICAgICAgICAgIC8qIEZ1dHVyZSBleHBhbnNpb24uICovCi0gICAgICAgICAgICB1aW50OF90
IHBhZDsKLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEdTTyBmZWF0dXJlcy4gVGhp
cyBzcGVjaWZpZXMgYW55IGV4dHJhIEdTTyBmZWF0dXJlcyByZXF1aXJlZAotICAgICAgICAgICAg
ICogdG8gcHJvY2VzcyB0aGlzIHBhY2tldCwgc3VjaCBhcyBFQ04gc3VwcG9ydCBmb3IgVENQdjQu
Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHVpbnQxNl90IGZlYXR1cmVzOyAvKiBYRU5f
TkVUSUZfR1NPX0ZFQVRfKiAqLwotICAgICAgICB9IGdzbzsKLQotICAgICAgICAvKgotICAgICAg
ICAgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF97QURELERFTH06Ci0gICAgICAgICAqIEJh
Y2tlbmQgYWR2ZXJ0aXNlcyBhdmFpbGFiaWxpdHkgdmlhICdmZWF0dXJlLW11bHRpY2FzdC1jb250
cm9sJwotICAgICAgICAgKiB4ZW5idXMgbm9kZSBjb250YWluaW5nIHZhbHVlICcxJy4KLSAgICAg
ICAgICogRnJvbnRlbmQgcmVxdWVzdHMgdGhpcyBmZWF0dXJlIGJ5IGFkdmVydGlzaW5nCi0gICAg
ICAgICAqICdyZXF1ZXN0LW11bHRpY2FzdC1jb250cm9sJyB4ZW5idXMgbm9kZSBjb250YWluaW5n
IHZhbHVlICcxJy4KLSAgICAgICAgICogSWYgbXVsdGljYXN0IGNvbnRyb2wgaXMgcmVxdWVzdGVk
IHRoZW4gbXVsdGljYXN0IGZsb29kaW5nIGlzCi0gICAgICAgICAqIGRpc2FibGVkIGFuZCB0aGUg
ZnJvbnRlbmQgbXVzdCBleHBsaWNpdGx5IHJlZ2lzdGVyIGl0cyBpbnRlcmVzdAotICAgICAgICAg
KiBpbiBtdWx0aWNhc3QgZ3JvdXBzIHVzaW5nIGR1bW15IHRyYW5zbWl0IHJlcXVlc3RzIGNvbnRh
aW5pbmcKLSAgICAgICAgICogTUNBU1Rfe0FERCxERUx9IGV4dHJhLWluZm8gZnJhZ21lbnRzLgot
ICAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWRkcls2
XTsgLyogQWRkcmVzcyB0byBhZGQvcmVtb3ZlLiAqLwotICAgICAgICB9IG1jYXN0OwotCi0gICAg
ICAgIHVpbnQxNl90IHBhZFszXTsKLSAgICB9IHU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbmV0aWZf
ZXh0cmFfaW5mbyBuZXRpZl9leHRyYV9pbmZvX3Q7Ci0KLXN0cnVjdCBuZXRpZl90eF9yZXNwb25z
ZSB7Ci0gICAgdWludDE2X3QgaWQ7Ci0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiBORVRJ
Rl9SU1BfKiAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlmX3R4X3Jlc3BvbnNlIG5ldGlmX3R4
X3Jlc3BvbnNlX3Q7Ci0KLXN0cnVjdCBuZXRpZl9yeF9yZXF1ZXN0IHsKLSAgICB1aW50MTZfdCAg
ICBpZDsgICAgICAgIC8qIEVjaG9lZCBpbiByZXNwb25zZSBtZXNzYWdlLiAgICAgICAgKi8KLSAg
ICBncmFudF9yZWZfdCBncmVmOyAgICAgIC8qIFJlZmVyZW5jZSB0byBpbmNvbWluZyBncmFudGVk
IGZyYW1lICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfcnhfcmVxdWVzdCBuZXRpZl9yeF9y
ZXF1ZXN0X3Q7Ci0KLS8qIFBhY2tldCBkYXRhIGhhcyBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHBy
b3RvY29sIGNoZWNrc3VtLiAqLwotI2RlZmluZSBfTkVUUlhGX2RhdGFfdmFsaWRhdGVkICgwKQot
I2RlZmluZSAgTkVUUlhGX2RhdGFfdmFsaWRhdGVkICgxVTw8X05FVFJYRl9kYXRhX3ZhbGlkYXRl
ZCkKLQotLyogUHJvdG9jb2wgY2hlY2tzdW0gZmllbGQgaXMgYmxhbmsgaW4gdGhlIHBhY2tldCAo
aGFyZHdhcmUgb2ZmbG9hZCk/ICovCi0jZGVmaW5lIF9ORVRSWEZfY3N1bV9ibGFuayAgICAgKDEp
Ci0jZGVmaW5lICBORVRSWEZfY3N1bV9ibGFuayAgICAgKDFVPDxfTkVUUlhGX2NzdW1fYmxhbmsp
Ci0KLS8qIFBhY2tldCBjb250aW51ZXMgaW4gdGhlIG5leHQgcmVxdWVzdCBkZXNjcmlwdG9yLiAq
LwotI2RlZmluZSBfTkVUUlhGX21vcmVfZGF0YSAgICAgICgyKQotI2RlZmluZSAgTkVUUlhGX21v
cmVfZGF0YSAgICAgICgxVTw8X05FVFJYRl9tb3JlX2RhdGEpCi0KLS8qIFBhY2tldCB0byBiZSBm
b2xsb3dlZCBieSBleHRyYSBkZXNjcmlwdG9yKHMpLiAqLwotI2RlZmluZSBfTkVUUlhGX2V4dHJh
X2luZm8gICAgICgzKQotI2RlZmluZSAgTkVUUlhGX2V4dHJhX2luZm8gICAgICgxVTw8X05FVFJY
Rl9leHRyYV9pbmZvKQotCi1zdHJ1Y3QgbmV0aWZfcnhfcmVzcG9uc2UgewotICAgIHVpbnQxNl90
IGlkOwotICAgIHVpbnQxNl90IG9mZnNldDsgICAgICAgLyogT2Zmc2V0IGluIHBhZ2Ugb2Ygc3Rh
cnQgb2YgcmVjZWl2ZWQgcGFja2V0ICAqLwotICAgIHVpbnQxNl90IGZsYWdzOyAgICAgICAgLyog
TkVUUlhGXyogKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgIC8qIC12ZTogTkVUSUZfUlNQ
XyogOyArdmU6IFJ4J2VkIHBrdCBzaXplLiAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlmX3J4
X3Jlc3BvbnNlIG5ldGlmX3J4X3Jlc3BvbnNlX3Q7Ci0KLS8qCi0gKiBHZW5lcmF0ZSBuZXRpZiBy
aW5nIHN0cnVjdHVyZXMgYW5kIHR5cGVzLgotICovCi0KLURFRklORV9SSU5HX1RZUEVTKG5ldGlm
X3R4LCBzdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdCwgc3RydWN0IG5ldGlmX3R4X3Jlc3BvbnNlKTsK
LURFRklORV9SSU5HX1RZUEVTKG5ldGlmX3J4LCBzdHJ1Y3QgbmV0aWZfcnhfcmVxdWVzdCwgc3Ry
dWN0IG5ldGlmX3J4X3Jlc3BvbnNlKTsKLQotI2RlZmluZSBORVRJRl9SU1BfRFJPUFBFRCAgICAg
ICAgIC0yCi0jZGVmaW5lIE5FVElGX1JTUF9FUlJPUiAgICAgICAgICAgLTEKLSNkZWZpbmUgTkVU
SUZfUlNQX09LQVkgICAgICAgICAgICAgMAotLyogTm8gcmVzcG9uc2U6IHVzZWQgZm9yIGF1eGls
aWFyeSByZXF1ZXN0cyAoZS5nLiwgbmV0aWZfdHhfZXh0cmEpLiAqLwotI2RlZmluZSBORVRJRl9S
U1BfTlVMTCAgICAgICAgICAgICAxCi0KLSNlbmRpZgotCi0vKgotICogTG9jYWwgdmFyaWFibGVz
OgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6
IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0g
Ki8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2lvL3JpbmcuaCBiL2luY2x1ZGUveGVuL2lvL3Jp
bmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4NjkzZi4uMDAwMDAwMAotLS0g
YS9pbmNsdWRlL3hlbi9pby9yaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAot
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotICogcmluZy5oCi0gKiAKLSAqIFNoYXJlZCBwcm9kdWNl
ci1jb25zdW1lciByaW5nIG1hY3Jvcy4KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0g
KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAq
Ci0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogVGltIERlZWdhbiBhbmQg
QW5kcmV3IFdhcmZpZWxkIE5vdmVtYmVyIDIwMDQuCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSU9fUklOR19IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCi0KLSNpbmNs
dWRlICIuLi94ZW4tY29tcGF0LmgiCi0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDAzMDIwOAotI2RlZmluZSB4ZW5fbWIoKSAgbWIoKQotI2RlZmluZSB4ZW5fcm1iKCkgcm1i
KCkKLSNkZWZpbmUgeGVuX3dtYigpIHdtYigpCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBp
bnQgUklOR19JRFg7Ci0KLS8qIFJvdW5kIGEgMzItYml0IHVuc2lnbmVkIGNvbnN0YW50IGRvd24g
dG8gdGhlIG5lYXJlc3QgcG93ZXIgb2YgdHdvLiAqLwotI2RlZmluZSBfX1JEMihfeCkgICgoKF94
KSAmIDB4MDAwMDAwMDIpID8gMHgyICAgICAgICAgICAgICAgICAgOiAoKF94KSAmIDB4MSkpCi0j
ZGVmaW5lIF9fUkQ0KF94KSAgKCgoX3gpICYgMHgwMDAwMDAwYykgPyBfX1JEMigoX3gpPj4yKTw8
MiAgICA6IF9fUkQyKF94KSkKLSNkZWZpbmUgX19SRDgoX3gpICAoKChfeCkgJiAweDAwMDAwMGYw
KSA/IF9fUkQ0KChfeCk+PjQpPDw0ICAgIDogX19SRDQoX3gpKQotI2RlZmluZSBfX1JEMTYoX3gp
ICgoKF94KSAmIDB4MDAwMGZmMDApID8gX19SRDgoKF94KT4+OCk8PDggICAgOiBfX1JEOChfeCkp
Ci0jZGVmaW5lIF9fUkQzMihfeCkgKCgoX3gpICYgMHhmZmZmMDAwMCkgPyBfX1JEMTYoKF94KT4+
MTYpPDwxNiA6IF9fUkQxNihfeCkpCi0KLS8qCi0gKiBDYWxjdWxhdGUgc2l6ZSBvZiBhIHNoYXJl
ZCByaW5nLCBnaXZlbiB0aGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUKLSAqIHJpbmcg
YW5kIGluZGV4ZXMgKF9zeiksIGFuZCB0aGUgbmFtZSB0YWcgb2YgdGhlIHJlcXVlc3QvcmVzcG9u
c2Ugc3RydWN0dXJlLgotICogQSByaW5nIGNvbnRhaW5zIGFzIG1hbnkgZW50cmllcyBhcyB3aWxs
IGZpdCwgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IAotICogcG93ZXIgb2YgdHdvIChzbyB3
ZSBjYW4gbWFzayB3aXRoIChzaXplLTEpIHRvIGxvb3AgYXJvdW5kKS4KLSAqLwotI2RlZmluZSBf
X0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCi0gICAgKF9fUkQzMigoKF9zeikgLSBvZmZzZXRv
ZihzdHJ1Y3QgX3MjI19zcmluZywgcmluZykpIC8gXAotCSAgICBzaXplb2YoKChzdHJ1Y3QgX3Mj
I19zcmluZyAqKTApLT5yaW5nWzBdKSkpCi0vKgotICogVGhlIHNhbWUgZm9yIHBhc3NpbmcgaW4g
YW4gYWN0dWFsIHBvaW50ZXIgaW5zdGVhZCBvZiBhIG5hbWUgdGFnLgotICovCi0jZGVmaW5lIF9f
UklOR19TSVpFKF9zLCBfc3opIFwKLSAgICAoX19SRDMyKCgoX3N6KSAtIChMT05HX1BUUikoX3Mp
LT5yaW5nICsgKExPTkdfUFRSKShfcykpIC8gc2l6ZW9mKChfcyktPnJpbmdbMF0pKSkKLQotLyoK
LSAqIE1hY3JvcyB0byBtYWtlIHRoZSBjb3JyZWN0IEMgZGF0YXR5cGVzIGZvciBhIG5ldyBraW5k
IG9mIHJpbmcuCi0gKiAKLSAqIFRvIG1ha2UgYSBuZXcgcmluZyBkYXRhdHlwZSwgeW91IG5lZWQg
dG8gaGF2ZSB0d28gbWVzc2FnZSBzdHJ1Y3R1cmVzLAotICogbGV0J3Mgc2F5IHJlcXVlc3RfdCwg
YW5kIHJlc3BvbnNlX3QgYWxyZWFkeSBkZWZpbmVkLgotICoKLSAqIEluIGEgaGVhZGVyIHdoZXJl
IHlvdSB3YW50IHRoZSByaW5nIGRhdGF0eXBlIGRlY2xhcmVkLCB5b3UgdGhlbiBkbzoKLSAqCi0g
KiAgICAgREVGSU5FX1JJTkdfVFlQRVMobXl0YWcsIHJlcXVlc3RfdCwgcmVzcG9uc2VfdCk7Ci0g
KgotICogVGhlc2UgZXhwYW5kIG91dCB0byBnaXZlIHlvdSBhIHNldCBvZiB0eXBlcywgYXMgeW91
IGNhbiBzZWUgYmVsb3cuCi0gKiBUaGUgbW9zdCBpbXBvcnRhbnQgb2YgdGhlc2UgYXJlOgotICog
Ci0gKiAgICAgbXl0YWdfc3JpbmdfdCAgICAgIC0gVGhlIHNoYXJlZCByaW5nLgotICogICAgIG15
dGFnX2Zyb250X3JpbmdfdCAtIFRoZSAnZnJvbnQnIGhhbGYgb2YgdGhlIHJpbmcuCi0gKiAgICAg
bXl0YWdfYmFja19yaW5nX3QgIC0gVGhlICdiYWNrJyBoYWxmIG9mIHRoZSByaW5nLgotICoKLSAq
IFRvIGluaXRpYWxpemUgYSByaW5nIGluIHlvdXIgY29kZSB5b3UgbmVlZCB0byBrbm93IHRoZSBs
b2NhdGlvbiBhbmQgc2l6ZQotICogb2YgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSAoUEFHRV9TSVpF
LCBmb3IgaW5zdGFuY2UpLiBUbyBpbml0aWFsaXNlCi0gKiB0aGUgZnJvbnQgaGFsZjoKLSAqCi0g
KiAgICAgbXl0YWdfZnJvbnRfcmluZ190IGZyb250X3Jpbmc7Ci0gKiAgICAgU0hBUkVEX1JJTkdf
SU5JVCgobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlKTsKLSAqICAgICBGUk9OVF9SSU5HX0lO
SVQoJmZyb250X3JpbmcsIChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2UsIFBBR0VfU0laRSk7
Ci0gKgotICogSW5pdGlhbGl6aW5nIHRoZSBiYWNrIGZvbGxvd3Mgc2ltaWxhcmx5IChub3RlIHRo
YXQgb25seSB0aGUgZnJvbnQKLSAqIGluaXRpYWxpemVzIHRoZSBzaGFyZWQgcmluZyk6Ci0gKgot
ICogICAgIG15dGFnX2JhY2tfcmluZ190IGJhY2tfcmluZzsKLSAqICAgICBCQUNLX1JJTkdfSU5J
VCgmYmFja19yaW5nLCAobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlLCBQQUdFX1NJWkUpOwot
ICovCi0KLSNkZWZpbmUgREVGSU5FX1JJTkdfVFlQRVMoX19uYW1lLCBfX3JlcV90LCBfX3JzcF90
KSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qIFNoYXJlZCByaW5n
IGVudHJ5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLXVuaW9uIF9fbmFtZSMjX3NyaW5nX2VudHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX3JlcV90IHJlcTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX3JzcF90IHJzcDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qIFNoYXJlZCByaW5nIHBhZ2Ug
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0
cnVjdCBfX25hbWUjI19zcmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfcHJvZCwgcmVxX2V2ZW50OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByc3BfcHJvZCwg
cnNwX2V2ZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1
bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ4X3Qgc21hcnRw
b2xsX2FjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
fSBuZXRpZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ4X3QgbXNnOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSB0
YXBpZl91c2VyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgdWludDhfdCBwdnRfcGFkWzRdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHByaXZhdGU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1aW50OF90IF9f
cGFkWzQ0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSByaW5nWzFdOyAvKiB2YXJpYWJsZS1s
ZW5ndGggKi8gICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LS8qICJGcm9udCIgZW5kJ3MgcHJpdmF0ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfcHJv
ZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBSSU5HX0lEWCByc3BfY29uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgX19uYW1lIyNfc3Jp
bmcgKnNyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qICJCYWNrIiBlbmQncyBwcml2YXRlIHZh
cmlhYmxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBf
X25hbWUjI19iYWNrX3JpbmcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBSSU5HX0lEWCByc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfY29uczsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1bnNpZ25l
ZCBpbnQgbnJfZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgKnNyaW5nOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLS8qIFN5bnRhY3RpYyBzdWdhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgc3RydWN0IF9fbmFtZSMjX3NyaW5nIF9fbmFt
ZSMjX3NyaW5nX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgc3RydWN0IF9f
bmFtZSMjX2Zyb250X3JpbmcgX19uYW1lIyNfZnJvbnRfcmluZ190OyAgICAgICAgICAgICAgIFwK
LXR5cGVkZWYgc3RydWN0IF9fbmFtZSMjX2JhY2tfcmluZyBfX25hbWUjI19iYWNrX3JpbmdfdAot
Ci0vKgotICogTWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgcmluZ3MuCi0gKiAKLSAqIEZST05UX1JJ
Tkdfd2hhdGV2ZXIgd29ya3Mgb24gdGhlICJmcm9udCBlbmQiIG9mIGEgcmluZzogaGVyZSAKLSAq
IHJlcXVlc3RzIGFyZSBwdXNoZWQgb24gdG8gdGhlIHJpbmcgYW5kIHJlc3BvbnNlcyB0YWtlbiBv
ZmYgaXQuCi0gKiAKLSAqIEJBQ0tfUklOR193aGF0ZXZlciB3b3JrcyBvbiB0aGUgImJhY2sgZW5k
IiBvZiBhIHJpbmc6IGhlcmUgCi0gKiByZXF1ZXN0cyBhcmUgdGFrZW4gb2ZmIHRoZSByaW5nIGFu
ZCByZXNwb25zZXMgcHV0IG9uLgotICogCi0gKiBOLkIuIHRoZXNlIG1hY3JvcyBkbyBOTyBJTlRF
UkxPQ0tTIE9SIEZMT1cgQ09OVFJPTC4gCi0gKiBUaGlzIGlzIE9LIGluIDEtZm9yLTEgcmVxdWVz
dC1yZXNwb25zZSBzaXR1YXRpb25zIHdoZXJlIHRoZSAKLSAqIHJlcXVlc3RvciAoZnJvbnQgZW5k
KSBuZXZlciBoYXMgbW9yZSB0aGFuIFJJTkdfU0laRSgpLTEKLSAqIG91dHN0YW5kaW5nIHJlcXVl
c3RzLgotICovCi0KLS8qIEluaXRpYWxpc2luZyBlbXB0eSByaW5ncyAqLwotI2RlZmluZSBTSEFS
RURfUklOR19JTklUKF9zKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIChfcyktPnJlcV9wcm9kICA9IChfcyktPnJzcF9wcm9kICA9IDA7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfcyktPnJlcV9ldmVudCA9IChfcyktPnJzcF9l
dmVudCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICh2b2lkKW1lbXNl
dCgoX3MpLT5wcml2YXRlLnB2dF9wYWQsIDAsIHNpemVvZigoX3MpLT5wcml2YXRlLnB2dF9wYWQp
KTsgXAotICAgICh2b2lkKW1lbXNldCgoX3MpLT5fX3BhZCwgMCwgc2l6ZW9mKChfcyktPl9fcGFk
KSk7ICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSgwKQotCi0jZGVmaW5lIEZST05UX1JJTkdf
SU5JVChfciwgX3MsIF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKF9yKS0+cmVxX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+cnNwX2NvbnMgPSAwOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+bnJfZW50cyA9IF9f
UklOR19TSVpFKF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
KF9yKS0+c3JpbmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lIEJBQ0tfUklOR19JTklUKF9yLCBf
cywgX19zaXplKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+
cnNwX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgKF9yKS0+cmVxX2NvbnMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+bnJfZW50cyA9IF9fUklOR19TSVpF
KF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+c3Jp
bmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi19IHdoaWxlICgwKQotCi0vKiBJbml0aWFsaXplIHRvIGV4aXN0aW5nIHNoYXJlZCBpbmRl
eGVzIC0tIGZvciByZWNvdmVyeSAqLwotI2RlZmluZSBGUk9OVF9SSU5HX0FUVEFDSChfciwgX3Ms
IF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnNyaW5n
ID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIChfciktPnJlcV9wcm9kX3B2dCA9IChfcyktPnJlcV9wcm9kOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnJzcF9jb25zID0gKF9zKS0+cnNwX3Byb2Q7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPm5yX2VudHMg
PSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
fSB3aGlsZSAoMCkKLQotI2RlZmluZSBCQUNLX1JJTkdfQVRUQUNIKF9yLCBfcywgX19zaXplKSBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnNyaW5nID0gKF9zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChf
ciktPnJzcF9wcm9kX3B2dCA9IChfcyktPnJzcF9wcm9kOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIChfciktPnJlcV9jb25zID0gKF9zKS0+cmVxX3Byb2Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPm5yX2VudHMgPSBfX1JJTkdf
U0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSAo
MCkKLQotLyogSG93IGJpZyBpcyB0aGlzIHJpbmc/ICovCi0jZGVmaW5lIFJJTkdfU0laRShfcikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
KChfciktPm5yX2VudHMpCi0KLS8qIE51bWJlciBvZiBmcmVlIHJlcXVlc3RzIChmb3IgdXNlIG9u
IGZyb250IHNpZGUgb25seSkuICovCi0jZGVmaW5lIFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKFJJTkdfU0laRShf
cikgLSAoKF9yKS0+cmVxX3Byb2RfcHZ0IC0gKF9yKS0+cnNwX2NvbnMpKQotCi0vKiBUZXN0IGlm
IHRoZXJlIGlzIGFuIGVtcHR5IHNsb3QgYXZhaWxhYmxlIG9uIHRoZSBmcm9udCByaW5nLgotICog
KFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZyb20gdGhlIGZyb250LiApCi0gKi8KLSNkZWZpbmUg
UklOR19GVUxMKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAoUklOR19GUkVFX1JFUVVFU1RTKF9yKSA9PSAwKQotCi0vKiBUZXN0IGlm
IHRoZXJlIGFyZSBvdXRzdGFuZGluZyBtZXNzYWdlcyB0byBiZSBwcm9jZXNzZWQgb24gYSByaW5n
LiAqLwotI2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFU1BPTlNFUyhfcikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoX3IpLT5zcmluZy0+cnNwX3Byb2QgLSAoX3Ip
LT5yc3BfY29ucykKLQotI2lmZGVmIF9fR05VQ19fCi0jZGVmaW5lIFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5z
aWduZWQgaW50IHJlcSA9IChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zOyAg
ICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IHJzcCA9IFJJTkdfU0laRShfcikgLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICgoX3IpLT5yZXFfY29ucyAtIChf
ciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVxIDwg
cnNwID8gcmVxIDogcnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi19KQotI2Vsc2UKLS8qIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRob3V0IHRoZSBuaWNl
IEdDQyAoeyAuLi4gfSkgc3ludGF4LiAqLwotI2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JF
UVVFU1RTKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoKChfcikt
PnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zKSA8ICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgKFJJTkdfU0laRShfcikgLSAoKF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3Bf
cHJvZF9wdnQpKSkgPyAgICAgICAgXAotICAgICAoKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9y
KS0+cmVxX2NvbnMpIDogICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoUklOR19TSVpF
KF9yKSAtICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCkpKQotI2VuZGlmCi0K
LS8qIERpcmVjdCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCByaW5nIGVsZW1lbnRzLCBieSBpbmRleC4g
Ki8KLSNkZWZpbmUgUklOR19HRVRfUkVRVUVTVChfciwgX2lkeCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAoJigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYg
KFJJTkdfU0laRShfcikgLSAxKSldLnJlcSkpCi0KLSNkZWZpbmUgUklOR19HRVRfUkVTUE9OU0Uo
X3IsIF9pZHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoJigo
X3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJzcCkpCi0K
LS8qIExvb3AgdGVybWluYXRpb24gY29uZGl0aW9uOiBXb3VsZCB0aGUgc3BlY2lmaWVkIGluZGV4
IG92ZXJmbG93IHRoZSByaW5nPyAqLwotI2RlZmluZSBSSU5HX1JFUVVFU1RfQ09OU19PVkVSRkxP
VyhfciwgX2NvbnMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoKF9jb25zKSAt
IChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklOR19TSVpFKF9yKSkKLQotI2RlZmluZSBSSU5HX1BV
U0hfUkVRVUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHhlbl93bWIoKTsgLyogYmFjayBzZWVzIHJlcXVlc3RzIC9iZWZvcmUvIHVwZGF0ZWQg
cHJvZHVjZXIgaW5kZXggKi8gXAotICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9IChfciktPnJl
cV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSAoMCkKLQotI2Rl
ZmluZSBSSU5HX1BVU0hfUkVTUE9OU0VTKF9yKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNwcyAvYmVmb3Jl
LyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAotICAgIChfciktPnNyaW5nLT5yc3BfcHJv
ZCA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGls
ZSAoMCkKLQotLyoKLSAqIE5vdGlmaWNhdGlvbiBob2xkLW9mZiAocmVxX2V2ZW50IGFuZCByc3Bf
ZXZlbnQpOgotICogCi0gKiBXaGVuIHF1ZXVlaW5nIHJlcXVlc3RzIG9yIHJlc3BvbnNlcyBvbiBh
IHNoYXJlZCByaW5nLCBpdCBtYXkgbm90IGFsd2F5cyBiZQotICogbmVjZXNzYXJ5IHRvIG5vdGlm
eSB0aGUgcmVtb3RlIGVuZC4gRm9yIGV4YW1wbGUsIGlmIHJlcXVlc3RzIGFyZSBpbiBmbGlnaHQK
LSAqIGluIGEgYmFja2VuZCwgdGhlIGZyb250IG1heSBiZSBhYmxlIHRvIHF1ZXVlIGZ1cnRoZXIg
cmVxdWVzdHMgd2l0aG91dAotICogbm90aWZ5aW5nIHRoZSBiYWNrIChpZiB0aGUgYmFjayBjaGVj
a3MgZm9yIG5ldyByZXF1ZXN0cyB3aGVuIGl0IHF1ZXVlcwotICogcmVzcG9uc2VzKS4KLSAqIAot
ICogV2hlbiBlbnF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzOgotICogCi0gKiAgVXNlIFJJ
TkdfUFVTSF97UkVRVUVTVFMsUkVTUE9OU0VTfV9BTkRfQ0hFQ0tfTk9USUZZKCkuIFRoZSBzZWNv
bmQgYXJndW1lbnQKLSAqICBpcyBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVlIGluZGljYXRl
cyB0aGF0IHRoZSByZWNlaXZlciByZXF1aXJlcyBhbgotICogIGFzeW5jaHJvbm91cyBub3RpZmlj
YXRpb24uCi0gKiAKLSAqIEFmdGVyIGRlcXVldWluZyByZXF1ZXN0cyBvciByZXNwb25zZXMgKGJl
Zm9yZSBzbGVlcGluZyB0aGUgY29ubmVjdGlvbik6Ci0gKiAKLSAqICBVc2UgUklOR19GSU5BTF9D
SEVDS19GT1JfUkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoKS4K
LSAqICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgYm9vbGVhbiByZXR1cm4gdmFsdWUuIFRydWUg
aW5kaWNhdGVzIHRoYXQgdGhlcmUKLSAqICBhcmUgcGVuZGluZyBtZXNzYWdlcyBvbiB0aGUgcmlu
ZyAoaS5lLiwgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBwdXQKLSAqICB0byBzbGVlcCku
Ci0gKiAKLSAqICBUaGVzZSBtYWNyb3Mgd2lsbCBzZXQgdGhlIHJlcV9ldmVudC9yc3BfZXZlbnQg
ZmllbGQgdG8gdHJpZ2dlciBhCi0gKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5IG5leHQgbWVz
c2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bwotICogIGNyZWF0ZSBiYXRjaGVz
IG9mIHdvcmsgKGkuZS4sIG9ubHkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhZnRlciBzZXZlcmFs
Ci0gKiAgbWVzc2FnZXMgaGF2ZSBiZWVuIGVucXVldWVkKSB0aGVuIHlvdSB3aWxsIG5lZWQgdG8g
Y3JlYXRlIGEgY3VzdG9taXNlZAotICogIHZlcnNpb24gb2YgdGhlIEZJTkFMX0NIRUNLIG1hY3Jv
IGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlIGV2ZW50Ci0gKiAgZmllbGQgYXBwcm9w
cmlhdGVseS4KLSAqLwotCi0jZGVmaW5lIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hFQ0tfTk9U
SUZZKF9yLCBfbm90aWZ5KSBkbyB7ICAgICAgICAgICBcCi0gICAgUklOR19JRFggX19vbGQgPSAo
X3IpLT5zcmluZy0+cmVxX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
UklOR19JRFggX19uZXcgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVzdHMgL2JlZm9y
ZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyBcCi0gICAgKF9yKS0+c3JpbmctPnJlcV9wcm9k
ID0gX19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeGVu
X21iKCk7IC8qIGJhY2sgc2VlcyBuZXcgcmVxdWVzdHMgL2JlZm9yZS8gd2UgY2hlY2sgcmVxX2V2
ZW50ICovICBcCi0gICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmlu
Zy0+cmVxX2V2ZW50KSA8ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIChSSU5HX0lEWCko
X19uZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgw
KQotCi0jZGVmaW5lIFJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElGWShfciwgX25v
dGlmeSkgZG8geyAgICAgICAgICBcCi0gICAgUklOR19JRFggX19vbGQgPSAoX3IpLT5zcmluZy0+
cnNwX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUklOR19JRFggX19u
ZXcgPSAoX3IpLT5yc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgeGVuX3dtYigpOyAvKiBmcm9udCBzZWVzIHJlc3BzIC9iZWZvcmUvIHVwZGF0ZWQgcHJv
ZHVjZXIgaW5kZXggKi8gICBcCi0gICAgKF9yKS0+c3JpbmctPnJzcF9wcm9kID0gX19uZXc7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeGVuX21iKCk7IC8qIGZy
b250IHNlZXMgbmV3IHJlc3BzIC9iZWZvcmUvIHdlIGNoZWNrIHJzcF9ldmVudCAqLyAgICBcCi0g
ICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmluZy0+cnNwX2V2ZW50
KSA8ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIChSSU5HX0lEWCkoX19uZXcgLSBfX29s
ZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5l
IFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKF9yLCBfd29ya190b19kbykgZG8geyAgICAg
ICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVRVUVT
VFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKF93b3JrX3RvX2RvKSBicmVhazsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+
c3JpbmctPnJlcV9ldmVudCA9IChfciktPnJlcV9jb25zICsgMTsgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VO
Q09OU1VNRURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgwKQot
Ci0jZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUyhfciwgX3dvcmtfdG9fZG8p
IGRvIHsgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKF93b3JrX3RvX2Rv
KSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKF9yKS0+c3JpbmctPnJzcF9ldmVudCA9IChfciktPnJzcF9jb25zICsgMTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJ
TkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCi19IHdo
aWxlICgwKQotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fICovCi0KLS8qCi0g
KiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLXNldC1zdHlsZTogIkJTRCIKLSAq
IGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6
IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9pby94ZW5idXMuaCBi
L2luY2x1ZGUveGVuL2lvL3hlbmJ1cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YTA1M2RmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2lvL3hlbmJ1cy5oCisrKyAvZGV2L251
bGwKQEAgLTEsODAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiB4ZW5idXMuaAot
ICoKLSAqIFhlbmJ1cyBwcm90b2NvbCBkZXRhaWxzLgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAq
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUgWGVuU291cmNlIEx0ZC4KLSAqLwotCi0jaWZuZGVmIF9YRU5fUFVCTElDX0lP
X1hFTkJVU19ICi0jZGVmaW5lIF9YRU5fUFVCTElDX0lPX1hFTkJVU19ICi0KLS8qCi0gKiBUaGUg
c3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVuYnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11
bmljYXRpb24KLSAqIHN0YXR1cyBvZiBpbml0aWFsaXNhdGlvbiBhY3Jvc3MgdGhlIGJ1cy4gIFN0
YXRlcyBoZXJlIGltcGx5IG5vdGhpbmcgYWJvdXQKLSAqIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVj
dGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBrZXJuZWwncyBkZXZpY2UKLSAqIGxheWVy
cy4KLSAqLwotZW51bSB4ZW5idXNfc3RhdGUgewotICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAg
ICA9IDAsCi0KLSAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgPSAxLAotCi0gICAgLyoKLSAg
ICAgKiBJbml0V2FpdDogRmluaXNoZWQgZWFybHkgaW5pdGlhbGlzYXRpb24gYnV0IHdhaXRpbmcg
Zm9yIGluZm9ybWF0aW9uCi0gICAgICogZnJvbSB0aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMu
Ci0gICAgICovCi0gICAgWGVuYnVzU3RhdGVJbml0V2FpdCAgICAgID0gMiwKLQotICAgIC8qCi0g
ICAgICogSW5pdGlhbGlzZWQ6IFdhaXRpbmcgZm9yIGEgY29ubmVjdGlvbiBmcm9tIHRoZSBwZWVy
LgotICAgICAqLwotICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQgICA9IDMsCi0KLSAgICBYZW5i
dXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAotCi0gICAgLyoKLSAgICAgKiBDbG9zaW5nOiBUaGUg
ZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8gYW4gZXJyb3Igb3IgYW4gdW5wbHVnIGV2ZW50
LgotICAgICAqLwotICAgIFhlbmJ1c1N0YXRlQ2xvc2luZyAgICAgICA9IDUsCi0KLSAgICBYZW5i
dXNTdGF0ZUNsb3NlZCAgICAgICAgPSA2LAotCi0gICAgLyoKLSAgICAgKiBSZWNvbmZpZ3VyaW5n
OiBUaGUgZGV2aWNlIGlzIGJlaW5nIHJlY29uZmlndXJlZC4KLSAgICAgKi8KLSAgICBYZW5idXNT
dGF0ZVJlY29uZmlndXJpbmcgPSA3LAotCi0gICAgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQgID0g
OAotfTsKLXR5cGVkZWYgZW51bSB4ZW5idXNfc3RhdGUgWGVuYnVzU3RhdGU7Ci0KLSNlbmRpZiAv
KiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSCAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgot
ICogbW9kZTogQwotICogYy1zZXQtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAot
ICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpk
aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCBiL2lu
Y2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGY3NWY1YgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqIHhlbi14ODZfMzIuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZh
Y2UgdG8geDg2IDMyLWJpdCBYZW4uCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK
KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDQtMjAwNywgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9YODZfMzJfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMy
X0hfXworCisvKgorICogSHlwZXJjYWxsIGludGVyZmFjZToKKyAqICBJbnB1dDogICVlYngsICVl
Y3gsICVlZHgsICVlc2ksICVlZGksICVlYnAgKGFyZ3VtZW50cyAxLTYpCisgKiAgT3V0cHV0OiAl
ZWF4CisgKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9h
ZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgorICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNh
bGwtbnVtYmVyICogMzIKKyAqIENsb2JiZXJlZDogQXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAy
LWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJWVieCwlZWN4KQorICovCisKKy8qCisgKiBUaGVzZSBm
bGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlvbiBvZiBldmVyeSBHRFQu
IFNpbmNlIHRoZXNlCisgKiBhcmUgYWxzbyBwcmVzZW50IGluIHRoZSBpbml0aWFsIEdEVCwgbWFu
eSBPU2VzIHdpbGwgYmUgYWJsZSB0byBhdm9pZAorICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RU
LgorICovCisjZGVmaW5lIEZMQVRfUklORzFfQ1MgMHhlMDE5ICAgIC8qIEdEVCBpbmRleCAyNTkg
Ki8KKyNkZWZpbmUgRkxBVF9SSU5HMV9EUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwor
I2RlZmluZSBGTEFUX1JJTkcxX1NTIDB4ZTAyMSAgICAvKiBHRFQgaW5kZXggMjYwICovCisjZGVm
aW5lIEZMQVRfUklORzNfQ1MgMHhlMDJiICAgIC8qIEdEVCBpbmRleCAyNjEgKi8KKyNkZWZpbmUg
RkxBVF9SSU5HM19EUyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLworI2RlZmluZSBGTEFU
X1JJTkczX1NTIDB4ZTAzMyAgICAvKiBHRFQgaW5kZXggMjYyICovCisKKyNkZWZpbmUgRkxBVF9L
RVJORUxfQ1MgRkxBVF9SSU5HMV9DUworI2RlZmluZSBGTEFUX0tFUk5FTF9EUyBGTEFUX1JJTkcx
X0RTCisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTIEZMQVRfUklORzFfU1MKKyNkZWZpbmUgRkxBVF9V
U0VSX0NTICAgIEZMQVRfUklORzNfQ1MKKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAgIEZMQVRfUklO
RzNfRFMKKyNkZWZpbmUgRkxBVF9VU0VSX1NTICAgIEZMQVRfUklORzNfU1MKKworI2RlZmluZSBf
X0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUgICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gy
UEhZU19WSVJUX1NUQVJUX1BBRSAgICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19W
SVJUX0VORF9QQUUgICAgICAgMHhGNjgwMDAwMAorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RB
UlRfUEFFICAgICAgXAorICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RB
UlRfUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUgICAgICAgXAorICAgIG1r
X3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUpCisjZGVmaW5lIE1BQ0gy
UEhZU19WSVJUX0VORF9QQUUgICAgICAgICBcCisgICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gy
UEhZU19WSVJUX0VORF9QQUUpCisKKy8qIE5vbi1QQUUgYm91bmRzIGFyZSBvYnNvbGV0ZS4gKi8K
KyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfTk9OUEFFIDB4RkMwMDAwMDAKKyNkZWZp
bmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9OT05QQUUgIDB4RkMwMDAwMDAKKyNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgIDB4RkM0MDAwMDAKKyNkZWZpbmUgSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUX05PTlBBRSAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUX05PTlBBRSkKKyNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFF
ICAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFF
KQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgICAgXAorICAgIG1rX3Vuc2ln
bmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFKQorCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9WSVJUX1NUQVJUIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBfX01B
Q0gyUEhZU19WSVJUX1NUQVJUICBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBf
X01BQ0gyUEhZU19WSVJUX0VORCAgICBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUKKworI2lmbmRl
ZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1r
X3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworI2RlZmlu
ZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJU
X1NUQVJUKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkQgICAgbWtfdW5zaWduZWRfbG9uZyhf
X01BQ0gyUEhZU19WSVJUX0VORCkKKyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMgICgoTUFD
SDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZU19WSVJUX1NUQVJUKT4+MikKKyNpZm5kZWYgbWFjaGlu
ZV90b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKChVTE9O
R19QVFIgKilNQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNlbmRpZgorCisvKiAzMi0vNjQtYml0IGlu
dmFyaWFiaWxpdHkgZm9yIGNvbnRyb2wgaW50ZXJmYWNlcyAoZG9tY3RsL3N5c2N0bCkuICovCisj
aWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjdW5kZWYgX19f
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0
eXBlICpwOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX2d1
ZXN0X2hhbmRsZV8gIyMgbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB0eXBlZGVmIHN0cnVjdCB7IHVuaW9uIHsgdHlwZSAqcDsgdWludDY0X2FsaWduZWRfdCBxOyB9
OyB9ICBcCisgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCisjdW5kZWYgc2V0X3hl
bl9ndWVzdF9oYW5kbGVfcmF3CisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQs
IHZhbCkgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyBpZiAoIHNpemVvZihobmQpID09IDgg
KSAqKHVpbnQ2NF90ICopJihobmQpID0gMDsgICBcCisgICAgICAgICAoaG5kKS5wID0gdmFsOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoIDAgKQor
I2RlZmluZSAgaW50NjRfYWxpZ25lZF90ICBpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFsaWduZWQo
OCkpKQorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFs
aWduZWQoOCkpKQorI2RlZmluZSBfX1hFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19ndWVzdF9o
YW5kbGVfNjRfICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBfX1hF
Tl9HVUVTVF9IQU5ETEVfNjQobmFtZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwor
CitzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgdWludDMyX3QgZWJ4OworICAgIHVpbnQzMl90
IGVjeDsKKyAgICB1aW50MzJfdCBlZHg7CisgICAgdWludDMyX3QgZXNpOworICAgIHVpbnQzMl90
IGVkaTsKKyAgICB1aW50MzJfdCBlYnA7CisgICAgdWludDMyX3QgZWF4OworICAgIHVpbnQxNl90
IGVycm9yX2NvZGU7ICAgIC8qIHByaXZhdGUgKi8KKyAgICB1aW50MTZfdCBlbnRyeV92ZWN0b3I7
ICAvKiBwcml2YXRlICovCisgICAgdWludDMyX3QgZWlwOworICAgIHVpbnQxNl90IGNzOworICAg
IHVpbnQ4X3QgIHNhdmVkX3VwY2FsbF9tYXNrOworICAgIHVpbnQ4X3QgIF9wYWQwOworICAgIHVp
bnQzMl90IGVmbGFnczsgICAgICAgIC8qIGVmbGFncy5JRiA9PSAhc2F2ZWRfdXBjYWxsX21hc2sg
Ki8KKyAgICB1aW50MzJfdCBlc3A7CisgICAgdWludDE2X3Qgc3MsIF9wYWQxOworICAgIHVpbnQx
Nl90IGVzLCBfcGFkMjsKKyAgICB1aW50MTZfdCBkcywgX3BhZDM7CisgICAgdWludDE2X3QgZnMs
IF9wYWQ0OworICAgIHVpbnQxNl90IGdzLCBfcGFkNTsKK307Cit0eXBlZGVmIHN0cnVjdCBjcHVf
dXNlcl9yZWdzIGNwdV91c2VyX3JlZ3NfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNwdV91
c2VyX3JlZ3NfdCk7CisKKy8qCisgKiBQYWdlLWRpcmVjdG9yeSBhZGRyZXNzZXMgYWJvdmUgNEdC
IGRvIG5vdCBmaXQgaW50byBhcmNoaXRlY3R1cmFsICVjcjMuCisgKiBXaGVuIGFjY2Vzc2luZyAl
Y3IzLCBvciBlcXVpdmFsZW50IGZpZWxkIGluIHZjcHVfZ3Vlc3RfY29udGV4dCwgZ3Vlc3RzCisg
KiBtdXN0IHVzZSB0aGUgZm9sbG93aW5nIGFjY2Vzc29yIG1hY3JvcyB0byBwYWNrL3VucGFjayB2
YWxpZCBNRk5zLgorICovCisjZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWduZWQp
KHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCisjZGVmaW5lIHhlbl9jcjNf
dG9fcGZuKGNyMykgKCgodW5zaWduZWQpKGNyMykgPj4gMTIpIHwgKCh1bnNpZ25lZCkoY3IzKSA8
PCAyMCkpCisKK3N0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7CisgICAgVUxPTkdfUFRSIGNyMjsKKyAg
ICBVTE9OR19QVFIgcGFkWzVdOyAvKiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCit9Owor
dHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKKworc3RydWN0
IHhlbl9jYWxsYmFjayB7CisgICAgVUxPTkdfUFRSIGNzOworICAgIFVMT05HX1BUUiBlaXA7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2NhbGxiYWNrIHhlbl9jYWxsYmFja190OworCisjZW5kaWYg
LyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hF
Tl9YODZfMzJfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg
KiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRo
OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEv
aW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL3B1
YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTBhNDMzYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNo
LXg4Ni94ZW4teDg2XzY0LmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKyAqIHhlbi14ODZfNjQuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IDY0
LWJpdCBYZW4uCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICog
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNiwgSyBB
IEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRf
SF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzY0X0hfXworCisvKgor
ICogSHlwZXJjYWxsIGludGVyZmFjZToKKyAqICBJbnB1dDogICVyZGksICVyc2ksICVyZHgsICVy
MTAsICVyOCwgJXI5IChhcmd1bWVudHMgMS02KQorICogIE91dHB1dDogJXJheAorICogQWNjZXNz
IGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBY
ZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMy
CisgKiBDbG9iYmVyZWQ6IGFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxs
IGNsb2JiZXJzICVyZGksJXJzaSkKKyAqLworCisvKgorICogNjQtYml0IHNlZ21lbnQgc2VsZWN0
b3JzCisgKiBUaGVzZSBmbGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlv
biBvZiBldmVyeSBHRFQuIFNpbmNlIHRoZXNlCisgKiBhcmUgYWxzbyBwcmVzZW50IGluIHRoZSBp
bml0aWFsIEdEVCwgbWFueSBPU2VzIHdpbGwgYmUgYWJsZSB0byBhdm9pZAorICogaW5zdGFsbGlu
ZyB0aGVpciBvd24gR0RULgorICovCisKKyNkZWZpbmUgRkxBVF9SSU5HM19DUzMyIDB4ZTAyMyAg
LyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJTkczX0NTNjQgMHhlMDMzICAvKiBH
RFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRfUklORzNfRFMzMiAweGUwMmIgIC8qIEdEVCBp
bmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19EUzY0IDB4MDAwMCAgLyogTlVMTCBzZWxl
Y3RvciAqLworI2RlZmluZSBGTEFUX1JJTkczX1NTMzIgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYy
ICovCisjZGVmaW5lIEZMQVRfUklORzNfU1M2NCAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8K
KworI2RlZmluZSBGTEFUX0tFUk5FTF9EUzY0IEZMQVRfUklORzNfRFM2NAorI2RlZmluZSBGTEFU
X0tFUk5FTF9EUzMyIEZMQVRfUklORzNfRFMzMgorI2RlZmluZSBGTEFUX0tFUk5FTF9EUyAgIEZM
QVRfS0VSTkVMX0RTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1M2NCBGTEFUX1JJTkczX0NTNjQK
KyNkZWZpbmUgRkxBVF9LRVJORUxfQ1MzMiBGTEFUX1JJTkczX0NTMzIKKyNkZWZpbmUgRkxBVF9L
RVJORUxfQ1MgICBGTEFUX0tFUk5FTF9DUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTNjQgRkxB
VF9SSU5HM19TUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTMzIgRkxBVF9SSU5HM19TUzMyCisj
ZGVmaW5lIEZMQVRfS0VSTkVMX1NTICAgRkxBVF9LRVJORUxfU1M2NAorCisjZGVmaW5lIEZMQVRf
VVNFUl9EUzY0IEZMQVRfUklORzNfRFM2NAorI2RlZmluZSBGTEFUX1VTRVJfRFMzMiBGTEFUX1JJ
TkczX0RTMzIKKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAgRkxBVF9VU0VSX0RTNjQKKyNkZWZpbmUg
RkxBVF9VU0VSX0NTNjQgRkxBVF9SSU5HM19DUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9DUzMyIEZM
QVRfUklORzNfQ1MzMgorI2RlZmluZSBGTEFUX1VTRVJfQ1MgICBGTEFUX1VTRVJfQ1M2NAorI2Rl
ZmluZSBGTEFUX1VTRVJfU1M2NCBGTEFUX1JJTkczX1NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX1NT
MzIgRkxBVF9SSU5HM19TUzMyCisjZGVmaW5lIEZMQVRfVVNFUl9TUyAgIEZMQVRfVVNFUl9TUzY0
CisKKyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQgMHhGRkZGODAwMDAwMDAwMDAwCisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX0VORCAgIDB4RkZGRjg4MDAwMDAwMDAwMAorI2RlZmlu
ZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUICAweEZGRkY4MDAwMDAwMDAwMDAKKyNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9FTkQgICAgMHhGRkZGODA0MDAwMDAwMDAwCisKKyNpZm5kZWYgSFlQRVJW
SVNPUl9WSVJUX1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25l
ZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRf
RU5EICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9FTkQpCisjZW5kaWYKKwor
I2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZ
U19WSVJUX1NUQVJUKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkQgICAgbWtfdW5zaWduZWRf
bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkKKyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMg
ICgoTUFDSDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZU19WSVJUX1NUQVJUKT4+MykKKyNpZm5kZWYg
bWFjaGluZV90b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcg
KChVTE9OR19QVFIgKilIWVBFUlZJU09SX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworLyoKKyAqIGlu
dCBIWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UodW5zaWduZWQgaW50IHdoaWNoLCBVTE9OR19Q
VFIgYmFzZSkKKyAqICBAd2hpY2ggPT0gU0VHQkFTRV8qICA7ICBAYmFzZSA9PSA2NC1iaXQgYmFz
ZSBhZGRyZXNzCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4KKyAqLworI2RlZmluZSBTRUdCQVNF
X0ZTICAgICAgICAgIDAKKyNkZWZpbmUgU0VHQkFTRV9HU19VU0VSICAgICAxCisjZGVmaW5lIFNF
R0JBU0VfR1NfS0VSTkVMICAgMgorI2RlZmluZSBTRUdCQVNFX0dTX1VTRVJfU0VMIDMgLyogU2V0
IHVzZXIgJWdzIHNwZWNpZmllZCBpbiBiYXNlWzE1OjBdICovCisKKy8qCisgKiBpbnQgSFlQRVJW
SVNPUl9pcmV0KHZvaWQpCisgKiBBbGwgYXJndW1lbnRzIGFyZSBvbiB0aGUga2VybmVsIHN0YWNr
LCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdC4KKyAqIE5ldmVyIHJldHVybnMgaWYgc3VjY2Vzc2Z1
bC4gQ3VycmVudCBrZXJuZWwgY29udGV4dCBpcyBsb3N0LgorICogVGhlIHNhdmVkIENTIGlzIG1h
cHBlZCBhcyBmb2xsb3dzOgorICogICBSSU5HMCAtPiBSSU5HMyBrZXJuZWwgbW9kZS4KKyAqICAg
UklORzEgLT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJTkcyIC0+IFJJTkczIGtlcm5lbCBt
b2RlLgorICogICBSSU5HMyAtPiBSSU5HMyB1c2VyIG1vZGUuCisgKiBIb3dldmVyIFJJTkcwIGlu
ZGljYXRlcyB0aGF0IHRoZSBndWVzdCBrZXJuZWwgc2hvdWxkIHJldHVybiB0byBpdGVzZWxmCisg
KiBkaXJlY3RseSB3aXRoCisgKiAgICAgIG9yYiAgICQzLDEqOCglcnNwKQorICogICAgICBpcmV0
cQorICogSWYgZmxhZ3MgY29udGFpbnMgVkdDRl9pbl9zeXNjYWxsOgorICogICBSZXN0b3JlIFJB
WCwgUklQLCBSRkxBR1MsIFJTUC4KKyAqICAgRGlzY2FyZCBSMTEsIFJDWCwgQ1MsIFNTLgorICog
T3RoZXJ3aXNlOgorICogICBSZXN0b3JlIFJBWCwgUjExLCBSQ1gsIENTOlJJUCwgUkZMQUdTLCBT
UzpSU1AuCisgKiBBbGwgb3RoZXIgcmVnaXN0ZXJzIGFyZSBzYXZlZCBvbiBoeXBlcmNhbGwgZW50
cnkgYW5kIHJlc3RvcmVkIHRvIHVzZXIuCisgKi8KKy8qIEd1ZXN0IGV4aXRlZCBpbiBTWVNDQUxM
IGNvbnRleHQ/IFJldHVybiB0byBndWVzdCB3aXRoIFNZU1JFVD8gKi8KKyNkZWZpbmUgX1ZHQ0Zf
aW5fc3lzY2FsbCA4CisjZGVmaW5lIFZHQ0ZfaW5fc3lzY2FsbCAgKDE8PF9WR0NGX2luX3N5c2Nh
bGwpCisjZGVmaW5lIFZHQ0ZfSU5fU1lTQ0FMTCAgVkdDRl9pbl9zeXNjYWxsCisKKyNpZm5kZWYg
X19BU1NFTUJMWV9fCisKK3N0cnVjdCBpcmV0X2NvbnRleHQgeworICAgIC8qIFRvcCBvZiBzdGFj
ayAoJXJzcCBhdCBwb2ludCBvZiBoeXBlcmNhbGwpLiAqLworICAgIHVpbnQ2NF90IHJheCwgcjEx
LCByY3gsIGZsYWdzLCByaXAsIGNzLCByZmxhZ3MsIHJzcCwgc3M7CisgICAgLyogQm90dG9tIG9m
IGlyZXQgc3RhY2sgZnJhbWUuICovCit9OworCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRl
ZmluZWQoX19TVFJJQ1RfQU5TSV9fKQorLyogQW5vbnltb3VzIHVuaW9uIGluY2x1ZGVzIGJvdGgg
MzItIGFuZCA2NC1iaXQgbmFtZXMgKGUuZy4sIGVheC9yYXgpLiAqLworI2RlZmluZSBfX0RFQ0xf
UkVHKG5hbWUpIHVuaW9uIHsgXAorICAgIHVpbnQ2NF90IHIgIyMgbmFtZSwgZSAjIyBuYW1lOyBc
CisgICAgdWludDMyX3QgX2UgIyMgbmFtZTsgXAorfQorI2Vsc2UKKy8qIE5vbi1nY2Mgc291cmNl
cyBtdXN0IGFsd2F5cyB1c2UgdGhlIHByb3BlciA2NC1iaXQgbmFtZSAoZS5nLiwgcmF4KS4gKi8K
KyNkZWZpbmUgX19ERUNMX1JFRyhuYW1lKSB1aW50NjRfdCByICMjIG5hbWUKKyNlbmRpZgorCitz
dHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgdWludDY0X3QgcjE1OworICAgIHVpbnQ2NF90IHIx
NDsKKyAgICB1aW50NjRfdCByMTM7CisgICAgdWludDY0X3QgcjEyOworICAgIF9fREVDTF9SRUco
YnApOworICAgIF9fREVDTF9SRUcoYngpOworICAgIHVpbnQ2NF90IHIxMTsKKyAgICB1aW50NjRf
dCByMTA7CisgICAgdWludDY0X3Qgcjk7CisgICAgdWludDY0X3Qgcjg7CisgICAgX19ERUNMX1JF
RyhheCk7CisgICAgX19ERUNMX1JFRyhjeCk7CisgICAgX19ERUNMX1JFRyhkeCk7CisgICAgX19E
RUNMX1JFRyhzaSk7CisgICAgX19ERUNMX1JFRyhkaSk7CisgICAgdWludDMyX3QgZXJyb3JfY29k
ZTsgICAgLyogcHJpdmF0ZSAqLworICAgIHVpbnQzMl90IGVudHJ5X3ZlY3RvcjsgIC8qIHByaXZh
dGUgKi8KKyAgICBfX0RFQ0xfUkVHKGlwKTsKKyAgICB1aW50MTZfdCBjcywgX3BhZDBbMV07Cisg
ICAgdWludDhfdCAgc2F2ZWRfdXBjYWxsX21hc2s7CisgICAgdWludDhfdCAgX3BhZDFbM107Cisg
ICAgX19ERUNMX1JFRyhmbGFncyk7ICAgICAgLyogcmZsYWdzLklGID09ICFzYXZlZF91cGNhbGxf
bWFzayAqLworICAgIF9fREVDTF9SRUcoc3ApOworICAgIHVpbnQxNl90IHNzLCBfcGFkMlszXTsK
KyAgICB1aW50MTZfdCBlcywgX3BhZDNbM107CisgICAgdWludDE2X3QgZHMsIF9wYWQ0WzNdOwor
ICAgIHVpbnQxNl90IGZzLCBfcGFkNVszXTsgLyogTm9uLXplcm8gPT4gdGFrZXMgcHJlY2VkZW5j
ZSBvdmVyIGZzX2Jhc2UuICAgICAqLworICAgIHVpbnQxNl90IGdzLCBfcGFkNlszXTsgLyogTm9u
LXplcm8gPT4gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGdzX2Jhc2VfdXNyLiAqLworfTsKK3R5cGVk
ZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJfcmVnc190OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsKKworI3VuZGVmIF9fREVDTF9SRUcKKworI2RlZmlu
ZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoVUxPTkdfUFRSKShwZm4pIDw8IDEyKQorI2RlZmluZSB4
ZW5fY3IzX3RvX3BmbihjcjMpICgoVUxPTkdfUFRSKShjcjMpID4+IDEyKQorCitzdHJ1Y3QgYXJj
aF92Y3B1X2luZm8geworICAgIFVMT05HX1BUUiBjcjI7CisgICAgVUxPTkdfUFRSIHBhZDsgLyog
c2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLworfTsKK3R5cGVkZWYgc3RydWN0IGFyY2hfdmNw
dV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7CisKK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9jYWxsYmFj
a190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19YRU5fUFVC
TElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6
CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog
NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oIGIvaW5jbHVk
ZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRlYTY0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJj
aC14ODYveGVuLmgKQEAgLTAsMCArMSwzMDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
IGFyY2gteDg2L3hlbi5oCisgKiAKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgWGVuLgor
ICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIKKyAq
LworCisjaW5jbHVkZSAiLi4veGVuLmgiCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKworLyogU3Ry
dWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KKyNpZiBf
X1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDEKKyNkZWZpbmUgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlw
ZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQorI2Vsc2UKKyNkZWZpbmUgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vl
c3RfaGFuZGxlXyAjIyBuYW1lCisjZW5kaWYKKworLyoKKyAqIFhFTl9HVUVTVF9IQU5ETEUgcmVw
cmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKKyAqIGluIGEg
c3RydWN0IGluIG1lbW9yeS4KKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50IGEg
Z3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KKyAqIGh5cGVyY2FsbCBhcmd1bWVudC4K
KyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRoZSBz
YW1lIG9uIFg4NiBidXQKKyAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVjdHVy
ZXMuCisgKi8KKyNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBc
CisgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAorICAgIF9f
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKKyNkZWZp
bmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKG5hbWUsIG5hbWUpCisjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAg
X19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAg
ICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRM
RV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5lIHNldF94ZW5f
Z3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGlsZSAo
MCkKKyNpZmRlZiBfX1hFTl9UT09MU19fCisjZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxlKHZh
bCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQorI2VuZGlmCisjZGVmaW5l
IHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXco
aG5kLCB2YWwpCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKQorI2luY2x1ZGUgInhlbi14ODZfMzIu
aCIKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCisj
ZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5f
dDsKKyNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgorI2VuZGlmCisKKyNkZWZpbmUgWEVOX0hBVkVf
UFZfR1VFU1RfRU5UUlkgMQorCisjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEKKwor
LyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJsZXMK
KyAqLworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZ2R0
KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOworICogYAor
ICovCisvKgorICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4g
VGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVz
ZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICog
aW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhl
IHN0YXJ0IG9mIHRoZSBHRFQsCisgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdh
eSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KKyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1
c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLwor
I2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJW
RURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJ
UlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisK
Ky8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2Ny
aXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7CisgKiBgCisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBo
eXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBN
dXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2Mg
VGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQor
ICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhp
bXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVz
dHMuICovCisjZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NF
TUJMWV9fCisKK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OworI2RlZmluZSBQUklfeGVu
X3Vsb25nICJseCIKKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNP
Ul9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKKyAqIGAKKyAqIFNl
dHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisg
Ki8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJh
cF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOworICogYAorICovCisvKgor
ICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCku
CisgKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFw
c1tdLmFkZHJlc3M9PTAuCisgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBt
b2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4
Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisg
KiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5
IGVudGVyCisgKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgorICogIExldmVsID09IDI6
IEtlcm5lbCBtYXkgZW50ZXIKKyAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAq
LworI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZp
bmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NF
VF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRf
SUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRy
YXBfaW5mbyB7CisgICAgdWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB1aW50OF90ICAgICAgIGZsYWdz
OyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAqLwor
ICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCisgICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zm
c2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBf
aW5mb190KTsKKwordHlwZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRp
bWVzdGFtcCAqLworCisvKgorICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5v
dGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVkIAorICogaW4gYnkgRlhTQVZFIGlm
IHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNlIEZTQVZFIGlzIHVzZWQuCisgKgor
ICogQWxzbyBub3RlIHRoYXQgd2hlbiBjYWxsaW5nIERPTUNUTF9zZXR2Y3B1Y29udGV4dCBhbmQg
VkNQVV9pbml0aWFsaXNlCisgKiBmb3IgSFZNIGFuZCBQVkggZ3Vlc3RzLCBub3QgYWxsIGluZm9y
bWF0aW9uIGluIHRoaXMgc3RydWN0dXJlIGlzIHVwZGF0ZWQ6CisgKgorICogLSBGb3IgSFZNIGd1
ZXN0cywgdGhlIHN0cnVjdHVyZXMgcmVhZCBpbmNsdWRlOiBmcHVfY3R4dCAoaWYKKyAqIFZHQ1Rf
STM4N19WQUxJRCBpcyBzZXQpLCBmbGFncywgdXNlcl9yZWdzLCBkZWJ1Z3JlZ1sqXQorICoKKyAq
IC0gUFZIIGd1ZXN0cyBhcmUgdGhlIHNhbWUgYXMgSFZNIGd1ZXN0cywgYnV0IGFkZGl0aW9uYWxs
eSB1c2UgY3RybHJlZ1szXSB0bworICogc2V0IGNyMy4gQWxsIG90aGVyIGZpZWxkcyBub3QgdXNl
ZCBzaG91bGQgYmUgc2V0IHRvIDAuCisgKi8KK3N0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewor
ICAgIC8qIEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVkIGZv
ciBGWFNBVkUvRlhSU1RPUi4gKi8KKyAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVfY3R4
dDsgICAgICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLworI2RlZmluZSBWR0NG
X0kzODdfVkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIFZHQ0ZfSU5fS0VSTkVM
ICAgICAgICAgICAgICAgICAoMTw8MikKKyNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAgICAg
ICAgICAgIDAKKyNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxfVkdD
Rl9pMzg3X3ZhbGlkKQorI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAgMgor
I2RlZmluZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tlcm5l
bCkKKyNkZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKKyNkZWZpbmUgVkdD
Rl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19l
dmVudHMpCisjZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0CisjZGVmaW5l
IFZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxl
c19ldmVudHMpCisjZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1CisjZGVm
aW5lIFZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQorICAg
IFVMT05HX1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAgICAg
ICAgICAgICAgICAgKi8KKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAgICAg
ICAgLyogVXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLworICAgIHN0cnVjdCB0cmFwX2lu
Zm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAgICAg
ICovCisgICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChsaW5l
YXIgYWRkcmVzcywgIyBlbnRzKSAqLworICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwgZ2R0
X2VudHM7IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KKyAgICBVTE9OR19QVFIg
a2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1AxKSAg
ICovCisgICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4gY3Ry
bHJlZ1sxXS4gKi8KKyAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAvKiBD
UjAtQ1I3IChjb250cm9sIHJlZ2lzdGVycykgICovCisgICAgVUxPTkdfUFRSIGRlYnVncmVnWzhd
OyAgICAgICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLworI2lmZGVm
IF9faTM4Nl9fCisgICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyogQ1M6
RUlQIG9mIGV2ZW50IGNhbGxiYWNrICAgICAqLworICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFj
a19laXA7CisgICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6RUlQ
IG9mIGZhaWxzYWZlIGNhbGxiYWNrICAqLworICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxsYmFj
a19laXA7CisjZWxzZQorICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7CisgICAgVUxP
TkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKKyNpZmRlZiBfX1hFTl9fCisgICAgdW5pb24g
eworICAgICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8qIGNv
bXBhdCBDUyBvZiBldmVudCBjYiAgICAgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmYWls
c2FmZV9jYWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLworICAgICAg
ICB9OworICAgIH07CisjZWxzZQorICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsK
KyNlbmRpZgorI2VuZGlmCisgICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAgICAg
LyogVk1BU1NUX1RZUEVfKiBiaXRtYXAgKi8KKyNpZmRlZiBfX3g4Nl82NF9fCisgICAgLyogU2Vn
bWVudCBiYXNlIGFkZHJlc3Nlcy4gKi8KKyAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7CisgICAg
dWludDY0X3QgICAgICBnc19iYXNlX2tlcm5lbDsKKyAgICB1aW50NjRfdCAgICAgIGdzX2Jhc2Vf
dXNlcjsKKyNlbmRpZgorfTsKK3R5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2Y3B1
X2d1ZXN0X2NvbnRleHRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29u
dGV4dF90KTsKKworc3RydWN0IGFyY2hfc2hhcmVkX2luZm8geworICAgIC8qCisgICAgICogTnVt
YmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlIHAybSB0YWJsZShzKSBhbmNob3JlZCBhdAorICAg
ICAqIHBmbl90b19tZm5fZnJhbWVfbGlzdF9saXN0IGFuZC9vciBwMm1fdmFkZHIuCisgICAgICov
CisgICAgVUxPTkdfUFRSIG1heF9wZm47CisgICAgLyoKKyAgICAgKiBGcmFtZSBjb250YWluaW5n
IGxpc3Qgb2YgbWZucyBjb250YWluaW5nIGxpc3Qgb2YgbWZucyBjb250YWluaW5nIHAybS4KKyAg
ICAgKiBBIHZhbHVlIG9mIDAgaW5kaWNhdGVzIGl0IGhhcyBub3QgeWV0IGJlZW4gc2V0IHVwLCB+
MCBpbmRpY2F0ZXMgaXQgaGFzCisgICAgICogYmVlbiBzZXQgdG8gaW52YWxpZCBlLmcuIGR1ZSB0
byB0aGUgcDJtIGJlaW5nIHRvbyBsYXJnZSBmb3IgdGhlIDMtbGV2ZWwKKyAgICAgKiBwMm0gdHJl
ZS4gSW4gdGhpcyBjYXNlIHRoZSBsaW5lYXIgbWFwcGVyIHAybSBsaXN0IGFuY2hvcmVkIGF0IHAy
bV92YWRkcgorICAgICAqIGlzIHRvIGJlIHVzZWQuCisgICAgICovCisgICAgeGVuX3Bmbl90ICAg
ICBwZm5fdG9fbWZuX2ZyYW1lX2xpc3RfbGlzdDsKKyAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsK
KyAgICAvKgorICAgICAqIEZvbGxvd2luZyB0aHJlZSBmaWVsZHMgYXJlIHZhbGlkIGlmIHAybV9j
cjMgY29udGFpbnMgYSB2YWx1ZSBkaWZmZXJlbnQKKyAgICAgKiBmcm9tIDAuCisgICAgICogcDJt
X2NyMyBpcyB0aGUgcm9vdCBvZiB0aGUgYWRkcmVzcyBzcGFjZSB3aGVyZSBwMm1fdmFkZHIgaXMg
dmFsaWQuCisgICAgICogcDJtX2NyMyBpcyBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYSBjcjMgdmFs
dWUgaW4gdGhlIHZjcHUgcmVnaXN0ZXIgc3RhdGUKKyAgICAgKiBhbmQgaG9sZHMgdGhlIGZvbGRl
ZCBtYWNoaW5lIGZyYW1lIG51bWJlciAodmlhIHhlbl9wZm5fdG9fY3IzKSBvZiBhCisgICAgICog
TDMgb3IgTDQgcGFnZSB0YWJsZS4KKyAgICAgKiBwMm1fdmFkZHIgaG9sZHMgdGhlIHZpcnR1YWwg
YWRkcmVzcyBvZiB0aGUgbGluZWFyIHAybSBsaXN0LiBBbGwgZW50cmllcworICAgICAqIGluIHRo
ZSByYW5nZSBbMC4uLm1heF9wZm5bIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGlzIHBvaW50ZXIuCisg
ICAgICogcDJtX2dlbmVyYXRpb24gd2lsbCBiZSBpbmNyZW1lbnRlZCBieSB0aGUgZ3Vlc3QgYmVm
b3JlIGFuZCBhZnRlciBlYWNoCisgICAgICogY2hhbmdlIG9mIHRoZSBtYXBwaW5ncyBvZiB0aGUg
cDJtIGxpc3QuIHAybV9nZW5lcmF0aW9uIHN0YXJ0cyBhdCAwIGFuZAorICAgICAqIGEgdmFsdWUg
d2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHNldCBpbmRpY2F0ZXMgdGhhdCBhIG1hcHBp
bmcKKyAgICAgKiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3MuIFRoaXMgYWxsb3dzIGd1ZXN0IGV4dGVy
bmFsIHNvZnR3YXJlIChlLmcuIGluIERvbTApCisgICAgICogdG8gdmVyaWZ5IHRoYXQgcmVhZCBt
YXBwaW5ncyBhcmUgY29uc2lzdGVudCBhbmQgd2hldGhlciB0aGV5IGhhdmUgY2hhbmdlZAorICAg
ICAqIHNpbmNlIHRoZSBsYXN0IGNoZWNrLgorICAgICAqIE1vZGlmeWluZyBhIHAybSBlbGVtZW50
IGluIHRoZSBsaW5lYXIgcDJtIGxpc3QgaXMgYWxsb3dlZCB2aWEgYW4gYXRvbWljCisgICAgICog
d3JpdGUgb25seS4KKyAgICAgKi8KKyAgICBVTE9OR19QVFIgcDJtX2NyMzsgICAgICAgICAvKiBj
cjMgdmFsdWUgb2YgdGhlIHAybSBhZGRyZXNzIHNwYWNlICovCisgICAgVUxPTkdfUFRSIHAybV92
YWRkcjsgICAgICAgLyogdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBwMm0gbGlzdCAqLworICAgIFVM
T05HX1BUUiBwMm1fZ2VuZXJhdGlvbjsgIC8qIGdlbmVyYXRpb24gY291bnQgb2YgcDJtIG1hcHBp
bmcgKi8KKyNpZmRlZiBfX2kzODZfXworICAgIC8qIFRoZXJlJ3Mgbm8gcm9vbSBmb3IgdGhpcyBm
aWVsZCBpbiB0aGUgZ2VuZXJpYyBzdHJ1Y3R1cmUuICovCisgICAgdWludDMyX3Qgd2Nfc2VjX2hp
OworI2VuZGlmCit9OwordHlwZWRlZiBzdHJ1Y3QgYXJjaF9zaGFyZWRfaW5mbyBhcmNoX3NoYXJl
ZF9pbmZvX3Q7CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisKKy8qCisgKiBgIGVudW0g
bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZnB1X3Rhc2tzd2l0Y2goaW50IHNldCk7Cisg
KiBgCisgKiBTZXRzIChpZiBzZXQhPTApIG9yIGNsZWFycyAoaWYgc2V0PT0wKSBDUjAuVFMuCisg
Ki8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZGVi
dWdyZWcoaW50IHJlZ25vLCBVTE9OR19QVFIgdmFsdWUpOworICoKKyAqIGAgVUxPTkdfUFRSCisg
KiBgIEhZUEVSVklTT1JfZ2V0X2RlYnVncmVnKGludCByZWdubyk7CisgKiBGb3IgMDw9cmVnPD03
LCByZXR1cm5zIHRoZSBkZWJ1ZyByZWdpc3RlciB2YWx1ZS4KKyAqIEZvciBvdGhlciB2YWx1ZXMg
b2YgcmVnLCByZXR1cm5zICgoVUxPTkdfUFRSKS1FSU5WQUwpLgorICogKFVuZm9ydHVuYXRlbHks
IHRoaXMgaW50ZXJmYWNlIGlzIGRlZmVjdGl2ZS4pCisgKi8KKworLyoKKyAqIFByZWZpeCBmb3Jj
ZXMgZW11bGF0aW9uIG9mIHNvbWUgbm9uLXRyYXBwaW5nIGluc3RydWN0aW9ucy4KKyAqIEN1cnJl
bnRseSBvbmx5IENQVUlELgorICovCisjaWZkZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIFhFTl9F
TVVMQVRFX1BSRUZJWCAuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOworI2RlZmluZSBY
RU5fQ1BVSUQgICAgICAgICAgWEVOX0VNVUxBVEVfUFJFRklYIGNwdWlkCisjZWxzZQorI2RlZmlu
ZSBYRU5fRU1VTEFURV9QUkVGSVggIi5ieXRlIDB4MGYsMHgwYiwweDc4LDB4NjUsMHg2ZSA7ICIK
KyNkZWZpbmUgWEVOX0NQVUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCAiY3B1aWQiCisj
ZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fSF9fICovCisKKy8q
CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi
CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t
b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2Vy
cm5vLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jNjQ0NjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVi
bGljL2Vycm5vLmgKQEAgLTAsMCArMSw5MyBAQAorI2lmbmRlZiBfX1hFTl9QVUJMSUNfRVJSTk9f
SF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKyNkZWZpbmUgWEVOX0VSUk5PKG5hbWUsIHZh
bHVlKSBYRU5fIyNuYW1lID0gdmFsdWUsCitlbnVtIHhlbl9lcnJubyB7CisKKyNlbHNlIC8qICFf
X0FTU0VNQkxZX18gKi8KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIC5lcXUgWEVO
XyMjbmFtZSwgdmFsdWUKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisvKiBgIGVudW0g
bmVnX2Vycm5vdmFsIHsgIFsgLUVmb28gZm9yIGVhY2ggRWZvbyBpbiB0aGUgbGlzdCBiZWxvdyBd
ICB9ICovCisvKiBgIGVudW0gZXJybm92YWwgeyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElD
X0VSUk5PX0hfXyAqLworCisjaWZkZWYgWEVOX0VSUk5PCisKKy8qCisgKiBWYWx1ZXMgb3JpZ2lu
YXRpbmcgZnJvbSB4ODYgTGludXguIFBsZWFzZSBjb25zaWRlciB1c2luZyByZXNwZWN0aXZlCisg
KiB2YWx1ZXMgd2hlbiBhZGRpbmcgbmV3IGRlZmluaXRpb25zIGhlcmUuCisgKi8KKworWEVOX0VS
Uk5PKEVQRVJNLAkgMSkJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8KK1hFTl9FUlJOTyhF
Tk9FTlQsCSAyKQkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovCitYRU5fRVJSTk8oRVNS
Q0gsCSAzKQkvKiBObyBzdWNoIHByb2Nlc3MgKi8KKyNpZmRlZiBfX1hFTl9fIC8qIEludGVybmFs
IG9ubHksIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8KK1hFTl9FUlJO
TyhFSU5UUiwJIDQpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsICovCisjZW5kaWYKK1hFTl9F
UlJOTyhFSU8sCQkgNSkJLyogSS9PIGVycm9yICovCitYRU5fRVJSTk8oRU5YSU8sCSA2KQkvKiBO
byBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCitYRU5fRVJSTk8oRTJCSUcsCSA3KQkvKiBBcmcg
bGlzdCB0b28gTE9OR19QVFIgKi8KK1hFTl9FUlJOTyhFTk9FWEVDLAkgOCkJLyogRXhlYyBmb3Jt
YXQgZXJyb3IgKi8KK1hFTl9FUlJOTyhFQkFERiwJIDkpCS8qIEJhZCBmaWxlIG51bWJlciAqLwor
WEVOX0VSUk5PKEVDSElMRCwJMTApCS8qIE5vIGNoaWxkIHByb2Nlc3NlcyAqLworWEVOX0VSUk5P
KEVBR0FJTiwJMTEpCS8qIFRyeSBhZ2FpbiAqLworWEVOX0VSUk5PKEVOT01FTSwJMTIpCS8qIE91
dCBvZiBtZW1vcnkgKi8KK1hFTl9FUlJOTyhFQUNDRVMsCTEzKQkvKiBQZXJtaXNzaW9uIGRlbmll
ZCAqLworWEVOX0VSUk5PKEVGQVVMVCwJMTQpCS8qIEJhZCBhZGRyZXNzICovCitYRU5fRVJSTk8o
RUJVU1ksCTE2KQkvKiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSAqLworWEVOX0VSUk5PKEVFWElT
VCwJMTcpCS8qIEZpbGUgZXhpc3RzICovCitYRU5fRVJSTk8oRVhERVYsCTE4KQkvKiBDcm9zcy1k
ZXZpY2UgbGluayAqLworWEVOX0VSUk5PKEVOT0RFViwJMTkpCS8qIE5vIHN1Y2ggZGV2aWNlICov
CitYRU5fRVJSTk8oRUlOVkFMLAkyMikJLyogSW52YWxpZCBhcmd1bWVudCAqLworWEVOX0VSUk5P
KEVORklMRSwJMjMpCS8qIEZpbGUgdGFibGUgb3ZlcmZsb3cgKi8KK1hFTl9FUlJOTyhFTUZJTEUs
CTI0KQkvKiBUb28gbWFueSBvcGVuIGZpbGVzICovCitYRU5fRVJSTk8oRU5PU1BDLAkyOCkJLyog
Tm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UgKi8KK1hFTl9FUlJOTyhFTUxJTkssCTMxKQkvKiBUb28g
bWFueSBsaW5rcyAqLworWEVOX0VSUk5PKEVET00sCQkzMykJLyogTWF0aCBhcmd1bWVudCBvdXQg
b2YgZG9tYWluIG9mIGZ1bmMgKi8KK1hFTl9FUlJOTyhFUkFOR0UsCTM0KQkvKiBNYXRoIHJlc3Vs
dCBub3QgcmVwcmVzZW50YWJsZSAqLworWEVOX0VSUk5PKEVERUFETEssCTM1KQkvKiBSZXNvdXJj
ZSBkZWFkbG9jayB3b3VsZCBvY2N1ciAqLworWEVOX0VSUk5PKEVOQU1FVE9PTE9ORywJMzYpCS8q
IEZpbGUgbmFtZSB0b28gTE9OR19QVFIgKi8KK1hFTl9FUlJOTyhFTk9MQ0ssCTM3KQkvKiBObyBy
ZWNvcmQgbG9ja3MgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRU5PU1lTLAkzOCkJLyogRnVuY3Rp
b24gbm90IGltcGxlbWVudGVkICovCitYRU5fRVJSTk8oRUJBRFJRQywJNTYpCS8qIEludmFsaWQg
cmVxdWVzdCBjb2RlICovCitYRU5fRVJSTk8oRUJBRFNMVCwJNTcpCS8qIEludmFsaWQgc2xvdCAq
LworWEVOX0VSUk5PKEVOT0RBVEEsCTYxKQkvKiBObyBkYXRhIGF2YWlsYWJsZSAqLworWEVOX0VS
Uk5PKEVUSU1FLAk2MikJLyogVGltZXIgZXhwaXJlZCAqLworWEVOX0VSUk5PKEVCQURNU0csCTc0
KQkvKiBOb3QgYSBkYXRhIG1lc3NhZ2UgKi8KK1hFTl9FUlJOTyhFT1ZFUkZMT1csCTc1KQkvKiBW
YWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlICovCitYRU5fRVJSTk8oRUlMU0VR
LAk4NCkJLyogSWxsZWdhbCBieXRlIHNlcXVlbmNlICovCisjaWZkZWYgX19YRU5fXyAvKiBJbnRl
cm5hbCBvbmx5LCBzaG91bGQgbmV2ZXIgYmUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovCitYRU5f
RVJSTk8oRVJFU1RBUlQsCTg1KQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUg
cmVzdGFydGVkICovCisjZW5kaWYKK1hFTl9FUlJOTyhFVVNFUlMsCTg3KQkvKiBUb28gbWFueSB1
c2VycyAqLworWEVOX0VSUk5PKEVPUE5PVFNVUFAsCTk1KQkvKiBPcGVyYXRpb24gbm90IHN1cHBv
cnRlZCBvbiB0cmFuc3BvcnQgZW5kcG9pbnQgKi8KK1hFTl9FUlJOTyhFQUREUklOVVNFLAk5OCkJ
LyogQWRkcmVzcyBhbHJlYWR5IGluIHVzZSAqLworWEVOX0VSUk5PKEVBRERSTk9UQVZBSUwsIDk5
KQkvKiBDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzICovCitYRU5fRVJSTk8oRU5PQlVG
UywJMTA1KQkvKiBObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRUlTQ09O
TiwJMTA2KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KK1hF
Tl9FUlJOTyhFTk9UQ09OTiwJMTA3KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5l
Y3RlZCAqLworWEVOX0VSUk5PKEVTSFVURE9XTiwJMTA4KQkvKiBDYW5ub3Qgc2VuZCBhZnRlciB0
cmFuc3BvcnQgZW5kcG9pbnQgc2h1dGRvd24gKi8KK1hFTl9FUlJOTyhFVE9PTUFOWVJFRlMsCTEw
OSkJLyogVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSAqLworWEVOX0VSUk5PKEVU
SU1FRE9VVCwJMTEwKQkvKiBDb25uZWN0aW9uIHRpbWVkIG91dCAqLworCisjdW5kZWYgWEVOX0VS
Uk5PCisjZW5kaWYgLyogWEVOX0VSUk5PICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0VSUk5P
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fCisKKy8qIGAgfSAqLworCisjaWZu
ZGVmIF9fQVNTRU1CTFlfXworfTsKKyNlbmRpZgorCisjZGVmaW5lCVhFTl9FV09VTERCTE9DSwlY
RU5fRUFHQUlOCS8qIE9wZXJhdGlvbiB3b3VsZCBibG9jayAqLworI2RlZmluZQlYRU5fRURFQURM
T0NLCVhFTl9FREVBRExLCS8qIFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyICovCisKKyNl
bmRpZiAvKiAgX19YRU5fUFVCTElDX0VSUk5PX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW4vcHVibGljL2dyYW50X3RhYmxlLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI3OTE3Ci0tLSAvZGV2L251
bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmgKQEAgLTAsMCArMSw2ODIg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGdyYW50X3RhYmxlLmgKKyAqCisgKiBJbnRl
cmZhY2UgZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVj
ZWl2aW5nCisgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2ZlcnMuCisgKgorICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAwNCwgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElD
X0dSQU5UX1RBQkxFX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCisK
KyNpbmNsdWRlICJ4ZW4uaCIKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQg
VGFibGVzCisgKgorICogWGVuJ3MgZ3JhbnQgdGFibGVzIHByb3ZpZGUgYSBnZW5lcmljIG1lY2hh
bmlzbSB0byBtZW1vcnkgc2hhcmluZworICogYmV0d2VlbiBkb21haW5zLiBUaGlzIHNoYXJlZCBt
ZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlucyB0aGUgc3BsaXQKKyAqIGRldmljZSBkcml2ZXJzIGZv
ciBibG9jayBhbmQgbmV0d29yayBJTy4KKyAqCisgKiBFYWNoIGRvbWFpbiBoYXMgaXRzIG93biBn
cmFudCB0YWJsZS4gVGhpcyBpcyBhIGRhdGEgc3RydWN0dXJlIHRoYXQKKyAqIGlzIHNoYXJlZCB3
aXRoIFhlbjsgaXQgYWxsb3dzIHRoZSBkb21haW4gdG8gdGVsbCBYZW4gd2hhdCBraW5kIG9mCisg
KiBwZXJtaXNzaW9ucyBvdGhlciBkb21haW5zIGhhdmUgb24gaXRzIHBhZ2VzLiBFbnRyaWVzIGlu
IHRoZSBncmFudAorICogdGFibGUgYXJlIGlkZW50aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4g
QSBncmFudCByZWZlcmVuY2UgaXMgYW4KKyAqIGludGVnZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0
aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMgYXMgYQorICogY2FwYWJpbGl0eSB3aGljaCB0aGUgZ3Jh
bnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiB0aGUKKyAqIGdyYW50ZXLigJlz
IG1lbW9yeS4KKyAqCisgKiBUaGlzIGNhcGFiaWxpdHktYmFzZWQgc3lzdGVtIGFsbG93cyBzaGFy
ZWQtbWVtb3J5IGNvbW11bmljYXRpb25zCisgKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBkb21haW5z
LiBBIGdyYW50IHJlZmVyZW5jZSBhbHNvIGVuY2Fwc3VsYXRlcworICogdGhlIGRldGFpbHMgb2Yg
YSBzaGFyZWQgcGFnZSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGEgZG9tYWluIHRvCisgKiBrbm93
IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVzcyBvZiBhIHBhZ2UgaXQgaXMgc2hhcmluZy4gVGhpcyBt
YWtlcworICogaXQgcG9zc2libGUgdG8gc2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRoIGRvbWFp
bnMgcnVubmluZyBpbgorICogZnVsbHkgdmlydHVhbGlzZWQgbWVtb3J5LgorICovCisKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUgUkVQUkVTRU5U
QVRJT04KKyAqLworCisvKiBTb21lIHJvdWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5nIGFuZCB1
cGRhdGluZyBncmFudC10YWJsZSBlbnRyaWVzCisgKiBpbiBhIGNvbmN1cnJlbmN5LXNhZmUgbWFu
bmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgTGludXggY29udGFpbnMgYQorICogcmVmZXJlbmNl
IGltcGxlbWVudGF0aW9uIGZvciBndWVzdCBPU2VzIChkcml2ZXJzL3hlbi9ncmFudF90YWJsZS5j
LCBzZWUKKyAqIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZh
bGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jO2hiPUhFQUQK
KyAqCisgKiBOQi4gV01CIGlzIGEgbm8tb3Agb24gY3VycmVudC1nZW5lcmF0aW9uIHg4NiBwcm9j
ZXNzb3JzLiBIb3dldmVyLCBhCisgKiAgICAgY29tcGlsZXIgYmFycmllciB3aWxsIHN0aWxsIGJl
IHJlcXVpcmVkLgorICoKKyAqIEludHJvZHVjaW5nIGEgdmFsaWQgZW50cnkgaW50byB0aGUgZ3Jh
bnQgdGFibGU6CisgKiAgMS4gV3JpdGUgZW50LT5kb21pZC4KKyAqICAyLiBXcml0ZSBlbnQtPmZy
YW1lOgorICogICAgICBHVEZfcGVybWl0X2FjY2VzczogICBGcmFtZSB0byB3aGljaCBhY2Nlc3Mg
aXMgcGVybWl0dGVkLgorICogICAgICBHVEZfYWNjZXB0X3RyYW5zZmVyOiBQc2V1ZG8tcGh5cyBm
cmFtZSBzbG90IGJlaW5nIGZpbGxlZCBieSBuZXcKKyAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUsIG9yIHplcm8gaWYgbm9uZS4KKyAqICAzLiBXcml0ZSBtZW1vcnkgYmFycmllciAo
V01CKS4KKyAqICA0LiBXcml0ZSBlbnQtPmZsYWdzLCBpbmMuIHZhbGlkIHR5cGUuCisgKgorICog
SW52YWxpZGF0aW5nIGFuIHVudXNlZCBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToKKyAqICAxLiBm
bGFncyA9IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3Jl
YWRpbmd8R1RGX3dyaXRpbmcpKS4KKyAqICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNhZmUgQ01Q
WENIRygmZW50LT5mbGFncywgZmxhZ3MsIDApLgorICogIE5CLiBObyBuZWVkIGZvciBXTUIgYXMg
cmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgorICogICAg
ICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3Ry
bC1kZXAgd3JpdGVzLgorICoKKyAqIEludmFsaWRhdGluZyBhbiBpbi11c2UgR1RGX3Blcm1pdF9h
Y2Nlc3MgZW50cnk6CisgKiAgVGhpcyBjYW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBh
c3Npc3RhbmNlIGZyb20gdGhlIGRvbWFpbiBjb250cm9sbGVyCisgKiAgd2hpY2ggY2FuIHNldCBh
IHRpbWVvdXQgb24gdGhlIHVzZSBvZiBhIGdyYW50IGVudHJ5IGFuZCB0YWtlIG5lY2Vzc2FyeQor
ICogIGFjdGlvbi4gKE5CLiBUaGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQhKS4KKyAqCisgKiBJ
bnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6CisgKiAgMS4g
ZmxhZ3MgPSBlbnQtPmZsYWdzLgorICogIDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYgR1RGX3Ry
YW5zZmVyX2NvbW1pdHRlZCkuIFsqXQorICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBD
TVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCisgKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBh
cyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCisgKiAg
ICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBj
dHJsLWRlcCB3cml0ZXMuCisgKiAgWypdIElmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQgaXMgc2V0
IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlzICdjb21taXR0ZWQnLgorICogICAgICBUaGUgZ3Vlc3Qg
bXVzdCAvbm90LyBtb2RpZnkgdGhlIGdyYW50IGVudHJ5IHVudGlsIHRoZSBhZGRyZXNzIG9mIHRo
ZQorICogICAgICB0cmFuc2ZlcnJlZCBmcmFtZSBpcyB3cml0dGVuLiBJdCBpcyBzYWZlIGZvciB0
aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5nCisgKiAgICAgIGZvciB0aGlzIHRvIG9jY3VyIChkZXRl
Y3QgYnkgb2JzZXJ2aW5nIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgaW4KKyAqICAgICAgZW50LT5m
bGFncykuCisgKgorICogSW52YWxpZGF0aW5nIGEgY29tbWl0dGVkIEdURl9hY2NlcHRfdHJhbnNm
ZXIgZW50cnk6CisgKiAgMS4gV2FpdCBmb3IgKGVudC0+ZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29t
cGxldGVkKS4KKyAqCisgKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gd3JpdGFi
bGUgdG8gcmVhZC1vbmx5OgorICogIFVzZSBTTVAtc2FmZSBDTVBYQ0hHIHRvIHNldCBHVEZfcmVh
ZG9ubHksIHdoaWxlIGNoZWNraW5nICFHVEZfd3JpdGluZy4KKyAqCisgKiBDaGFuZ2luZyBhIEdU
Rl9wZXJtaXRfYWNjZXNzIGZyb20gcmVhZC1vbmx5IHRvIHdyaXRhYmxlOgorICogIFVzZSBTTVAt
c2FmZSBiaXQtc2V0dGluZyBpbnN0cnVjdGlvbi4KKyAqLworCisvKgorICogUmVmZXJlbmNlIHRv
IGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUuCisgKi8K
K3R5cGVkZWYgdWludDMyX3QgZ3JhbnRfcmVmX3Q7CisKKy8qCisgKiBBIGdyYW50IHRhYmxlIGNv
bXByaXNlcyBhIHBhY2tlZCBhcnJheSBvZiBncmFudCBlbnRyaWVzIGluIG9uZSBvciBtb3JlCisg
KiBwYWdlIGZyYW1lcyBzaGFyZWQgYmV0d2VlbiBYZW4gYW5kIGEgZ3Vlc3QuCisgKiBbWEVOXTog
VGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmluZyBndWVz
dC4KKyAqIFtHU1RdOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgdGhlIGd1ZXN0IGFuZCByZWFk
IGJ5IFhlbi4KKyAqLworCisvKgorICogVmVyc2lvbiAxIG9mIHRoZSBncmFudCB0YWJsZSBlbnRy
eSBzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5lZCBwdXJlbHkKKyAqIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hvdWxkIHVzZSB2ZXJzaW9uIDIuCisgKi8KKyNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwYQorI2RlZmluZSBncmFudF9lbnRyeV92
MSBncmFudF9lbnRyeQorI2RlZmluZSBncmFudF9lbnRyeV92MV90IGdyYW50X2VudHJ5X3QKKyNl
bmRpZgorc3RydWN0IGdyYW50X2VudHJ5X3YxIHsKKyAgICAvKiBHVEZfeHh4OiB2YXJpb3VzIHR5
cGUgYW5kIGZsYWcgaW5mb3JtYXRpb24uICBbWEVOLEdTVF0gKi8KKyAgICB1aW50MTZfdCBmbGFn
czsKKyAgICAvKiBUaGUgZG9tYWluIGJlaW5nIGdyYW50ZWQgZm9yZWlnbiBwcml2aWxlZ2VzLiBb
R1NUXSAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAgIC8qCisgICAgICogR1RGX3Blcm1pdF9h
Y2Nlc3M6IEZyYW1lIHRoYXQgQGRvbWlkIGlzIGFsbG93ZWQgdG8gbWFwIGFuZCBhY2Nlc3MuIFtH
U1RdCisgICAgICogR1RGX2FjY2VwdF90cmFuc2ZlcjogRnJhbWUgd2hvc2Ugb3duZXJzaGlwIHRy
YW5zZmVycmVkIGJ5IEBkb21pZC4gW1hFTl0KKyAgICAgKi8KKyAgICB1aW50MzJfdCBmcmFtZTsK
K307Cit0eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeV92MV90OworCisv
KiBUaGUgZmlyc3QgZmV3IGdyYW50IHRhYmxlIGVudHJpZXMgd2lsbCBiZSBwcmVzZXJ2ZWQgYWNy
b3NzIGdyYW50IHRhYmxlCisgKiB2ZXJzaW9uIGNoYW5nZXMgYW5kIG1heSBiZSBwcmUtcG9wdWxh
dGVkIGF0IGRvbWFpbiBjcmVhdGlvbiBieSB0b29scy4KKyAqLworI2RlZmluZSBHTlRUQUJfTlJf
UkVTRVJWRURfRU5UUklFUyAgICAgOAorI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfQ09OU09MRSAg
ICAgICAgMAorI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfWEVOU1RPUkUgICAgICAgMQorCisvKgor
ICogVHlwZSBvZiBncmFudCBlbnRyeS4KKyAqICBHVEZfaW52YWxpZDogVGhpcyBncmFudCBlbnRy
eSBncmFudHMgbm8gcHJpdmlsZWdlcy4KKyAqICBHVEZfcGVybWl0X2FjY2VzczogQWxsb3cgQGRv
bWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1lLgorICogIEdURl9hY2NlcHRfdHJhbnNmZXI6IEFsbG93
IEBkb21pZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2Ygb25lIHBhZ2UgZnJhbWUKKyAqICAgICAg
ICAgICAgICAgICAgICAgICB0byB0aGlzIGd1ZXN0LiBYZW4gd3JpdGVzIHRoZSBwYWdlIG51bWJl
ciB0byBAZnJhbWUuCisgKiAgR1RGX3RyYW5zaXRpdmU6IEFsbG93IEBkb21pZCB0byB0cmFuc2l0
aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ugb2YKKyAqICAgICAgICAgICAgICAgICAgQHRyYW5zX2dy
YW50IGluIEB0cmFuc19kb21pZC4gIE5vIG1hcHBpbmdzIGFyZSBhbGxvd2VkLgorICovCisjZGVm
aW5lIEdURl9pbnZhbGlkICAgICAgICAgKDBVPDwwKQorI2RlZmluZSBHVEZfcGVybWl0X2FjY2Vz
cyAgICgxVTw8MCkKKyNkZWZpbmUgR1RGX2FjY2VwdF90cmFuc2ZlciAoMlU8PDApCisjZGVmaW5l
IEdURl90cmFuc2l0aXZlICAgICAgKDNVPDwwKQorI2RlZmluZSBHVEZfdHlwZV9tYXNrICAgICAg
ICgzVTw8MCkKKworLyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfcGVybWl0X2FjY2Vzcy4KKyAqICBH
VEZfcmVhZG9ubHk6IFJlc3RyaWN0IEBkb21pZCB0byByZWFkLW9ubHkgbWFwcGluZ3MgYW5kIGFj
Y2Vzc2VzLiBbR1NUXQorICogIEdURl9yZWFkaW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkg
bWFwcGVkIGZvciByZWFkaW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAqICBHVEZfd3JpdGluZzogR3Jh
bnQgZW50cnkgaXMgY3VycmVudGx5IG1hcHBlZCBmb3Igd3JpdGluZyBieSBAZG9taWQuIFtYRU5d
CisgKiAgR1RGX1BBVCwgR1RGX1BXVCwgR1RGX1BDRDogKHg4NikgY2FjaGUgYXR0cmlidXRlIGZs
YWdzIGZvciB0aGUgZ3JhbnQgW0dTVF0KKyAqICBHVEZfc3ViX3BhZ2U6IEdyYW50IGFjY2VzcyB0
byBvbmx5IGEgc3VicmFuZ2Ugb2YgdGhlIHBhZ2UuICBAZG9taWQKKyAqICAgICAgICAgICAgICAg
IHdpbGwgb25seSBiZSBhbGxvd2VkIHRvIGNvcHkgZnJvbSB0aGUgZ3JhbnQsIGFuZCBub3QKKyAq
ICAgICAgICAgICAgICAgIG1hcCBpdC4gW0dTVF0KKyAqLworI2RlZmluZSBfR1RGX3JlYWRvbmx5
ICAgICAgICgyKQorI2RlZmluZSBHVEZfcmVhZG9ubHkgICAgICAgICgxVTw8X0dURl9yZWFkb25s
eSkKKyNkZWZpbmUgX0dURl9yZWFkaW5nICAgICAgICAoMykKKyNkZWZpbmUgR1RGX3JlYWRpbmcg
ICAgICAgICAoMVU8PF9HVEZfcmVhZGluZykKKyNkZWZpbmUgX0dURl93cml0aW5nICAgICAgICAo
NCkKKyNkZWZpbmUgR1RGX3dyaXRpbmcgICAgICAgICAoMVU8PF9HVEZfd3JpdGluZykKKyNkZWZp
bmUgX0dURl9QV1QgICAgICAgICAgICAoNSkKKyNkZWZpbmUgR1RGX1BXVCAgICAgICAgICAgICAo
MVU8PF9HVEZfUFdUKQorI2RlZmluZSBfR1RGX1BDRCAgICAgICAgICAgICg2KQorI2RlZmluZSBH
VEZfUENEICAgICAgICAgICAgICgxVTw8X0dURl9QQ0QpCisjZGVmaW5lIF9HVEZfUEFUICAgICAg
ICAgICAgKDcpCisjZGVmaW5lIEdURl9QQVQgICAgICAgICAgICAgKDFVPDxfR1RGX1BBVCkKKyNk
ZWZpbmUgX0dURl9zdWJfcGFnZSAgICAgICAoOCkKKyNkZWZpbmUgR1RGX3N1Yl9wYWdlICAgICAg
ICAoMVU8PF9HVEZfc3ViX3BhZ2UpCisKKy8qCisgKiBTdWJmbGFncyBmb3IgR1RGX2FjY2VwdF90
cmFuc2ZlcjoKKyAqICBHVEZfdHJhbnNmZXJfY29tbWl0dGVkOiBYZW4gc2V0cyB0aGlzIGZsYWcg
dG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBjb21taXR0ZWQKKyAqICAgICAgdG8gdHJhbnNmZXJyaW5n
IG93bmVyc2hpcCBvZiBhIHBhZ2UgZnJhbWUuIFdoZW4gYSBndWVzdCBzZWVzIHRoaXMgZmxhZwor
ICogICAgICBpdCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgR1RGX3Ry
YW5zZmVyX2NvbXBsZXRlZCBpcworICogICAgICBzZXQgYnkgWGVuLgorICogIEdURl90cmFuc2Zl
cl9jb21wbGV0ZWQ6IEl0IGlzIHNhZmUgZm9yIHRoZSBndWVzdCB0byBzcGluLXdhaXQgb24gdGhp
cyBmbGFnCisgKiAgICAgIGFmdGVyIHJlYWRpbmcgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZC4gWGVu
IHdpbGwgYWx3YXlzIHdyaXRlIHRoZSBmcmFtZQorICogICAgICBhZGRyZXNzLCBmb2xsb3dlZCBi
eSBPUmluZyB0aGlzIGZsYWcsIGluIGEgdGltZWx5IG1hbm5lci4KKyAqLworI2RlZmluZSBfR1RG
X3RyYW5zZmVyX2NvbW1pdHRlZCAoMikKKyNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAg
KDFVPDxfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkKKyNkZWZpbmUgX0dURl90cmFuc2Zlcl9jb21w
bGV0ZWQgKDMpCisjZGVmaW5lIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgICgxVTw8X0dURl90cmFu
c2Zlcl9jb21wbGV0ZWQpCisKKy8qCisgKiBWZXJzaW9uIDIgZ3JhbnQgdGFibGUgZW50cmllcy4g
IFRoZXNlIGZ1bGZpbCB0aGUgc2FtZSByb2xlIGFzCisgKiB2ZXJzaW9uIDEgZW50cmllcywgYnV0
IGNhbiByZXByZXNlbnQgbW9yZSBjb21wbGljYXRlZCBvcGVyYXRpb25zLgorICogQW55IGdpdmVu
IGRvbWFpbiB3aWxsIGhhdmUgZWl0aGVyIGEgdmVyc2lvbiAxIG9yIGEgdmVyc2lvbiAyIHRhYmxl
LAorICogYW5kIGV2ZXJ5IGVudHJ5IGluIHRoZSB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIHZlcnNp
b24uCisgKgorICogVGhlIGludGVyZmFjZSBieSB3aGljaCBkb21haW5zIHVzZSBncmFudCByZWZl
cmVuY2VzIGRvZXMgbm90IGRlcGVuZAorICogb24gdGhlIGdyYW50IHRhYmxlIHZlcnNpb24gaW4g
dXNlIGJ5IHRoZSBvdGhlciBkb21haW4uCisgKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lP
Tl9fID49IDB4MDAwMzAyMGEKKy8qCisgKiBWZXJzaW9uIDEgYW5kIHZlcnNpb24gMiBncmFudCBl
bnRyaWVzIHNoYXJlIGEgY29tbW9uIHByZWZpeC4gIFRoZQorICogZmllbGRzIG9mIHRoZSBwcmVm
aXggYXJlIGRvY3VtZW50ZWQgYXMgcGFydCBvZiBzdHJ1Y3QKKyAqIGdyYW50X2VudHJ5X3YxLgor
ICovCitzdHJ1Y3QgZ3JhbnRfZW50cnlfaGVhZGVyIHsKKyAgICB1aW50MTZfdCBmbGFnczsKKyAg
ICBkb21pZF90ICBkb21pZDsKK307Cit0eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIg
Z3JhbnRfZW50cnlfaGVhZGVyX3Q7CisKKy8qCisgKiBWZXJzaW9uIDIgb2YgdGhlIGdyYW50IGVu
dHJ5IHN0cnVjdHVyZS4KKyAqLwordW5pb24gZ3JhbnRfZW50cnlfdjIgeworICAgIGdyYW50X2Vu
dHJ5X2hlYWRlcl90IGhkcjsKKworICAgIC8qCisgICAgICogVGhpcyBtZW1iZXIgaXMgdXNlZCBm
b3IgVjEtc3R5bGUgZnVsbCBwYWdlIGdyYW50cywgd2hlcmUgZWl0aGVyOgorICAgICAqCisgICAg
ICogLS0gaGRyLnR5cGUgaXMgR1RGX2FjY2VwdF90cmFuc2Zlciwgb3IKKyAgICAgKiAtLSBoZHIu
dHlwZSBpcyBHVEZfcGVybWl0X2FjY2VzcyBhbmQgR1RGX3N1Yl9wYWdlIGlzIG5vdCBzZXQuCisg
ICAgICoKKyAgICAgKiBJbiB0aGF0IGNhc2UsIHRoZSBmcmFtZSBmaWVsZCBoYXMgdGhlIHNhbWUg
c2VtYW50aWNzIGFzIHRoZQorICAgICAqIGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIFYx
IGVudHJ5IHN0cnVjdHVyZS4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBncmFudF9l
bnRyeV9oZWFkZXJfdCBoZHI7CisgICAgICAgIHVpbnQzMl90IHBhZDA7CisgICAgICAgIHVpbnQ2
NF90IGZyYW1lOworICAgIH0gZnVsbF9wYWdlOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgZ3Jh
bnQgdHlwZSBpcyBHVEZfZ3JhbnRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgc2V0LAorICAg
ICAqIEBkb21pZCBpcyBhbGxvd2VkIHRvIGFjY2VzcyBieXRlcyBbQHBhZ2Vfb2ZmLEBwYWdlX29m
ZitAbGVuZ3RoKQorICAgICAqIGluIGZyYW1lIEBmcmFtZS4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qg
eworICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7CisgICAgICAgIHVpbnQxNl90IHBh
Z2Vfb2ZmOworICAgICAgICB1aW50MTZfdCBsZW5ndGg7CisgICAgICAgIHVpbnQ2NF90IGZyYW1l
OworICAgIH0gc3ViX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCBpcyBHVEZf
dHJhbnNpdGl2ZSwgQGRvbWlkIGlzIGFsbG93ZWQgdG8gdXNlIHRoZQorICAgICAqIGdyYW50IEBn
cmVmIGluIGRvbWFpbiBAdHJhbnNfZG9taWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKKyAgICAg
KiBkb21haW4uICBPYnZpb3VzbHksIHRoZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJlIGNvbXBh
dGlibGUKKyAgICAgKiB3aXRoIHRoZSBvcmlnaW5hbCBncmFudC4KKyAgICAgKgorICAgICAqIFRo
ZSBjdXJyZW50IHZlcnNpb24gb2YgWGVuIGRvZXMgbm90IGFsbG93IHRyYW5zaXRpdmUgZ3JhbnRz
CisgICAgICogdG8gYmUgbWFwcGVkLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGdy
YW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAgICAgZG9taWRfdCB0cmFuc19kb21pZDsKKyAg
ICAgICAgdWludDE2X3QgcGFkMDsKKyAgICAgICAgZ3JhbnRfcmVmX3QgZ3JlZjsKKyAgICB9IHRy
YW5zaXRpdmU7CisKKyAgICB1aW50MzJfdCBfX3NwYWNlcls0XTsgLyogUGFkIHRvIGEgcG93ZXIg
b2YgdHdvICovCit9OwordHlwZWRlZiB1bmlvbiBncmFudF9lbnRyeV92MiBncmFudF9lbnRyeV92
Ml90OworCit0eXBlZGVmIHVpbnQxNl90IGdyYW50X3N0YXR1c190OworCisjZW5kaWYgLyogX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIEdSQU5UIFRBQkxFIFFVRVJJRVMgQU5EIFVTRVMKKyAqLworCisvKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFu
dF90YWJsZV9vcCBjbWQsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
cywKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCisg
KiBgCisgKgorICogQGFyZ3MgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGEgcGVyLWNvbW1hbmQgZGF0
YSBzdHJ1Y3R1cmUuIFRoZSBhcnJheQorICogaGFzIEBjb3VudCBtZW1iZXJzCisgKi8KKworLyog
YCBlbnVtIGdyYW50X3RhYmxlX29wIHsgLy8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyog
Ki8KKyNkZWZpbmUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiAgICAgICAgMAorI2RlZmluZSBHTlRU
QUJPUF91bm1hcF9ncmFudF9yZWYgICAgICAxCisjZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxl
ICAgICAgICAgIDIKKyNkZWZpbmUgR05UVEFCT1BfZHVtcF90YWJsZSAgICAgICAgICAgMworI2Rl
ZmluZSBHTlRUQUJPUF90cmFuc2ZlciAgICAgICAgICAgICA0CisjZGVmaW5lIEdOVFRBQk9QX2Nv
cHkgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgR05UVEFCT1BfcXVlcnlfc2l6ZSAgICAgICAg
ICAgNgorI2RlZmluZSBHTlRUQUJPUF91bm1hcF9hbmRfcmVwbGFjZSAgICA3CisjaWYgX19YRU5f
SU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisjZGVmaW5lIEdOVFRBQk9QX3NldF92
ZXJzaW9uICAgICAgICAgIDgKKyNkZWZpbmUgR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXMgICAg
OQorI2RlZmluZSBHTlRUQUJPUF9nZXRfdmVyc2lvbiAgICAgICAgICAxMAorI2RlZmluZSBHTlRU
QUJPUF9zd2FwX2dyYW50X3JlZgkgICAgICAxMQorI2RlZmluZSBHTlRUQUJPUF9jYWNoZV9mbHVz
aAkgICAgICAxMgorI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KKy8qIGAg
fSAqLworCisvKgorICogSGFuZGxlIHRvIHRyYWNrIGEgbWFwcGluZyBjcmVhdGVkIHZpYSBhIGdy
YW50IHJlZmVyZW5jZS4KKyAqLwordHlwZWRlZiB1aW50MzJfdCBncmFudF9oYW5kbGVfdDsKKwor
LyoKKyAqIEdOVFRBQk9QX21hcF9ncmFudF9yZWY6IE1hcCB0aGUgZ3JhbnQgZW50cnkgKDxkb20+
LDxyZWY+KSBmb3IgYWNjZXNzCisgKiBieSBkZXZpY2VzIGFuZC9vciBob3N0IENQVXMuIElmIHN1
Y2Nlc3NmdWwsIDxoYW5kbGU+IGlzIGEgdHJhY2tpbmcgbnVtYmVyCisgKiB0aGF0IG11c3QgYmUg
cHJlc2VudGVkIGxhdGVyIHRvIGRlc3Ryb3kgdGhlIG1hcHBpbmcocykuIE9uIGVycm9yLCA8aGFu
ZGxlPgorICogaXMgYSBuZWdhdGl2ZSBzdGF0dXMgY29kZS4KKyAqIE5PVEVTOgorICogIDEuIElm
IEdOVE1BUF9kZXZpY2VfbWFwIGlzIHNwZWNpZmllZCB0aGVuIDxkZXZfYnVzX2FkZHI+IGlzIHRo
ZSBhZGRyZXNzCisgKiAgICAgdmlhIHdoaWNoIEkvTyBkZXZpY2VzIG1heSBhY2Nlc3MgdGhlIGdy
YW50ZWQgZnJhbWUuCisgKiAgMi4gSWYgR05UTUFQX2hvc3RfbWFwIGlzIHNwZWNpZmllZCB0aGVu
IGEgbWFwcGluZyB3aWxsIGJlIGFkZGVkIGF0CisgKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFs
IGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQKKyAqICAgICBhIFBU
RSBhdCB0aGUgc3BlY2lmaWVkIG1hY2hpbmUgYWRkcmVzcy4gIFRoZSB0eXBlIG9mIG1hcHBpbmcg
dG8KKyAqICAgICBwZXJmb3JtIGlzIHNlbGVjdGVkIHRocm91Z2ggdGhlIEdOVE1BUF9jb250YWlu
c19wdGUgZmxhZywgYW5kIHRoZQorICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0
X2FkZHI+LgorICogIDMuIE1hcHBpbmdzIHNob3VsZCBvbmx5IGJlIGRlc3Ryb3llZCB2aWEgR05U
VEFCT1BfdW5tYXBfZ3JhbnRfcmVmLiBJZiBhCisgKiAgICAgaG9zdCBtYXBwaW5nIGlzIGRlc3Ry
b3llZCBieSBvdGhlciBtZWFucyB0aGVuIGl0IGlzICpOT1QqIGd1YXJhbnRlZWQKKyAqICAgICB0
byBiZSBhY2NvdW50ZWQgdG8gdGhlIGNvcnJlY3QgZ3JhbnQgcmVmZXJlbmNlIQorICovCitzdHJ1
Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAg
dWludDY0X3QgaG9zdF9hZGRyOworICAgIHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAgIC8q
IEdOVE1BUF8qICovCisgICAgZ3JhbnRfcmVmX3QgcmVmOworICAgIGRvbWlkX3QgIGRvbTsKKyAg
ICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAg
ICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsK
KyAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX21h
cF9ncmFudF9yZWYgZ250dGFiX21hcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKGdudHRhYl9tYXBfZ3JhbnRfcmVmX3QpOworCisvKgorICogR05UVEFCT1BfdW5tYXBfZ3Jh
bnRfcmVmOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICog
dHJhY2tlZCBieSA8aGFuZGxlPi4gSWYgPGhvc3RfYWRkcj4gb3IgPGRldl9idXNfYWRkcj4gaXMg
emVybywgdGhhdAorICogZmllbGQgaXMgaWdub3JlZC4gSWYgbm9uLXplcm8sIHRoZXkgbXVzdCBy
ZWZlciB0byBhIGRldmljZS9ob3N0IG1hcHBpbmcKKyAqIHRoYXQgaXMgdHJhY2tlZCBieSA8aGFu
ZGxlPgorICogTk9URVM6CisgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4gdW5kZWZpbmVk
IG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKKyAqICAgICB0cmFja2VkIGJ5IDxoYW5k
bGU+LgorICogIDMuIEFmdGVyIGV4ZWN1dGluZyBhIGJhdGNoIG9mIHVubWFwcywgaXQgaXMgZ3Vh
cmFudGVlZCB0aGF0IG5vIHN0YWxlCisgKiAgICAgbWFwcGluZ3Mgd2lsbCByZW1haW4gaW4gdGhl
IGRldmljZSBvciBob3N0IFRMQnMuCisgKi8KK3N0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVm
IHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKKyAg
ICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7CisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAg
IC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3Vu
bWFwX2dyYW50X3JlZiBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmX3Q7CitERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmX3QpOworCisvKgorICogR05UVEFCT1Bfc2V0
dXBfdGFibGU6IFNldCB1cCBhIGdyYW50IHRhYmxlIGZvciA8ZG9tPiBjb21wcmlzaW5nIGF0IGxl
YXN0CisgKiA8bnJfZnJhbWVzPiBwYWdlcy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRl
biB0byB0aGUgPGZyYW1lX2xpc3Q+LgorICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJl
IHdyaXR0ZW4sIGV2ZW4gaWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KKyAqIE5PVEVTOgorICogIDEu
IDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3Vm
ZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NF
TEYuCisgKiAgMy4gWGVuIG1heSBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gYSBzaW5nbGUgZ3JhbnQt
dGFibGUgcGFnZSBwZXIgZG9tYWluLgorICovCitzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIHsK
KyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgIGRvbTsKKyAgICB1aW50MzJf
dCBucl9mcmFtZXM7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgc3Rh
dHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KKyNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAorICAgIFhFTl9HVUVTVF9IQU5ETEUodWxv
bmcpIGZyYW1lX2xpc3Q7CisjZWxzZQorICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Bmbl90KSBm
cmFtZV9saXN0OworI2VuZGlmCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxl
IGdudHRhYl9zZXR1cF90YWJsZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3Nl
dHVwX3RhYmxlX3QpOworCisvKgorICogR05UVEFCT1BfZHVtcF90YWJsZTogRHVtcCB0aGUgY29u
dGVudHMgb2YgdGhlIGdyYW50IHRhYmxlIHRvIHRoZQorICogeGVuIGNvbnNvbGUuIERlYnVnZ2lu
ZyB1c2Ugb25seS4KKyAqLworc3RydWN0IGdudHRhYl9kdW1wX3RhYmxlIHsKKyAgICAvKiBJTiBw
YXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgZG9tOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAq
LworICAgIGludDE2X3Qgc3RhdHVzOyAgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3Rh
dHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgZ250dGFiX2R1bXBf
dGFibGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9kdW1wX3RhYmxlX3QpOwor
CisvKgorICogR05UVEFCT1BfdHJhbnNmZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRv
IGEgZm9yZWlnbiBkb21haW4uIFRoZQorICogZm9yZWlnbiBkb21haW4gaGFzIHByZXZpb3VzbHkg
cmVnaXN0ZXJlZCBpdHMgaW50ZXJlc3QgaW4gdGhlIHRyYW5zZmVyIHZpYQorICogPGRvbWlkLCBy
ZWY+LgorICoKKyAqIE5vdGUgdGhhdCwgZXZlbiBpZiB0aGUgdHJhbnNmZXIgZmFpbHMsIHRoZSBz
cGVjaWZpZWQgcGFnZSBubyBMT05HX1BUUmVyIGJlbG9uZ3MKKyAqIHRvIHRoZSBjYWxsaW5nIGRv
bWFpbiAqdW5sZXNzKiB0aGUgZXJyb3IgaXMgR05UU1RfYmFkX3BhZ2UuCisgKi8KK3N0cnVjdCBn
bnR0YWJfdHJhbnNmZXIgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgeGVuX3Bmbl90
ICAgICBtZm47CisgICAgZG9taWRfdCAgICAgICBkb21pZDsKKyAgICBncmFudF9yZWZfdCAgIHJl
ZjsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICAgICAgIHN0YXR1czsK
K307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdHJhbnNmZXIgZ250dGFiX3RyYW5zZmVyX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdHJhbnNmZXJfdCk7CisKKworLyoKKyAqIEdO
VFRBQk9QX2NvcHk6IEh5cGVydmlzb3IgYmFzZWQgY29weQorICogc291cmNlIGFuZCBkZXN0aW5h
dGlvbnMgY2FuIGJlIGVpdGhlcnMgTUZOcyBvciwgZm9yIGZvcmVpZ24gZG9tYWlucywKKyAqIGdy
YW50IHJlZmVyZW5jZXMuIHRoZSBmb3JlaWduIGRvbWFpbiBoYXMgdG8gZ3JhbnQgcmVhZC93cml0
ZSBhY2Nlc3MKKyAqIGluIGl0cyBncmFudCB0YWJsZS4KKyAqCisgKiBUaGUgZmxhZ3Mgc3BlY2lm
eSB3aGF0IHR5cGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgYXJlIChlaXRoZXIgTUZOCisgKiBv
ciBncmFudCByZWZlcmVuY2UpLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGNhbiBhbHNvIGJlIHVz
ZWQgdG8gY29weSBkYXRhIGJldHdlZW4gdHdvIGRvbWFpbnMKKyAqIHZpYSBhIHRoaXJkIHBhcnR5
IGlmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvbWFpbnMgaGFkIHByZXZpb3VzbHkKKyAq
IGdyYW50IGFwcHJvcHJpYXRlIGFjY2VzcyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFy
dHkuCisgKgorICogc291cmNlX29mZnNldCBzcGVjaWZpZXMgYW4gb2Zmc2V0IGluIHRoZSBzb3Vy
Y2UgZnJhbWUsIGRlc3Rfb2Zmc2V0CisgKiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUg
YW5kICBsZW4gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKKyAqIGJ5dGVzIHRvIGJlIGNvcGllZC4K
KyAqLworCisjZGVmaW5lIF9HTlRDT1BZX3NvdXJjZV9ncmVmICAgICAgKDApCisjZGVmaW5lIEdO
VENPUFlfc291cmNlX2dyZWYgICAgICAgKDE8PF9HTlRDT1BZX3NvdXJjZV9ncmVmKQorI2RlZmlu
ZSBfR05UQ09QWV9kZXN0X2dyZWYgICAgICAgICgxKQorI2RlZmluZSBHTlRDT1BZX2Rlc3RfZ3Jl
ZiAgICAgICAgICgxPDxfR05UQ09QWV9kZXN0X2dyZWYpCisKK3N0cnVjdCBnbnR0YWJfY29weSB7
CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBzdHJ1Y3QgZ250dGFiX2NvcHlfcHRyIHsK
KyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOworICAgICAgICAg
ICAgeGVuX3Bmbl90ICAgZ21mbjsKKyAgICAgICAgfSB1OworICAgICAgICBkb21pZF90ICBkb21p
ZDsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0OworICAgIH0gc291cmNlLCBkZXN0OworICAgIHVp
bnQxNl90ICAgICAgbGVuOworICAgIHVpbnQxNl90ICAgICAgZmxhZ3M7ICAgICAgICAgIC8qIEdO
VENPUFlfKiAqLworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgICAgICAg
c3RhdHVzOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9jb3B5ICBnbnR0YWJfY29weV90Owor
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2NvcHlfdCk7CisKKy8qCisgKiBHTlRUQUJP
UF9xdWVyeV9zaXplOiBRdWVyeSB0aGUgY3VycmVudCBhbmQgbWF4aW11bSBzaXplcyBvZiB0aGUg
c2hhcmVkCisgKiBncmFudCB0YWJsZS4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBz
cGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZp
bGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCisgKi8KK3N0cnVj
dCBnbnR0YWJfcXVlcnlfc2l6ZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBkb21p
ZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJfZnJh
bWVzOworICAgIHVpbnQzMl90IG1heF9ucl9mcmFtZXM7CisgICAgaW50MTZfdCAgc3RhdHVzOyAg
ICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVj
dCBnbnR0YWJfcXVlcnlfc2l6ZSBnbnR0YWJfcXVlcnlfc2l6ZV90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoZ250dGFiX3F1ZXJ5X3NpemVfdCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9h
bmRfcmVwbGFjZTogRGVzdHJveSBvbmUgb3IgbW9yZSBncmFudC1yZWZlcmVuY2UgbWFwcGluZ3MK
KyAqIHRyYWNrZWQgYnkgPGhhbmRsZT4gYnV0IGF0b21pY2FsbHkgcmVwbGFjZSB0aGUgcGFnZSB0
YWJsZSBlbnRyeSB3aXRoIG9uZQorICogcG9pbnRpbmcgdG8gdGhlIG1hY2hpbmUgYWRkcmVzcyB1
bmRlciA8bmV3X2FkZHI+LiAgPG5ld19hZGRyPiB3aWxsIGJlCisgKiByZWRpcmVjdGVkIHRvIHRo
ZSBudWxsIGVudHJ5LgorICogTk9URVM6CisgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4g
dW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKKyAqICAgICB0cmFja2Vk
IGJ5IDxoYW5kbGU+LgorICogIDIuIEFmdGVyIGV4ZWN1dGluZyBhIGJhdGNoIG9mIHVubWFwcywg
aXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIHN0YWxlCisgKiAgICAgbWFwcGluZ3Mgd2lsbCByZW1h
aW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCisgKi8KK3N0cnVjdCBnbnR0YWJfdW5tYXBf
YW5kX3JlcGxhY2UgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDY0X3QgaG9z
dF9hZGRyOworICAgIHVpbnQ2NF90IG5ld19hZGRyOworICAgIGdyYW50X2hhbmRsZV90IGhhbmRs
ZTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAg
ICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdu
dHRhYl91bm1hcF9hbmRfcmVwbGFjZSBnbnR0YWJfdW5tYXBfYW5kX3JlcGxhY2VfdDsKK0RFRklO
RV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZV90KTsKKworI2lmIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQorLyoKKyAqIEdOVFRBQk9QX3Nl
dF92ZXJzaW9uOiBSZXF1ZXN0IGEgcGFydGljdWxhciB2ZXJzaW9uIG9mIHRoZSBncmFudAorICog
dGFibGUgc2hhcmVkIHRhYmxlIHN0cnVjdHVyZS4gIFRoaXMgb3BlcmF0aW9uIGNhbiBvbmx5IGJl
IHBlcmZvcm1lZAorICogb25jZSBpbiBhbnkgZ2l2ZW4gZG9tYWluLiAgSXQgbXVzdCBiZSBwZXJm
b3JtZWQgYmVmb3JlIGFueSBncmFudHMKKyAqIGFyZSBhY3RpdmF0ZWQ7IG90aGVyd2lzZSwgdGhl
IGRvbWFpbiB3aWxsIGJlIHN0dWNrIHdpdGggdmVyc2lvbiAxLgorICogVGhlIG9ubHkgZGVmaW5l
ZCB2ZXJzaW9ucyBhcmUgMSBhbmQgMi4KKyAqLworc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiB7
CisgICAgLyogSU4vT1VUIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCB2ZXJzaW9uOworfTsK
K3R5cGVkZWYgc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiBnbnR0YWJfc2V0X3ZlcnNpb25fdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zZXRfdmVyc2lvbl90KTsKKworCisvKgor
ICogR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXM6IEdldCB0aGUgbGlzdCBvZiBmcmFtZXMgdXNl
ZCB0byBzdG9yZSBncmFudAorICogc3RhdHVzIGZvciA8ZG9tPi4gSW4gZ3JhbnQgZm9ybWF0IHZl
cnNpb24gMiwgdGhlIHN0YXR1cyBpcyBzZXBhcmF0ZWQKKyAqIGZyb20gdGhlIG90aGVyIHNoYXJl
ZCBncmFudCBmaWVsZHMgdG8gYWxsb3cgbW9yZSBlZmZpY2llbnQgc3luY2hyb25pemF0aW9uCisg
KiB1c2luZyBiYXJyaWVycyBpbnN0ZWFkIG9mIGF0b21pYyBjbXBleGNoIG9wZXJhdGlvbnMuCisg
KiA8bnJfZnJhbWVzPiBzcGVjaWZ5IHRoZSBzaXplIG9mIHZlY3RvciA8ZnJhbWVfbGlzdD4uCisg
KiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSByZXR1cm5lZCBpbiB0aGUgPGZyYW1lX2xpc3Q+Lgor
ICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHJldHVybmVkLCBldmVuIGlmIHRoZSB0
YWJsZSBpcyBsYXJnZXIuCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVk
IGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRv
bWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBET01JRF9TRUxGLgorICovCitzdHJ1Y3QgZ250dGFi
X2dldF9zdGF0dXNfZnJhbWVzIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQz
Ml90IG5yX2ZyYW1lczsKKyAgICBkb21pZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9z
dGF0dXMgKi8KKyAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ2NF90KSBmcmFtZV9saXN0OworfTsK
K3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyBnbnR0YWJfZ2V0X3N0YXR1
c19mcmFtZXNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfc3RhdHVzX2Zy
YW1lc190KTsKKworLyoKKyAqIEdOVFRBQk9QX2dldF92ZXJzaW9uOiBHZXQgdGhlIGdyYW50IHRh
YmxlIHZlcnNpb24gd2hpY2ggaXMgaW4KKyAqIGVmZmVjdCBmb3IgZG9tYWluIDxkb20+LgorICov
CitzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovCisg
ICAgZG9taWRfdCBkb207CisgICAgdWludDE2X3QgcGFkOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
ICovCisgICAgdWludDMyX3QgdmVyc2lvbjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfZ2V0
X3ZlcnNpb24gZ250dGFiX2dldF92ZXJzaW9uX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfZ2V0X3ZlcnNpb25fdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zd2FwX2dyYW50X3JlZjog
U3dhcCB0aGUgY29udGVudHMgb2YgdHdvIGdyYW50IGVudHJpZXMuCisgKi8KK3N0cnVjdCBnbnR0
YWJfc3dhcF9ncmFudF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBncmFudF9y
ZWZfdCByZWZfYTsKKyAgICBncmFudF9yZWZfdCByZWZfYjsKKyAgICAvKiBPVVQgcGFyYW1ldGVy
cyAqLworICAgIGludDE2X3Qgc3RhdHVzOyAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0
YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiBnbnR0YWJf
c3dhcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zd2FwX2dy
YW50X3JlZl90KTsKKworLyoKKyAqIElzc3VlIG9uZSBvciBtb3JlIGNhY2hlIG1haW50ZW5hbmNl
IG9wZXJhdGlvbnMgb24gYSBwb3J0aW9uIG9mIGEKKyAqIHBhZ2UgZ3JhbnRlZCB0byB0aGUgY2Fs
bGluZyBkb21haW4gYnkgYSBmb3JlaWduIGRvbWFpbi4KKyAqLworc3RydWN0IGdudHRhYl9jYWNo
ZV9mbHVzaCB7CisgICAgdW5pb24geworICAgICAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7Cisg
ICAgICAgIGdyYW50X3JlZl90IHJlZjsKKyAgICB9IGE7CisgICAgdWludDE2X3Qgb2Zmc2V0OyAv
KiBvZmZzZXQgZnJvbSBzdGFydCBvZiBncmFudCAqLworICAgIHVpbnQxNl90IGxlbmd0aDsgLyog
c2l6ZSB3aXRoaW4gdGhlIGdyYW50ICovCisjZGVmaW5lIEdOVFRBQl9DQUNIRV9DTEVBTiAgICAg
ICAgICAoMTw8MCkKKyNkZWZpbmUgR05UVEFCX0NBQ0hFX0lOVkFMICAgICAgICAgICgxPDwxKQor
I2RlZmluZSBHTlRUQUJfQ0FDSEVfU09VUkNFX0dSRUYgICAgKDE8PDMxKQorICAgIHVpbnQzMl90
IG9wOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9jYWNoZV9mbHVzaCBnbnR0YWJfY2FjaGVf
Zmx1c2hfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9jYWNoZV9mbHVzaF90KTsK
KworI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KKworLyoKKyAqIEJpdGZp
ZWxkIHZhbHVlcyBmb3IgZ250dGFiX21hcF9ncmFudF9yZWYuZmxhZ3MuCisgKi8KKyAvKiBNYXAg
dGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgSS9PIGRldmljZXMuICovCisjZGVmaW5lIF9H
TlRNQVBfZGV2aWNlX21hcCAgICAgICgwKQorI2RlZmluZSBHTlRNQVBfZGV2aWNlX21hcCAgICAg
ICAoMTw8X0dOVE1BUF9kZXZpY2VfbWFwKQorIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFj
Y2VzcyBieSBob3N0IENQVXMuICovCisjZGVmaW5lIF9HTlRNQVBfaG9zdF9tYXAgICAgICAgICgx
KQorI2RlZmluZSBHTlRNQVBfaG9zdF9tYXAgICAgICAgICAoMTw8X0dOVE1BUF9ob3N0X21hcCkK
KyAvKiBBY2Nlc3NlcyB0byB0aGUgZ3JhbnRlZCBmcmFtZSB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8g
cmVhZC1vbmx5IGFjY2Vzcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9yZWFkb25seSAgICAgICAgKDIp
CisjZGVmaW5lIEdOVE1BUF9yZWFkb25seSAgICAgICAgICgxPDxfR05UTUFQX3JlYWRvbmx5KQor
IC8qCisgICogR05UTUFQX2hvc3RfbWFwIHN1YmZsYWc6CisgICogIDAgPT4gVGhlIGhvc3QgbWFw
cGluZyBpcyB1c2FibGUgb25seSBieSB0aGUgZ3Vlc3QgT1MuCisgICogIDEgPT4gVGhlIGhvc3Qg
bWFwcGluZyBpcyB1c2FibGUgYnkgZ3Vlc3QgT1MgKyBjdXJyZW50IGFwcGxpY2F0aW9uLgorICAq
LworI2RlZmluZSBfR05UTUFQX2FwcGxpY2F0aW9uX21hcCAoMykKKyNkZWZpbmUgR05UTUFQX2Fw
cGxpY2F0aW9uX21hcCAgKDE8PF9HTlRNQVBfYXBwbGljYXRpb25fbWFwKQorCisgLyoKKyAgKiBH
TlRNQVBfY29udGFpbnNfcHRlIHN1YmZsYWc6CisgICogIDAgPT4gVGhpcyBtYXAgcmVxdWVzdCBj
b250YWlucyBhIGhvc3QgdmlydHVhbCBhZGRyZXNzLgorICAqICAxID0+IFRoaXMgbWFwIHJlcXVl
c3QgY29udGFpbnMgdGhlIG1hY2hpbmUgYWRkZXNzIG9mIHRoZSBQVEUgdG8gdXBkYXRlLgorICAq
LworI2RlZmluZSBfR05UTUFQX2NvbnRhaW5zX3B0ZSAgICAoNCkKKyNkZWZpbmUgR05UTUFQX2Nv
bnRhaW5zX3B0ZSAgICAgKDE8PF9HTlRNQVBfY29udGFpbnNfcHRlKQorCisjZGVmaW5lIF9HTlRN
QVBfY2FuX2ZhaWwgICAgICAgICg1KQorI2RlZmluZSBHTlRNQVBfY2FuX2ZhaWwgICAgICAgICAo
MTw8X0dOVE1BUF9jYW5fZmFpbCkKKworLyoKKyAqIEJpdHMgdG8gYmUgcGxhY2VkIGluIGd1ZXN0
IGtlcm5lbCBhdmFpbGFibGUgUFRFIGJpdHMgKGFyY2hpdGVjdHVyZQorICogZGVwZW5kZW50OyBv
bmx5IHN1cHBvcnRlZCB3aGVuIFhFTkZFQVRfZ250dGFiX21hcF9hdmFpbF9iaXRzIGlzIHNldCku
CisgKi8KKyNkZWZpbmUgX0dOVE1BUF9ndWVzdF9hdmFpbDAgICAgKDE2KQorI2RlZmluZSBHTlRN
QVBfZ3Vlc3RfYXZhaWxfbWFzayAoKHVpbnQzMl90KX4wIDw8IF9HTlRNQVBfZ3Vlc3RfYXZhaWww
KQorCisvKgorICogVmFsdWVzIGZvciBlcnJvciBzdGF0dXMgcmV0dXJucy4gQWxsIGVycm9ycyBh
cmUgLXZlLgorICovCisvKiBgIGVudW0gZ3JhbnRfc3RhdHVzIHsgKi8KKyNkZWZpbmUgR05UU1Rf
b2theSAgICAgICAgICAgICAoMCkgIC8qIE5vcm1hbCByZXR1cm4uICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgR05UU1RfZ2VuZXJhbF9lcnJvciAgICAoLTEpIC8qIEdlbmVyYWwg
dW5kZWZpbmVkIGVycm9yLiAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX2RvbWFp
biAgICAgICAoLTIpIC8qIFVucmVjb2duc2VkIGRvbWFpbiBpZC4gICAgICAgICAgICAgICAgKi8K
KyNkZWZpbmUgR05UU1RfYmFkX2dudHJlZiAgICAgICAoLTMpIC8qIFVucmVjb2duaXNlZCBvciBp
bmFwcHJvcHJpYXRlIGdudHJlZi4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX2hhbmRsZSAgICAgICAo
LTQpIC8qIFVucmVjb2duaXNlZCBvciBpbmFwcHJvcHJpYXRlIGhhbmRsZS4gKi8KKyNkZWZpbmUg
R05UU1RfYmFkX3ZpcnRfYWRkciAgICAoLTUpIC8qIEluYXBwcm9wcmlhdGUgdmlydHVhbCBhZGRy
ZXNzIHRvIG1hcC4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX2Rldl9hZGRyICAgICAoLTYpIC8qIElu
YXBwcm9wcmlhdGUgZGV2aWNlIGFkZHJlc3MgdG8gdW5tYXAuKi8KKyNkZWZpbmUgR05UU1Rfbm9f
ZGV2aWNlX3NwYWNlICAoLTcpIC8qIE91dCBvZiBzcGFjZSBpbiBJL08gTU1VLiAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgR05UU1RfcGVybWlzc2lvbl9kZW5pZWQgKC04KSAvKiBOb3QgZW5vdWdo
IHByaXZpbGVnZSBmb3Igb3BlcmF0aW9uLiAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX3BhZ2UgICAg
ICAgICAoLTkpIC8qIFNwZWNpZmllZCBwYWdlIHdhcyBpbnZhbGlkIGZvciBvcC4gICAgKi8KKyNk
ZWZpbmUgR05UU1RfYmFkX2NvcHlfYXJnICAgICgtMTApIC8qIGNvcHkgYXJndW1lbnRzIGNyb3Nz
IHBhZ2UgYm91bmRhcnkuICAgKi8KKyNkZWZpbmUgR05UU1RfYWRkcmVzc190b29fYmlnICgtMTEp
IC8qIHRyYW5zZmVyIHBhZ2UgYWRkcmVzcyB0b28gbGFyZ2UuICAgICAgKi8KKyNkZWZpbmUgR05U
U1RfZWFnYWluICAgICAgICAgICgtMTIpIC8qIE9wZXJhdGlvbiBub3QgZG9uZTsgdHJ5IGFnYWlu
LiAgICAgICAgKi8KKy8qIGAgfSAqLworCisjZGVmaW5lIEdOVFRBQk9QX2Vycm9yX21zZ3MgeyAg
ICAgICAgICAgICAgICAgICBcCisgICAgIm9rYXkiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgInVuZGVmaW5lZCBlcnJvciIsICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgInVucmVjb2duaXNlZCBkb21haW4gaWQiLCAgICAgICAgICAgICAgICAgICBc
CisgICAgImludmFsaWQgZ3JhbnQgcmVmZXJlbmNlIiwgICAgICAgICAgICAgICAgICBcCisgICAg
ImludmFsaWQgbWFwcGluZyBoYW5kbGUiLCAgICAgICAgICAgICAgICAgICBcCisgICAgImludmFs
aWQgdmlydHVhbCBhZGRyZXNzIiwgICAgICAgICAgICAgICAgICBcCisgICAgImludmFsaWQgZGV2
aWNlIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgICBcCisgICAgIm5vIHNwYXJlIHRyYW5zbGF0
aW9uIHNsb3QgaW4gdGhlIEkvTyBNTVUiLCBcCisgICAgInBlcm1pc3Npb24gZGVuaWVkIiwgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgImJhZCBwYWdlIiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgImNvcHkgYXJndW1lbnRzIGNyb3NzIHBhZ2UgYm91bmRhcnki
LCAgICAgICBcCisgICAgInBhZ2UgYWRkcmVzcyBzaXplIHRvbyBsYXJnZSIsICAgICAgICAgICAg
ICBcCisgICAgIm9wZXJhdGlvbiBub3QgZG9uZTsgdHJ5IGFnYWluIiAgICAgICAgICAgICBcCit9
CisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fICovCisKKy8qCisgKiBM
b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj
LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu
aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2lvL25ldGlm
LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vbmV0aWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNTNlYWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVi
bGljL2lvL25ldGlmLmgKQEAgLTAsMCArMSw0MjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyAqIG5ldGlmLmgKKyAqIAorICogVW5pZmllZCBuZXR3b3JrLWRldmljZSBJL08gaW50ZXJmYWNl
IGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAw
My0yMDA0LCBLZWlyIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX05FVElG
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSU9fTkVUSUZfSF9fCisKKyNpbmNsdWRlICJyaW5n
LmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqIE9sZGVyIGltcGxlbWVu
dGF0aW9uIG9mIFhlbiBuZXR3b3JrIGZyb250ZW5kIC8gYmFja2VuZCBoYXMgYW4KKyAqIGltcGxp
Y2l0IGRlcGVuZGVuY3kgb24gdGhlIE1BWF9TS0JfRlJBR1MgYXMgdGhlIG1heGltdW0gbnVtYmVy
IG9mCisgKiByaW5nIHNsb3RzIGEgc2tiIGNhbiB1c2UuIE5ldGZyb250IC8gbmV0YmFjayBtYXkg
bm90IHdvcmsgYXMKKyAqIGV4cGVjdGVkIHdoZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgaGF2ZSBk
aWZmZXJlbnQgTUFYX1NLQl9GUkFHUy4KKyAqCisgKiBBIGJldHRlciBhcHByb2FjaCBpcyB0byBh
ZGQgbWVjaGFuaXNtIGZvciBuZXRmcm9udCAvIG5ldGJhY2sgdG8KKyAqIG5lZ290aWF0ZSB0aGlz
IHZhbHVlLiBIb3dldmVyIHdlIGNhbm5vdCBmaXggYWxsIHBvc3NpYmxlCisgKiBmcm9udGVuZHMs
IHNvIHdlIG5lZWQgdG8gZGVmaW5lIGEgdmFsdWUgd2hpY2ggc3RhdGVzIHRoZSBtaW5pbXVtCisg
KiBzbG90cyBiYWNrZW5kIG11c3Qgc3VwcG9ydC4KKyAqCisgKiBUaGUgbWluaW11bSB2YWx1ZSBk
ZXJpdmVzIGZyb20gb2xkZXIgTGludXgga2VybmVsJ3MgTUFYX1NLQl9GUkFHUworICogKDE4KSwg
d2hpY2ggaXMgcHJvdmVkIHRvIHdvcmsgd2l0aCBtb3N0IGZyb250ZW5kcy4gQW55IG5ldyBiYWNr
ZW5kCisgKiB3aGljaCBkb2Vzbid0IG5lZ290aWF0ZSB3aXRoIGZyb250ZW5kIHNob3VsZCBleHBl
Y3QgZnJvbnRlbmQgdG8KKyAqIHNlbmQgYSB2YWxpZCBwYWNrZXQgdXNpbmcgc2xvdHMgdXAgdG8g
dGhpcyB2YWx1ZS4KKyAqLworI2RlZmluZSBYRU5fTkVUSUZfTlJfU0xPVFNfTUlOIDE4CisKKy8q
CisgKiBOb3RpZmljYXRpb25zIGFmdGVyIGVucXVldWluZyBhbnkgdHlwZSBvZiBtZXNzYWdlIHNo
b3VsZCBiZSBjb25kaXRpb25hbCBvbgorICogdGhlIGFwcHJvcHJpYXRlIHJlcV9ldmVudCBvciBy
c3BfZXZlbnQgZmllbGQgaW4gdGhlIHNoYXJlZCByaW5nLgorICogSWYgdGhlIGNsaWVudCBzZW5k
cyBub3RpZmljYXRpb24gZm9yIHJ4IHJlcXVlc3RzIHRoZW4gaXQgc2hvdWxkIHNwZWNpZnkKKyAq
IGZlYXR1cmUgJ2ZlYXR1cmUtcngtbm90aWZ5JyB2aWEgeGVuYnVzLiBPdGhlcndpc2UgdGhlIGJh
Y2tlbmQgd2lsbCBhc3N1bWUKKyAqIHRoYXQgaXQgY2Fubm90IHNhZmVseSBxdWV1ZSBwYWNrZXRz
IChhcyBpdCBtYXkgbm90IGJlIGtpY2tlZCB0byBzZW5kIHRoZW0pLgorICovCisKKy8qCisgKiAi
ZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIgaXMgaW50cm9kdWNlZCB0byBzZXBhcmF0ZSBn
dWVzdCBUWAorICogYW5kIFJYIG5vdGlmaWNhdGlvbi4gQmFja2VuZCBlaXRoZXIgZG9lc24ndCBz
dXBwb3J0IHRoaXMgZmVhdHVyZSBvcgorICogYWR2ZXJ0aXNlcyBpdCB2aWEgeGVuc3RvcmUgYXMg
MCAoZGlzYWJsZWQpIG9yIDEgKGVuYWJsZWQpLgorICoKKyAqIFRvIG1ha2UgdXNlIG9mIHRoaXMg
ZmVhdHVyZSwgZnJvbnRlbmQgc2hvdWxkIGFsbG9jYXRlIHR3byBldmVudAorICogY2hhbm5lbHMg
Zm9yIFRYIGFuZCBSWCwgYWR2ZXJ0aXNlIHRoZW0gdG8gYmFja2VuZCBhcworICogImV2ZW50LWNo
YW5uZWwtdHgiIGFuZCAiZXZlbnQtY2hhbm5lbC1yeCIgcmVzcGVjdGl2ZWx5LiBJZiBmcm9udGVu
ZAorICogZG9lc24ndCB3YW50IHRvIHVzZSB0aGlzIGZlYXR1cmUsIGl0IGp1c3Qgd3JpdGVzICJl
dmVudC1jaGFubmVsIgorICogbm9kZSBhcyBiZWZvcmUuCisgKi8KKworLyoKKyAqIE11bHRpcGxl
IHRyYW5zbWl0IGFuZCByZWNlaXZlIHF1ZXVlczoKKyAqIElmIHN1cHBvcnRlZCwgdGhlIGJhY2tl
bmQgd2lsbCB3cml0ZSB0aGUga2V5ICJtdWx0aS1xdWV1ZS1tYXgtcXVldWVzIiB0bworICogdGhl
IGRpcmVjdG9yeSBmb3IgdGhhdCB2aWYsIGFuZCBzZXQgaXRzIHZhbHVlIHRvIHRoZSBtYXhpbXVt
IHN1cHBvcnRlZAorICogbnVtYmVyIG9mIHF1ZXVlcy4KKyAqIEZyb250ZW5kcyB0aGF0IGFyZSBh
d2FyZSBvZiB0aGlzIGZlYXR1cmUgYW5kIHdpc2ggdG8gdXNlIGl0IGNhbiB3cml0ZSB0aGUKKyAq
IGtleSAibXVsdGktcXVldWUtbnVtLXF1ZXVlcyIsIHNldCB0byB0aGUgbnVtYmVyIHRoZXkgd2lz
aCB0byB1c2UsIHdoaWNoCisgKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgbm8gbW9y
ZSB0aGFuIHRoZSB2YWx1ZSByZXBvcnRlZCBieSB0aGUgYmFja2VuZAorICogaW4gIm11bHRpLXF1
ZXVlLW1heC1xdWV1ZXMiLgorICoKKyAqIFF1ZXVlcyByZXBsaWNhdGUgdGhlIHNoYXJlZCByaW5n
cyBhbmQgZXZlbnQgY2hhbm5lbHMuCisgKiAiZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIg
bWF5IG9wdGlvbmFsbHkgYmUgdXNlZCB3aGVuIHVzaW5nCisgKiBtdWx0aXBsZSBxdWV1ZXMsIGJ1
dCBpcyBub3QgbWFuZGF0b3J5LgorICoKKyAqIEVhY2ggcXVldWUgY29uc2lzdHMgb2Ygb25lIHNo
YXJlZCByaW5nIHBhaXIsIGkuZS4gdGhlcmUgbXVzdCBiZSB0aGUgc2FtZQorICogbnVtYmVyIG9m
IHR4IGFuZCByeCByaW5ncy4KKyAqCisgKiBGb3IgZnJvbnRlbmRzIHJlcXVlc3RpbmcganVzdCBv
bmUgcXVldWUsIHRoZSB1c3VhbCBldmVudC1jaGFubmVsIGFuZAorICogcmluZy1yZWYga2V5cyBh
cmUgd3JpdHRlbiBhcyBiZWZvcmUsIHNpbXBsaWZ5aW5nIHRoZSBiYWNrZW5kIHByb2Nlc3NpbmcK
KyAqIHRvIGF2b2lkIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gYSBmcm9udGVuZCB0aGF0IGRvZXNu
J3QgdW5kZXJzdGFuZCB0aGUKKyAqIG11bHRpLXF1ZXVlIGZlYXR1cmUsIGFuZCBvbmUgdGhhdCBk
b2VzLCBidXQgcmVxdWVzdGVkIG9ubHkgb25lIHF1ZXVlLgorICoKKyAqIEZyb250ZW5kcyByZXF1
ZXN0aW5nIHR3byBvciBtb3JlIHF1ZXVlcyBtdXN0IG5vdCB3cml0ZSB0aGUgdG9wbGV2ZWwKKyAq
IGV2ZW50LWNoYW5uZWwgKG9yIGV2ZW50LWNoYW5uZWwte3R4LHJ4fSkgYW5kIHt0eCxyeH0tcmlu
Zy1yZWYga2V5cywKKyAqIGluc3RlYWQgd3JpdGluZyB0aG9zZSBrZXlzIHVuZGVyIHN1Yi1rZXlz
IGhhdmluZyB0aGUgbmFtZSAicXVldWUtTiIgd2hlcmUKKyAqIE4gaXMgdGhlIGludGVnZXIgSUQg
b2YgdGhlIHF1ZXVlIGZvciB3aGljaCB0aG9zZSBrZXlzIGJlbG9uZy4gUXVldWVzCisgKiBhcmUg
aW5kZXhlZCBmcm9tIHplcm8uIEZvciBleGFtcGxlLCBhIGZyb250ZW5kIHdpdGggdHdvIHF1ZXVl
cyBhbmQgc3BsaXQKKyAqIGV2ZW50IGNoYW5uZWxzIG11c3Qgd3JpdGUgdGhlIGZvbGxvd2luZyBz
ZXQgb2YgcXVldWUtcmVsYXRlZCBrZXlzOgorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv
dmlmLzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcyA9ICIyIgorICogL2xvY2FsL2RvbWFpbi8xL2Rl
dmljZS92aWYvMC9xdWV1ZS0wID0gIiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAv
cXVldWUtMC90eC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtdHgwPiIKKyAqIC9sb2NhbC9kb21haW4v
MS9kZXZpY2UvdmlmLzAvcXVldWUtMC9yeC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtcngwPiIKKyAq
IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVudC1jaGFubmVsLXR4ID0g
IjxldnRjaG4tdHgwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9l
dmVudC1jaGFubmVsLXJ4ID0gIjxldnRjaG4tcngwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp
Y2UvdmlmLzAvcXVldWUtMSA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1
ZXVlLTEvdHgtcmluZy1yZWYgPSAiPHJpbmctcmVmLXR4MT4iCisgKiAvbG9jYWwvZG9tYWluLzEv
ZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvcngtcmluZy1yZWYgPSAiPHJpbmctcmVmLXJ4MSIKKyAqIC9s
b2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVudC1jaGFubmVsLXR4ID0gIjxl
dnRjaG4tdHgxPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVu
dC1jaGFubmVsLXJ4ID0gIjxldnRjaG4tcngxPiIKKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgaW5j
b25zaXN0ZW5jeSBpbiB0aGUgWGVuU3RvcmUgZGF0YSwgdGhlIGJhY2tlbmQgbWF5CisgKiBjaG9v
c2Ugbm90IHRvIGNvbm5lY3QgYW55IHF1ZXVlcywgaW5zdGVhZCB0cmVhdGluZyB0aGUgcmVxdWVz
dCBhcyBhbgorICogZXJyb3IuIFRoaXMgaW5jbHVkZXMgc2NlbmFyaW9zIHdoZXJlIG1vcmUgKG9y
IGZld2VyKSBxdWV1ZXMgd2VyZQorICogcmVxdWVzdGVkIHRoYW4gdGhlIGZyb250ZW5kIHByb3Zp
ZGVkIGRldGFpbHMgZm9yLgorICoKKyAqIE1hcHBpbmcgb2YgcGFja2V0cyB0byBxdWV1ZXMgaXMg
Y29uc2lkZXJlZCB0byBiZSBhIGZ1bmN0aW9uIG9mIHRoZQorICogdHJhbnNtaXR0aW5nIHN5c3Rl
bSAoYmFja2VuZCBvciBmcm9udGVuZCkgYW5kIGlzIG5vdCBuZWdvdGlhdGVkCisgKiBiZXR3ZWVu
IHRoZSB0d28uIEd1ZXN0cyBhcmUgZnJlZSB0byB0cmFuc21pdCBwYWNrZXRzIG9uIGFueSBxdWV1
ZQorICogdGhleSBjaG9vc2UsIHByb3ZpZGVkIGl0IGhhcyBiZWVuIHNldCB1cCBjb3JyZWN0bHku
IEd1ZXN0cyBtdXN0IGJlCisgKiBwcmVwYXJlZCB0byByZWNlaXZlIHBhY2tldHMgb24gYW55IHF1
ZXVlIHRoZXkgaGF2ZSByZXF1ZXN0ZWQgYmUgc2V0IHVwLgorICovCisKKy8qCisgKiAiZmVhdHVy
ZS1uby1jc3VtLW9mZmxvYWQiIHNob3VsZCBiZSB1c2VkIHRvIHR1cm4gSVB2NCBUQ1AvVURQIGNo
ZWNrc3VtCisgKiBvZmZsb2FkIG9mZiBvciBvbi4gSWYgaXQgaXMgbWlzc2luZyB0aGVuIHRoZSBm
ZWF0dXJlIGlzIGFzc3VtZWQgdG8gYmUgb24uCisgKiAiZmVhdHVyZS1pcHY2LWNzdW0tb2ZmbG9h
ZCIgc2hvdWxkIGJlIHVzZWQgdG8gdHVybiBJUHY2IFRDUC9VRFAgY2hlY2tzdW0KKyAqIG9mZmxv
YWQgb24gb3Igb2ZmLiBJZiBpdCBpcyBtaXNzaW5nIHRoZW4gdGhlIGZlYXR1cmUgaXMgYXNzdW1l
ZCB0byBiZSBvZmYuCisgKi8KKworLyoKKyAqICJmZWF0dXJlLWdzby10Y3B2NCIgYW5kICJmZWF0
dXJlLWdzby10Y3B2NiIgYWR2ZXJ0aXNlIHRoZSBjYXBhYmlsaXR5IHRvCisgKiBoYW5kbGUgbGFy
Z2UgVENQIHBhY2tldHMgKGluIElQdjQgb3IgSVB2NiBmb3JtIHJlc3BlY3RpdmVseSkuIE5laXRo
ZXIKKyAqIGZyb250ZW5kcyBub3IgYmFja2VuZHMgYXJlIGFzc3VtZWQgdG8gYmUgY2FwYWJsZSB1
bmxlc3MgdGhlIGZsYWdzIGFyZQorICogcHJlc2VudC4KKyAqLworCisvKgorICogVGhpcyBpcyB0
aGUgJ3dpcmUnIGZvcm1hdCBmb3IgcGFja2V0czoKKyAqICBSZXF1ZXN0IDE6IG5ldGlmX3R4X3Jl
cXVlc3RfdCAtLSBORVRUWEZfKiAoYW55IGZsYWdzKQorICogW1JlcXVlc3QgMjogbmV0aWZfZXh0
cmFfaW5mb190XSAob25seSBpZiByZXF1ZXN0IDEgaGFzIE5FVFRYRl9leHRyYV9pbmZvKQorICog
W1JlcXVlc3QgMzogbmV0aWZfZXh0cmFfaW5mb190XSAob25seSBpZiByZXF1ZXN0IDIgaGFzIFhF
Tl9ORVRJRl9FWFRSQV9NT1JFKQorICogIFJlcXVlc3QgNDogbmV0aWZfdHhfcmVxdWVzdF90IC0t
IE5FVFRYRl9tb3JlX2RhdGEKKyAqICBSZXF1ZXN0IDU6IG5ldGlmX3R4X3JlcXVlc3RfdCAtLSBO
RVRUWEZfbW9yZV9kYXRhCisgKiAgLi4uCisgKiAgUmVxdWVzdCBOOiBuZXRpZl90eF9yZXF1ZXN0
X3QgLS0gMAorICovCisKKy8qCisgKiBHdWVzdCB0cmFuc21pdAorICogPT09PT09PT09PT09PT0K
KyAqCisgKiBSaW5nIHNsb3Qgc2l6ZSBpcyAxMiBvY3RldHMsIGhvd2V2ZXIgbm90IGFsbCByZXF1
ZXN0L3Jlc3BvbnNlCisgKiBzdHJ1Y3RzIHVzZSB0aGUgZnVsbCBzaXplLgorICoKKyAqIHR4IHJl
cXVlc3QgZGF0YSAobmV0aWZfdHhfcmVxdWVzdF90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAg
NSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSsKKyAqIHwgZ3JhbnQgcmVmICAgICAgICAgICAgIHwgb2Zmc2V0ICAg
IHwgZmxhZ3MgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSsKKyAqIHwgaWQgICAgICAgIHwgc2l6ZSAgICAgIHwKKyAqICstLS0tLSstLS0t
LSstLS0tLSstLS0tLSsKKyAqCisgKiBncmFudCByZWY6IFJlZmVyZW5jZSB0byBidWZmZXIgcGFn
ZS4KKyAqIG9mZnNldDogT2Zmc2V0IHdpdGhpbiBidWZmZXIgcGFnZS4KKyAqIGZsYWdzOiBORVRU
WEZfKi4KKyAqIGlkOiByZXF1ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiByZXNwb25zZS4KKyAq
IHNpemU6IHBhY2tldCBzaXplIGluIGJ5dGVzLgorICoKKyAqIHR4IHJlc3BvbnNlIChuZXRpZl90
eF9yZXNwb25zZV90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor
ICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQK
KyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAq
IHwgaWQgICAgICAgIHwgc3RhdHVzICAgIHwgdW51c2VkICAgICAgICAgICAgICAgIHwKKyAqICst
LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgdW51
c2VkICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisg
KiBpZDogcmVmbGVjdHMgaWQgaW4gdHJhbnNtaXQgcmVxdWVzdAorICogc3RhdHVzOiBORVRJRl9S
U1BfKgorICoKKyAqIEd1ZXN0IHJlY2VpdmUKKyAqID09PT09PT09PT09PT0KKyAqCisgKiBSaW5n
IHNsb3Qgc2l6ZSBpcyA4IG9jdGV0cy4KKyAqCisgKiByeCByZXF1ZXN0IChuZXRpZl9yeF9yZXF1
ZXN0X3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAg
ICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0t
LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgaWQgICAg
ICAgIHwgcGFkICAgICAgIHwgZ3JlZiAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0t
LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiBpZDogcmVxdWVz
dCBpZGVudGlmaWVyLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiBncmVmOiByZWZlcmVuY2UgdG8g
aW5jb21pbmcgZ3JhbnRlZCBmcmFtZS4KKyAqCisgKiByeCByZXNwb25zZSAobmV0aWZfcnhfcmVz
cG9uc2VfdCkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqICAg
IDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiAr
LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8IGlk
ICAgICAgICB8IG9mZnNldCAgICB8IGZsYWdzICAgICB8IHN0YXR1cyAgICB8CisgKiArLS0tLS0r
LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKgorICogaWQ6IHJl
ZmxlY3RzIGlkIGluIHJlY2VpdmUgcmVxdWVzdAorICogb2Zmc2V0OiBvZmZzZXQgaW4gcGFnZSBv
ZiBzdGFydCBvZiByZWNlaXZlZCBwYWNrZXQKKyAqIGZsYWdzOiBORVRSWEZfKgorICogc3RhdHVz
OiAtdmU6IE5FVElGX1JTUF8qOyArdmU6IFJ4J2VkIHBrdCBzaXplLgorICoKKyAqIEV4dHJhIElu
Zm8KKyAqID09PT09PT09PT0KKyAqCisgKiBDYW4gYmUgcHJlc2VudCBpZiBpbml0aWFsIHJlcXVl
c3QgaGFzIE5FVHtULFJ9WEZfZXh0cmFfaW5mbywgb3IKKyAqIHByZXZpb3VzIGV4dHJhIHJlcXVl
c3QgaGFzIFhFTl9ORVRJRl9FWFRSQV9NT1JFLgorICoKKyAqIFRoZSBzdHJ1Y3QgdGhlcmVmb3Jl
IG5lZWRzIHRvIGZpdCBpbnRvIGVpdGhlciBhIHR4IG9yIHJ4IHNsb3QgYW5kCisgKiBpcyB0aGVy
ZWZvcmUgbGltaXRlZCB0byA4IG9jdGV0cy4KKyAqCisgKiBleHRyYSBpbmZvIChuZXRpZl9leHRy
YV9pbmZvX3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogR2Vu
ZXJhbCBmb3JtYXQ6CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAg
ICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t
LSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3wgdHlwZSBzcGVjZmljIGRhdGEgICAgICAg
ICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t
LSstLS0tLSsKKyAqIHwgcGFkZGluZyBmb3IgdHggICAgICAgIHwKKyAqICstLS0tLSstLS0tLSst
LS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBYRU5fTkVUSUZfRVhUUkFfVFlQRV8qCisgKiBmbGFn
czogWEVOX05FVElGX0VYVFJBX0ZMQUdfKgorICogcGFkZGluZyBmb3IgdHg6IHByZXNlbnQgb25s
eSBpbiB0aGUgdHggY2FzZSBkdWUgdG8gOCBvY3RldCBsaW1pdAorICogICAgIGZyb20gcnggY2Fz
ZS4gTm90IHNob3duIGluIHR5cGUgc3BlY2lmaWMgZW50cmllcyBiZWxvdy4KKyAqCisgKiBYRU5f
TkVUSUZfRVhUUkFfVFlQRV9HU086CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAg
NCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3wgc2l6ZSAgICAgIHx0eXBl
IHwgcGFkIHwgZmVhdHVyZXMgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBNdXN0IGJlIFhFTl9ORVRJRl9FWFRSQV9U
WVBFX0dTTworICogZmxhZ3M6IFhFTl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIHNpemU6IE1heGlt
dW0gcGF5bG9hZCBzaXplIG9mIGVhY2ggc2VnbWVudC4KKyAqIHR5cGU6IFhFTl9ORVRJRl9HU09f
VFlQRV8qCisgKiBmZWF0dXJlczogRU5fTkVUSUZfR1NPX0ZFQVRfKgorICoKKyAqIFhFTl9ORVRJ
Rl9FWFRSQV9UWVBFX01DQVNUX3tBREQsREVMfToKKyAqCisgKiAgICAwICAgICAxICAgICAyICAg
ICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0t
Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfHR5cGUgfGZsYWdzfCBhZGRyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t
Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIHR5cGU6IE11c3QgYmUgWEVOX05FVElG
X0VYVFJBX1RZUEVfTUNBU1Rfe0FERCxERUx9CisgKiBmbGFnczogWEVOX05FVElGX0VYVFJBX0ZM
QUdfKgorICogYWRkcjogYWRkcmVzcyB0byBhZGQvcmVtb3ZlCisgKi8KKworLyogUHJvdG9jb2wg
Y2hlY2tzdW0gZmllbGQgaXMgYmxhbmsgaW4gdGhlIHBhY2tldCAoaGFyZHdhcmUgb2ZmbG9hZCk/
ICovCisjZGVmaW5lIF9ORVRUWEZfY3N1bV9ibGFuayAgICAgKDApCisjZGVmaW5lICBORVRUWEZf
Y3N1bV9ibGFuayAgICAgKDFVPDxfTkVUVFhGX2NzdW1fYmxhbmspCisKKy8qIFBhY2tldCBkYXRh
IGhhcyBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHByb3RvY29sIGNoZWNrc3VtLiAqLworI2RlZmlu
ZSBfTkVUVFhGX2RhdGFfdmFsaWRhdGVkICgxKQorI2RlZmluZSAgTkVUVFhGX2RhdGFfdmFsaWRh
dGVkICgxVTw8X05FVFRYRl9kYXRhX3ZhbGlkYXRlZCkKKworLyogUGFja2V0IGNvbnRpbnVlcyBp
biB0aGUgbmV4dCByZXF1ZXN0IGRlc2NyaXB0b3IuICovCisjZGVmaW5lIF9ORVRUWEZfbW9yZV9k
YXRhICAgICAgKDIpCisjZGVmaW5lICBORVRUWEZfbW9yZV9kYXRhICAgICAgKDFVPDxfTkVUVFhG
X21vcmVfZGF0YSkKKworLyogUGFja2V0IHRvIGJlIGZvbGxvd2VkIGJ5IGV4dHJhIGRlc2NyaXB0
b3IocykuICovCisjZGVmaW5lIF9ORVRUWEZfZXh0cmFfaW5mbyAgICAgKDMpCisjZGVmaW5lICBO
RVRUWEZfZXh0cmFfaW5mbyAgICAgKDFVPDxfTkVUVFhGX2V4dHJhX2luZm8pCisKKyNkZWZpbmUg
WEVOX05FVElGX01BWF9UWF9TSVpFIDB4RkZGRgorc3RydWN0IG5ldGlmX3R4X3JlcXVlc3Qgewor
ICAgIGdyYW50X3JlZl90IGdyZWY7ICAgICAgLyogUmVmZXJlbmNlIHRvIGJ1ZmZlciBwYWdlICov
CisgICAgdWludDE2X3Qgb2Zmc2V0OyAgICAgICAvKiBPZmZzZXQgd2l0aGluIGJ1ZmZlciBwYWdl
ICovCisgICAgdWludDE2X3QgZmxhZ3M7ICAgICAgICAvKiBORVRUWEZfKiAqLworICAgIHVpbnQx
Nl90IGlkOyAgICAgICAgICAgLyogRWNob2VkIGluIHJlc3BvbnNlIG1lc3NhZ2UuICovCisgICAg
dWludDE2X3Qgc2l6ZTsgICAgICAgICAvKiBQYWNrZXQgc2l6ZSBpbiBieXRlcy4gICAgICAgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBuZXRpZl90eF9yZXF1ZXN0IG5ldGlmX3R4X3JlcXVlc3RfdDsK
KworLyogVHlwZXMgb2YgbmV0aWZfZXh0cmFfaW5mbyBkZXNjcmlwdG9ycy4gKi8KKyNkZWZpbmUg
WEVOX05FVElGX0VYVFJBX1RZUEVfTk9ORSAgICAgICgwKSAgLyogTmV2ZXIgdXNlZCAtIGludmFs
aWQgKi8KKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfR1NPICAgICAgICgxKSAgLyogdS5n
c28gKi8KKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfTUNBU1RfQUREICgyKSAgLyogdS5t
Y2FzdCAqLworI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF9ERUwgKDMpICAvKiB1
Lm1jYXN0ICovCisjZGVmaW5lIFhFTl9ORVRJRl9FWFRSQV9UWVBFX01BWCAgICAgICAoNCkKKwor
LyogbmV0aWZfZXh0cmFfaW5mb190IGZsYWdzLiAqLworI2RlZmluZSBfWEVOX05FVElGX0VYVFJB
X0ZMQUdfTU9SRSAoMCkKKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAgKDFVPDxf
WEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSkKKworLyogR1NPIHR5cGVzICovCisjZGVmaW5lIFhF
Tl9ORVRJRl9HU09fVFlQRV9OT05FICAgICAgICAgKDApCisjZGVmaW5lIFhFTl9ORVRJRl9HU09f
VFlQRV9UQ1BWNCAgICAgICAgKDEpCisjZGVmaW5lIFhFTl9ORVRJRl9HU09fVFlQRV9UQ1BWNiAg
ICAgICAgKDIpCisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBuZWVkcyB0byBmaXQgd2l0aGluIGJv
dGggbmV0aWZfdHhfcmVxdWVzdF90IGFuZAorICogbmV0aWZfcnhfcmVzcG9uc2VfdCBmb3IgY29t
cGF0aWJpbGl0eS4KKyAqLworc3RydWN0IG5ldGlmX2V4dHJhX2luZm8geworICAgIHVpbnQ4X3Qg
dHlwZTsgIC8qIFhFTl9ORVRJRl9FWFRSQV9UWVBFXyogKi8KKyAgICB1aW50OF90IGZsYWdzOyAv
KiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qICovCisKKyAgICB1bmlvbiB7CisgICAgICAgIC8qCisg
ICAgICAgICAqIFhFTl9ORVRJRl9FWFRSQV9UWVBFX0dTTzoKKyAgICAgICAgICovCisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogTWF4aW11bSBwYXlsb2Fk
IHNpemUgb2YgZWFjaCBzZWdtZW50LiBGb3IgZXhhbXBsZSwgZm9yIFRDUCB0aGlzCisgICAgICAg
ICAgICAgKiBpcyBqdXN0IHRoZSBwYXRoIE1TUy4KKyAgICAgICAgICAgICAqLworICAgICAgICAg
ICAgdWludDE2X3Qgc2l6ZTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEdTTyB0
eXBlLiBUaGlzIGRldGVybWluZXMgdGhlIHByb3RvY29sIG9mIHRoZSBwYWNrZXQgYW5kIGFueQor
ICAgICAgICAgICAgICogZXh0cmEgZmVhdHVyZXMgcmVxdWlyZWQgdG8gc2VnbWVudCB0aGUgcGFj
a2V0IHByb3Blcmx5LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB1aW50OF90IHR5cGU7
IC8qIFhFTl9ORVRJRl9HU09fVFlQRV8qICovCisKKyAgICAgICAgICAgIC8qIEZ1dHVyZSBleHBh
bnNpb24uICovCisgICAgICAgICAgICB1aW50OF90IHBhZDsKKworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAqIEdTTyBmZWF0dXJlcy4gVGhpcyBzcGVjaWZpZXMgYW55IGV4dHJhIEdTTyBm
ZWF0dXJlcyByZXF1aXJlZAorICAgICAgICAgICAgICogdG8gcHJvY2VzcyB0aGlzIHBhY2tldCwg
c3VjaCBhcyBFQ04gc3VwcG9ydCBmb3IgVENQdjQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIHVpbnQxNl90IGZlYXR1cmVzOyAvKiBYRU5fTkVUSUZfR1NPX0ZFQVRfKiAqLworICAgICAg
ICB9IGdzbzsKKworICAgICAgICAvKgorICAgICAgICAgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9N
Q0FTVF97QURELERFTH06CisgICAgICAgICAqIEJhY2tlbmQgYWR2ZXJ0aXNlcyBhdmFpbGFiaWxp
dHkgdmlhICdmZWF0dXJlLW11bHRpY2FzdC1jb250cm9sJworICAgICAgICAgKiB4ZW5idXMgbm9k
ZSBjb250YWluaW5nIHZhbHVlICcxJy4KKyAgICAgICAgICogRnJvbnRlbmQgcmVxdWVzdHMgdGhp
cyBmZWF0dXJlIGJ5IGFkdmVydGlzaW5nCisgICAgICAgICAqICdyZXF1ZXN0LW11bHRpY2FzdC1j
b250cm9sJyB4ZW5idXMgbm9kZSBjb250YWluaW5nIHZhbHVlICcxJy4KKyAgICAgICAgICogSWYg
bXVsdGljYXN0IGNvbnRyb2wgaXMgcmVxdWVzdGVkIHRoZW4gbXVsdGljYXN0IGZsb29kaW5nIGlz
CisgICAgICAgICAqIGRpc2FibGVkIGFuZCB0aGUgZnJvbnRlbmQgbXVzdCBleHBsaWNpdGx5IHJl
Z2lzdGVyIGl0cyBpbnRlcmVzdAorICAgICAgICAgKiBpbiBtdWx0aWNhc3QgZ3JvdXBzIHVzaW5n
IGR1bW15IHRyYW5zbWl0IHJlcXVlc3RzIGNvbnRhaW5pbmcKKyAgICAgICAgICogTUNBU1Rfe0FE
RCxERUx9IGV4dHJhLWluZm8gZnJhZ21lbnRzLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWRkcls2XTsgLyogQWRkcmVzcyB0byBhZGQvcmVtb3Zl
LiAqLworICAgICAgICB9IG1jYXN0OworCisgICAgICAgIHVpbnQxNl90IHBhZFszXTsKKyAgICB9
IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbmV0aWZfZXh0cmFfaW5mbyBuZXRpZl9leHRyYV9pbmZv
X3Q7CisKK3N0cnVjdCBuZXRpZl90eF9yZXNwb25zZSB7CisgICAgdWludDE2X3QgaWQ7CisgICAg
aW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiBORVRJRl9SU1BfKiAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IG5ldGlmX3R4X3Jlc3BvbnNlIG5ldGlmX3R4X3Jlc3BvbnNlX3Q7CisKK3N0cnVjdCBuZXRp
Zl9yeF9yZXF1ZXN0IHsKKyAgICB1aW50MTZfdCAgICBpZDsgICAgICAgIC8qIEVjaG9lZCBpbiBy
ZXNwb25zZSBtZXNzYWdlLiAgICAgICAgKi8KKyAgICB1aW50MTZfdCAgICBwYWQ7CisgICAgZ3Jh
bnRfcmVmX3QgZ3JlZjsgICAgICAvKiBSZWZlcmVuY2UgdG8gaW5jb21pbmcgZ3JhbnRlZCBmcmFt
ZSAqLworfTsKK3R5cGVkZWYgc3RydWN0IG5ldGlmX3J4X3JlcXVlc3QgbmV0aWZfcnhfcmVxdWVz
dF90OworCisvKiBQYWNrZXQgZGF0YSBoYXMgYmVlbiB2YWxpZGF0ZWQgYWdhaW5zdCBwcm90b2Nv
bCBjaGVja3N1bS4gKi8KKyNkZWZpbmUgX05FVFJYRl9kYXRhX3ZhbGlkYXRlZCAoMCkKKyNkZWZp
bmUgIE5FVFJYRl9kYXRhX3ZhbGlkYXRlZCAoMVU8PF9ORVRSWEZfZGF0YV92YWxpZGF0ZWQpCisK
Ky8qIFByb3RvY29sIGNoZWNrc3VtIGZpZWxkIGlzIGJsYW5rIGluIHRoZSBwYWNrZXQgKGhhcmR3
YXJlIG9mZmxvYWQpPyAqLworI2RlZmluZSBfTkVUUlhGX2NzdW1fYmxhbmsgICAgICgxKQorI2Rl
ZmluZSAgTkVUUlhGX2NzdW1fYmxhbmsgICAgICgxVTw8X05FVFJYRl9jc3VtX2JsYW5rKQorCisv
KiBQYWNrZXQgY29udGludWVzIGluIHRoZSBuZXh0IHJlcXVlc3QgZGVzY3JpcHRvci4gKi8KKyNk
ZWZpbmUgX05FVFJYRl9tb3JlX2RhdGEgICAgICAoMikKKyNkZWZpbmUgIE5FVFJYRl9tb3JlX2Rh
dGEgICAgICAoMVU8PF9ORVRSWEZfbW9yZV9kYXRhKQorCisvKiBQYWNrZXQgdG8gYmUgZm9sbG93
ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4gKi8KKyNkZWZpbmUgX05FVFJYRl9leHRyYV9pbmZv
ICAgICAoMykKKyNkZWZpbmUgIE5FVFJYRl9leHRyYV9pbmZvICAgICAoMVU8PF9ORVRSWEZfZXh0
cmFfaW5mbykKKworc3RydWN0IG5ldGlmX3J4X3Jlc3BvbnNlIHsKKyAgICB1aW50MTZfdCBpZDsK
KyAgICB1aW50MTZfdCBvZmZzZXQ7ICAgICAgIC8qIE9mZnNldCBpbiBwYWdlIG9mIHN0YXJ0IG9m
IHJlY2VpdmVkIHBhY2tldCAgKi8KKyAgICB1aW50MTZfdCBmbGFnczsgICAgICAgIC8qIE5FVFJY
Rl8qICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiAtdmU6IE5FVElGX1JTUF8qIDsg
K3ZlOiBSeCdlZCBwa3Qgc2l6ZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCBuZXRpZl9yeF9yZXNw
b25zZSBuZXRpZl9yeF9yZXNwb25zZV90OworCisvKgorICogR2VuZXJhdGUgbmV0aWYgcmluZyBz
dHJ1Y3R1cmVzIGFuZCB0eXBlcy4KKyAqLworCitERUZJTkVfUklOR19UWVBFUyhuZXRpZl90eCwg
c3RydWN0IG5ldGlmX3R4X3JlcXVlc3QsIHN0cnVjdCBuZXRpZl90eF9yZXNwb25zZSk7CitERUZJ
TkVfUklOR19UWVBFUyhuZXRpZl9yeCwgc3RydWN0IG5ldGlmX3J4X3JlcXVlc3QsIHN0cnVjdCBu
ZXRpZl9yeF9yZXNwb25zZSk7CisKKyNkZWZpbmUgTkVUSUZfUlNQX0RST1BQRUQgICAgICAgICAt
MgorI2RlZmluZSBORVRJRl9SU1BfRVJST1IgICAgICAgICAgIC0xCisjZGVmaW5lIE5FVElGX1JT
UF9PS0FZICAgICAgICAgICAgIDAKKy8qIE5vIHJlc3BvbnNlOiB1c2VkIGZvciBhdXhpbGlhcnkg
cmVxdWVzdHMgKGUuZy4sIG5ldGlmX2V4dHJhX2luZm9fdCkuICovCisjZGVmaW5lIE5FVElGX1JT
UF9OVUxMICAgICAgICAgICAgIDEKKworI2VuZGlmCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6
CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog
NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2lvL3JpbmcuaCBiL2luY2x1ZGUveGVu
L3B1YmxpYy9pby9yaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3
YTQyOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9pby9yaW5nLmgKQEAg
LTAsMCArMSwzMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHJpbmcuaAorICogCisg
KiBTaGFyZWQgcHJvZHVjZXItY29uc3VtZXIgcmluZyBtYWNyb3MuCisgKgorICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICog
cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ
VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO
VC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg
T1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq
IFRpbSBEZWVnYW4gYW5kIEFuZHJldyBXYXJmaWVsZCBOb3ZlbWJlciAyMDA0LgorICovCisKKyNp
Zm5kZWYgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19S
SU5HX0hfXworCisjaW5jbHVkZSAiLi4veGVuLWNvbXBhdC5oIgorCisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDgKKyNkZWZpbmUgeGVuX21iKCkgIG1iKCkKKyNkZWZp
bmUgeGVuX3JtYigpIHJtYigpCisjZGVmaW5lIHhlbl93bWIoKSB3bWIoKQorI2VuZGlmCisKK3R5
cGVkZWYgdW5zaWduZWQgaW50IFJJTkdfSURYOworCisvKiBSb3VuZCBhIDMyLWJpdCB1bnNpZ25l
ZCBjb25zdGFudCBkb3duIHRvIHRoZSBuZWFyZXN0IHBvd2VyIG9mIHR3by4gKi8KKyNkZWZpbmUg
X19SRDIoX3gpICAoKChfeCkgJiAweDAwMDAwMDAyKSA/IDB4MiAgICAgICAgICAgICAgICAgIDog
KChfeCkgJiAweDEpKQorI2RlZmluZSBfX1JENChfeCkgICgoKF94KSAmIDB4MDAwMDAwMGMpID8g
X19SRDIoKF94KT4+Mik8PDIgICAgOiBfX1JEMihfeCkpCisjZGVmaW5lIF9fUkQ4KF94KSAgKCgo
X3gpICYgMHgwMDAwMDBmMCkgPyBfX1JENCgoX3gpPj40KTw8NCAgICA6IF9fUkQ0KF94KSkKKyNk
ZWZpbmUgX19SRDE2KF94KSAoKChfeCkgJiAweDAwMDBmZjAwKSA/IF9fUkQ4KChfeCk+PjgpPDw4
ICAgIDogX19SRDgoX3gpKQorI2RlZmluZSBfX1JEMzIoX3gpICgoKF94KSAmIDB4ZmZmZjAwMDAp
ID8gX19SRDE2KChfeCk+PjE2KTw8MTYgOiBfX1JEMTYoX3gpKQorCisvKgorICogQ2FsY3VsYXRl
IHNpemUgb2YgYSBzaGFyZWQgcmluZywgZ2l2ZW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBzcGFjZSBm
b3IgdGhlCisgKiByaW5nIGFuZCBpbmRleGVzIChfc3opLCBhbmQgdGhlIG5hbWUgdGFnIG9mIHRo
ZSByZXF1ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZS4KKyAqIEEgcmluZyBjb250YWlucyBhcyBtYW55
IGVudHJpZXMgYXMgd2lsbCBmaXQsIHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCAKKyAqIHBv
d2VyIG9mIHR3byAoc28gd2UgY2FuIG1hc2sgd2l0aCAoc2l6ZS0xKSB0byBsb29wIGFyb3VuZCku
CisgKi8KKyNkZWZpbmUgX19DT05TVF9SSU5HX1NJWkUoX3MsIF9zeikgXAorICAgIChfX1JEMzIo
KChfc3opIC0gb2Zmc2V0b2Yoc3RydWN0IF9zIyNfc3JpbmcsIHJpbmcpKSAvIFwKKwkgICAgc2l6
ZW9mKCgoc3RydWN0IF9zIyNfc3JpbmcgKikwKS0+cmluZ1swXSkpKQorLyoKKyAqIFRoZSBzYW1l
IGZvciBwYXNzaW5nIGluIGFuIGFjdHVhbCBwb2ludGVyIGluc3RlYWQgb2YgYSBuYW1lIHRhZy4K
KyAqLworI2RlZmluZSBfX1JJTkdfU0laRShfcywgX3N6KSBcCisgICAgKF9fUkQzMigoKF9zeikg
LSAoTE9OR19QVFIpKF9zKS0+cmluZyArIChMT05HX1BUUikoX3MpKSAvIHNpemVvZigoX3MpLT5y
aW5nWzBdKSkpCisKKy8qCisgKiBNYWNyb3MgdG8gbWFrZSB0aGUgY29ycmVjdCBDIGRhdGF0eXBl
cyBmb3IgYSBuZXcga2luZCBvZiByaW5nLgorICogCisgKiBUbyBtYWtlIGEgbmV3IHJpbmcgZGF0
YXR5cGUsIHlvdSBuZWVkIHRvIGhhdmUgdHdvIG1lc3NhZ2Ugc3RydWN0dXJlcywKKyAqIGxldCdz
IHNheSByZXF1ZXN0X3QsIGFuZCByZXNwb25zZV90IGFscmVhZHkgZGVmaW5lZC4KKyAqCisgKiBJ
biBhIGhlYWRlciB3aGVyZSB5b3Ugd2FudCB0aGUgcmluZyBkYXRhdHlwZSBkZWNsYXJlZCwgeW91
IHRoZW4gZG86CisgKgorICogICAgIERFRklORV9SSU5HX1RZUEVTKG15dGFnLCByZXF1ZXN0X3Qs
IHJlc3BvbnNlX3QpOworICoKKyAqIFRoZXNlIGV4cGFuZCBvdXQgdG8gZ2l2ZSB5b3UgYSBzZXQg
b2YgdHlwZXMsIGFzIHlvdSBjYW4gc2VlIGJlbG93LgorICogVGhlIG1vc3QgaW1wb3J0YW50IG9m
IHRoZXNlIGFyZToKKyAqIAorICogICAgIG15dGFnX3NyaW5nX3QgICAgICAtIFRoZSBzaGFyZWQg
cmluZy4KKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgLSBUaGUgJ2Zyb250JyBoYWxmIG9mIHRo
ZSByaW5nLgorICogICAgIG15dGFnX2JhY2tfcmluZ190ICAtIFRoZSAnYmFjaycgaGFsZiBvZiB0
aGUgcmluZy4KKyAqCisgKiBUbyBpbml0aWFsaXplIGEgcmluZyBpbiB5b3VyIGNvZGUgeW91IG5l
ZWQgdG8ga25vdyB0aGUgbG9jYXRpb24gYW5kIHNpemUKKyAqIG9mIHRoZSBzaGFyZWQgbWVtb3J5
IGFyZWEgKFBBR0VfU0laRSwgZm9yIGluc3RhbmNlKS4gVG8gaW5pdGlhbGlzZQorICogdGhlIGZy
b250IGhhbGY6CisgKgorICogICAgIG15dGFnX2Zyb250X3JpbmdfdCBmcm9udF9yaW5nOworICog
ICAgIFNIQVJFRF9SSU5HX0lOSVQoKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFnZSk7CisgKiAg
ICAgRlJPTlRfUklOR19JTklUKCZmcm9udF9yaW5nLCAobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9w
YWdlLCBQQUdFX1NJWkUpOworICoKKyAqIEluaXRpYWxpemluZyB0aGUgYmFjayBmb2xsb3dzIHNp
bWlsYXJseSAobm90ZSB0aGF0IG9ubHkgdGhlIGZyb250CisgKiBpbml0aWFsaXplcyB0aGUgc2hh
cmVkIHJpbmcpOgorICoKKyAqICAgICBteXRhZ19iYWNrX3JpbmdfdCBiYWNrX3Jpbmc7CisgKiAg
ICAgQkFDS19SSU5HX0lOSVQoJmJhY2tfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFn
ZSwgUEFHRV9TSVpFKTsKKyAqLworCisjZGVmaW5lIERFRklORV9SSU5HX1RZUEVTKF9fbmFtZSwg
X19yZXFfdCwgX19yc3BfdCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisvKiBTaGFyZWQgcmluZyBlbnRyeSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCit1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19yZXFfdCByZXE7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgX19yc3BfdCByc3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisvKiBT
aGFyZWQgcmluZyBwYWdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFggcmVxX3Byb2QsIHJl
cV9ldmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklO
R19JRFggcnNwX3Byb2QsIHJzcF9ldmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICB1aW50OF90IHNtYXJ0cG9sbF9hY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gbmV0aWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB1
aW50OF90IG1zZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gdGFwaWZfdXNlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHVpbnQ4X3QgcHZ0X3BhZFs0XTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSBwcml2YXRlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdWludDhfdCBfX3BhZFs0NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdW5pb24gX19uYW1lIyNfc3JpbmdfZW50cnkgcmluZ1sx
XTsgLyogdmFyaWFibGUtbGVuZ3RoICovICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisvKiAiRnJvbnQiIGVuZCdzIHByaXZhdGUgdmFyaWFibGVzICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfZnJvbnRf
cmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
UklOR19JRFggcmVxX3Byb2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgUklOR19JRFggcnNwX2NvbnM7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50IG5yX2VudHM7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3Ry
dWN0IF9fbmFtZSMjX3NyaW5nICpzcmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisvKiAiQmFjayIg
ZW5kJ3MgcHJpdmF0ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfYmFja19yaW5nIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFggcnNwX3Byb2RfcHZ0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFgg
cmVxX2NvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdW5zaWduZWQgaW50IG5yX2VudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RydWN0IF9fbmFtZSMjX3NyaW5nICpzcmluZzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisvKiBTeW50YWN0aWMgc3VnYXIgKi8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit0eXBlZGVmIHN0cnVjdCBfX25h
bWUjI19zcmluZyBfX25hbWUjI19zcmluZ190OyAgICAgICAgICAgICAgICAgICAgICAgICBcCit0
eXBlZGVmIHN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIF9fbmFtZSMjX2Zyb250X3JpbmdfdDsg
ICAgICAgICAgICAgICBcCit0eXBlZGVmIHN0cnVjdCBfX25hbWUjI19iYWNrX3JpbmcgX19uYW1l
IyNfYmFja19yaW5nX3QKKworLyoKKyAqIE1hY3JvcyBmb3IgbWFuaXB1bGF0aW5nIHJpbmdzLgor
ICogCisgKiBGUk9OVF9SSU5HX3doYXRldmVyIHdvcmtzIG9uIHRoZSAiZnJvbnQgZW5kIiBvZiBh
IHJpbmc6IGhlcmUgCisgKiByZXF1ZXN0cyBhcmUgcHVzaGVkIG9uIHRvIHRoZSByaW5nIGFuZCBy
ZXNwb25zZXMgdGFrZW4gb2ZmIGl0LgorICogCisgKiBCQUNLX1JJTkdfd2hhdGV2ZXIgd29ya3Mg
b24gdGhlICJiYWNrIGVuZCIgb2YgYSByaW5nOiBoZXJlIAorICogcmVxdWVzdHMgYXJlIHRha2Vu
IG9mZiB0aGUgcmluZyBhbmQgcmVzcG9uc2VzIHB1dCBvbi4KKyAqIAorICogTi5CLiB0aGVzZSBt
YWNyb3MgZG8gTk8gSU5URVJMT0NLUyBPUiBGTE9XIENPTlRST0wuIAorICogVGhpcyBpcyBPSyBp
biAxLWZvci0xIHJlcXVlc3QtcmVzcG9uc2Ugc2l0dWF0aW9ucyB3aGVyZSB0aGUgCisgKiByZXF1
ZXN0b3IgKGZyb250IGVuZCkgbmV2ZXIgaGFzIG1vcmUgdGhhbiBSSU5HX1NJWkUoKS0xCisgKiBv
dXRzdGFuZGluZyByZXF1ZXN0cy4KKyAqLworCisvKiBJbml0aWFsaXNpbmcgZW1wdHkgcmluZ3Mg
Ki8KKyNkZWZpbmUgU0hBUkVEX1JJTkdfSU5JVChfcykgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3MpLT5yZXFfcHJvZCAgPSAoX3MpLT5yc3BfcHJv
ZCAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3MpLT5yZXFfZXZl
bnQgPSAoX3MpLT5yc3BfZXZlbnQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAodm9pZCltZW1zZXQoKF9zKS0+cHJpdmF0ZS5wdnRfcGFkLCAwLCBzaXplb2YoKF9zKS0+
cHJpdmF0ZS5wdnRfcGFkKSk7IFwKKyAgICAodm9pZCltZW1zZXQoKF9zKS0+X19wYWQsIDAsIHNp
emVvZigoX3MpLT5fX3BhZCkpOyAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUoMCkKKworI2Rl
ZmluZSBGUk9OVF9SSU5HX0lOSVQoX3IsIF9zLCBfX3NpemUpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIChfciktPnJlcV9wcm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnJzcF9jb25zID0gMDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChf
ciktPm5yX2VudHMgPSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIChfciktPnNyaW5nID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBCQUNL
X1JJTkdfSU5JVChfciwgX3MsIF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIChfciktPnJzcF9wcm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnJlcV9jb25zID0gMDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPm5yX2Vu
dHMgPSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIChfciktPnNyaW5nID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworLyogSG93IGJpZyBpcyB0aGlzIHJp
bmc/ICovCisjZGVmaW5lIFJJTkdfU0laRShfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChfciktPm5yX2VudHMpCisKKy8qIE51bWJl
ciBvZiBmcmVlIHJlcXVlc3RzIChmb3IgdXNlIG9uIGZyb250IHNpZGUgb25seSkuICovCisjZGVm
aW5lIFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKFJJTkdfU0laRShfcikgLSAoKF9yKS0+cmVxX3Byb2RfcHZ0IC0g
KF9yKS0+cnNwX2NvbnMpKQorCisvKiBUZXN0IGlmIHRoZXJlIGlzIGFuIGVtcHR5IHNsb3QgYXZh
aWxhYmxlIG9uIHRoZSBmcm9udCByaW5nLgorICogKFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZy
b20gdGhlIGZyb250LiApCisgKi8KKyNkZWZpbmUgUklOR19GVUxMKF9yKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoUklOR19GUkVFX1JF
UVVFU1RTKF9yKSA9PSAwKQorCisvKiBUZXN0IGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBtZXNz
YWdlcyB0byBiZSBwcm9jZXNzZWQgb24gYSByaW5nLiAqLworI2RlZmluZSBSSU5HX0hBU19VTkNP
TlNVTUVEX1JFU1BPTlNFUyhfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICgoX3IpLT5zcmluZy0+cnNwX3Byb2QgLSAoX3IpLT5yc3BfY29ucykKKworI2lmZGVmIF9fR05V
Q19fCisjZGVmaW5lIFJJTkdfSEFTX1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50IHJlcSA9IChfciktPnNyaW5n
LT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zOyAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50
IHJzcCA9IFJJTkdfU0laRShfcikgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgcmVxIDwgcnNwID8gcmVxIDogcnNwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9KQorI2Vsc2UKKy8qIFNhbWUg
YXMgYWJvdmUsIGJ1dCB3aXRob3V0IHRoZSBuaWNlIEdDQyAoeyAuLi4gfSkgc3ludGF4LiAqLwor
I2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKF9yKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICgoKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJl
cV9jb25zKSA8ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKFJJTkdfU0laRShfcikg
LSAoKF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3BfcHJvZF9wdnQpKSkgPyAgICAgICAgXAorICAg
ICAoKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9yKS0+cmVxX2NvbnMpIDogICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAoUklOR19TSVpFKF9yKSAtICgoX3IpLT5yZXFfY29ucyAtIChf
ciktPnJzcF9wcm9kX3B2dCkpKQorI2VuZGlmCisKKy8qIERpcmVjdCBhY2Nlc3MgdG8gaW5kaXZp
ZHVhbCByaW5nIGVsZW1lbnRzLCBieSBpbmRleC4gKi8KKyNkZWZpbmUgUklOR19HRVRfUkVRVUVT
VChfciwgX2lkeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
JigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJlcSkp
CisKKyNkZWZpbmUgUklOR19HRVRfUkVTUE9OU0UoX3IsIF9pZHgpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoJigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYg
KFJJTkdfU0laRShfcikgLSAxKSldLnJzcCkpCisKKy8qIExvb3AgdGVybWluYXRpb24gY29uZGl0
aW9uOiBXb3VsZCB0aGUgc3BlY2lmaWVkIGluZGV4IG92ZXJmbG93IHRoZSByaW5nPyAqLworI2Rl
ZmluZSBSSU5HX1JFUVVFU1RfQ09OU19PVkVSRkxPVyhfciwgX2NvbnMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgoKF9jb25zKSAtIChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklO
R19TSVpFKF9yKSkKKworLyogSWxsLWJlaGF2ZWQgZnJvbnRlbmQgZGV0ZXJtaW5hdGlvbjogQ2Fu
IHRoZXJlIGJlIHRoaXMgbWFueSByZXF1ZXN0cz8gKi8KKyNkZWZpbmUgUklOR19SRVFVRVNUX1BS
T0RfT1ZFUkZMT1coX3IsIF9wcm9kKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
KChfcHJvZCkgLSAoX3IpLT5yc3BfcHJvZF9wdnQpID4gUklOR19TSVpFKF9yKSkKKworI2RlZmlu
ZSBSSU5HX1BVU0hfUkVRVUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHhlbl93bWIoKTsgLyogYmFjayBzZWVzIHJlcXVlc3RzIC9iZWZvcmUv
IHVwZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gXAorICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9
IChfciktPnJlcV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAo
MCkKKworI2RlZmluZSBSSU5HX1BVU0hfUkVTUE9OU0VTKF9yKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNw
cyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAorICAgIChfciktPnNyaW5n
LT5yc3BfcHJvZCA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAg
XAorfSB3aGlsZSAoMCkKKworLyoKKyAqIE5vdGlmaWNhdGlvbiBob2xkLW9mZiAocmVxX2V2ZW50
IGFuZCByc3BfZXZlbnQpOgorICogCisgKiBXaGVuIHF1ZXVlaW5nIHJlcXVlc3RzIG9yIHJlc3Bv
bnNlcyBvbiBhIHNoYXJlZCByaW5nLCBpdCBtYXkgbm90IGFsd2F5cyBiZQorICogbmVjZXNzYXJ5
IHRvIG5vdGlmeSB0aGUgcmVtb3RlIGVuZC4gRm9yIGV4YW1wbGUsIGlmIHJlcXVlc3RzIGFyZSBp
biBmbGlnaHQKKyAqIGluIGEgYmFja2VuZCwgdGhlIGZyb250IG1heSBiZSBhYmxlIHRvIHF1ZXVl
IGZ1cnRoZXIgcmVxdWVzdHMgd2l0aG91dAorICogbm90aWZ5aW5nIHRoZSBiYWNrIChpZiB0aGUg
YmFjayBjaGVja3MgZm9yIG5ldyByZXF1ZXN0cyB3aGVuIGl0IHF1ZXVlcworICogcmVzcG9uc2Vz
KS4KKyAqIAorICogV2hlbiBlbnF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzOgorICogCisg
KiAgVXNlIFJJTkdfUFVTSF97UkVRVUVTVFMsUkVTUE9OU0VTfV9BTkRfQ0hFQ0tfTk9USUZZKCku
IFRoZSBzZWNvbmQgYXJndW1lbnQKKyAqICBpcyBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVl
IGluZGljYXRlcyB0aGF0IHRoZSByZWNlaXZlciByZXF1aXJlcyBhbgorICogIGFzeW5jaHJvbm91
cyBub3RpZmljYXRpb24uCisgKiAKKyAqIEFmdGVyIGRlcXVldWluZyByZXF1ZXN0cyBvciByZXNw
b25zZXMgKGJlZm9yZSBzbGVlcGluZyB0aGUgY29ubmVjdGlvbik6CisgKiAKKyAqICBVc2UgUklO
R19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQ
T05TRVMoKS4KKyAqICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgYm9vbGVhbiByZXR1cm4gdmFs
dWUuIFRydWUgaW5kaWNhdGVzIHRoYXQgdGhlcmUKKyAqICBhcmUgcGVuZGluZyBtZXNzYWdlcyBv
biB0aGUgcmluZyAoaS5lLiwgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBwdXQKKyAqICB0
byBzbGVlcCkuCisgKiAKKyAqICBUaGVzZSBtYWNyb3Mgd2lsbCBzZXQgdGhlIHJlcV9ldmVudC9y
c3BfZXZlbnQgZmllbGQgdG8gdHJpZ2dlciBhCisgKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5
IG5leHQgbWVzc2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bworICogIGNyZWF0
ZSBiYXRjaGVzIG9mIHdvcmsgKGkuZS4sIG9ubHkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhZnRl
ciBzZXZlcmFsCisgKiAgbWVzc2FnZXMgaGF2ZSBiZWVuIGVucXVldWVkKSB0aGVuIHlvdSB3aWxs
IG5lZWQgdG8gY3JlYXRlIGEgY3VzdG9taXNlZAorICogIHZlcnNpb24gb2YgdGhlIEZJTkFMX0NI
RUNLIG1hY3JvIGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlIGV2ZW50CisgKiAgZmll
bGQgYXBwcm9wcmlhdGVseS4KKyAqLworCisjZGVmaW5lIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRf
Q0hFQ0tfTk9USUZZKF9yLCBfbm90aWZ5KSBkbyB7ICAgICAgICAgICBcCisgICAgUklOR19JRFgg
X19vbGQgPSAoX3IpLT5zcmluZy0+cmVxX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgUklOR19JRFggX19uZXcgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVz
dHMgL2JlZm9yZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyBcCisgICAgKF9yKS0+c3Jpbmct
PnJlcV9wcm9kID0gX19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgeGVuX21iKCk7IC8qIGJhY2sgc2VlcyBuZXcgcmVxdWVzdHMgL2JlZm9yZS8gd2UgY2hl
Y2sgcmVxX2V2ZW50ICovICBcCisgICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAo
X3IpLT5zcmluZy0+cmVxX2V2ZW50KSA8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIChS
SU5HX0lEWCkoX19uZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9
IHdoaWxlICgwKQorCisjZGVmaW5lIFJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElG
WShfciwgX25vdGlmeSkgZG8geyAgICAgICAgICBcCisgICAgUklOR19JRFggX19vbGQgPSAoX3Ip
LT5zcmluZy0+cnNwX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklO
R19JRFggX19uZXcgPSAoX3IpLT5yc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBmcm9udCBzZWVzIHJlc3BzIC9iZWZvcmUvIHVw
ZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gICBcCisgICAgKF9yKS0+c3JpbmctPnJzcF9wcm9kID0g
X19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX21i
KCk7IC8qIGZyb250IHNlZXMgbmV3IHJlc3BzIC9iZWZvcmUvIHdlIGNoZWNrIHJzcF9ldmVudCAq
LyAgICBcCisgICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmluZy0+
cnNwX2V2ZW50KSA8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIChSSU5HX0lEWCkoX19u
ZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQor
CisjZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKF9yLCBfd29ya190b19kbykg
ZG8geyAgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKF93b3JrX3RvX2Rv
KSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgKF9yKS0+c3JpbmctPnJlcV9ldmVudCA9IChfciktPnJlcV9jb25zICsgMTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJ
TkdfSEFTX1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCit9IHdo
aWxlICgwKQorCisjZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUyhfciwgX3dv
cmtfdG9fZG8pIGRvIHsgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFT
X1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKF93
b3JrX3RvX2RvKSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgKF9yKS0+c3JpbmctPnJzcF9ldmVudCA9IChfciktPnJzcF9jb25zICsgMTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF93b3JrX3Rv
X2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAg
ICBcCit9IHdoaWxlICgwKQorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fICov
CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6
ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQt
dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVi
bGljL2lvL3hlbmJ1cy5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL3hlbmJ1cy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyN2Y5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9p
bmNsdWRlL3hlbi9wdWJsaWMvaW8veGVuYnVzLmgKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisgKiB4ZW5idXMuaAorICoKKyAqIFhlbmJ1cyBwcm90b2NvbCBkZXRhaWxz
LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVh
bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRI
RSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgWGVuU291cmNlIEx0ZC4KKyAq
LworCisjaWZuZGVmIF9YRU5fUFVCTElDX0lPX1hFTkJVU19ICisjZGVmaW5lIF9YRU5fUFVCTElD
X0lPX1hFTkJVU19ICisKKy8qCisgKiBUaGUgc3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVu
YnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11bmljYXRpb24KKyAqIHN0YXR1cyBvZiBpbml0aWFs
aXNhdGlvbiBhY3Jvc3MgdGhlIGJ1cy4gIFN0YXRlcyBoZXJlIGltcGx5IG5vdGhpbmcgYWJvdXQK
KyAqIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRo
ZSBrZXJuZWwncyBkZXZpY2UKKyAqIGxheWVycy4KKyAqLworZW51bSB4ZW5idXNfc3RhdGUgewor
ICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAgICA9IDAsCisKKyAgICBYZW5idXNTdGF0ZUluaXRp
YWxpc2luZyAgPSAxLAorCisgICAgLyoKKyAgICAgKiBJbml0V2FpdDogRmluaXNoZWQgZWFybHkg
aW5pdGlhbGlzYXRpb24gYnV0IHdhaXRpbmcgZm9yIGluZm9ybWF0aW9uCisgICAgICogZnJvbSB0
aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVJbml0
V2FpdCAgICAgID0gMiwKKworICAgIC8qCisgICAgICogSW5pdGlhbGlzZWQ6IFdhaXRpbmcgZm9y
IGEgY29ubmVjdGlvbiBmcm9tIHRoZSBwZWVyLgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlSW5p
dGlhbGlzZWQgICA9IDMsCisKKyAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAorCisg
ICAgLyoKKyAgICAgKiBDbG9zaW5nOiBUaGUgZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8g
YW4gZXJyb3Igb3IgYW4gdW5wbHVnIGV2ZW50LgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlQ2xv
c2luZyAgICAgICA9IDUsCisKKyAgICBYZW5idXNTdGF0ZUNsb3NlZCAgICAgICAgPSA2LAorCisg
ICAgLyoKKyAgICAgKiBSZWNvbmZpZ3VyaW5nOiBUaGUgZGV2aWNlIGlzIGJlaW5nIHJlY29uZmln
dXJlZC4KKyAgICAgKi8KKyAgICBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgPSA3LAorCisgICAg
WGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQgID0gOAorfTsKK3R5cGVkZWYgZW51bSB4ZW5idXNfc3Rh
dGUgWGVuYnVzU3RhdGU7CisKKyNlbmRpZiAvKiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSCAqLwor
CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi
QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRh
YnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1Ymxp
Yy90cmFjZS5oIGIvaW5jbHVkZS94ZW4vcHVibGljL3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGRlNjMwZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVu
L3B1YmxpYy90cmFjZS5oCkBAIC0wLDAgKzEsMzMxIEBACisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisgKiBpbmNsdWRlL3B1YmxpYy90cmFjZS5oCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
KyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBNYXJrIFdpbGxp
YW1zb24sIChDKSAyMDA0IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQorICogQ29weXJpZ2h0IChD
KSAyMDA1IEJpbiBSZW4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KKyNk
ZWZpbmUgX19YRU5fUFVCTElDX1RSQUNFX0hfXworCisjZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAg
ICA3CisjZGVmaW5lIFRSQUNFX0VYVFJBX1NISUZUIDI4CisKKy8qIFRyYWNlIGNsYXNzZXMgKi8K
KyNkZWZpbmUgVFJDX0NMU19TSElGVCAxNgorI2RlZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAw
MCAgICAvKiBHZW5lcmFsIHRyYWNlICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX1NDSEVEICAg
IDB4MDAwMmYwMDAgICAgLyogWGVuIFNjaGVkdWxlciB0cmFjZSAgICAgICovCisjZGVmaW5lIFRS
Q19ET00wT1AgICAweDAwMDRmMDAwICAgIC8qIFhlbiBET00wIG9wZXJhdGlvbiB0cmFjZSAqLwor
I2RlZmluZSBUUkNfSFZNICAgICAgMHgwMDA4ZjAwMCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgVFJDX01FTSAgICAgIDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9y
eSB0cmFjZSAgICAgICAgICovCisjZGVmaW5lIFRSQ19QViAgICAgICAweDAwMjBmMDAwICAgIC8q
IFhlbiBQViB0cmFjZXMgICAgICAgICAgICAqLworI2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQw
ZjAwMCAgICAvKiBYZW4gc2hhZG93IHRyYWNpbmcgICAgICAgKi8KKyNkZWZpbmUgVFJDX0hXICAg
ICAgIDB4MDA4MGYwMDAgICAgLyogWGVuIGhhcmR3YXJlLXJlbGF0ZWQgdHJhY2VzICovCisjZGVm
aW5lIFRSQ19HVUVTVCAgICAweDA4MDBmMDAwICAgIC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMg
ICAqLworI2RlZmluZSBUUkNfQUxMICAgICAgMHgwZmZmZjAwMAorI2RlZmluZSBUUkNfSERfVE9f
RVZFTlQoeCkgKCh4KSYweDBmZmZmZmZmKQorI2RlZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVM
PDwzMSkKKyNkZWZpbmUgVFJDX0hEX0lOQ0xVREVTX0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAm
IFRSQ19IRF9DWUNMRV9GTEFHICkgKQorI2RlZmluZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+
PlRSQUNFX0VYVFJBX1NISUZUKSZUUkFDRV9FWFRSQV9NQVgpCisKKy8qIFRyYWNlIHN1YmNsYXNz
ZXMgKi8KKyNkZWZpbmUgVFJDX1NVQkNMU19TSElGVCAxMgorCisvKiB0cmFjZSBzdWJjbGFzc2Vz
IGZvciBTVk0gKi8KKyNkZWZpbmUgVFJDX0hWTV9FTlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyog
Vk1FTlRSWSBhbmQgI1ZNRVhJVCAgICAgICAqLworI2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAg
IDB4MDAwODIwMDAgICAvKiB2YXJpb3VzIEhWTSBoYW5kbGVycyAgICAgICovCisjZGVmaW5lIFRS
Q19IVk1fRU1VTCAgICAgICAgMHgwMDA4NDAwMCAgIC8qIGVtdWxhdGVkIGRldmljZXMgKi8KKwor
I2RlZmluZSBUUkNfU0NIRURfTUlOICAgICAgIDB4MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRl
IGNoYW5nZXMgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0NMQVNTICAgICAweDAwMDIyMDAwICAgLyog
U2NoZWR1bGVyLXNwZWNpZmljICAgICovCisjZGVmaW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgw
MDAyODAwMCAgIC8qIE1vcmUgaW5jbHVzaXZlIHNjaGVkdWxpbmcgKi8KKworLyoKKyAqIFRoZSBo
aWdoZXN0IDMgYml0cyBvZiB0aGUgbGFzdCAxMiBiaXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92
ZSBhcmUKKyAqIHJlc2VydmVkIGZvciBlbmNvZGluZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0
aGUgaW5mb3JtYXRpb24uIFRoZQorICogYWN0dWFsIGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxh
c3QgOSBiaXRzLgorICoKKyAqIFRoaXMgbWVhbnMgd2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2
YWlsYWJsZSAod2hpY2ggbWVhbnMgYXQgbW9zdCA4CisgKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcg
ZXZlbnRzKSBhbmQsIGluIGVhY2ggc2NoZWR1bGVyLCB1cCB0byA1MTIKKyAqIGRpZmZlcmVudCBl
dmVudHMuCisgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0lEX0JJVFMgMworI2RlZmluZSBUUkNfU0NI
RURfSURfU0hJRlQgKFRSQ19TVUJDTFNfU0hJRlQgLSBUUkNfU0NIRURfSURfQklUUykKKyNkZWZp
bmUgVFJDX1NDSEVEX0lEX01BU0sgKCgoMVVMPDxUUkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBU
UkNfU0NIRURfSURfU0hJRlQpCisjZGVmaW5lIFRSQ19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NI
RURfSURfTUFTSykpCisKKy8qIFBlci1zY2hlZHVsZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVs
ZXIgc3BlY2lmaWMgZXZlbnRzICovCisjZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQgICAwCisjZGVm
aW5lIFRSQ19TQ0hFRF9DU0NIRUQyICAxCisjZGVmaW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCisj
ZGVmaW5lIFRSQ19TQ0hFRF9BUklOQzY1MyAzCisjZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0
CisKKy8qIFBlci1zY2hlZHVsZXIgdHJhY2luZyAqLworI2RlZmluZSBUUkNfU0NIRURfQ0xBU1Nf
RVZUKF9jLCBfZSkgXAorICAoICggVFJDX1NDSEVEX0NMQVNTIHwgXAorICAgICAgKChUUkNfU0NI
RURfIyNfYyA8PCBUUkNfU0NIRURfSURfU0hJRlQpICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBc
CisgICAgKF9lICYgVFJDX1NDSEVEX0VWVF9NQVNLKSApCisKKy8qIFRyYWNlIGNsYXNzZXMgZm9y
IEhhcmR3YXJlICovCisjZGVmaW5lIFRSQ19IV19QTSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8q
IFBvd2VyIG1hbmFnZW1lbnQgdHJhY2VzICovCisjZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAg
MHgwMDgwMjAwMCAgIC8qIFRyYWNlcyByZWxhdGluZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAq
LworCisvKiBUcmFjZSBldmVudHMgcGVyIGNsYXNzICovCisjZGVmaW5lIFRSQ19MT1NUX1JFQ09S
RFMgICAgICAgIChUUkNfR0VOICsgMSkKKyNkZWZpbmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAo
VFJDX0dFTiArIDIpCisjZGVmaW5lIFRSQ19UUkFDRV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsg
MykKKworI2RlZmluZSBUUkNfU0NIRURfUlVOU1RBVEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4g
KyAxKQorI2RlZmluZSBUUkNfU0NIRURfQ09OVElOVUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4g
KyAyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX0FERCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgIDEpCisjZGVmaW5lIFRSQ19TQ0hFRF9ET01fUkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJP
U0UgKyAgMikKKyNkZWZpbmUgVFJDX1NDSEVEX1NMRUVQICAgICAgICAgIChUUkNfU0NIRURfVkVS
Qk9TRSArICAzKQorI2RlZmluZSBUUkNfU0NIRURfV0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9W
RVJCT1NFICsgIDQpCisjZGVmaW5lIFRSQ19TQ0hFRF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVE
X1ZFUkJPU0UgKyAgNSkKKyNkZWZpbmUgVFJDX1NDSEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NI
RURfVkVSQk9TRSArICA2KQorI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV04gICAgICAgKFRSQ19T
Q0hFRF9WRVJCT1NFICsgIDcpCisjZGVmaW5lIFRSQ19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJD
X1NDSEVEX1ZFUkJPU0UgKyAgOCkKKyNkZWZpbmUgVFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChU
UkNfU0NIRURfVkVSQk9TRSArICA5KQorI2RlZmluZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAg
KFRSQ19TQ0hFRF9WRVJCT1NFICsgMTApCisjZGVmaW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAg
ICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMSkKKyNkZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4g
ICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVS
X0ZOICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTMpCisjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hf
SU5GUFJFViAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxNCkKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRD
SF9JTkZORVhUIChUUkNfU0NIRURfVkVSQk9TRSArIDE1KQorI2RlZmluZSBUUkNfU0NIRURfU0hV
VERPV05fQ09ERSAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTYpCisKKyNkZWZpbmUgVFJDX01FTV9Q
QUdFX0dSQU5UX01BUCAgICAgIChUUkNfTUVNICsgMSkKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dS
QU5UX1VOTUFQICAgIChUUkNfTUVNICsgMikKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RS
QU5TRkVSIChUUkNfTUVNICsgMykKKyNkZWZpbmUgVFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAg
IChUUkNfTUVNICsgNCkKKyNkZWZpbmUgVFJDX01FTV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJD
X01FTSArIDUpCisjZGVmaW5lIFRSQ19NRU1fUE9EX1BPUFVMQVRFICAgICAgICAoVFJDX01FTSAr
IDE2KQorI2RlZmluZSBUUkNfTUVNX1BPRF9aRVJPX1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykK
KyNkZWZpbmUgVFJDX01FTV9QT0RfU1VQRVJQQUdFX1NQTElOVEVSIChUUkNfTUVNICsgMTgpCisK
KyNkZWZpbmUgVFJDX1BWX0VOVFJZICAgMHgwMDIwMTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBv
aW50cyBmb3IgUFYgZ3Vlc3RzLiAqLworI2RlZmluZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAw
IC8qIFN1Yi1jYWxsIGluIGEgbXVsdGljYWxsIGh5cGVyY2FsbCAqLworCisjZGVmaW5lIFRSQ19Q
Vl9IWVBFUkNBTEwgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAxKQorI2RlZmluZSBUUkNf
UFZfVFJBUCAgICAgICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMykKKyNkZWZpbmUgVFJD
X1BWX1BBR0VfRkFVTFQgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDQpCisjZGVmaW5lIFRS
Q19QVl9GT1JDRURfSU5WQUxJRF9PUCAgICAgKFRSQ19QVl9FTlRSWSArICA1KQorI2RlZmluZSBU
UkNfUFZfRU1VTEFURV9QUklWT1AgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgNikKKyNkZWZpbmUg
VFJDX1BWX0VNVUxBVEVfNEdCICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDcpCisjZGVmaW5l
IFRSQ19QVl9NQVRIX1NUQVRFX1JFU1RPUkUgICAgKFRSQ19QVl9FTlRSWSArICA4KQorI2RlZmlu
ZSBUUkNfUFZfUEFHSU5HX0ZJWFVQICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgOSkKKyNkZWZp
bmUgVFJDX1BWX0dEVF9MRFRfTUFQUElOR19GQVVMVCAoVFJDX1BWX0VOVFJZICsgMTApCisjZGVm
aW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTiAgICAgICAgKFRSQ19QVl9FTlRSWSArIDExKQorI2Rl
ZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT05fUEFFICAgIChUUkNfUFZfRU5UUlkgKyAxMikKKyNk
ZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMiAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCisj
ZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfU1VCQ0FMTCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQp
CisKKy8qCisgKiBUUkNfUFZfSFlQRVJDQUxMX1YyIGZvcm1hdAorICoKKyAqIE9ubHkgc29tZSBv
ZiB0aGUgaHlwZXJjYWxsIGFyZ3VtZW50IGFyZSByZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bwor
ICogQTUgaW4gdGhlIGZpcnN0IGV4dHJhIHdvcmQgYXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMg
cHJlc2VudCBhbmQKKyAqIHRoZSBhcmd1bWVudHMgdGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVl
bnRpYWxseSBpbiB0aGUgZm9sbG93aW5nCisgKiB3b3Jkcy4KKyAqCisgKiBUaGUgVFJDXzY0X0ZM
QUcgYml0IGlzIG5vdCBzZXQgZm9yIHRoZXNlIGV2ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKKyAq
IDY0LWJpdCBhcmd1bWVudHMgaW4gdGhlIHJlY29yZCkuCisgKgorICogV29yZAorICogMCAgICBi
aXQgMzEgMzB8MjkgMjh8MjcgMjZ8MjUgMjR8MjMgMjJ8MjEgMjB8MTkgLi4uIDAKKyAqICAgICAg
ICAgIEE1ICAgfEE0ICAgfEEzICAgfEEyICAgfEExICAgfEEwICAgfEh5cGVyY2FsbCBvcAorICog
MSAgICBGaXJzdCAzMiBiaXQgKG9yIGxvdyB3b3JkIG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJl
Y29yZAorICogMiAgICBTZWNvbmQgMzIgYml0IChvciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0
KSBhcmcgaW4gcmVjb3JkCisgKiAuLi4KKyAqCisgKiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6Cisg
KgorICogICAwMGIgIEFyZ3VtZW50IG5vdCBwcmVzZW50CisgKiAgIDAxYiAgMzItYml0IGFyZ3Vt
ZW50IHByZXNlbnQKKyAqICAgMTBiICA2NC1iaXQgYXJndW1lbnQgcHJlc2VudAorICogICAxMWIg
IFJlc2VydmVkCisgKi8KKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4
MSA8PCAoMjAgKyAyKihpKSkpCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkp
ICgweDIgPDwgKDIwICsgMiooaSkpKQorI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19N
QVNLICAoMHhmZmYwMDAwMCkKKworI2RlZmluZSBUUkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAg
ICAgICAgICAgIChUUkNfU0hBRE9XICsgIDEpCisjZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9Q
QUdBVEUgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgMikKKyNkZWZpbmUgVFJDX1NIQURPV19G
QVNUX01NSU8gICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAzKQorI2RlZmluZSBUUkNf
U0hBRE9XX0ZBTFNFX0ZBU1RfUEFUSCAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDQpCisjZGVm
aW5lIFRSQ19TSEFET1dfTU1JTyAgICAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAg
NSkKKyNkZWZpbmUgVFJDX1NIQURPV19GSVhVUCAgICAgICAgICAgICAgICAgICAgICAoVFJDX1NI
QURPVyArICA2KQorI2RlZmluZSBUUkNfU0hBRE9XX0RPTUZfRFlJTkcgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDcpCisjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURSAgICAgICAgICAg
ICAgICAgICAgKFRSQ19TSEFET1cgKyAgOCkKKyNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VO
U0hBRE9XX1VTRVIgICAgICAoVFJDX1NIQURPVyArICA5KQorI2RlZmluZSBUUkNfU0hBRE9XX0VN
VUxBVEVfVU5TSEFET1dfRVZUSU5KICAgIChUUkNfU0hBRE9XICsgMTApCisjZGVmaW5lIFRSQ19T
SEFET1dfRU1VTEFURV9VTlNIQURPV19VTkhBTkRMRUQgKFRSQ19TSEFET1cgKyAxMSkKKyNkZWZp
bmUgVFJDX1NIQURPV19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEy
KQorI2RlZmluZSBUUkNfU0hBRE9XX1BSRUFMTE9DX1VOUElOICAgICAgICAgICAgIChUUkNfU0hB
RE9XICsgMTMpCisjZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAg
KFRSQ19TSEFET1cgKyAxNCkKKyNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAgICAgICAg
ICAgICAgICAoVFJDX1NIQURPVyArIDE1KQorCisvKiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNz
ICovCisjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkKKyNkZWZpbmUgVFJD
X0hWTV9WTUVOVFJZICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMSkKKyNkZWZpbmUg
VFJDX0hWTV9WTUVYSVQgICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMikKKyNkZWZp
bmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZM
QUcgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1BGX1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9QRl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIFRSQ182NF9GTEFHICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIpCisjZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDIpCisjZGVmaW5lIFRSQ19I
Vk1fSU5KX0VYQyAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAzKQorI2RlZmluZSBUUkNf
SFZNX0lOSl9WSVJRICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNCkKKyNkZWZpbmUgVFJD
X0hWTV9SRUlOSl9WSVJRICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDUpCisjZGVmaW5lIFRS
Q19IVk1fSU9fUkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA2KQorI2RlZmluZSBU
UkNfSFZNX0lPX1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykKKyNkZWZpbmUg
VFJDX0hWTV9DUl9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDgpCisjZGVmaW5l
IFRSQ19IVk1fQ1JfUkVBRDY0ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyAr
IDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIg
KyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVS
ICsgVFJDXzY0X0ZMQUcgKyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgwQSkKKyNkZWZpbmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MEIpCisjZGVmaW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDBDKQorI2RlZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAg
ICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRCkKKyNkZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEUpCisjZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBGKQorI2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAg
ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMCkKKyNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTEpCisjZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAg
ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDEyKQorI2RlZmluZSBUUkNfSFZNX0hMVCAgICAg
ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMykKKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEcg
ICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTQpCisjZGVmaW5lIFRSQ19IVk1fSU5WTFBH
NjQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MTQpCisjZGVmaW5l
IFRSQ19IVk1fTUNFICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE1KQorI2RlZmlu
ZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNikKKyNkZWZp
bmUgVFJDX0hWTV9JT01FTV9SRUFEICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTcpCisjZGVm
aW5lIFRSQ19IVk1fQ0xUUyAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE4KQorI2Rl
ZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKKyNk
ZWZpbmUgVFJDX0hWTV9MTVNXNjQgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9G
TEFHICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9SRFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIDB4MWEpCisjZGVmaW5lIFRSQ19IVk1fSU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDIwKQorI2RlZmluZSBUUkNfSFZNX05QRiAgICAgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgyMSkKKyNkZWZpbmUgVFJDX0hWTV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZN
X0hBTkRMRVIgKyAweDIyKQorI2RlZmluZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MjMpCisjZGVmaW5lIFRSQ19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgyNCkKKyNkZWZpbmUgVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDI1KQorCisjZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikKKyNkZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE3KQorCisvKiBUcmFjZSBldmVudHMgZm9yIGVtdWxh
dGVkIGRldmljZXMgKi8KKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChU
UkNfSFZNX0VNVUwgKyAweDEpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIg
ICAoVFJDX0hWTV9FTVVMICsgMHgyKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJ
TUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NU
QVJUX1RJTUVSIChUUkNfSFZNX0VNVUwgKyAweDQpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVU
X1NUT1BfVElNRVIgICAoVFJDX0hWTV9FTVVMICsgMHg1KQorI2RlZmluZSBUUkNfSFZNX0VNVUxf
UElUX1NUT1BfVElNRVIgICAgKFRSQ19IVk1fRU1VTCArIDB4NikKKyNkZWZpbmUgVFJDX0hWTV9F
TVVMX1JUQ19TVE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDcpCisjZGVmaW5lIFRSQ19I
Vk1fRU1VTF9MQVBJQ19TVE9QX1RJTUVSICAoVFJDX0hWTV9FTVVMICsgMHg4KQorI2RlZmluZSBU
UkNfSFZNX0VNVUxfUElUX1RJTUVSX0NCICAgICAgKFRSQ19IVk1fRU1VTCArIDB4OSkKKyNkZWZp
bmUgVFJDX0hWTV9FTVVMX0xBUElDX1RJTUVSX0NCICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCisj
ZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UX09VVFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhC
KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX0tJQ0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCAr
IDB4QykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VN
VUwgKyAweEQpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hW
TV9FTVVMICsgMHhFKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX05FR0VER0UgICAgICAgKFRS
Q19IVk1fRU1VTCArIDB4RikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxM
IChUUkNfSFZNX0VNVUwgKyAweDEwKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lO
VFIgICAgKFRSQ19IVk1fRU1VTCArIDB4MTEpCisKKy8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNs
YXNzICovCisjZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAx
KQorI2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKKyNk
ZWZpbmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCisKKy8qIFRy
YWNlIGV2ZW50cyBmb3IgSVJRcyAqLworI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9E
RUxBWSAoVFJDX0hXX0lSUSArIDB4MSkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAg
ICAgICAgKFRSQ19IV19JUlEgKyAweDIpCisjZGVmaW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1Ig
ICAgICAgIChUUkNfSFdfSVJRICsgMHgzKQorI2RlZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RP
UiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklT
SCAgICAgICAgKFRSQ19IV19JUlEgKyAweDUpCisjZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZF
Q1RPUiAgICAgIChUUkNfSFdfSVJRICsgMHg2KQorI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVE
X1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4NykKKyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVE
ICAgICAgICAgICAgKFRSQ19IV19JUlEgKyAweDgpCisKKy8qCisgKiBFdmVudCBGbGFncworICoK
KyAqIFNvbWUgZXZlbnRzIChlLmcsIFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQp
IGhhdmUgbXVsdGlwbGUKKyAqIHJlY29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlz
dGluZ3Vpc2ggYmV0d2VlbiB0aGUKKyAqIGRpZmZlcmVudCBmb3JtYXRzLgorICovCisjZGVmaW5l
IFRSQ182NF9GTEFHIDB4MTAwIC8qIEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAz
MiBiaXRzKSAqLworCisvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNl
IGJ1ZmZlciByZWNvcmQuICovCitzdHJ1Y3QgdF9yZWMgeworICAgIHVpbnQzMl90IGV2ZW50OjI4
OworICAgIHVpbnQzMl90IGV4dHJhX3UzMjozOyAgICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFp
bGluZyBleHRyYV91MzJbXSBhcnJheSAqLworICAgIHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDox
OyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3ljbGVzPyAqLworICAgIHVuaW9uIHsKKyAgICAgICAg
c3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBj
eWNsZSBjb3VudGVyIHRpbWVzdGFtcCAqLworICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMy
WzddOyAgICAgICAgIC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KKyAgICAgICAgfSBjeWNsZXM7Cisg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBleHRyYV91MzJbN107ICAgICAg
ICAgLyogZXZlbnQgZGF0YSBpdGVtcyAqLworICAgICAgICB9IG5vY3ljbGVzOworICAgIH0gdTsK
K307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEg
c2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFkCisgKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFu
IGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgorICovCitzdHJ1Y3QgdF9idWYgeworICAgIC8qIEFz
c3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93
ZXIgb2YgMi4KKyAgICAgKiBDT05TIGFuZCBQUk9EIGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIq
WCk6CisgICAgICogICAgIDAgPD0gY29ucyA8IDIqWAorICAgICAqICAgICAwIDw9IHByb2QgPCAy
KlgKKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3Mg
YXQgMl4zMiB3aGVuIFggaXMgbm90IGEKKyAgICAgKiBwb3dlciBvZiAyOgorICAgICAqICAgICAo
KCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAoMl4zMikgJSBYCisgICAgICovCisgICAgdWlu
dDMyX3QgY29uczsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNv
bnRyb2wgdG9vbHMuICovCisgICAgdWludDMyX3QgcHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBp
dGVtIHRvIGJlIHByb2R1Y2VkIGJ5IFhlbi4gICAgICAgICAgICovCisgICAgLyogIFJlY29yZHMg
Zm9sbG93IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtZXRhLWRhdGEgaGVhZGVyLiAgICAqLworfTsK
KworLyogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBNRk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJh
Y2sgdG8gdHJhY2UgY29uc3VtZXJzLgorICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBt
YXBwZWQgc3RydWN0dXJlIHdoZXJlIHRoZSBtZm4gbGlzdCB3aWxsIGJlIGhlbGQuCisgKiBNRk5z
IHdpbGwgYmUgYXQgKChVTE9OR19QVFIgKikodF9pbmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtj
cHVdKS4KKyAqLworc3RydWN0IHRfaW5mbyB7CisgICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBT
aXplIGluIHBhZ2VzIG9mIGVhY2ggdHJhY2UgYnVmZmVyICovCisgICAgdWludDE2X3QgbWZuX29m
ZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2luZm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxp
c3QgcGVyIGNwdSAqLworICAgIC8qIE1GTiBsaXN0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVh
ZGVyICovCit9OworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hfXyAqLworCisvKgor
ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor
ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k
ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4t
Y29tcGF0LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjJkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRl
L3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIHhlbi1jb21wYXQuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8g
WGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQor
ICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq
ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp
bgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAo
YykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19Y
RU5fQ09NUEFUX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9IX18KKworI2Rl
ZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNjAwCisKKyNpZiBk
ZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKy8qIFhlbiBpcyBidWls
dCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVzdCBpbnRlcmZh
Y2UuICovCisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5fTEFURVNUX0lO
VEVSRkFDRV9WRVJTSU9OX18KKyNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18pCisvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdldCB0aGUgbGVn
YWN5IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAweDAw
MDAwMDAwCisjZW5kaWYKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPiBfX1hFTl9M
QVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2Vycm9yICJUaGVzZSBoZWFkZXIgZmlsZXMgZG8g
bm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCisjZW5kaWYKKwor
I2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW4vcHVibGljL3hlbi5oIGIvaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyOGNjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9p
bmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKQEAgLTAsMCArMSw5MDggQEAKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIHhlbi5oCisgKiAKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byBYZW4uCisg
KiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg
KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT
T0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEsgQSBGcmFzZXIKKyAqLworCisj
aWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5fSF9f
CisKKyNpbmNsdWRlICJ4ZW4tY29tcGF0LmgiCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk
ZWZpbmVkKF9feDg2XzY0X18pCisjaW5jbHVkZSAiYXJjaC14ODYveGVuLmgiCisjZWxpZiBkZWZp
bmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKQorI2luY2x1ZGUgImFyY2gtYXJt
LmgiCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKwor
I2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIEd1ZXN0IGhhbmRsZXMgZm9yIHByaW1pdGl2ZSBDIHR5
cGVzLiAqLworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY2hhcik7CitfX0RFRklORV9YRU5fR1VF
U1RfSEFORExFKHVjaGFyLCB1bnNpZ25lZCBjaGFyKTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KGludCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQsICB1bnNpZ25lZCBpbnQpOwor
I2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCitERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShMT05HX1BUUik7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVsb25nLCBV
TE9OR19QVFIpOworI2VuZGlmCitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2b2lkKTsKKworREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0X3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX3Bmbl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsKKyNlbmRp
ZgorCisvKgorICogSFlQRVJDQUxMUworICovCisKKy8qIGBpbmNvbnRlbnRzIDEwMCBoY2FsbHMg
TGlzdCBvZiBoeXBlcmNhbGxzCisgKiBgIGVudW0gaHlwZXJjYWxsX251bSB7IC8vIF9fSFlQRVJW
SVNPUl8qID0+IEhZUEVSVklTT1JfKigpCisgKi8KKworI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0
X3RyYXBfdGFibGUgICAgICAgIDAKKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdV91cGRhdGUgICAg
ICAgICAgICAxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfZ2R0ICAgICAgICAgICAgICAgMgor
I2RlZmluZSBfX0hZUEVSVklTT1Jfc3RhY2tfc3dpdGNoICAgICAgICAgIDMKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3NldF9jYWxsYmFja3MgICAgICAgICA0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9m
cHVfdGFza3N3aXRjaCAgICAgICAgNQorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2NoZWRfb3BfY29t
cGF0ICAgICAgIDYgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAxMDEgKi8KKyNkZWZpbmUgX19IWVBF
UlZJU09SX3BsYXRmb3JtX29wICAgICAgICAgICA3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRf
ZGVidWdyZWcgICAgICAgICAgOAorI2RlZmluZSBfX0hZUEVSVklTT1JfZ2V0X2RlYnVncmVnICAg
ICAgICAgIDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV9kZXNjcmlwdG9yICAgIDEwCisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tZW1vcnlfb3AgICAgICAgICAgICAxMgorI2RlZmluZSBfX0hZ
UEVSVklTT1JfbXVsdGljYWxsICAgICAgICAgICAgMTMKKyNkZWZpbmUgX19IWVBFUlZJU09SX3Vw
ZGF0ZV92YV9tYXBwaW5nICAgIDE0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfdGltZXJfb3Ag
ICAgICAgICAxNQorI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcF9jb21wYXQg
MTYgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX3hl
bl92ZXJzaW9uICAgICAgICAgIDE3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9jb25zb2xlX2lvICAg
ICAgICAgICAxOAorI2RlZmluZSBfX0hZUEVSVklTT1JfcGh5c2Rldl9vcF9jb21wYXQgICAgMTkg
LyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX2dyYW50
X3RhYmxlX29wICAgICAgIDIwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92bV9hc3Npc3QgICAgICAg
ICAgICAyMQorI2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJkb21h
aW4gMjIKKyNkZWZpbmUgX19IWVBFUlZJU09SX2lyZXQgICAgICAgICAgICAgICAgIDIzIC8qIHg4
NiBvbmx5ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92Y3B1X29wICAgICAgICAgICAgICAyNAor
I2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFzZSAgICAgMjUgLyogeDg2LzY0IG9u
bHkgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdWV4dF9vcCAgICAgICAgICAgIDI2CisjZGVm
aW5lIF9fSFlQRVJWSVNPUl94c21fb3AgICAgICAgICAgICAgICAyNworI2RlZmluZSBfX0hZUEVS
VklTT1Jfbm1pX29wICAgICAgICAgICAgICAgMjgKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVk
X29wICAgICAgICAgICAgIDI5CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9jYWxsYmFja19vcCAgICAg
ICAgICAzMAorI2RlZmluZSBfX0hZUEVSVklTT1JfeGVub3Byb2Zfb3AgICAgICAgICAgMzEKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AgICAgIDMyCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9waHlzZGV2X29wICAgICAgICAgICAzMworI2RlZmluZSBfX0hZUEVSVklTT1JfaHZt
X29wICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgX19IWVBFUlZJU09SX3N5c2N0bCAgICAgICAg
ICAgICAgIDM1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kb21jdGwgICAgICAgICAgICAgICAzNgor
I2RlZmluZSBfX0hZUEVSVklTT1Jfa2V4ZWNfb3AgICAgICAgICAgICAgMzcKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3RtZW1fb3AgICAgICAgICAgICAgIDM4CisjZGVmaW5lIF9fSFlQRVJWSVNPUl94
Y19yZXNlcnZlZF9vcCAgICAgICAzOSAvKiByZXNlcnZlZCBmb3IgWGVuQ2xpZW50ICovCisKKy8q
IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBoeXBlcmNhbGwgZGVmaW5pdGlvbnMuICovCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBfX0hZUEVSVklT
T1JfYXJjaF8xICAgICAgICAgICAgICAgNDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMiAg
ICAgICAgICAgICAgIDUwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzMgICAgICAgICAgICAg
ICA1MQorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF80ICAgICAgICAgICAgICAgNTIKKyNkZWZp
bmUgX19IWVBFUlZJU09SX2FyY2hfNSAgICAgICAgICAgICAgIDUzCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9hcmNoXzYgICAgICAgICAgICAgICA1NAorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF83
ICAgICAgICAgICAgICAgNTUKKworLyogYCB9ICovCisKKy8qCisgKiBIWVBFUkNBTEwgQ09NUEFU
SUJJTElUWS4KKyAqLworCisvKiBOZXcgc2NoZWRfb3AgaHlwZXJjYWxsIGludHJvZHVjZWQgaW4g
MHgwMDAzMDEwMS4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDEw
MQorI3VuZGVmIF9fSFlQRVJWSVNPUl9zY2hlZF9vcAorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2No
ZWRfb3AgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdAorI2VuZGlmCisKKy8qIE5ldyBldmVu
dC1jaGFubmVsIGFuZCBwaHlzZGV2IGh5cGVyY2FsbHMgaW50cm9kdWNlZCBpbiAweDAwMDMwMjAy
LiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAyCisjdW5kZWYg
X19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AKKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50
X2NoYW5uZWxfb3AgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0CisjdW5kZWYg
X19IWVBFUlZJU09SX3BoeXNkZXZfb3AKKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3Ag
X19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0CisjZW5kaWYKKworLyogTmV3IHBsYXRmb3Jt
X29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDQuICovCisjaWYgX19YRU5fSU5U
RVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDQKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvbTBf
b3AgX19IWVBFUlZJU09SX3BsYXRmb3JtX29wCisjZW5kaWYKKworLyogCisgKiBWSVJUVUFMIElO
VEVSUlVQVFMKKyAqIAorICogVmlydHVhbCBpbnRlcnJ1cHRzIHRoYXQgYSBndWVzdCBPUyBtYXkg
cmVjZWl2ZSBmcm9tIFhlbi4KKyAqIAorICogSW4gdGhlIHNpZGUgY29tbWVudHMsICdWLicgZGVu
b3RlcyBhIHBlci1WQ1BVIFZJUlEgd2hpbGUgJ0cuJyBkZW5vdGVzIGEKKyAqIGdsb2JhbCBWSVJR
LiBUaGUgZm9ybWVyIGNhbiBiZSBib3VuZCBvbmNlIHBlciBWQ1BVIGFuZCBjYW5ub3QgYmUgcmUt
Ym91bmQuCisgKiBUaGUgbGF0dGVyIGNhbiBiZSBhbGxvY2F0ZWQgb25seSBvbmNlIHBlciBndWVz
dDogdGhleSBtdXN0IGluaXRpYWxseSBiZQorICogYWxsb2NhdGVkIHRvIFZDUFUwIGJ1dCBjYW4g
c3Vic2VxdWVudGx5IGJlIHJlLWJvdW5kLgorICovCisvKiBgIGVudW0gdmlycSB7ICovCisjZGVm
aW5lIFZJUlFfVElNRVIgICAgICAwICAvKiBWLiBUaW1lYmFzZSB1cGRhdGUsIGFuZC9vciByZXF1
ZXN0ZWQgdGltZW91dC4gICovCisjZGVmaW5lIFZJUlFfREVCVUcgICAgICAxICAvKiBWLiBSZXF1
ZXN0IGd1ZXN0IHRvIGR1bXAgZGVidWcgaW5mby4gICAgICAgICAgICovCisjZGVmaW5lIFZJUlFf
Q09OU09MRSAgICAyICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQgb24gZW1lcmdlbmN5IGNv
bnNvbGUuICovCisjZGVmaW5lIFZJUlFfRE9NX0VYQyAgICAzICAvKiBHLiAoRE9NMCkgRXhjZXB0
aW9uYWwgZXZlbnQgZm9yIHNvbWUgZG9tYWluLiAgICovCisjZGVmaW5lIFZJUlFfVEJVRiAgICAg
ICA0ICAvKiBHLiAoRE9NMCkgVHJhY2UgYnVmZmVyIGhhcyByZWNvcmRzIGF2YWlsYWJsZS4gICov
CisjZGVmaW5lIFZJUlFfREVCVUdHRVIgICA2ICAvKiBHLiAoRE9NMCkgQSBkb21haW4gaGFzIHBh
dXNlZCBmb3IgZGVidWdnaW5nLiAgICovCisjZGVmaW5lIFZJUlFfWEVOT1BST0YgICA3ICAvKiBW
LiBYZW5PcHJvZmlsZSBpbnRlcnJ1cHQ6IG5ldyBzYW1wbGUgYXZhaWxhYmxlICovCisjZGVmaW5l
IFZJUlFfQ09OX1JJTkcgICA4ICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQgb24gY29uc29s
ZSAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfUENQVV9TVEFURSA5ICAvKiBHLiAoRE9NMCkg
UENQVSBzdGF0ZSBjaGFuZ2VkICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfTUVN
X0VWRU5UICAxMCAvKiBHLiAoRE9NMCkgQSBtZW1vcnkgZXZlbnQgaGFzIG9jY3VyZWQgICAgICAg
ICAgICovCisjZGVmaW5lIFZJUlFfWENfUkVTRVJWRUQgMTEgLyogRy4gUmVzZXJ2ZWQgZm9yIFhl
bkNsaWVudCAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfRU5PTUVNICAgICAx
MiAvKiBHLiAoRE9NMCkgTG93IG9uIGhlYXAgbWVtb3J5ICAgICAgICovCisKKy8qIEFyY2hpdGVj
dHVyZS1zcGVjaWZpYyBWSVJRIGRlZmluaXRpb25zLiAqLworI2RlZmluZSBWSVJRX0FSQ0hfMCAg
ICAxNgorI2RlZmluZSBWSVJRX0FSQ0hfMSAgICAxNworI2RlZmluZSBWSVJRX0FSQ0hfMiAgICAx
OAorI2RlZmluZSBWSVJRX0FSQ0hfMyAgICAxOQorI2RlZmluZSBWSVJRX0FSQ0hfNCAgICAyMAor
I2RlZmluZSBWSVJRX0FSQ0hfNSAgICAyMQorI2RlZmluZSBWSVJRX0FSQ0hfNiAgICAyMgorI2Rl
ZmluZSBWSVJRX0FSQ0hfNyAgICAyMworLyogYCB9ICovCisKKyNkZWZpbmUgTlJfVklSUVMgICAg
ICAgMjQKKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9tbXVf
dXBkYXRlKGNvbnN0IHN0cnVjdCBtbXVfdXBkYXRlIHJlcXNbXSwKKyAqIGAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCAqZG9uZV9vdXQsCisgKiBgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JlaWduZG9tKQorICogYAorICogQHJlcXMgaXMg
YW4gYXJyYXkgb2YgbW11X3VwZGF0ZV90IHN0cnVjdHVyZXMgKChwdHIsIHZhbCkgcGFpcnMpLgor
ICogQGNvdW50IGlzIHRoZSBsZW5ndGggb2YgdGhlIGFib3ZlIGFycmF5LgorICogQHBkb25lIGlz
IGFuIG91dHB1dCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBudW1iZXIgb2YgY29tcGxldGVkIG9wZXJh
dGlvbnMKKyAqIEBmb3JlaWduZG9tWzE1OjBdOiBGRCwgdGhlIGV4cGVjdGVkIG93bmVyIG9mIGRh
dGEgcGFnZXMgcmVmZXJlbmNlZCBpbiB0aGlzCisgKiAgICAgICAgICAgICAgICAgICAgaHlwZXJj
YWxsIGludm9jYXRpb24uIENhbiBiZSBET01JRF9TRUxGLgorICogQGZvcmVpZ25kb21bMzE6MTZd
OiBQRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBwYWdldGFibGUgcGFnZXMgcmVmZXJlbmNlZAor
ICogICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBUaGUg
dmFsdWUgb2YgdGhpcyBmaWVsZAorICogICAgICAgICAgICAgICAgICAgICAoeCkgZW5jb2RlcyB0
aGUgUEZEIGFzIGZvbGxvd3M6CisgKiAgICAgICAgICAgICAgICAgICAgIHggPT0gMCA9PiBQRkQg
PT0gRE9NSURfU0VMRgorICogICAgICAgICAgICAgICAgICAgICB4ICE9IDAgPT4gUEZEID09IHgg
LSAxCisgKiAKKyAqIFN1Yi1jb21tYW5kczogcHRyWzE6MF0gc3BlY2lmaWVzIHRoZSBhcHByb3By
aWF0ZSBNTVVfKiBjb21tYW5kLgorICogLS0tLS0tLS0tLS0tLQorICogcHRyWzE6MF0gPT0gTU1V
X05PUk1BTF9QVF9VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIGEgcGFnZSB0YWJsZSBi
ZWxvbmdpbmcgdG8gUEZELiBJZiB1cGRhdGluZyBhbiBMMSB0YWJsZSwKKyAqIGFuZCB0aGUgbmV3
IHRhYmxlIGVudHJ5IGlzIHZhbGlkL3ByZXNlbnQsIHRoZSBtYXBwZWQgZnJhbWUgbXVzdCBiZWxv
bmcgdG8KKyAqIEZELiBJZiBhdHRlbXB0aW5nIHRvIG1hcCBhbiBJL08gcGFnZSB0aGVuIHRoZSBj
YWxsZXIgYXNzdW1lcyB0aGUgcHJpdmlsZWdlCisgKiBvZiB0aGUgRkQuCisgKiBGRCA9PSBET01J
RF9JTzogUGVybWl0IC9vbmx5LyBJL08gbWFwcGluZ3MsIGF0IHRoZSBwcml2IGxldmVsIG9mIHRo
ZSBjYWxsZXIuCisgKiBGRCA9PSBET01JRF9YRU46IE1hcCByZXN0cmljdGVkIGFyZWFzIG9mIFhl
bidzIGhlYXAgc3BhY2UuCisgKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJlc3Mgb2YgdGhlIHBh
Z2UtdGFibGUgZW50cnkgdG8gbW9kaWZ5LgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUu
CisgKgorICogVGhlcmUgYWxzbyBjZXJ0YWluIGltcGxpY2l0IHJlcXVpcmVtZW50cyB3aGVuIHVz
aW5nIHRoaXMgaHlwZXJjYWxsLiBUaGUKKyAqIHBhZ2VzIHRoYXQgbWFrZSB1cCBhIHBhZ2V0YWJs
ZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9ubHkgaW4gdGhlIGd1ZXN0LgorICogVGhpcyBwcmV2ZW50
cyB1bmNvbnRyb2xsZWQgZ3Vlc3QgdXBkYXRlcyB0byB0aGUgcGFnZXRhYmxlLiBYZW4gc3RyaWN0
bHkKKyAqIGVuZm9yY2VzIHRoaXMsIGFuZCB3aWxsIGRpc2FsbG93IGFueSBwYWdldGFibGUgdXBk
YXRlIHdoaWNoIHdpbGwgZW5kIHVwCisgKiBtYXBwaW5nIHBhZ2V0YWJsZSBwYWdlIFJXLCBhbmQg
d2lsbCBkaXNhbGxvdyB1c2luZyBhbnkgd3JpdGFibGUgcGFnZSBhcyBhCisgKiBwYWdldGFibGUu
IEluIHByYWN0aWNlIGl0IG1lYW5zIHRoYXQgd2hlbiBjb25zdHJ1Y3RpbmcgYSBwYWdlIHRhYmxl
IGZvciBhCisgKiBwcm9jZXNzLCB0aHJlYWQsIGV0Yywgd2UgTVVTVCBiZSB2ZXJ5IGRpbGxpZ2ll
bnQgaW4gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICogIDEpLiBTdGFydCB3aXRoIHRvcC1sZXZl
bCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxhbmd1YWdlOiBMNCkuIEZpbGwgb3V0CisgKiAgICAgIHRo
ZSBlbnRyaWVzLgorICogIDIpLiBLZWVwIG9uIGdvaW5nLCBmaWxsaW5nIG91dCB0aGUgdXBwZXIg
KFBVRCBvciBMMyksIGFuZCBtaWRkbGUgKFBNRAorICogICAgICBvciBMMikuCisgKiAgMykuIFN0
YXJ0IGZpbGxpbmcgb3V0IHRoZSBQVEUgdGFibGUgKEwxKSB3aXRoIHRoZSBQVEUgZW50cmllcy4g
T25jZQorICogIAlkb25lLCBtYWtlIHN1cmUgdG8gc2V0IGVhY2ggb2YgdGhvc2UgZW50cmllcyB0
byBSTyAoc28gd3JpdGVhYmxlIGJpdAorICogIAlpcyB1bnNldCkuIE9uY2UgdGhhdCBoYXMgYmVl
biBjb21wbGV0ZWQsIHNldCB0aGUgUE1EIChMMikgZm9yIHRoaXMKKyAqICAJUFRFIHRhYmxlIGFz
IFJPLgorICogIDQpLiBXaGVuIGNvbXBsZXRlZCB3aXRoIGFsbCBvZiB0aGUgUE1EIChMMikgZW50
cmllcywgYW5kIGFsbCBvZiB0aGVtIGhhdmUKKyAqICAJYmVlbiBzZXQgdG8gUk8sIG1ha2Ugc3Vy
ZSB0byBzZXQgUk8gdGhlIFBVRCAoTDMpLiBEbyB0aGUgc2FtZQorICogIAlvcGVyYXRpb24gb24g
UEdEIChMNCkgcGFnZXRhYmxlIGVudHJpZXMgdGhhdCBoYXZlIGEgUFVEIChMMykgZW50cnkuCisg
KiAgNSkuIE5vdyBiZWZvcmUgeW91IGNhbiB1c2UgdGhvc2UgcGFnZXMgKHNvIHNldHRpbmcgdGhl
IGNyMyksIHlvdSBNVVNUIGFsc28KKyAqICAgICAgcGluIHRoZW0gc28gdGhhdCB0aGUgaHlwZXJ2
aXNvciBjYW4gdmVyaWZ5IHRoZSBlbnRyaWVzLiBUaGlzIGlzIGRvbmUKKyAqICAgICAgdmlhIHRo
ZSBIWVBFUlZJU09SX21tdWV4dF9vcChNTVVFWFRfUElOX0w0X1RBQkxFLCBndWVzdCBwaHlzaWNh
bCBmcmFtZQorICogICAgICBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKS4gQW5kIHRoaXMgcG9pbnQg
dGhlIEhZUEVSVklTT1JfbW11ZXh0X29wKAorICogICAgICBNTVVFWFRfTkVXX0JBU0VQVFIsIGd1
ZXN0IHBoeXNpY2FsIGZyYW1lIG51bWJlciBvZiB0aGUgUEdEIChMNCkpIGNhbiBiZQorICogICAg
ICBpc3N1ZWQuCisgKiBGb3IgMzItYml0IGd1ZXN0cywgdGhlIEw0IGlzIG5vdCB1c2VkIChhcyB0
aGVyZSBpcyBsZXNzIHBhZ2V0YWJsZXMpLCBzbworICogaW5zdGVhZCB1c2UgTDMuCisgKiBBdCB0
aGlzIHBvaW50IHRoZSBwYWdldGFibGVzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgTU1VX05P
Uk1BTF9QVF9VUERBVEUKKyAqIGh5cGVyY2FsbC4gQWxzbyBpZiBzbyBkZXNpcmVkIHRoZSBPUyBj
YW4gYWxzbyB0cnkgdG8gd3JpdGUgdG8gdGhlIFBURQorICogYW5kIGJlIHRyYXBwZWQgYnkgdGhl
IGh5cGVydmlzb3IgKGFzIHRoZSBQVEUgZW50cnkgaXMgUk8pLgorICoKKyAqIFRvIGRlYWxsb2Nh
dGUgdGhlIHBhZ2VzLCB0aGUgb3BlcmF0aW9ucyBhcmUgdGhlIHJldmVyc2Ugb2YgdGhlIHN0ZXBz
CisgKiBtZW50aW9uZWQgYWJvdmUuIFRoZSBhcmd1bWVudCBpcyBNTVVFWFRfVU5QSU5fVEFCTEUg
Zm9yIGFsbCBsZXZlbHMgYW5kIHRoZQorICogcGFnZXRhYmxlIE1VU1Qgbm90IGJlIGluIHVzZSAo
bWVhbmluZyB0aGF0IHRoZSBjcjMgaXMgbm90IHNldCB0byBpdCkuCisgKiAKKyAqIHB0clsxOjBd
ID09IE1NVV9NQUNIUEhZU19VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIHRoZSBtYWNo
aW5lLT5wc2V1ZG8tcGh5c2ljYWwgbWFwcGluZyB0YWJsZS4KKyAqIHB0cls6Ml0gIC0tIE1hY2hp
bmUgYWRkcmVzcyB3aXRoaW4gdGhlIGZyYW1lIHdob3NlIG1hcHBpbmcgdG8gbW9kaWZ5LgorICog
ICAgICAgICAgICAgVGhlIGZyYW1lIG11c3QgYmVsb25nIHRvIHRoZSBGRCwgaWYgb25lIGlzIHNw
ZWNpZmllZC4KKyAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlIGludG8gdGhlIG1hcHBpbmcg
ZW50cnkuCisgKiAKKyAqIHB0clsxOjBdID09IE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQ6Cisg
KiBBcyBNTVVfTk9STUFMX1BUX1VQREFURSBhYm92ZSwgYnV0IEEvRCBiaXRzIGN1cnJlbnRseSBp
biB0aGUgUFRFIGFyZSBPUmVkCisgKiB3aXRoIHRob3NlIGluIEB2YWwuCisgKgorICogQHZhbCBp
cyB1c3VhbGx5IHRoZSBtYWNoaW5lIGZyYW1lIG51bWJlciBhbG9uZyB3aXRoIHNvbWUgYXR0cmli
dXRlcy4KKyAqIFRoZSBhdHRyaWJ1dGVzIGJ5IGRlZmF1bHQgZm9sbG93IHRoZSBhcmNoaXRlY3R1
cmUgZGVmaW5lZCBiaXRzLiBNZWFuaW5nIHRoYXQKKyAqIGlmIHRoaXMgaXMgYSBYODZfNjQgbWFj
aGluZSBhbmQgZm91ciBwYWdlIHRhYmxlIGxheW91dCBpcyB1c2VkLCB0aGUgbGF5b3V0CisgKiBv
ZiB2YWwgaXM6CisgKiAgLSA2MyBpZiBzZXQgbWVhbnMgTm8gZXhlY3V0ZSAoTlgpCisgKiAgLSA0
Ni0xMyB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIKKyAqICAtIDEyIGF2YWlsYWJsZSBmb3IgZ3Vl
c3QKKyAqICAtIDExIGF2YWlsYWJsZSBmb3IgZ3Vlc3QKKyAqICAtIDEwIGF2YWlsYWJsZSBmb3Ig
Z3Vlc3QKKyAqICAtIDkgYXZhaWxhYmxlIGZvciBndWVzdAorICogIC0gOCBnbG9iYWwKKyAqICAt
IDcgUEFUIChQU0UgaXMgZGlzYWJsZWQsIG11c3QgdXNlIGh5cGVyY2FsbCB0byBtYWtlIDRNQiBv
ciAyTUIgcGFnZXMpCisgKiAgLSA2IGRpcnR5CisgKiAgLSA1IGFjY2Vzc2VkCisgKiAgLSA0IHBh
Z2UgY2FjaGVkIGRpc2FibGVkCisgKiAgLSAzIHBhZ2Ugd3JpdGUgdGhyb3VnaAorICogIC0gMiB1
c2Vyc3BhY2UgYWNjZXNzaWJsZQorICogIC0gMSB3cml0ZWFibGUKKyAqICAtIDAgcHJlc2VudAor
ICoKKyAqICBUaGUgb25lIGJpdHMgdGhhdCBkb2VzIG5vdCBmaXQgd2l0aCB0aGUgZGVmYXVsdCBs
YXlvdXQgaXMgdGhlIFBBR0VfUFNFCisgKiAgYWxzbyBjYWxsZWQgUEFHRV9QQVQpLiBUaGUgTU1V
RVhUX1tVTl1NQVJLX1NVUEVSIGFyZ3VtZW50cyB0byB0aGUKKyAqICBIWVBFUlZJU09SX21tdWV4
dF9vcCBzZXJ2ZSBhcyBtZWNoYW5pc20gdG8gc2V0IGEgcGFnZXRhYmxlIHRvIGJlIDRNQgorICog
IChvciAyTUIpIGluc3RlYWQgb2YgdXNpbmcgdGhlIFBBR0VfUFNFIGJpdC4KKyAqCisgKiAgVGhl
IHJlYXNvbiB0aGF0IHRoZSBQQUdFX1BTRSAoYml0IDcpIGlzIG5vdCBiZWluZyB1dGlsaXplZCBp
cyBkdWUgdG8gWGVuCisgKiAgdXNpbmcgaXQgYXMgdGhlIFBhZ2UgQXR0cmlidXRlIFRhYmxlIChQ
QVQpIGJpdCAtIGZvciBkZXRhaWxzIG9uIGl0IHBsZWFzZQorICogIHJlZmVyIHRvIEludGVsIFNE
TSAxMC4xMi4gVGhlIFBBVCBhbGxvd3MgdG8gc2V0IHRoZSBjYWNoaW5nIGF0dHJpYnV0ZXMgb2YK
KyAqICBwYWdlcyBpbnN0ZWFkIG9mIHVzaW5nIE1UUlJzLgorICoKKyAqICBUaGUgUEFUIE1TUiBp
cyBhcyBmb2xsb3dzIChpdCBpcyBhIDY0LWJpdCB2YWx1ZSwgZWFjaCBlbnRyeSBpcyA4IGJpdHMp
OgorICogICAgICAgICAgICAgICAgICAgIFBBVDQgICAgICAgICAgICAgICAgIFBBVDAKKyAqICAr
LS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICogIHwgVUMgIHwg
VUMtIHwgV0MgfCBXQiB8IFVDIHwgVUMtIHwgV0MgfCBXQiB8ICA8PSBMaW51eAorICogICstLS0t
LSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0rCisgKiAgfCBVQyAgfCBVQy0g
fCBXVCB8IFdCIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwgIDw9IEJJT1MgKGRlZmF1bHQgd2hlbiBt
YWNoaW5lIGJvb3RzKQorICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0t
Ky0tLS0rCisgKiAgfCByc3YgfCByc3YgfCBXUCB8IFdDIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwg
IDw9IFhlbgorICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0r
CisgKgorICogIFRoZSBsb29rdXAgb2YgdGhpcyBpbmRleCB0YWJsZSB0cmFuc2xhdGVzIHRvIGxv
b2tpbmcgdXAKKyAqICBCaXQgNywgQml0IDQsIGFuZCBCaXQgMyBvZiB2YWwgZW50cnk6CisgKgor
ICogIFBBVC9QU0UgKGJpdCA3KSAuLi4gUENEIChiaXQgNCkgLi4gUFdUIChiaXQgMykuCisgKgor
ICogIElmIGFsbCBiaXRzIGFyZSBvZmYsIHRoZW4gd2UgYXJlIHVzaW5nIFBBVDAuIElmIGJpdCAz
IHR1cm5lZCBvbiwKKyAqICB0aGVuIHdlIGFyZSB1c2luZyBQQVQxLCBpZiBiaXQgMyBhbmQgYml0
IDQsIHRoZW4gUEFUMi4uCisgKgorICogIEFzIHlvdSBjYW4gc2VlLCB0aGUgTGludXggUEFUMSB0
cmFuc2xhdGVzIHRvIFBBVDQgdW5kZXIgWGVuLiBXaGljaCBtZWFucworICogIHRoYXQgaWYgYSBn
dWVzdCB0aGF0IGZvbGxvd3MgTGludXgncyBQQVQgc2V0dXAgYW5kIHdvdWxkIGxpa2UgdG8gc2V0
IFdyaXRlCisgKiAgQ29tYmluZWQgb24gcGFnZXMgaXQgTVVTVCB1c2UgUEFUNCBlbnRyeS4gTWVh
bmluZyB0aGF0IEJpdCA3IChQQUdFX1BBVCkgaXMKKyAqICBzZXQuIEZvciBleGFtcGxlLCB1bmRl
ciBMaW51eCBpdCBvbmx5IHVzZXMgUEFUMCwgUEFUMSwgYW5kIFBBVDIgZm9yIHRoZQorICogIGNh
Y2hpbmcgYXM6CisgKgorICogICBXQiA9IG5vbmUgKHNvIFBBVDApCisgKiAgIFdDID0gUFdUIChi
aXQgMyBvbikKKyAqICAgVUMgPSBQV1QgfCBQQ0QgKGJpdCAzIGFuZCA0IGFyZSBvbikuCisgKgor
ICogVG8gbWFrZSBpdCB3b3JrIHdpdGggWGVuLCBpdCBuZWVkcyB0byB0cmFuc2xhdGUgdGhlIFdD
IGJpdCBhcyBzbzoKKyAqCisgKiAgUFdUIChzbyBiaXQgMyBvbikgLS0+IFBBVCAoc28gYml0IDcg
aXMgb24pIGFuZCBjbGVhciBiaXQgMworICoKKyAqIEFuZCB0byB0cmFuc2xhdGUgYmFjayBpdCB3
b3VsZDoKKyAqCisgKiBQQVQgKGJpdCA3IG9uKSAtLT4gUFdUIChiaXQgMyBvbikgYW5kIGNsZWFy
IGJpdCA3LgorICovCisjZGVmaW5lIE1NVV9OT1JNQUxfUFRfVVBEQVRFICAgICAgMCAvKiBjaGVj
a2VkICcqcHRyID0gdmFsJy4gcHRyIGlzIE1BLiAgICAgICovCisjZGVmaW5lIE1NVV9NQUNIUEhZ
U19VUERBVEUgICAgICAgMSAvKiBwdHIgPSBNQSBvZiBmcmFtZSB0byBtb2RpZnkgZW50cnkgZm9y
ICovCisjZGVmaW5lIE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQgMiAvKiBhdG9taWNhbGx5OiAq
cHRyID0gdmFsIHwgKCpwdHImKEF8RCkpICovCisKKy8qCisgKiBNTVUgRVhURU5ERUQgT1BFUkFU
SU9OUworICoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9tbXVleHRf
b3AobW11ZXh0X29wX3QgdW9wc1tdLAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgY291bnQsCisgKiBgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqcGRv
bmUsCisgKiBgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JlaWduZG9tKQor
ICovCisvKiBIWVBFUlZJU09SX21tdWV4dF9vcCgpIGFjY2VwdHMgYSBsaXN0IG9mIG1tdWV4dF9v
cCBzdHJ1Y3R1cmVzLgorICogQSBmb3JlaWduZG9tIChGRCkgY2FuIGJlIHNwZWNpZmllZCAob3Ig
RE9NSURfU0VMRiBmb3Igbm9uZSkuCisgKiBXaGVyZSB0aGUgRkQgaGFzIHNvbWUgZWZmZWN0LCBp
dCBpcyBkZXNjcmliZWQgYmVsb3cuCisgKgorICogY21kOiBNTVVFWFRfKFVOKVBJTl8qX1RBQkxF
CisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlICh1bilwaW5uZWQgYXMgYSBwLnQu
IHBhZ2UuCisgKiAgICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBp
cyBzcGVjaWZpZWQuCisgKgorICogY21kOiBNTVVFWFRfTkVXX0JBU0VQVFIKKyAqIG1mbjogTWFj
aGluZSBmcmFtZSBudW1iZXIgb2YgbmV3IHBhZ2UtdGFibGUgYmFzZSB0byBpbnN0YWxsIGluIE1N
VS4KKyAqCisgKiBjbWQ6IE1NVUVYVF9ORVdfVVNFUl9CQVNFUFRSIFt4ODYvNjQgb25seV0KKyAq
IG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgbmV3IHBhZ2UtdGFibGUgYmFzZSB0byBpbnN0
YWxsIGluIE1NVQorICogICAgICB3aGVuIGluIHVzZXIgc3BhY2UuCisgKgorICogY21kOiBNTVVF
WFRfVExCX0ZMVVNIX0xPQ0FMCisgKiBObyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gRmx1c2hlcyBs
b2NhbCBUTEIuCisgKgorICogY21kOiBNTVVFWFRfSU5WTFBHX0xPQ0FMCisgKiBsaW5lYXJfYWRk
cjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIHRoZSBsb2NhbCBUTEIuCisgKgor
ICogY21kOiBNTVVFWFRfVExCX0ZMVVNIX01VTFRJCisgKiB2Y3B1bWFzazogUG9pbnRlciB0byBi
aXRtYXAgb2YgVkNQVXMgdG8gYmUgZmx1c2hlZC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9JTlZMUEdf
TVVMVEkKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0byBiZSBmbHVzaGVkLgorICog
dmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNoZWQuCisgKgor
ICogY21kOiBNTVVFWFRfVExCX0ZMVVNIX0FMTAorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IEZsdXNoZXMgYWxsIFZDUFVzJyBUTEJzLgorICoKKyAqIGNtZDogTU1VRVhUX0lOVkxQR19BTEwK
KyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0byBiZSBmbHVzaGVkIGZyb20gYWxsIFZD
UFVzJyBUTEJzLgorICoKKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NBQ0hFCisgKiBObyBhZGRpdGlv
bmFsIGFyZ3VtZW50cy4gV3JpdGVzIGJhY2sgYW5kIGZsdXNoZXMgY2FjaGUgY29udGVudHMuCisg
KgorICogY21kOiBNTVVFWFRfRkxVU0hfQ0FDSEVfR0xPQkFMCisgKiBObyBhZGRpdGlvbmFsIGFy
Z3VtZW50cy4gV3JpdGVzIGJhY2sgYW5kIGZsdXNoZXMgY2FjaGUgY29udGVudHMKKyAqIG9uIGFs
bCBDUFVzIGluIHRoZSBzeXN0ZW0uCisgKgorICogY21kOiBNTVVFWFRfU0VUX0xEVAorICogbGlu
ZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIG9mIExEVCBiYXNlIChOQi4gbXVzdCBiZSBwYWdlLWFs
aWduZWQpLgorICogbnJfZW50czogTnVtYmVyIG9mIGVudHJpZXMgaW4gTERULgorICoKKyAqIGNt
ZDogTU1VRVhUX0NMRUFSX1BBR0UKKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgdG8gYmUg
Y2xlYXJlZC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9DT1BZX1BBR0UKKyAqIG1mbjogTWFjaGluZSBm
cmFtZSBudW1iZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHBhZ2UuCisgKiBzcmNfbWZuOiBNYWNoaW5l
IGZyYW1lIG51bWJlciBvZiB0aGUgc291cmNlIHBhZ2UuCisgKgorICogY21kOiBNTVVFWFRfW1VO
XU1BUktfU1VQRVIKKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgaGVhZCBvZiBzdXBl
cnBhZ2UgdG8gYmUgW3VuXW1hcmtlZC4KKyAqLworLyogYCBlbnVtIG1tdWV4dF9jbWQgeyAqLwor
I2RlZmluZSBNTVVFWFRfUElOX0wxX1RBQkxFICAgICAgMAorI2RlZmluZSBNTVVFWFRfUElOX0wy
X1RBQkxFICAgICAgMQorI2RlZmluZSBNTVVFWFRfUElOX0wzX1RBQkxFICAgICAgMgorI2RlZmlu
ZSBNTVVFWFRfUElOX0w0X1RBQkxFICAgICAgMworI2RlZmluZSBNTVVFWFRfVU5QSU5fVEFCTEUg
ICAgICAgNAorI2RlZmluZSBNTVVFWFRfTkVXX0JBU0VQVFIgICAgICAgNQorI2RlZmluZSBNTVVF
WFRfVExCX0ZMVVNIX0xPQ0FMICAgNgorI2RlZmluZSBNTVVFWFRfSU5WTFBHX0xPQ0FMICAgICAg
NworI2RlZmluZSBNTVVFWFRfVExCX0ZMVVNIX01VTFRJICAgOAorI2RlZmluZSBNTVVFWFRfSU5W
TFBHX01VTFRJICAgICAgOQorI2RlZmluZSBNTVVFWFRfVExCX0ZMVVNIX0FMTCAgICAxMAorI2Rl
ZmluZSBNTVVFWFRfSU5WTFBHX0FMTCAgICAgICAxMQorI2RlZmluZSBNTVVFWFRfRkxVU0hfQ0FD
SEUgICAgICAxMgorI2RlZmluZSBNTVVFWFRfU0VUX0xEVCAgICAgICAgICAxMworI2RlZmluZSBN
TVVFWFRfTkVXX1VTRVJfQkFTRVBUUiAxNQorI2RlZmluZSBNTVVFWFRfQ0xFQVJfUEFHRSAgICAg
ICAxNgorI2RlZmluZSBNTVVFWFRfQ09QWV9QQUdFICAgICAgICAxNworI2RlZmluZSBNTVVFWFRf
RkxVU0hfQ0FDSEVfR0xPQkFMIDE4CisjZGVmaW5lIE1NVUVYVF9NQVJLX1NVUEVSICAgICAgIDE5
CisjZGVmaW5lIE1NVUVYVF9VTk1BUktfU1VQRVIgICAgIDIwCisvKiBgIH0gKi8KKworI2lmbmRl
ZiBfX0FTU0VNQkxZX18KK3N0cnVjdCBtbXVleHRfb3AgeworICAgIHVuc2lnbmVkIGludCBjbWQ7
IC8qID0+IGVudW0gbW11ZXh0X2NtZCAqLworICAgIHVuaW9uIHsKKyAgICAgICAgLyogW1VOXVBJ
Tl9UQUJMRSwgTkVXX0JBU0VQVFIsIE5FV19VU0VSX0JBU0VQVFIKKyAgICAgICAgICogQ0xFQVJf
UEFHRSwgQ09QWV9QQUdFLCBbVU5dTUFSS19TVVBFUiAqLworICAgICAgICB4ZW5fcGZuX3QgICAg
IG1mbjsKKyAgICAgICAgLyogSU5WTFBHX0xPQ0FMLCBJTlZMUEdfQUxMLCBTRVRfTERUICovCisg
ICAgICAgIFVMT05HX1BUUiBsaW5lYXJfYWRkcjsKKyAgICB9IGFyZzE7CisgICAgdW5pb24gewor
ICAgICAgICAvKiBTRVRfTERUICovCisgICAgICAgIHVuc2lnbmVkIGludCBucl9lbnRzOworICAg
ICAgICAvKiBUTEJfRkxVU0hfTVVMVEksIElOVkxQR19NVUxUSSAqLworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwNQorICAgICAgICBYRU5fR1VFU1RfSEFORExFKGNv
bnN0X3ZvaWQpIHZjcHVtYXNrOworI2Vsc2UKKyAgICAgICAgY29uc3Qgdm9pZCAqdmNwdW1hc2s7
CisjZW5kaWYKKyAgICAgICAgLyogQ09QWV9QQUdFICovCisgICAgICAgIHhlbl9wZm5fdCBzcmNf
bWZuOworICAgIH0gYXJnMjsKK307Cit0eXBlZGVmIHN0cnVjdCBtbXVleHRfb3AgbW11ZXh0X29w
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtbXVleHRfb3BfdCk7CisjZW5kaWYKKworLyoK
KyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGlu
ZyhVTE9OR19QVFIgdmEsIHU2NCB2YWwsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW51bSB1dm1fZmxhZ3MgZmxhZ3MpCisgKiBgCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisg
KiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJkb21haW4oVUxPTkdfUFRSIHZh
LCB1NjQgdmFsLAorICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudW0gdXZtX2ZsYWdzIGZsYWdzLAorICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvbWlkX3QgZG9taWQpCisgKiBgCisgKiBgIEB2YTogVGhlIHZpcnR1YWwg
YWRkcmVzcyB3aG9zZSBtYXBwaW5nIHdlIHdhbnQgdG8gY2hhbmdlCisgKiBgIEB2YWw6IFRoZSBu
ZXcgcGFnZSB0YWJsZSBlbnRyeSwgbXVzdCBjb250YWluIGEgbWFjaGluZSBhZGRyZXNzCisgKiBg
IEBmbGFnczogQ29udHJvbCBUTEIgZmx1c2hlcworICovCisvKiBUaGVzZSBhcmUgcGFzc2VkIGFz
ICdmbGFncycgdG8gdXBkYXRlX3ZhX21hcHBpbmcuIFRoZXkgY2FuIGJlIE9SZWQuICovCisvKiBX
aGVuIHNwZWNpZnlpbmcgVVZNRl9NVUxUSSwgYWxzbyBPUiBpbiBhIHBvaW50ZXIgdG8gYSBDUFUg
Yml0bWFwLiAgICovCisvKiBVVk1GX0xPQ0FMIGlzIG1lcmVseSBVVk1GX01VTFRJIHdpdGggYSBO
VUxMIGJpdG1hcCBwb2ludGVyLiAgICAgICAgICovCisvKiBgIGVudW0gdXZtX2ZsYWdzIHsgKi8K
KyNkZWZpbmUgVVZNRl9OT05FICAgICAgICAgICAgICAgKDBVTDw8MCkgLyogTm8gZmx1c2hpbmcg
YXQgYWxsLiAgICovCisjZGVmaW5lIFVWTUZfVExCX0ZMVVNIICAgICAgICAgICgxVUw8PDApIC8q
IEZsdXNoIGVudGlyZSBUTEIocykuICAqLworI2RlZmluZSBVVk1GX0lOVkxQRyAgICAgICAgICAg
ICAoMlVMPDwwKSAvKiBGbHVzaCBvbmx5IG9uZSBlbnRyeS4gKi8KKyNkZWZpbmUgVVZNRl9GTFVT
SFRZUEVfTUFTSyAgICAgKDNVTDw8MCkKKyNkZWZpbmUgVVZNRl9NVUxUSSAgICAgICAgICAgICAg
KDBVTDw8MikgLyogRmx1c2ggc3Vic2V0IG9mIFRMQnMuICovCisjZGVmaW5lIFVWTUZfTE9DQUwg
ICAgICAgICAgICAgICgwVUw8PDIpIC8qIEZsdXNoIGxvY2FsIFRMQi4gICAgICAqLworI2RlZmlu
ZSBVVk1GX0FMTCAgICAgICAgICAgICAgICAoMVVMPDwyKSAvKiBGbHVzaCBhbGwgVExCcy4gICAg
ICAgKi8KKy8qIGAgfSAqLworCisvKgorICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl9jb25zb2xl
X2lvKCkuCisgKi8KKyNkZWZpbmUgQ09OU09MRUlPX3dyaXRlICAgICAgICAgMAorI2RlZmluZSBD
T05TT0xFSU9fcmVhZCAgICAgICAgICAxCisKKy8qCisgKiBDb21tYW5kcyB0byBIWVBFUlZJU09S
X3ZtX2Fzc2lzdCgpLgorICovCisjZGVmaW5lIFZNQVNTVF9DTURfZW5hYmxlICAgICAgICAgICAg
ICAgIDAKKyNkZWZpbmUgVk1BU1NUX0NNRF9kaXNhYmxlICAgICAgICAgICAgICAgMQorCisvKiB4
ODYvMzIgZ3Vlc3RzOiBzaW11bGF0ZSBmdWxsIDRHQiBzZWdtZW50IGxpbWl0cy4gKi8KKyNkZWZp
bmUgVk1BU1NUX1RZUEVfNGdiX3NlZ21lbnRzICAgICAgICAgMAorCisvKiB4ODYvMzIgZ3Vlc3Rz
OiB0cmFwICh2ZWN0b3IgMTUpIHdoZW5ldmVyIGFib3ZlIHZtYXNzaXN0IGlzIHVzZWQuICovCisj
ZGVmaW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50c19ub3RpZnkgIDEKKworLyoKKyAqIHg4NiBn
dWVzdHM6IHN1cHBvcnQgd3JpdGVzIHRvIGJvdHRvbS1sZXZlbCBQVEVzLgorICogTkIxLiBQYWdl
LWRpcmVjdG9yeSBlbnRyaWVzIGNhbm5vdCBiZSB3cml0dGVuLgorICogTkIyLiBHdWVzdCBtdXN0
IGNvbnRpbnVlIHRvIHJlbW92ZSBhbGwgd3JpdGFibGUgbWFwcGluZ3Mgb2YgUFRFcy4KKyAqLwor
I2RlZmluZSBWTUFTU1RfVFlQRV93cml0YWJsZV9wYWdldGFibGVzICAyCisKKy8qIHg4Ni9QQUUg
Z3Vlc3RzOiBzdXBwb3J0IFBEUFRzIGFib3ZlIDRHQi4gKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVf
cGFlX2V4dGVuZGVkX2NyMyAgICAgMworCisjZGVmaW5lIE1BWF9WTUFTU1RfVFlQRSAgICAgICAg
ICAgICAgICAgIDMKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKwordHlwZWRlZiB1aW50MTZfdCBk
b21pZF90OworCisvKiBEb21haW4gaWRzID49IERPTUlEX0ZJUlNUX1JFU0VSVkVEIGNhbm5vdCBi
ZSB1c2VkIGZvciBvcmRpbmFyeSBkb21haW5zLiAqLworI2RlZmluZSBET01JRF9GSVJTVF9SRVNF
UlZFRCAoMHg3RkYwVSkKKworLyogRE9NSURfU0VMRiBpcyB1c2VkIGluIGNlcnRhaW4gY29udGV4
dHMgdG8gcmVmZXIgdG8gb25lc2VsZi4gKi8KKyNkZWZpbmUgRE9NSURfU0VMRiAoMHg3RkYwVSkK
KworLyoKKyAqIERPTUlEX0lPIGlzIHVzZWQgdG8gcmVzdHJpY3QgcGFnZS10YWJsZSB1cGRhdGVz
IHRvIG1hcHBpbmcgSS9PIG1lbW9yeS4KKyAqIEFsdGhvdWdoIG5vIEZvcmVpZ24gRG9tYWluIG5l
ZWQgYmUgc3BlY2lmaWVkIHRvIG1hcCBJL08gcGFnZXMsIERPTUlEX0lPCisgKiBpcyB1c2VmdWwg
dG8gZW5zdXJlIHRoYXQgbm8gbWFwcGluZ3MgdG8gdGhlIE9TJ3Mgb3duIGhlYXAgYXJlIGFjY2lk
ZW50YWxseQorICogaW5zdGFsbGVkLiAoZS5nLiwgaW4gTGludXggdGhpcyBjb3VsZCBjYXVzZSBo
YXZvYyBhcyByZWZlcmVuY2UgY291bnRzCisgKiBhcmVuJ3QgYWRqdXN0ZWQgb24gdGhlIEkvTy1t
YXBwaW5nIGNvZGUgcGF0aCkuCisgKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NF
VF9GT1JFSUdORE9NLCBidXQgaW4gdGhhdCBjb250ZXh0IGNhbgorICogYmUgc3BlY2lmaWVkIGJ5
IGFueSBjYWxsaW5nIGRvbWFpbi4KKyAqLworI2RlZmluZSBET01JRF9JTyAgICgweDdGRjFVKQor
CisvKgorICogRE9NSURfWEVOIGlzIHVzZWQgdG8gYWxsb3cgcHJpdmlsZWdlZCBkb21haW5zIHRv
IG1hcCByZXN0cmljdGVkIHBhcnRzIG9mCisgKiBYZW4ncyBoZWFwIHNwYWNlIChlLmcuLCB0aGUg
bWFjaGluZV90b19waHlzIHRhYmxlKS4KKyAqIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiBNTVVF
WFRfU0VUX0ZPUkVJR05ET00sIGFuZCBpcyBvbmx5IHBlcm1pdHRlZCBpZgorICogdGhlIGNhbGxl
ciBpcyBwcml2aWxlZ2VkLgorICovCisjZGVmaW5lIERPTUlEX1hFTiAgKDB4N0ZGMlUpCisKKy8q
CisgKiBET01JRF9DT1cgaXMgdXNlZCBhcyB0aGUgb3duZXIgb2Ygc2hhcmFibGUgcGFnZXMgKi8K
KyNkZWZpbmUgRE9NSURfQ09XICAoMHg3RkYzVSkKKworLyogRE9NSURfSU5WQUxJRCBpcyB1c2Vk
IHRvIGlkZW50aWZ5IHBhZ2VzIHdpdGggdW5rbm93biBvd25lci4gKi8KKyNkZWZpbmUgRE9NSURf
SU5WQUxJRCAoMHg3RkY0VSkKKworLyogSWRsZSBkb21haW4uICovCisjZGVmaW5lIERPTUlEX0lE
TEUgKDB4N0ZGRlUpCisKKy8qCisgKiBTZW5kIGFuIGFycmF5IG9mIHRoZXNlIHRvIEhZUEVSVklT
T1JfbW11X3VwZGF0ZSgpLgorICogTkIuIFRoZSBmaWVsZHMgYXJlIG5hdHVyYWwgcG9pbnRlci9h
ZGRyZXNzIHNpemUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICovCitzdHJ1Y3QgbW11X3VwZGF0
ZSB7CisgICAgdWludDY0X3QgcHRyOyAgICAgICAvKiBNYWNoaW5lIGFkZHJlc3Mgb2YgUFRFLiAq
LworICAgIHVpbnQ2NF90IHZhbDsgICAgICAgLyogTmV3IGNvbnRlbnRzIG9mIFBURS4gICAgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBtbXVfdXBkYXRlIG1tdV91cGRhdGVfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKG1tdV91cGRhdGVfdCk7CisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFs
CisgKiBgIEhZUEVSVklTT1JfbXVsdGljYWxsKG11bHRpY2FsbF9lbnRyeV90IGNhbGxfbGlzdFtd
LAorICogYCAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBucl9jYWxscyk7CisgKgorICog
TkIuIFRoZSBmaWVsZHMgYXJlIGxvZ2ljYWxseSB0aGUgbmF0dXJhbCByZWdpc3RlciBzaXplIGZv
ciB0aGlzCisgKiBhcmNoaXRlY3R1cmUuIEluIGNhc2VzIHdoZXJlIHhlbl91bG9uZ190IGlzIGxh
cmdlciB0aGFuIHRoaXMgdGhlbgorICogYW55IHVudXNlZCBiaXRzIGluIHRoZSB1cHBlciBwb3J0
aW9uIG11c3QgYmUgemVyby4KKyAqLworc3RydWN0IG11bHRpY2FsbF9lbnRyeSB7CisgICAgeGVu
X3Vsb25nX3Qgb3AsIHJlc3VsdDsKKyAgICB4ZW5fdWxvbmdfdCBhcmdzWzZdOworfTsKK3R5cGVk
ZWYgc3RydWN0IG11bHRpY2FsbF9lbnRyeSBtdWx0aWNhbGxfZW50cnlfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKG11bHRpY2FsbF9lbnRyeV90KTsKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDQwNDAwCisvKgorICogRXZlbnQgY2hhbm5lbCBlbmRwb2ludHMgcGVy
IGRvbWFpbiAod2hlbiB1c2luZyB0aGUgMi1sZXZlbCBBQkkpOgorICogIDEwMjQgaWYgYSBMT05H
X1BUUiBpcyAzMiBiaXRzOyA0MDk2IGlmIGEgTE9OR19QVFIgaXMgNjQgYml0cy4KKyAqLworI2Rl
ZmluZSBOUl9FVkVOVF9DSEFOTkVMUyBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMKKyNlbmRpZgorCitz
dHJ1Y3QgdmNwdV90aW1lX2luZm8geworICAgIC8qCisgICAgICogVXBkYXRlcyB0byB0aGUgZm9s
bG93aW5nIHZhbHVlcyBhcmUgcHJlY2VkZWQgYW5kIGZvbGxvd2VkIGJ5IGFuCisgICAgICogaW5j
cmVtZW50IG9mICd2ZXJzaW9uJy4gVGhlIGd1ZXN0IGNhbiB0aGVyZWZvcmUgZGV0ZWN0IHVwZGF0
ZXMgYnkKKyAgICAgKiBsb29raW5nIGZvciBjaGFuZ2VzIHRvICd2ZXJzaW9uJy4gSWYgdGhlIGxl
YXN0LXNpZ25pZmljYW50IGJpdCBvZgorICAgICAqIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQg
dGhlbiBhbiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSBndWVzdAorICAgICAqIG11c3Qg
d2FpdCB0byByZWFkIGEgY29uc2lzdGVudCBzZXQgb2YgdmFsdWVzLgorICAgICAqIFRoZSBjb3Jy
ZWN0IHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzaW1pbGFyIHRv
CisgICAgICogTGludXgncyBzZXFsb2NrOiBzZWUgdGhlIGltcGxlbWVudGF0aW9ucyBvZiByZWFk
X3NlcWJlZ2luL3JlYWRfc2VxcmV0cnkuCisgICAgICovCisgICAgdWludDMyX3QgdmVyc2lvbjsK
KyAgICB1aW50MzJfdCBwYWQwOworICAgIHVpbnQ2NF90IHRzY190aW1lc3RhbXA7ICAgLyogVFND
IGF0IGxhc3QgdXBkYXRlIG9mIHRpbWUgdmFscy4gICovCisgICAgdWludDY0X3Qgc3lzdGVtX3Rp
bWU7ICAgICAvKiBUaW1lLCBpbiBuYW5vc2Vjcywgc2luY2UgYm9vdC4gICAgKi8KKyAgICAvKgor
ICAgICAqIEN1cnJlbnQgc3lzdGVtIHRpbWU6CisgICAgICogICBzeXN0ZW1fdGltZSArCisgICAg
ICogICAoKCgodHNjIC0gdHNjX3RpbWVzdGFtcCkgPDwgdHNjX3NoaWZ0KSAqIHRzY190b19zeXN0
ZW1fbXVsKSA+PiAzMikKKyAgICAgKiBDUFUgZnJlcXVlbmN5IChIeik6CisgICAgICogICAoKDEw
XjkgPDwgMzIpIC8gdHNjX3RvX3N5c3RlbV9tdWwpID4+IHRzY19zaGlmdAorICAgICAqLworICAg
IHVpbnQzMl90IHRzY190b19zeXN0ZW1fbXVsOworICAgIGludDhfdCAgIHRzY19zaGlmdDsKKyAg
ICBpbnQ4X3QgICBwYWQxWzNdOworfTsgLyogMzIgYnl0ZXMgKi8KK3R5cGVkZWYgc3RydWN0IHZj
cHVfdGltZV9pbmZvIHZjcHVfdGltZV9pbmZvX3Q7CisKK3N0cnVjdCB2Y3B1X2luZm8geworICAg
IC8qCisgICAgICogJ2V2dGNobl91cGNhbGxfcGVuZGluZycgaXMgd3JpdHRlbiBub24temVybyBi
eSBYZW4gdG8gaW5kaWNhdGUKKyAgICAgKiBhIHBlbmRpbmcgbm90aWZpY2F0aW9uIGZvciBhIHBh
cnRpY3VsYXIgVkNQVS4gSXQgaXMgdGhlbiBjbGVhcmVkIAorICAgICAqIGJ5IHRoZSBndWVzdCBP
UyAvYmVmb3JlLyBjaGVja2luZyBmb3IgcGVuZGluZyB3b3JrLCB0aHVzIGF2b2lkaW5nCisgICAg
ICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUgbWFzayBpcyBvbmx5IGFjY2Vz
c2VkIGJ5IFhlbgorICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBjdXJyZW50bHkgaG9zdGluZyB0
aGUgVkNQVS4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHBlbmRpbmcgYW5kIG1hc2sgZmxh
Z3MgY2FuIGJlIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0IHdpdGhvdXQgc3BlY2lhbAorICAgICAqIHN5
bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4NiBMT0NLIHByZWZpeCkuCisg
ICAgICogVGhpcyBtYXkgc2VlbSBzdWJvcHRpbWFsIGJlY2F1c2UgaWYgdGhlIHBlbmRpbmcgZmxh
ZyBpcyBzZXQgYnkKKyAgICAgKiBhIGRpZmZlcmVudCBDUFUgdGhlbiBhbiBJUEkgbWF5IGJlIHNj
aGVkdWxlZCBldmVuIHdoZW4gdGhlIG1hc2sKKyAgICAgKiBpcyBzZXQuIEhvd2V2ZXIsIG5vdGU6
CisgICAgICogIDEuIFRoZSB0YXNrIG9mICdpbnRlcnJ1cHQgaG9sZG9mZicgaXMgY292ZXJlZCBi
eSB0aGUgcGVyLWV2ZW50LQorICAgICAqICAgICBjaGFubmVsIG1hc2sgYml0cy4gQSAnbm9pc3kn
IGV2ZW50IHRoYXQgaXMgY29udGludWFsbHkgYmVpbmcKKyAgICAgKiAgICAgdHJpZ2dlcmVkIGNh
biBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVyeSBwcmVjaXNlCisgICAgICogICAgIGdy
YW51bGFyaXR5LgorICAgICAqICAyLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBwZXItVkNQVSBt
YXNrIGlzIHRoZXJlZm9yZSB0byByZXN0cmljdAorICAgICAqICAgICByZWVudHJhbnQgZXhlY3V0
aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5jeSBjb250cm9sLCBvciB0bworICAgICAqICAgICBw
cmV2ZW50IHVuYm91bmRlZCBzdGFjayB1c2FnZS4gV2hhdGV2ZXIgdGhlIHB1cnBvc2UsIHdlIGV4
cGVjdAorICAgICAqICAgICB0aGF0IHRoZSBtYXNrIHdpbGwgYmUgYXNzZXJ0ZWQgb25seSBmb3Ig
c2hvcnQgcGVyaW9kcyBhdCBhIHRpbWUsCisgICAgICogICAgIGFuZCBzbyB0aGUgbGlrZWxpaG9v
ZCBvZiBhICdzcHVyaW91cycgSVBJIGlzIHN1aXRhYmx5IHNtYWxsLgorICAgICAqIFRoZSBtYXNr
IGlzIHJlYWQgYmVmb3JlIG1ha2luZyBhbiBldmVudCB1cGNhbGwgdG8gdGhlIGd1ZXN0OiBhCisg
ICAgICogbm9uLXplcm8gbWFzayB0aGVyZWZvcmUgZ3VhcmFudGVlcyB0aGF0IHRoZSBWQ1BVIHdp
bGwgbm90IHJlY2VpdmUKKyAgICAgKiBhbiB1cGNhbGwgYWN0aXZhdGlvbi4gVGhlIG1hc2sgaXMg
Y2xlYXJlZCB3aGVuIHRoZSBWQ1BVIHJlcXVlc3RzCisgICAgICogdG8gYmxvY2s6IHRoaXMgYXZv
aWRzIHdha2V1cC13YWl0aW5nIHJhY2VzLgorICAgICAqLworICAgIHVpbnQ4X3QgZXZ0Y2huX3Vw
Y2FsbF9wZW5kaW5nOworI2lmZGVmIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLCisgICAgdWludDhf
dCBldnRjaG5fdXBjYWxsX21hc2s7CisjZWxzZSAvKiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSyAq
LworICAgIHVpbnQ4X3QgcGFkMDsKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSyAq
LworICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKKyAgICBzdHJ1Y3QgYXJjaF92
Y3B1X2luZm8gYXJjaDsKKyAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdGltZTsKK307IC8qIDY0
IGJ5dGVzICh4ODYpICovCisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0IHZjcHVfaW5m
byB2Y3B1X2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVudHMgMjAwIHN0YXJ0b2Zk
YXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUKKyAqIFhlbi9rZXJu
ZWwgc2hhcmVkIGRhdGEgLS0gcG9pbnRlciBwcm92aWRlZCBpbiBzdGFydF9pbmZvLgorICoKKyAq
IFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90aCBzbWFsbGVyIHRoYW4gYSBwYWdl
LCBhbmQgdGhlCisgKiBvbmx5IGRhdGEgb24gdGhlIHNoYXJlZCBwYWdlLCBidXQgbWF5IHZhcnkg
aW4gYWN0dWFsIHNpemUgZXZlbiB3aXRoaW4KKyAqIGNvbXBhdGlibGUgWGVuIHZlcnNpb25zOyBn
dWVzdHMgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBzaXplCisgKiBvZiB0aGlzIHN0cnVjdHVyZSBy
ZW1haW5pbmcgY29uc3RhbnQuCisgKi8KK3N0cnVjdCBzaGFyZWRfaW5mbyB7CisgICAgc3RydWN0
IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVOX0xFR0FDWV9NQVhfVkNQVVNdOworCisgICAgLyoKKyAg
ICAgKiBBIGRvbWFpbiBjYW4gY3JlYXRlICJldmVudCBjaGFubmVscyIgb24gd2hpY2ggaXQgY2Fu
IHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgKiBhc3luY2hyb25vdXMgZXZlbnQgbm90aWZpY2F0aW9u
cy4gVGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZXZlbnQgdGhhdAorICAgICAqIGFyZSBkZWxp
dmVyZWQgYnkgdGhpcyBtZWNoYW5pc206CisgICAgICogIDEuIEJpLWRpcmVjdGlvbmFsIGludGVy
LSBhbmQgaW50cmEtZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QKKyAgICAgKiAgICAg
YXJyYW5nZSBvdXQtb2YtYmFuZCB0byBzZXQgdXAgYSBjb25uZWN0aW9uICh1c3VhbGx5IGJ5IGFs
bG9jYXRpbmcKKyAgICAgKiAgICAgYW4gdW5ib3VuZCAnbGlzdGVuZXInIHBvcnQgYW5kIGF2ZXJ0
aXNpbmcgdGhhdCB2aWEgYSBzdG9yYWdlIHNlcnZpY2UKKyAgICAgKiAgICAgc3VjaCBhcyB4ZW5z
dG9yZSkuCisgICAgICogIDIuIFBoeXNpY2FsIGludGVycnVwdHMuIEEgZG9tYWluIHdpdGggc3Vp
dGFibGUgaGFyZHdhcmUtYWNjZXNzCisgICAgICogICAgIHByaXZpbGVnZXMgY2FuIGJpbmQgYW4g
ZXZlbnQtY2hhbm5lbCBwb3J0IHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0CisgICAgICogICAgIHNv
dXJjZS4KKyAgICAgKiAgMy4gVmlydHVhbCBpbnRlcnJ1cHRzICgnZXZlbnRzJykuIEEgZG9tYWlu
IGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwKKyAgICAgKiAgICAgcG9ydCB0byBhIHZpcnR1YWwg
aW50ZXJydXB0IHNvdXJjZSwgc3VjaCBhcyB0aGUgdmlydHVhbC10aW1lcgorICAgICAqICAgICBk
ZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgorICAgICAqIAorICAgICAqIEV2ZW50IGNo
YW5uZWxzIGFyZSBhZGRyZXNzZWQgYnkgYSAicG9ydCBpbmRleCIuIEVhY2ggY2hhbm5lbCBpcwor
ICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZvcm1hdGlvbjoKKyAgICAgKiAg
MS4gUEVORElORyAtLSBub3RpZmllcyB0aGUgZG9tYWluIHRoYXQgdGhlcmUgaXMgYSBwZW5kaW5n
IG5vdGlmaWNhdGlvbgorICAgICAqICAgICB0byBiZSBwcm9jZXNzZWQuIFRoaXMgYml0IGlzIGNs
ZWFyZWQgYnkgdGhlIGd1ZXN0LgorICAgICAqICAyLiBNQVNLIC0tIGlmIHRoaXMgYml0IGlzIGNs
ZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2YgUEVORElORworICAgICAqICAgICB3aWxsIGNh
dXNlIGFuIGFzeW5jaHJvbm91cyB1cGNhbGwgdG8gYmUgc2NoZWR1bGVkLiBUaGlzIGJpdCBpcyBv
bmx5CisgICAgICogICAgIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0LiBJdCBpcyByZWFkLW9ubHkgd2l0
aGluIFhlbi4gSWYgYSBjaGFubmVsCisgICAgICogICAgIGJlY29tZXMgcGVuZGluZyB3aGlsZSB0
aGUgY2hhbm5lbCBpcyBtYXNrZWQgdGhlbiB0aGUgJ2VkZ2UnIGlzIGxvc3QKKyAgICAgKiAgICAg
KGkuZS4sIHdoZW4gdGhlIGNoYW5uZWwgaXMgdW5tYXNrZWQsIHRoZSBndWVzdCBtdXN0IG1hbnVh
bGx5IGhhbmRsZQorICAgICAqICAgICBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgYXMgbm8gdXBjYWxs
IHdpbGwgYmUgc2NoZWR1bGVkIGJ5IFhlbikuCisgICAgICogCisgICAgICogVG8gZXhwZWRpdGUg
c2Nhbm5pbmcgb2YgcGVuZGluZyBub3RpZmljYXRpb25zLCBhbnkgMC0+MSBwZW5kaW5nCisgICAg
ICogdHJhbnNpdGlvbiBvbiBhbiB1bm1hc2tlZCBjaGFubmVsIGNhdXNlcyBhIGNvcnJlc3BvbmRp
bmcgYml0IGluIGEKKyAgICAgKiBwZXItdmNwdSBzZWxlY3RvciB3b3JkIHRvIGJlIHNldC4gRWFj
aCBiaXQgaW4gdGhlIHNlbGVjdG9yIGNvdmVycyBhCisgICAgICogJ0MgTE9OR19QVFInIGluIHRo
ZSBQRU5ESU5HIGJpdGZpZWxkIGFycmF5LgorICAgICAqLworICAgIHhlbl91bG9uZ190IGV2dGNo
bl9wZW5kaW5nW3NpemVvZih4ZW5fdWxvbmdfdCkgKiA4XTsKKyAgICB4ZW5fdWxvbmdfdCBldnRj
aG5fbWFza1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07CisKKyAgICAvKgorICAgICAqIFdhbGxj
bG9jayB0aW1lOiB1cGRhdGVkIG9ubHkgYnkgY29udHJvbCBzb2Z0d2FyZS4gR3Vlc3RzIHNob3Vs
ZCBiYXNlCisgICAgICogdGhlaXIgZ2V0dGltZW9mZGF5KCkgc3lzY2FsbCBvbiB0aGlzIHdhbGxj
bG9jay1iYXNlIHZhbHVlLgorICAgICAqLworICAgIHVpbnQzMl90IHdjX3ZlcnNpb247ICAgICAg
LyogVmVyc2lvbiBjb3VudGVyOiBzZWUgdmNwdV90aW1lX2luZm9fdC4gKi8KKyAgICB1aW50MzJf
dCB3Y19zZWM7ICAgICAgICAgIC8qIFNlY3MgIDAwOjAwOjAwIFVUQywgSmFuIDEsIDE5NzAuICAq
LworICAgIHVpbnQzMl90IHdjX25zZWM7ICAgICAgICAgLyogTnNlY3MgMDA6MDA6MDAgVVRDLCBK
YW4gMSwgMTk3MC4gICovCisjaWYgIWRlZmluZWQoX19pMzg2X18pCisgICAgdWludDMyX3Qgd2Nf
c2VjX2hpOworIyBkZWZpbmUgeGVuX3djX3NlY19oaSB3Y19zZWNfaGkKKyNlbGlmICFkZWZpbmVk
KF9fWEVOX18pICYmICFkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjIGRlZmluZSB4ZW5fd2Nfc2Vj
X2hpIGFyY2gud2Nfc2VjX2hpCisjZW5kaWYKKworICAgIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZv
IGFyY2g7CisKK307CisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZv
IHNoYXJlZF9pbmZvX3Q7CisjZW5kaWYKKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9m
ZGF5IFN0YXJ0LW9mLWRheSBtZW1vcnkgbGF5b3V0CisgKgorICogIDEuIFRoZSBkb21haW4gaXMg
c3RhcnRlZCB3aXRoaW4gY29udGlndW91cyB2aXJ0dWFsLW1lbW9yeSByZWdpb24uCisgKiAgMi4g
VGhlIGNvbnRpZ3VvdXMgcmVnaW9uIGVuZHMgb24gYW4gYWxpZ25lZCA0TUIgYm91bmRhcnkuCisg
KiAgMy4gVGhpcyB0aGUgb3JkZXIgb2YgYm9vdHN0cmFwIGVsZW1lbnRzIGluIHRoZSBpbml0aWFs
IHZpcnR1YWwgcmVnaW9uOgorICogICAgICBhLiByZWxvY2F0ZWQga2VybmVsIGltYWdlCisgKiAg
ICAgIGIuIGluaXRpYWwgcmFtIGRpc2sgICAgICAgICAgICAgIFttb2Rfc3RhcnQsIG1vZF9sZW5d
CisgKiAgICAgIGMuIGxpc3Qgb2YgYWxsb2NhdGVkIHBhZ2UgZnJhbWVzIFttZm5fbGlzdCwgbnJf
cGFnZXNdCisgKiAgICAgICAgICh1bmxlc3MgcmVsb2NhdGVkIGR1ZSB0byBYRU5fRUxGTk9URV9J
TklUX1AyTSkKKyAqICAgICAgZC4gc3RhcnRfaW5mb190IHN0cnVjdHVyZSAgICAgICAgW3JlZ2lz
dGVyIEVTSSAoeDg2KV0KKyAqICAgICAgZS4gYm9vdHN0cmFwIHBhZ2UgdGFibGVzICAgICAgICAg
W3B0X2Jhc2UgYW5kIENSMyAoeDg2KV0KKyAqICAgICAgZi4gYm9vdHN0cmFwIHN0YWNrICAgICAg
ICAgICAgICAgW3JlZ2lzdGVyIEVTUCAoeDg2KV0KKyAqICA0LiBCb290c3RyYXAgZWxlbWVudHMg
YXJlIHBhY2tlZCB0b2dldGhlciwgYnV0IGVhY2ggaXMgNGtCLWFsaWduZWQuCisgKiAgNS4gVGhl
IGluaXRpYWwgcmFtIGRpc2sgbWF5IGJlIG9taXR0ZWQuCisgKiAgNi4gVGhlIGxpc3Qgb2YgcGFn
ZSBmcmFtZXMgZm9ybXMgYSBjb250aWd1b3VzICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQorICog
ICAgIGxheW91dCBmb3IgdGhlIGRvbWFpbi4gSW4gcGFydGljdWxhciwgdGhlIGJvb3RzdHJhcCB2
aXJ0dWFsLW1lbW9yeQorICogICAgIHJlZ2lvbiBpcyBhIDE6MSBtYXBwaW5nIHRvIHRoZSBmaXJz
dCBzZWN0aW9uIG9mIHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWFwLgorICogIDcuIEFsbCBib290c3Ry
YXAgZWxlbWVudHMgYXJlIG1hcHBlZCByZWFkLXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRo
ZQorICogICAgIG9ubHkgZXhjZXB0aW9uIGlzIHRoZSBib290c3RyYXAgcGFnZSB0YWJsZSwgd2hp
Y2ggaXMgbWFwcGVkIHJlYWQtb25seS4KKyAqICA4LiBUaGVyZSBpcyBndWFyYW50ZWVkIHRvIGJl
IGF0IGxlYXN0IDUxMmtCIHBhZGRpbmcgYWZ0ZXIgdGhlIGZpbmFsCisgKiAgICAgYm9vdHN0cmFw
IGVsZW1lbnQuIElmIG5lY2Vzc2FyeSwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcwor
ICogICAgIGV4dGVuZGVkIGJ5IGFuIGV4dHJhIDRNQiB0byBlbnN1cmUgdGhpcy4KKyAqCisgKiBO
b3RlOiBQcmlvciB0byAyNTgzMzpiYjg1YmJjY2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBE
b20wIGluaXRpYWwgcGFnZQorICogdGFibGUgbGF5b3V0IikgYSBidWcgY2F1c2VkIHRoZSBwdF9i
YXNlICgzLmUgYWJvdmUpIGFuZCBjcjMgdG8gbm90IHBvaW50CisgKiB0byB0aGUgc3RhcnQgb2Yg
dGhlIGd1ZXN0IHBhZ2UgdGFibGVzIChpdCB3YXMgb2Zmc2V0IGJ5IHR3byBwYWdlcykuCisgKiBU
aGlzIG9ubHkgbWFuaWZlc3RlZCBpdHNlbGYgb24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBu
b3QgMzItb24tNjQgZG9tVQorICogb3IgNjQtYml0IGtlcm5lbHMgb2YgYW55IGNvbG91ci4gVGhl
IHBhZ2UgdGFibGVzIGZvciBhIDMyLW9uLTY0IGRvbTAgZ290CisgKiBhbGxvY2F0ZWQgaW4gdGhl
IG9yZGVyOiAnZmlyc3QgTDEnLCdmaXJzdCBMMicsICdmaXJzdCBMMycsIHNvIHRoZSBvZmZzZXQK
KyAqIHRvIHRoZSBwYWdlIHRhYmxlIGJhc2UgaXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBpbml0
aWFsIGRvbWFpbiBpZiBpdCBpcworICogMzItYml0IGFuZCBydW5zIHVuZGVyIGEgNjQtYml0IGh5
cGVydmlzb3Igc2hvdWxkIF9OT1RfIHVzZSB0d28gb2YgdGhlCisgKiBwYWdlcyBwcmVjZWRpbmcg
cHRfYmFzZSBhbmQgbWFyayB0aGVtIGFzIHJlc2VydmVkL3VudXNlZC4KKyAqLworI2lmZGVmIFhF
Tl9IQVZFX1BWX0dVRVNUX0VOVFJZCitzdHJ1Y3Qgc3RhcnRfaW5mbyB7CisgICAgLyogVEhFIEZP
TExPV0lORyBBUkUgRklMTEVEIElOIEJPVEggT04gSU5JVElBTCBCT09UIEFORCBPTiBSRVNVTUUu
ICAgICovCisgICAgY2hhciBtYWdpY1szMl07ICAgICAgICAgICAgIC8qICJ4ZW4tPHZlcnNpb24+
LTxwbGF0Zm9ybT4iLiAgICAgICAgICAgICovCisgICAgVUxPTkdfUFRSIG5yX3BhZ2VzOyAgICAg
LyogVG90YWwgcGFnZXMgYWxsb2NhdGVkIHRvIHRoaXMgZG9tYWluLiAgKi8KKyAgICBVTE9OR19Q
VFIgc2hhcmVkX2luZm87ICAvKiBNQUNISU5FIGFkZHJlc3Mgb2Ygc2hhcmVkIGluZm8gc3RydWN0
LiAqLworICAgIHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAvKiBTSUZfeHh4IGZsYWdzLiAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHhlbl9wZm5fdCBzdG9yZV9tZm47ICAgICAg
ICAvKiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9mIHNoYXJlZCBwYWdlLiAgICAqLworICAgIHVpbnQz
Ml90IHN0b3JlX2V2dGNobjsgICAgICAvKiBFdmVudCBjaGFubmVsIGZvciBzdG9yZSBjb21tdW5p
Y2F0aW9uLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHhl
bl9wZm5fdCBtZm47ICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBjb25zb2xlIHBhZ2Uu
ICAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90ICBldnRjaG47ICAgLyogRXZlbnQgY2hhbm5lbCBm
b3IgY29uc29sZSBwYWdlLiAgICAgICAgKi8KKyAgICAgICAgfSBkb21VOworICAgICAgICBzdHJ1
Y3QgeworICAgICAgICAgICAgdWludDMyX3QgaW5mb19vZmY7ICAvKiBPZmZzZXQgb2YgY29uc29s
ZV9pbmZvIHN0cnVjdC4gICAgICAgICAqLworICAgICAgICAgICAgdWludDMyX3QgaW5mb19zaXpl
OyAvKiBTaXplIG9mIGNvbnNvbGVfaW5mbyBzdHJ1Y3QgZnJvbSBzdGFydC4qLworICAgICAgICB9
IGRvbTA7CisgICAgfSBjb25zb2xlOworICAgIC8qIFRIRSBGT0xMT1dJTkcgQVJFIE9OTFkgRklM
TEVEIElOIE9OIElOSVRJQUwgQk9PVCAoTk9UIFJFU1VNRSkuICAgICAqLworICAgIFVMT05HX1BU
UiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAg
ICovCisgICAgVUxPTkdfUFRSIG5yX3B0X2ZyYW1lczsgLyogTnVtYmVyIG9mIGJvb3RzdHJhcCBw
LnQuIGZyYW1lcy4gICAgICAgKi8KKyAgICBVTE9OR19QVFIgbWZuX2xpc3Q7ICAgICAvKiBWSVJU
VUFMIGFkZHJlc3Mgb2YgcGFnZS1mcmFtZSBsaXN0LiAgICAqLworICAgIFVMT05HX1BUUiBtb2Rf
c3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwcmUtbG9hZGVkIG1vZHVsZSAgICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChQRk4gb2YgcHJlLWxvYWRlZCBtb2R1
bGUgaWYgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBT
SUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxhZ3MpLiAgICAgICovCisgICAgVUxPTkdfUFRSIG1v
ZF9sZW47ICAgICAgLyogU2l6ZSAoYnl0ZXMpIG9mIHByZS1sb2FkZWQgbW9kdWxlLiAgICAgKi8K
KyNkZWZpbmUgTUFYX0dVRVNUX0NNRExJTkUgMTAyNAorICAgIGludDhfdCBjbWRfbGluZVtNQVhf
R1VFU1RfQ01ETElORV07CisgICAgLyogVGhlIHBmbiByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBh
Z2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJhbWVzLiAgICovCisgICAgVUxPTkdfUFRSIGZpcnN0
X3AybV9wZm47LyogMXN0IHBmbiBmb3JtaW5nIGluaXRpYWwgUC0+TSB0YWJsZS4gICAgKi8KKyAg
ICBVTE9OR19QVFIgbnJfcDJtX2ZyYW1lczsvKiAjIG9mIHBmbnMgZm9ybWluZyBpbml0aWFsIFAt
Pk0gdGFibGUuICAqLworfTsKK3R5cGVkZWYgc3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190
OworCisvKiBOZXcgY29uc29sZSB1bmlvbiBmb3IgZG9tMCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAy
MDMuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDMKKyNkZWZp
bmUgY29uc29sZV9tZm4gICAgY29uc29sZS5kb21VLm1mbgorI2RlZmluZSBjb25zb2xlX2V2dGNo
biBjb25zb2xlLmRvbVUuZXZ0Y2huCisjZW5kaWYKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9HVUVT
VF9FTlRSWSAqLworCisvKiBUaGVzZSBmbGFncyBhcmUgcGFzc2VkIGluIHRoZSAnZmxhZ3MnIGZp
ZWxkIG9mIHN0YXJ0X2luZm9fdC4gKi8KKyNkZWZpbmUgU0lGX1BSSVZJTEVHRUQgICAgKDE8PDAp
ICAvKiBJcyB0aGUgZG9tYWluIHByaXZpbGVnZWQ/ICovCisjZGVmaW5lIFNJRl9JTklURE9NQUlO
ICAgICgxPDwxKSAgLyogSXMgdGhpcyB0aGUgaW5pdGlhbCBjb250cm9sIGRvbWFpbj8gKi8KKyNk
ZWZpbmUgU0lGX01VTFRJQk9PVF9NT0QgKDE8PDIpICAvKiBJcyBtb2Rfc3RhcnQgYSBtdWx0aWJv
b3QgbW9kdWxlPyAqLworI2RlZmluZSBTSUZfTU9EX1NUQVJUX1BGTiAoMTw8MykgIC8qIElzIG1v
ZF9zdGFydCBhIFBGTj8gKi8KKyNkZWZpbmUgU0lGX1BNX01BU0sgICAgICAgKDB4RkY8PDgpIC8q
IHJlc2VydmUgMSBieXRlIGZvciB4ZW4tcG0gb3B0aW9ucyAqLworCisvKgorICogQSBtdWx0aWJv
b3QgbW9kdWxlIGlzIGEgcGFja2FnZSBjb250YWluaW5nIG1vZHVsZXMgdmVyeSBzaW1pbGFyIHRv
IGEKKyAqIG11bHRpYm9vdCBtb2R1bGUgYXJyYXkuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZToK
KyAqIC0gdGhlIGFycmF5IG9mIG1vZHVsZSBkZXNjcmlwdG9ycyBpcyBieSBjb252ZW50aW9uIHNp
bXBseSBhdCB0aGUgYmVnaW5uaW5nCisgKiAgIG9mIHRoZSBtdWx0aWJvb3QgbW9kdWxlLAorICog
LSBhZGRyZXNzZXMgaW4gdGhlIG1vZHVsZSBkZXNjcmlwdG9ycyBhcmUgYmFzZWQgb24gdGhlIGJl
Z2lubmluZyBvZiB0aGUKKyAqICAgbXVsdGlib290IG1vZHVsZSwKKyAqIC0gdGhlIG51bWJlciBv
ZiBtb2R1bGVzIGlzIGRldGVybWluZWQgYnkgYSB0ZXJtaW5hdGlvbiBkZXNjcmlwdG9yIHRoYXQg
aGFzCisgKiAgIG1vZF9zdGFydCA9PSAwLgorICoKKyAqIFRoaXMgcGVybWl0cyB0byBib3RoIGJ1
aWxkIGl0IHN0YXRpY2FsbHkgYW5kIHJlZmVyZW5jZSBpdCBpbiBhIGNvbmZpZ3VyYXRpb24KKyAq
IGZpbGUsIGFuZCBsZXQgdGhlIFBWIGd1ZXN0IGVhc2lseSByZWJhc2UgdGhlIGFkZHJlc3NlcyB0
byB2aXJ0dWFsIGFkZHJlc3NlcworICogYW5kIGF0IHRoZSBzYW1lIHRpbWUgY291bnQgdGhlIG51
bWJlciBvZiBtb2R1bGVzLgorICovCitzdHJ1Y3QgeGVuX211bHRpYm9vdF9tb2RfbGlzdAorewor
ICAgIC8qIEFkZHJlc3Mgb2YgZmlyc3QgYnl0ZSBvZiB0aGUgbW9kdWxlICovCisgICAgdWludDMy
X3QgbW9kX3N0YXJ0OworICAgIC8qIEFkZHJlc3Mgb2YgbGFzdCBieXRlIG9mIHRoZSBtb2R1bGUg
KGluY2x1c2l2ZSkgKi8KKyAgICB1aW50MzJfdCBtb2RfZW5kOworICAgIC8qIEFkZHJlc3Mgb2Yg
emVyby10ZXJtaW5hdGVkIGNvbW1hbmQgbGluZSAqLworICAgIHVpbnQzMl90IGNtZGxpbmU7Cisg
ICAgLyogVW51c2VkLCBtdXN0IGJlIHplcm8gKi8KKyAgICB1aW50MzJfdCBwYWQ7Cit9OworLyoK
KyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5X2RvbTBfY29uc29sZSBEb20wX2NvbnNvbGUK
KyAqCisgKiBUaGUgY29uc29sZSBzdHJ1Y3R1cmUgaW4gc3RhcnRfaW5mby5jb25zb2xlLmRvbTAK
KyAqCisgKiBUaGlzIHN0cnVjdHVyZSBpbmNsdWRlcyBhIHZhcmlldHkgb2YgaW5mb3JtYXRpb24g
cmVxdWlyZWQgdG8KKyAqIGhhdmUgYSB3b3JraW5nIFZHQS9WRVNBIGNvbnNvbGUuCisgKi8KK3R5
cGVkZWYgc3RydWN0IGRvbTBfdmdhX2NvbnNvbGVfaW5mbyB7CisgICAgdWludDhfdCB2aWRlb190
eXBlOyAvKiBET00wX1ZHQV9DT05TT0xFXz8/PyAqLworI2RlZmluZSBYRU5fVkdBVFlQRV9URVhU
X01PREVfMyAweDAzCisjZGVmaW5lIFhFTl9WR0FUWVBFX1ZFU0FfTEZCICAgIDB4MjMKKyNkZWZp
bmUgWEVOX1ZHQVRZUEVfRUZJX0xGQiAgICAgMHg3MAorCisgICAgdW5pb24geworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgLyogRm9udCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAg
ICAgICAgIHVpbnQxNl90IGZvbnRfaGVpZ2h0OworICAgICAgICAgICAgLyogQ3Vyc29yIGxvY2F0
aW9uIChjb2x1bW4sIHJvdykuICovCisgICAgICAgICAgICB1aW50MTZfdCBjdXJzb3JfeCwgY3Vy
c29yX3k7CisgICAgICAgICAgICAvKiBOdW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyAoZGltZW5z
aW9ucyBpbiBjaGFyYWN0ZXJzKS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IHJvd3MsIGNvbHVt
bnM7CisgICAgICAgIH0gdGV4dF9tb2RlXzM7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAg
ICAgIC8qIFdpZHRoIGFuZCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAgICAgICAgIHVpbnQx
Nl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgICAgICAvKiBCeXRlcyBwZXIgc2NhbiBsaW5lLiAq
LworICAgICAgICAgICAgdWludDE2X3QgYnl0ZXNfcGVyX2xpbmU7CisgICAgICAgICAgICAvKiBC
aXRzIHBlciBwaXhlbC4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IGJpdHNfcGVyX3BpeGVsOwor
ICAgICAgICAgICAgLyogTEZCIHBoeXNpY2FsIGFkZHJlc3MsIGFuZCBzaXplIChpbiB1bml0cyBv
ZiA2NGtCKS4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90IGxmYl9iYXNlOworICAgICAgICAgICAg
dWludDMyX3QgbGZiX3NpemU7CisgICAgICAgICAgICAvKiBSR0IgbWFzayBvZmZzZXRzIGFuZCBz
aXplcywgYXMgZGVmaW5lZCBieSBWQkUgMS4yKyAqLworICAgICAgICAgICAgdWludDhfdCAgcmVk
X3BvcywgcmVkX3NpemU7CisgICAgICAgICAgICB1aW50OF90ICBncmVlbl9wb3MsIGdyZWVuX3Np
emU7CisgICAgICAgICAgICB1aW50OF90ICBibHVlX3BvcywgYmx1ZV9zaXplOworICAgICAgICAg
ICAgdWludDhfdCAgcnN2ZF9wb3MsIHJzdmRfc2l6ZTsKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDYKKyAgICAgICAgICAgIC8qIFZFU0EgY2FwYWJpbGl0aWVzIChv
ZmZzZXQgMHhhLCBWRVNBIGNvbW1hbmQgMHg0ZjAwKS4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90
IGdibF9jYXBzOworICAgICAgICAgICAgLyogTW9kZSBhdHRyaWJ1dGVzIChvZmZzZXQgMHgwLCBW
RVNBIGNvbW1hbmQgMHg0ZjAxKS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IG1vZGVfYXR0cnM7
CisjZW5kaWYKKyAgICAgICAgfSB2ZXNhX2xmYjsKKyAgICB9IHU7Cit9IGRvbTBfdmdhX2NvbnNv
bGVfaW5mb190OworI2RlZmluZSB4ZW5fdmdhX2NvbnNvbGVfaW5mbyBkb20wX3ZnYV9jb25zb2xl
X2luZm8KKyNkZWZpbmUgeGVuX3ZnYV9jb25zb2xlX2luZm9fdCBkb20wX3ZnYV9jb25zb2xlX2lu
Zm9fdAorCit0eXBlZGVmIHVpbnQ4X3QgeGVuX2RvbWFpbl9oYW5kbGVfdFsxNl07CisKKy8qIFR1
cm4gYSBwbGFpbiBudW1iZXIgaW50byBhIEMgVUxPTkdfUFRSIGNvbnN0YW50LiAqLworI2RlZmlu
ZSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkgeCAjIyBVTAorI2RlZmluZSBta191bnNpZ25lZF9sb25n
KHgpIF9fbWtfdW5zaWduZWRfbG9uZyh4KQorCitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVp
bnQ4LCAgdWludDhfdCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQxNiwgdWludDE2
X3QpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50MzIsIHVpbnQzMl90KTsKK19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0LCB1aW50NjRfdCk7CisKKyNlbHNlIC8qIF9fQVNT
RU1CTFlfXyAqLworCisvKiBJbiBhc3NlbWJseSBjb2RlIHdlIGNhbm5vdCB1c2UgQyBudW1lcmlj
IGNvbnN0YW50IHN1ZmZpeGVzLiAqLworI2RlZmluZSBta191bnNpZ25lZF9sb25nKHgpIHgKKwor
I2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworLyogRGVmYXVsdCBkZWZpbml0aW9ucyBmb3Ig
bWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0bC4gKi8KKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8
IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworI2lmbmRlZiBpbnQ2NF9hbGlnbmVkX3QKKyNkZWZp
bmUgaW50NjRfYWxpZ25lZF90IGludDY0X3QKKyNlbmRpZgorI2lmbmRlZiB1aW50NjRfYWxpZ25l
ZF90CisjZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0X3QKKyNlbmRpZgorI2lmbmRlZiBY
RU5fR1VFU1RfSEFORExFXzY0CisjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgWEVO
X0dVRVNUX0hBTkRMRShuYW1lKQorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1
Y3QgeGVuY3RsX2JpdG1hcCB7CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50OCkgYml0bWFw
OworICAgIHVpbnQzMl90IG5yX2JpdHM7Cit9OworI2VuZGlmCisKKyNlbmRpZiAvKiBkZWZpbmVk
KF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KKworI2VuZGlmIC8qIF9fWEVO
X1BVQkxJQ19YRU5fSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD
CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdp
ZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oIGIvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTE0MWM0Li4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL3hlbi1jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIHhlbi1jb21wYXQuaAotICogCi0gKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KLSAqIAotICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAot
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKLSAqLwotCi0jaWZuZGVmIF9fWEVO
X1BVQkxJQ19YRU5fQ09NUEFUX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9I
X18KLQotI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwMzAw
Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLS8qIFhl
biBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVz
dCBpbnRlcmZhY2UuICovCi0jZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5f
TEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KLSNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18pCi0vKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdl
dCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KLSNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyAweDAwMDAwMDAwCi0jZW5kaWYKLQotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXwotI2Vycm9yICJUaGVzZSBoZWFkZXIg
ZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW4veGVuLmggYi9pbmNsdWRlL3hlbi94ZW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzE0ZjlhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi94ZW4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDg5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4uaAotICogCi0gKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8gWGVuLgotICogCi0gKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoK
LSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Ci0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBf
X1hFTl9QVUJMSUNfWEVOX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0hfXwotCi0jaW5j
bHVkZSAieGVuLWNvbXBhdC5oIgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf
X3g4Nl82NF9fKQotI2luY2x1ZGUgImFyY2gteDg2L3hlbi5oIgotI2VsaWYgZGVmaW5lZChfX2Fy
bV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSNpbmNsdWRlICJhcmNoLWFybS5oIgotI2Vs
c2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0KLSNpZm5kZWYg
X19BU1NFTUJMWV9fCi0vKiBHdWVzdCBoYW5kbGVzIGZvciBwcmltaXRpdmUgQyB0eXBlcy4gKi8K
LURFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1Y2hhciwgdW5zaWduZWQgY2hhcik7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShpbnQpOwot
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAgdW5zaWduZWQgaW50KTsKLSNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoTE9OR19QVFIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1bG9uZywgVUxPTkdfUFRS
KTsKLSNlbmRpZgotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm9pZCk7Ci0KLURFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQ2NF90KTsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9wZm5f
dCk7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7Ci0jZW5kaWYKLQotLyoK
LSAqIEhZUEVSQ0FMTFMKLSAqLwotCi0vKiBgaW5jb250ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2Yg
aHlwZXJjYWxscwotICogYCBlbnVtIGh5cGVyY2FsbF9udW0geyAvLyBfX0hZUEVSVklTT1JfKiA9
PiBIWVBFUlZJU09SXyooKQotICovCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90cmFwX3Rh
YmxlICAgICAgICAwCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVfdXBkYXRlICAgICAgICAgICAg
MQotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAgICAgICAgICAgICAgIDIKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAgICAzCi0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zZXRfY2FsbGJhY2tzICAgICAgICAgNAotI2RlZmluZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tz
d2l0Y2ggICAgICAgIDUKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdCAgICAg
ICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9w
bGF0Zm9ybV9vcCAgICAgICAgICAgNwotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2RlYnVncmVn
ICAgICAgICAgIDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyAgICAgICAgICA5
Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVzY3JpcHRvciAgICAxMAotI2RlZmluZSBf
X0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAgMTIKLSNkZWZpbmUgX19IWVBFUlZJU09S
X211bHRpY2FsbCAgICAgICAgICAgIDEzCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFf
bWFwcGluZyAgICAxNAotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3RpbWVyX29wICAgICAgICAg
MTUKLSNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0IDE2IC8qIGNv
bXBhdCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lv
biAgICAgICAgICAxNwotI2RlZmluZSBfX0hZUEVSVklTT1JfY29uc29sZV9pbyAgICAgICAgICAg
MTgKLSNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0ICAgIDE5IC8qIGNvbXBh
dCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ncmFudF90YWJsZV9v
cCAgICAgICAyMAotI2RlZmluZSBfX0hZUEVSVklTT1Jfdm1fYXNzaXN0ICAgICAgICAgICAgMjEK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluIDIyCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAgICAgICAgICAyMyAvKiB4ODYgb25seSAq
LwotI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAgICAgICAgICAgICAgMjQKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8qIHg4Ni82NCBvbmx5ICovCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAgICAgICAgICAyNgotI2RlZmluZSBfX0hZ
UEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcKLSNkZWZpbmUgX19IWVBFUlZJU09SX25t
aV9vcCAgICAgICAgICAgICAgIDI4Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcCAgICAg
ICAgICAgICAyOQotI2RlZmluZSBfX0hZUEVSVklTT1JfY2FsbGJhY2tfb3AgICAgICAgICAgMzAK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29wICAgICAgICAgIDMxCi0jZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAzMgotI2RlZmluZSBfX0hZUEVSVklTT1Jf
cGh5c2Rldl9vcCAgICAgICAgICAgMzMKLSNkZWZpbmUgX19IWVBFUlZJU09SX2h2bV9vcCAgICAg
ICAgICAgICAgIDM0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zeXNjdGwgICAgICAgICAgICAgICAz
NQotI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAgICAgICAgICAgICAgMzYKLSNkZWZpbmUg
X19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAgIDM3Ci0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul90bWVtX29wICAgICAgICAgICAgICAzOAotI2RlZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2
ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwotCi0vKiBBcmNoaXRl
Y3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBfX0hZUEVS
VklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hf
MSAgICAgICAgICAgICAgIDQ5Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzIgICAgICAgICAg
ICAgICA1MAotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8zICAgICAgICAgICAgICAgNTEKLSNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAgICAgIDUyCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1MwotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF82ICAgICAgICAgICAgICAgNTQKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNyAgICAgICAg
ICAgICAgIDU1Ci0KLS8qIGAgfSAqLwotCi0vKgotICogSFlQRVJDQUxMIENPTVBBVElCSUxJVFku
Ci0gKi8KLQotLyogTmV3IHNjaGVkX29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAx
MDEuICovCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAxMDEKLSN1bmRl
ZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKLSNlbmRpZgotCi0vKiBOZXcgZXZlbnQtY2hhbm5l
bCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMi4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMgotI3VuZGVmIF9fSFlQRVJW
SVNPUl9ldmVudF9jaGFubmVsX29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs
X29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdAotI3VuZGVmIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wX2NvbXBhdAotI2VuZGlmCi0KLS8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBl
cmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDMwMjA0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9kb20wX29wIF9fSFlQ
RVJWSVNPUl9wbGF0Zm9ybV9vcAotI2VuZGlmCi0KLS8qIAotICogVklSVFVBTCBJTlRFUlJVUFRT
Ci0gKiAKLSAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2VpdmUg
ZnJvbSBYZW4uCi0gKiAKLSAqIEluIHRoZSBzaWRlIGNvbW1lbnRzLCAnVi4nIGRlbm90ZXMgYSBw
ZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCi0gKiBnbG9iYWwgVklSUS4gVGhlIGZv
cm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fubm90IGJlIHJlLWJvdW5kLgot
ICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25jZSBwZXIgZ3Vlc3Q6IHRoZXkg
bXVzdCBpbml0aWFsbHkgYmUKLSAqIGFsbG9jYXRlZCB0byBWQ1BVMCBidXQgY2FuIHN1YnNlcXVl
bnRseSBiZSByZS1ib3VuZC4KLSAqLwotLyogYCBlbnVtIHZpcnEgeyAqLwotI2RlZmluZSBWSVJR
X1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRlLCBhbmQvb3IgcmVxdWVzdGVkIHRp
bWVvdXQuICAqLwotI2RlZmluZSBWSVJRX0RFQlVHICAgICAgMSAgLyogVi4gUmVxdWVzdCBndWVz
dCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0NPTlNPTEUg
ICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGVtZXJnZW5jeSBjb25zb2xlLiAq
LwotI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4gKERPTTApIEV4Y2VwdGlvbmFsIGV2
ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLwotI2RlZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyog
Ry4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFpbGFibGUuICAqLwotI2RlZmlu
ZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEgZG9tYWluIGhhcyBwYXVzZWQgZm9y
IGRlYnVnZ2luZy4gICAqLwotI2RlZmluZSBWSVJRX1hFTk9QUk9GICAgNyAgLyogVi4gWGVuT3By
b2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJsZSAqLwotI2RlZmluZSBWSVJRX0NP
Tl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGNvbnNvbGUgICAgICAg
ICAgICAqLwotI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyogRy4gKERPTTApIFBDUFUgc3Rh
dGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX01FTV9FVkVOVCAg
MTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1cmVkICAgICAgICAgICAqLwot
I2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJlc2VydmVkIGZvciBYZW5DbGllbnQg
ICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0VOT01FTSAgICAgMTIgLyogRy4g
KERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwotCi0vKiBBcmNoaXRlY3R1cmUtc3Bl
Y2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KLSNkZWZpbmUgVklSUV9BUkNIXzAgICAgMTYKLSNk
ZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKLSNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKLSNkZWZp
bmUgVklSUV9BUkNIXzMgICAgMTkKLSNkZWZpbmUgVklSUV9BUkNIXzQgICAgMjAKLSNkZWZpbmUg
VklSUV9BUkNIXzUgICAgMjEKLSNkZWZpbmUgVklSUV9BUkNIXzYgICAgMjIKLSNkZWZpbmUgVklS
UV9BUkNIXzcgICAgMjMKLS8qIGAgfSAqLwotCi0jZGVmaW5lIE5SX1ZJUlFTICAgICAgIDI0Ci0K
LS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11X3VwZGF0ZShj
b25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCi0gKiBgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0LAotICogYCAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKLSAqIGAKLSAqIEByZXFzIGlzIGFuIGFycmF5
IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2YWwpIHBhaXJzKS4KLSAqIEBjb3Vu
dCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4KLSAqIEBwZG9uZSBpcyBhbiBvdXRw
dXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCi0g
KiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBkYXRhIHBhZ2Vz
IHJlZmVyZW5jZWQgaW4gdGhpcwotICogICAgICAgICAgICAgICAgICAgIGh5cGVyY2FsbCBpbnZv
Y2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KLSAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0
aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKLSAqICAgICAg
ICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52b2NhdGlvbi4gVGhlIHZhbHVlIG9m
IHRoaXMgZmllbGQKLSAqICAgICAgICAgICAgICAgICAgICAgKHgpIGVuY29kZXMgdGhlIFBGRCBh
cyBmb2xsb3dzOgotICogICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlE
X1NFTEYKLSAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAwID0+IFBGRCA9PSB4IC0gMQotICog
Ci0gKiBTdWItY29tbWFuZHM6IHB0clsxOjBdIHNwZWNpZmllcyB0aGUgYXBwcm9wcmlhdGUgTU1V
XyogY29tbWFuZC4KLSAqIC0tLS0tLS0tLS0tLS0KLSAqIHB0clsxOjBdID09IE1NVV9OT1JNQUxf
UFRfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiBhIHBhZ2UgdGFibGUgYmVsb25naW5n
IHRvIFBGRC4gSWYgdXBkYXRpbmcgYW4gTDEgdGFibGUsCi0gKiBhbmQgdGhlIG5ldyB0YWJsZSBl
bnRyeSBpcyB2YWxpZC9wcmVzZW50LCB0aGUgbWFwcGVkIGZyYW1lIG11c3QgYmVsb25nIHRvCi0g
KiBGRC4gSWYgYXR0ZW1wdGluZyB0byBtYXAgYW4gSS9PIHBhZ2UgdGhlbiB0aGUgY2FsbGVyIGFz
c3VtZXMgdGhlIHByaXZpbGVnZQotICogb2YgdGhlIEZELgotICogRkQgPT0gRE9NSURfSU86IFBl
cm1pdCAvb25seS8gSS9PIG1hcHBpbmdzLCBhdCB0aGUgcHJpdiBsZXZlbCBvZiB0aGUgY2FsbGVy
LgotICogRkQgPT0gRE9NSURfWEVOOiBNYXAgcmVzdHJpY3RlZCBhcmVhcyBvZiBYZW4ncyBoZWFw
IHNwYWNlLgotICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIG9mIHRoZSBwYWdlLXRhYmxl
IGVudHJ5IHRvIG1vZGlmeS4KLSAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlLgotICoKLSAq
IFRoZXJlIGFsc28gY2VydGFpbiBpbXBsaWNpdCByZXF1aXJlbWVudHMgd2hlbiB1c2luZyB0aGlz
IGh5cGVyY2FsbC4gVGhlCi0gKiBwYWdlcyB0aGF0IG1ha2UgdXAgYSBwYWdldGFibGUgbXVzdCBi
ZSBtYXBwZWQgcmVhZC1vbmx5IGluIHRoZSBndWVzdC4KLSAqIFRoaXMgcHJldmVudHMgdW5jb250
cm9sbGVkIGd1ZXN0IHVwZGF0ZXMgdG8gdGhlIHBhZ2V0YWJsZS4gWGVuIHN0cmljdGx5Ci0gKiBl
bmZvcmNlcyB0aGlzLCBhbmQgd2lsbCBkaXNhbGxvdyBhbnkgcGFnZXRhYmxlIHVwZGF0ZSB3aGlj
aCB3aWxsIGVuZCB1cAotICogbWFwcGluZyBwYWdldGFibGUgcGFnZSBSVywgYW5kIHdpbGwgZGlz
YWxsb3cgdXNpbmcgYW55IHdyaXRhYmxlIHBhZ2UgYXMgYQotICogcGFnZXRhYmxlLiBJbiBwcmFj
dGljZSBpdCBtZWFucyB0aGF0IHdoZW4gY29uc3RydWN0aW5nIGEgcGFnZSB0YWJsZSBmb3IgYQot
ICogcHJvY2VzcywgdGhyZWFkLCBldGMsIHdlIE1VU1QgYmUgdmVyeSBkaWxsaWdpZW50IGluIGZv
bGxvd2luZyB0aGVzZSBydWxlczoKLSAqICAxKS4gU3RhcnQgd2l0aCB0b3AtbGV2ZWwgcGFnZSAo
UEdEIG9yIGluIFhlbiBsYW5ndWFnZTogTDQpLiBGaWxsIG91dAotICogICAgICB0aGUgZW50cmll
cy4KLSAqICAyKS4gS2VlcCBvbiBnb2luZywgZmlsbGluZyBvdXQgdGhlIHVwcGVyIChQVUQgb3Ig
TDMpLCBhbmQgbWlkZGxlIChQTUQKLSAqICAgICAgb3IgTDIpLgotICogIDMpLiBTdGFydCBmaWxs
aW5nIG91dCB0aGUgUFRFIHRhYmxlIChMMSkgd2l0aCB0aGUgUFRFIGVudHJpZXMuIE9uY2UKLSAq
ICAJZG9uZSwgbWFrZSBzdXJlIHRvIHNldCBlYWNoIG9mIHRob3NlIGVudHJpZXMgdG8gUk8gKHNv
IHdyaXRlYWJsZSBiaXQKLSAqICAJaXMgdW5zZXQpLiBPbmNlIHRoYXQgaGFzIGJlZW4gY29tcGxl
dGVkLCBzZXQgdGhlIFBNRCAoTDIpIGZvciB0aGlzCi0gKiAgCVBURSB0YWJsZSBhcyBSTy4KLSAq
ICA0KS4gV2hlbiBjb21wbGV0ZWQgd2l0aCBhbGwgb2YgdGhlIFBNRCAoTDIpIGVudHJpZXMsIGFu
ZCBhbGwgb2YgdGhlbSBoYXZlCi0gKiAgCWJlZW4gc2V0IHRvIFJPLCBtYWtlIHN1cmUgdG8gc2V0
IFJPIHRoZSBQVUQgKEwzKS4gRG8gdGhlIHNhbWUKLSAqICAJb3BlcmF0aW9uIG9uIFBHRCAoTDQp
IHBhZ2V0YWJsZSBlbnRyaWVzIHRoYXQgaGF2ZSBhIFBVRCAoTDMpIGVudHJ5LgotICogIDUpLiBO
b3cgYmVmb3JlIHlvdSBjYW4gdXNlIHRob3NlIHBhZ2VzIChzbyBzZXR0aW5nIHRoZSBjcjMpLCB5
b3UgTVVTVCBhbHNvCi0gKiAgICAgIHBpbiB0aGVtIHNvIHRoYXQgdGhlIGh5cGVydmlzb3IgY2Fu
IHZlcmlmeSB0aGUgZW50cmllcy4gVGhpcyBpcyBkb25lCi0gKiAgICAgIHZpYSB0aGUgSFlQRVJW
SVNPUl9tbXVleHRfb3AoTU1VRVhUX1BJTl9MNF9UQUJMRSwgZ3Vlc3QgcGh5c2ljYWwgZnJhbWUK
LSAqICAgICAgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkuIEFuZCB0aGlzIHBvaW50IHRoZSBIWVBF
UlZJU09SX21tdWV4dF9vcCgKLSAqICAgICAgTU1VRVhUX05FV19CQVNFUFRSLCBndWVzdCBwaHlz
aWNhbCBmcmFtZSBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKSBjYW4gYmUKLSAqICAgICAgaXNzdWVk
LgotICogRm9yIDMyLWJpdCBndWVzdHMsIHRoZSBMNCBpcyBub3QgdXNlZCAoYXMgdGhlcmUgaXMg
bGVzcyBwYWdldGFibGVzKSwgc28KLSAqIGluc3RlYWQgdXNlIEwzLgotICogQXQgdGhpcyBwb2lu
dCB0aGUgcGFnZXRhYmxlcyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIE1NVV9OT1JNQUxfUFRf
VVBEQVRFCi0gKiBoeXBlcmNhbGwuIEFsc28gaWYgc28gZGVzaXJlZCB0aGUgT1MgY2FuIGFsc28g
dHJ5IHRvIHdyaXRlIHRvIHRoZSBQVEUKLSAqIGFuZCBiZSB0cmFwcGVkIGJ5IHRoZSBoeXBlcnZp
c29yIChhcyB0aGUgUFRFIGVudHJ5IGlzIFJPKS4KLSAqCi0gKiBUbyBkZWFsbG9jYXRlIHRoZSBw
YWdlcywgdGhlIG9wZXJhdGlvbnMgYXJlIHRoZSByZXZlcnNlIG9mIHRoZSBzdGVwcwotICogbWVu
dGlvbmVkIGFib3ZlLiBUaGUgYXJndW1lbnQgaXMgTU1VRVhUX1VOUElOX1RBQkxFIGZvciBhbGwg
bGV2ZWxzIGFuZCB0aGUKLSAqIHBhZ2V0YWJsZSBNVVNUIG5vdCBiZSBpbiB1c2UgKG1lYW5pbmcg
dGhhdCB0aGUgY3IzIGlzIG5vdCBzZXQgdG8gaXQpLgotICogCi0gKiBwdHJbMTowXSA9PSBNTVVf
TUFDSFBIWVNfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiB0aGUgbWFjaGluZS0+cHNl
dWRvLXBoeXNpY2FsIG1hcHBpbmcgdGFibGUuCi0gKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBtYXBwaW5nIHRvIG1vZGlmeS4KLSAqICAgICAgICAg
ICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBpcyBzcGVjaWZpZWQu
Ci0gKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZSBpbnRvIHRoZSBtYXBwaW5nIGVudHJ5Lgot
ICogCi0gKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEOgotICogQXMgTU1V
X05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBjdXJyZW50bHkgaW4gdGhlIFBU
RSBhcmUgT1JlZAotICogd2l0aCB0aG9zZSBpbiBAdmFsLgotICoKLSAqIEB2YWwgaXMgdXN1YWxs
eSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBzb21lIGF0dHJpYnV0ZXMuCi0g
KiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmlu
ZWQgYml0cy4gTWVhbmluZyB0aGF0Ci0gKiBpZiB0aGlzIGlzIGEgWDg2XzY0IG1hY2hpbmUgYW5k
IGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxheW91dAotICogb2YgdmFsIGlz
OgotICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQotICogIC0gNDYtMTMgdGhl
IG1hY2hpbmUgZnJhbWUgbnVtYmVyCi0gKiAgLSAxMiBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAg
LSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAgLSAxMCBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0g
KiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKLSAqICAtIDggZ2xvYmFsCi0gKiAgLSA3IFBBVCAo
UFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8gbWFrZSA0TUIgb3IgMk1CIHBh
Z2VzKQotICogIC0gNiBkaXJ0eQotICogIC0gNSBhY2Nlc3NlZAotICogIC0gNCBwYWdlIGNhY2hl
ZCBkaXNhYmxlZAotICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gKLSAqICAtIDIgdXNlcnNwYWNl
IGFjY2Vzc2libGUKLSAqICAtIDEgd3JpdGVhYmxlCi0gKiAgLSAwIHByZXNlbnQKLSAqCi0gKiAg
VGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhlIGRlZmF1bHQgbGF5b3V0IGlz
IHRoZSBQQUdFX1BTRQotICogIGFsc28gY2FsbGVkIFBBR0VfUEFUKS4gVGhlIE1NVUVYVF9bVU5d
TUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCi0gKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2Vy
dmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBiZSA0TUIKLSAqICAob3IgMk1C
KSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCi0gKgotICogIFRoZSByZWFzb24g
dGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRv
IFhlbgotICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0ZSBUYWJsZSAoUEFUKSBiaXQg
LSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKLSAqICByZWZlciB0byBJbnRlbCBTRE0gMTAuMTIu
IFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRyaWJ1dGVzIG9mCi0gKiAgcGFn
ZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KLSAqCi0gKiAgVGhlIFBBVCBNU1IgaXMgYXMgZm9s
bG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkgaXMgOCBiaXRzKToKLSAqICAg
ICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQQVQwCi0gKiAgKy0tLS0tKy0t
LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKLSAqICB8IFVDICB8IFVDLSB8IFdD
IHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgKLSAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICogIHwgVUMgIHwgVUMtIHwgV1QgfCBX
QiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZhdWx0IHdoZW4gbWFjaGluZSBi
b290cykKLSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwot
ICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBYZW4K
LSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICoKLSAq
ICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0byBsb29raW5nIHVw
Ci0gKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVudHJ5OgotICoKLSAqICBQQVQv
UFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0IDMpLgotICoKLSAqICBJZiBh
bGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQwLiBJZiBiaXQgMyB0dXJuZWQg
b24sCi0gKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0IDMgYW5kIGJpdCA0LCB0aGVu
IFBBVDIuLgotICoKLSAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExpbnV4IFBBVDEgdHJhbnNsYXRl
cyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKLSAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhh
dCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQot
ICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQgZW50cnkuIE1lYW5pbmcgdGhh
dCBCaXQgNyAoUEFHRV9QQVQpIGlzCi0gKiAgc2V0LiBGb3IgZXhhbXBsZSwgdW5kZXIgTGludXgg
aXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0aGUKLSAqICBjYWNoaW5nIGFz
OgotICoKLSAqICAgV0IgPSBub25lIChzbyBQQVQwKQotICogICBXQyA9IFBXVCAoYml0IDMgb24p
Ci0gKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUgb24pLgotICoKLSAqIFRvIG1h
a2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMg
c286Ci0gKgotICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQgKHNvIGJpdCA3IGlzIG9uKSBh
bmQgY2xlYXIgYml0IDMKLSAqCi0gKiBBbmQgdG8gdHJhbnNsYXRlIGJhY2sgaXQgd291bGQ6Ci0g
KgotICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQgNy4K
LSAqLwotI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAgIDAgLyogY2hlY2tlZCAnKnB0
ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLwotI2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRF
ICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZvciAqLwotI2Rl
ZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZh
bCB8ICgqcHRyJihBfEQpKSAqLwotCi0vKgotICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMKLSAq
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4
dF9vcF90IHVvcHNbXSwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50LAotICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLAotICog
YCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkKLSAqLwotLyog
SFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVleHRfb3Agc3RydWN0
dXJlcy4KLSAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZpZWQgKG9yIERPTUlEX1NF
TEYgZm9yIG5vbmUpLgotICogV2hlcmUgdGhlIEZEIGhhcyBzb21lIGVmZmVjdCwgaXQgaXMgZGVz
Y3JpYmVkIGJlbG93LgotICoKLSAqIGNtZDogTU1VRVhUXyhVTilQSU5fKl9UQUJMRQotICogbWZu
OiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLgot
ICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lm
aWVkLgotICoKLSAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCi0gKiBtZm46IE1hY2hpbmUgZnJh
bWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCi0gKgot
ICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldCi0gKiBtZm46IE1h
Y2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBN
TVUKLSAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgotICoKLSAqIGNtZDogTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwgVExC
LgotICoKLSAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAotICogbGluZWFyX2FkZHI6IExpbmVh
ciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9NVUxUSQotICogdmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9m
IFZDUFVzIHRvIGJlIGZsdXNoZWQuCi0gKgotICogY21kOiBNTVVFWFRfSU5WTFBHX01VTFRJCi0g
KiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZC4KLSAqIHZjcHVtYXNr
OiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVzaGVkLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9BTEwKLSAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVz
IGFsbCBWQ1BVcycgVExCcy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMCi0gKiBsaW5l
YXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExC
cy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQotICogTm8gYWRkaXRpb25hbCBhcmd1
bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLgotICoKLSAqIGNt
ZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzCi0gKiBvbiBhbGwgQ1BVcyBp
biB0aGUgc3lzdGVtLgotICoKLSAqIGNtZDogTU1VRVhUX1NFVF9MRFQKLSAqIGxpbmVhcl9hZGRy
OiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4K
LSAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4KLSAqCi0gKiBjbWQ6IE1NVUVY
VF9DTEVBUl9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQu
Ci0gKgotICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgotICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBu
dW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgotICoKLSAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NV
UEVSCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRv
IGJlIFt1bl1tYXJrZWQuCi0gKi8KLS8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8KLSNkZWZpbmUg
TU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKLSNkZWZpbmUgTU1VRVhUX1BJTl9MMl9UQUJMRSAg
ICAgIDEKLSNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAgIDIKLSNkZWZpbmUgTU1VRVhU
X1BJTl9MNF9UQUJMRSAgICAgIDMKLSNkZWZpbmUgTU1VRVhUX1VOUElOX1RBQkxFICAgICAgIDQK
LSNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKLSNkZWZpbmUgTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTCAgIDYKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19MT0NBTCAgICAgIDcKLSNkZWZp
bmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxU
SSAgICAgIDkKLSNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTAKLSNkZWZpbmUgTU1V
RVhUX0lOVkxQR19BTEwgICAgICAgMTEKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAg
MTIKLSNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMKLSNkZWZpbmUgTU1VRVhUX05F
V19VU0VSX0JBU0VQVFIgMTUKLSNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYKLSNk
ZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NB
Q0hFX0dMT0JBTCAxOAotI2RlZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQotI2RlZmlu
ZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAotLyogYCB9ICovCi0KLSNpZm5kZWYgX19BU1NF
TUJMWV9fCi1zdHJ1Y3QgbW11ZXh0X29wIHsKLSAgICB1bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBl
bnVtIG1tdWV4dF9jbWQgKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIC8qIFtVTl1QSU5fVEFCTEUs
IE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCi0gICAgICAgICAqIENMRUFSX1BBR0UsIENP
UFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KLSAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47Ci0g
ICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLwotICAgICAgICBV
TE9OR19QVFIgbGluZWFyX2FkZHI7Ci0gICAgfSBhcmcxOwotICAgIHVuaW9uIHsKLSAgICAgICAg
LyogU0VUX0xEVCAqLwotICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsKLSAgICAgICAgLyog
VExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDUKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lk
KSB2Y3B1bWFzazsKLSNlbHNlCi0gICAgICAgIGNvbnN0IHZvaWQgKnZjcHVtYXNrOwotI2VuZGlm
Ci0gICAgICAgIC8qIENPUFlfUEFHRSAqLwotICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKLSAg
ICB9IGFyZzI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOwotI2VuZGlmCi0KLS8qCi0gKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdf
UFRSIHZhLCB1NjQgdmFsLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g
dXZtX2ZsYWdzIGZsYWdzKQotICogYAotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBF
UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0IHZh
bCwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2
bV9mbGFncyBmbGFncywKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb21pZF90IGRvbWlkKQotICogYAotICogYCBAdmE6IFRoZSB2aXJ0dWFsIGFkZHJlc3Mg
d2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQotICogYCBAdmFsOiBUaGUgbmV3IHBhZ2Ug
dGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRkcmVzcwotICogYCBAZmxhZ3M6
IENvbnRyb2wgVExCIGZsdXNoZXMKLSAqLwotLyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3Mn
IHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVkLiAqLwotLyogV2hlbiBzcGVj
aWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4g
ICAqLwotLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRt
YXAgcG9pbnRlci4gICAgICAgICAqLwotLyogYCBlbnVtIHV2bV9mbGFncyB7ICovCi0jZGVmaW5l
IFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5vIGZsdXNoaW5nIGF0IGFsbC4g
ICAqLwotI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAoMVVMPDwwKSAvKiBGbHVzaCBl
bnRpcmUgVExCKHMpLiAgKi8KLSNkZWZpbmUgVVZNRl9JTlZMUEcgICAgICAgICAgICAgKDJVTDw8
MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCi0jZGVmaW5lIFVWTUZfRkxVU0hUWVBFX01B
U0sgICAgICgzVUw8PDApCi0jZGVmaW5lIFVWTUZfTVVMVEkgICAgICAgICAgICAgICgwVUw8PDIp
IC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLwotI2RlZmluZSBVVk1GX0xPQ0FMICAgICAgICAg
ICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAgKi8KLSNkZWZpbmUgVVZNRl9B
TEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxsIFRMQnMuICAgICAgICovCi0v
KiBgIH0gKi8KLQotLyoKLSAqIENvbW1hbmRzIHRvIEhZUEVSVklTT1JfY29uc29sZV9pbygpLgot
ICovCi0jZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAKLSNkZWZpbmUgQ09OU09MRUlP
X3JlYWQgICAgICAgICAgMQotCi0vKgotICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl92bV9hc3Np
c3QoKS4KLSAqLwotI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAgICAgICAgICAgICAgICAwCi0j
ZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAgIDEKLQotLyogeDg2LzMyIGd1
ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMuICovCi0jZGVmaW5lIFZNQVNT
VF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKLQotLyogeDg2LzMyIGd1ZXN0czogdHJhcCAo
dmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1c2VkLiAqLwotI2RlZmluZSBW
TUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCi0KLS8qCi0gKiB4ODYgZ3Vlc3RzOiBz
dXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KLSAqIE5CMS4gUGFnZS1kaXJlY3Rv
cnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KLSAqIE5CMi4gR3Vlc3QgbXVzdCBjb250aW51
ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBURXMuCi0gKi8KLSNkZWZpbmUg
Vk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgotCi0vKiB4ODYvUEFFIGd1ZXN0czog
c3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCi0jZGVmaW5lIFZNQVNTVF9UWVBFX3BhZV9leHRl
bmRlZF9jcjMgICAgIDMKLQotI2RlZmluZSBNQVhfVk1BU1NUX1RZUEUgICAgICAgICAgICAgICAg
ICAzCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgdWludDE2X3QgZG9taWRfdDsK
LQotLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZFRCBjYW5ub3QgYmUgdXNlZCBm
b3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KLSNkZWZpbmUgRE9NSURfRklSU1RfUkVTRVJWRUQgKDB4
N0ZGMFUpCi0KLS8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0YWluIGNvbnRleHRzIHRvIHJl
ZmVyIHRvIG9uZXNlbGYuICovCi0jZGVmaW5lIERPTUlEX1NFTEYgKDB4N0ZGMFUpCi0KLS8qCi0g
KiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFibGUgdXBkYXRlcyB0byBtYXBw
aW5nIEkvTyBtZW1vcnkuCi0gKiBBbHRob3VnaCBubyBGb3JlaWduIERvbWFpbiBuZWVkIGJlIHNw
ZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTwotICogaXMgdXNlZnVsIHRvIGVuc3Vy
ZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFwIGFyZSBhY2NpZGVudGFsbHkK
LSAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291bGQgY2F1c2UgaGF2b2MgYXMg
cmVmZXJlbmNlIGNvdW50cwotICogYXJlbid0IGFkanVzdGVkIG9uIHRoZSBJL08tbWFwcGluZyBj
b2RlIHBhdGgpLgotICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIE1NVUVYVF9TRVRfRk9SRUlH
TkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KLSAqIGJlIHNwZWNpZmllZCBieSBhbnkgY2Fs
bGluZyBkb21haW4uCi0gKi8KLSNkZWZpbmUgRE9NSURfSU8gICAoMHg3RkYxVSkKLQotLyoKLSAq
IERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0byBtYXAgcmVz
dHJpY3RlZCBwYXJ0cyBvZgotICogWGVuJ3MgaGVhcCBzcGFjZSAoZS5nLiwgdGhlIG1hY2hpbmVf
dG9fcGh5cyB0YWJsZSkuCi0gKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NFVF9G
T1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKLSAqIHRoZSBjYWxsZXIgaXMgcHJp
dmlsZWdlZC4KLSAqLwotI2RlZmluZSBET01JRF9YRU4gICgweDdGRjJVKQotCi0vKgotICogRE9N
SURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxlIHBhZ2VzICovCi0jZGVmaW5l
IERPTUlEX0NPVyAgKDB4N0ZGM1UpCi0KLS8qIERPTUlEX0lOVkFMSUQgaXMgdXNlZCB0byBpZGVu
dGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCi0jZGVmaW5lIERPTUlEX0lOVkFMSUQg
KDB4N0ZGNFUpCi0KLS8qIElkbGUgZG9tYWluLiAqLwotI2RlZmluZSBET01JRF9JRExFICgweDdG
RkZVKQotCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX21tdV91
cGRhdGUoKS4KLSAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFsIHBvaW50ZXIvYWRkcmVzcyBz
aXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KLSAqLwotc3RydWN0IG1tdV91cGRhdGUgewotICAg
IHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNzIG9mIFBURS4gKi8KLSAgICB1
aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQVEUuICAgICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtbXVfdXBkYXRlX3QpOwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBI
WVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBjYWxsX2xpc3RbXSwKLSAqIGAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2NhbGxzKTsKLSAqCi0gKiBOQi4g
VGhlIGZpZWxkcyBhcmUgbmF0dXJhbCByZWdpc3RlciBzaXplIGZvciB0aGlzIGFyY2hpdGVjdHVy
ZS4KLSAqLwotc3RydWN0IG11bHRpY2FsbF9lbnRyeSB7Ci0gICAgVUxPTkdfUFRSIG9wLCByZXN1
bHQ7Ci0gICAgVUxPTkdfUFRSIGFyZ3NbNl07Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbXVsdGljYWxs
X2VudHJ5IG11bHRpY2FsbF9lbnRyeV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobXVsdGlj
YWxsX2VudHJ5X3QpOwotCi0vKgotICogRXZlbnQgY2hhbm5lbCBlbmRwb2ludHMgcGVyIGRvbWFp
bjoKLSAqICAxMDI0IGlmIGEgTE9OR19QVFIgaXMgMzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRS
IGlzIDY0IGJpdHMuCi0gKi8KLSNkZWZpbmUgTlJfRVZFTlRfQ0hBTk5FTFMgKHNpemVvZih4ZW5f
dWxvbmdfdCkgKiBzaXplb2YoeGVuX3Vsb25nX3QpICogNjQpCi0KLXN0cnVjdCB2Y3B1X3RpbWVf
aW5mbyB7Ci0gICAgLyoKLSAgICAgKiBVcGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFy
ZSBwcmVjZWRlZCBhbmQgZm9sbG93ZWQgYnkgYW4KLSAgICAgKiBpbmNyZW1lbnQgb2YgJ3ZlcnNp
b24nLiBUaGUgZ3Vlc3QgY2FuIHRoZXJlZm9yZSBkZXRlY3QgdXBkYXRlcyBieQotICAgICAqIGxv
b2tpbmcgZm9yIGNoYW5nZXMgdG8gJ3ZlcnNpb24nLiBJZiB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQg
Yml0IG9mCi0gICAgICogdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0ZSBp
cyBpbiBwcm9ncmVzcyBhbmQgdGhlIGd1ZXN0Ci0gICAgICogbXVzdCB3YWl0IHRvIHJlYWQgYSBj
b25zaXN0ZW50IHNldCBvZiB2YWx1ZXMuCi0gICAgICogVGhlIGNvcnJlY3Qgd2F5IHRvIGludGVy
YWN0IHdpdGggdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNpbWlsYXIgdG8KLSAgICAgKiBMaW51eCdz
IHNlcWxvY2s6IHNlZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHJlYWRfc2VxYmVnaW4vcmVhZF9z
ZXFyZXRyeS4KLSAgICAgKi8KLSAgICB1aW50MzJfdCB2ZXJzaW9uOwotICAgIHVpbnQzMl90IHBh
ZDA7Ci0gICAgdWludDY0X3QgdHNjX3RpbWVzdGFtcDsgICAvKiBUU0MgYXQgbGFzdCB1cGRhdGUg
b2YgdGltZSB2YWxzLiAgKi8KLSAgICB1aW50NjRfdCBzeXN0ZW1fdGltZTsgICAgIC8qIFRpbWUs
IGluIG5hbm9zZWNzLCBzaW5jZSBib290LiAgICAqLwotICAgIC8qCi0gICAgICogQ3VycmVudCBz
eXN0ZW0gdGltZToKLSAgICAgKiAgIHN5c3RlbV90aW1lICsKLSAgICAgKiAgICgoKCh0c2MgLSB0
c2NfdGltZXN0YW1wKSA8PCB0c2Nfc2hpZnQpICogdHNjX3RvX3N5c3RlbV9tdWwpID4+IDMyKQot
ICAgICAqIENQVSBmcmVxdWVuY3kgKEh6KToKLSAgICAgKiAgICgoMTBeOSA8PCAzMikgLyB0c2Nf
dG9fc3lzdGVtX211bCkgPj4gdHNjX3NoaWZ0Ci0gICAgICovCi0gICAgdWludDMyX3QgdHNjX3Rv
X3N5c3RlbV9tdWw7Ci0gICAgaW50OF90ICAgdHNjX3NoaWZ0OwotICAgIGludDhfdCAgIHBhZDFb
M107Ci19OyAvKiAzMiBieXRlcyAqLwotdHlwZWRlZiBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdmNw
dV90aW1lX2luZm9fdDsKLQotc3RydWN0IHZjcHVfaW5mbyB7Ci0gICAgLyoKLSAgICAgKiAnZXZ0
Y2huX3VwY2FsbF9wZW5kaW5nJyBpcyB3cml0dGVuIG5vbi16ZXJvIGJ5IFhlbiB0byBpbmRpY2F0
ZQotICAgICAqIGEgcGVuZGluZyBub3RpZmljYXRpb24gZm9yIGEgcGFydGljdWxhciBWQ1BVLiBJ
dCBpcyB0aGVuIGNsZWFyZWQgCi0gICAgICogYnkgdGhlIGd1ZXN0IE9TIC9iZWZvcmUvIGNoZWNr
aW5nIGZvciBwZW5kaW5nIHdvcmssIHRodXMgYXZvaWRpbmcKLSAgICAgKiBhIHNldC1hbmQtY2hl
Y2sgcmFjZS4gTm90ZSB0aGF0IHRoZSBtYXNrIGlzIG9ubHkgYWNjZXNzZWQgYnkgWGVuCi0gICAg
ICogb24gdGhlIENQVSB0aGF0IGlzIGN1cnJlbnRseSBob3N0aW5nIHRoZSBWQ1BVLiBUaGlzIG1l
YW5zIHRoYXQgdGhlCi0gICAgICogcGVuZGluZyBhbmQgbWFzayBmbGFncyBjYW4gYmUgdXBkYXRl
ZCBieSB0aGUgZ3Vlc3Qgd2l0aG91dCBzcGVjaWFsCi0gICAgICogc3luY2hyb25pc2F0aW9uIChp
LmUuLCBubyBuZWVkIGZvciB0aGUgeDg2IExPQ0sgcHJlZml4KS4KLSAgICAgKiBUaGlzIG1heSBz
ZWVtIHN1Ym9wdGltYWwgYmVjYXVzZSBpZiB0aGUgcGVuZGluZyBmbGFnIGlzIHNldCBieQotICAg
ICAqIGEgZGlmZmVyZW50IENQVSB0aGVuIGFuIElQSSBtYXkgYmUgc2NoZWR1bGVkIGV2ZW4gd2hl
biB0aGUgbWFzawotICAgICAqIGlzIHNldC4gSG93ZXZlciwgbm90ZToKLSAgICAgKiAgMS4gVGhl
IHRhc2sgb2YgJ2ludGVycnVwdCBob2xkb2ZmJyBpcyBjb3ZlcmVkIGJ5IHRoZSBwZXItZXZlbnQt
Ci0gICAgICogICAgIGNoYW5uZWwgbWFzayBiaXRzLiBBICdub2lzeScgZXZlbnQgdGhhdCBpcyBj
b250aW51YWxseSBiZWluZwotICAgICAqICAgICB0cmlnZ2VyZWQgY2FuIGJlIG1hc2tlZCBhdCBz
b3VyY2UgYXQgdGhpcyB2ZXJ5IHByZWNpc2UKLSAgICAgKiAgICAgZ3JhbnVsYXJpdHkuCi0gICAg
ICogIDIuIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIHBlci1WQ1BVIG1hc2sgaXMgdGhlcmVmb3Jl
IHRvIHJlc3RyaWN0Ci0gICAgICogICAgIHJlZW50cmFudCBleGVjdXRpb246IHdoZXRoZXIgZm9y
IGNvbmN1cnJlbmN5IGNvbnRyb2wsIG9yIHRvCi0gICAgICogICAgIHByZXZlbnQgdW5ib3VuZGVk
IHN0YWNrIHVzYWdlLiBXaGF0ZXZlciB0aGUgcHVycG9zZSwgd2UgZXhwZWN0Ci0gICAgICogICAg
IHRoYXQgdGhlIG1hc2sgd2lsbCBiZSBhc3NlcnRlZCBvbmx5IGZvciBzaG9ydCBwZXJpb2RzIGF0
IGEgdGltZSwKLSAgICAgKiAgICAgYW5kIHNvIHRoZSBsaWtlbGlob29kIG9mIGEgJ3NwdXJpb3Vz
JyBJUEkgaXMgc3VpdGFibHkgc21hbGwuCi0gICAgICogVGhlIG1hc2sgaXMgcmVhZCBiZWZvcmUg
bWFraW5nIGFuIGV2ZW50IHVwY2FsbCB0byB0aGUgZ3Vlc3Q6IGEKLSAgICAgKiBub24temVybyBt
YXNrIHRoZXJlZm9yZSBndWFyYW50ZWVzIHRoYXQgdGhlIFZDUFUgd2lsbCBub3QgcmVjZWl2ZQot
ICAgICAqIGFuIHVwY2FsbCBhY3RpdmF0aW9uLiBUaGUgbWFzayBpcyBjbGVhcmVkIHdoZW4gdGhl
IFZDUFUgcmVxdWVzdHMKLSAgICAgKiB0byBibG9jazogdGhpcyBhdm9pZHMgd2FrZXVwLXdhaXRp
bmcgcmFjZXMuCi0gICAgICovCi0gICAgdWludDhfdCBldnRjaG5fdXBjYWxsX3BlbmRpbmc7Ci0j
aWZkZWYgWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sKLSAgICB1aW50OF90IGV2dGNobl91cGNhbGxf
bWFzazsKLSNlbHNlIC8qIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLICovCi0gICAgdWludDhfdCBw
YWQwOwotI2VuZGlmIC8qIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLICovCi0gICAgeGVuX3Vsb25n
X3QgZXZ0Y2huX3BlbmRpbmdfc2VsOwotICAgIHN0cnVjdCBhcmNoX3ZjcHVfaW5mbyBhcmNoOwot
ICAgIHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB0aW1lOwotfTsgLyogNjQgYnl0ZXMgKHg4NikgKi8K
LSNpZm5kZWYgX19YRU5fXwotdHlwZWRlZiBzdHJ1Y3QgdmNwdV9pbmZvIHZjcHVfaW5mb190Owot
I2VuZGlmCi0KLS8qCi0gKiBgaW5jb250ZW50cyAyMDAgc3RhcnRvZmRheV9zaGFyZWQgU3RhcnQt
b2YtZGF5IHNoYXJlZCBkYXRhIHN0cnVjdHVyZQotICogWGVuL2tlcm5lbCBzaGFyZWQgZGF0YSAt
LSBwb2ludGVyIHByb3ZpZGVkIGluIHN0YXJ0X2luZm8uCi0gKgotICogVGhpcyBzdHJ1Y3R1cmUg
aXMgZGVmaW5lZCB0byBiZSBib3RoIHNtYWxsZXIgdGhhbiBhIHBhZ2UsIGFuZCB0aGUKLSAqIG9u
bHkgZGF0YSBvbiB0aGUgc2hhcmVkIHBhZ2UsIGJ1dCBtYXkgdmFyeSBpbiBhY3R1YWwgc2l6ZSBl
dmVuIHdpdGhpbgotICogY29tcGF0aWJsZSBYZW4gdmVyc2lvbnM7IGd1ZXN0cyBzaG91bGQgbm90
IHJlbHkgb24gdGhlIHNpemUKLSAqIG9mIHRoaXMgc3RydWN0dXJlIHJlbWFpbmluZyBjb25zdGFu
dC4KLSAqLwotc3RydWN0IHNoYXJlZF9pbmZvIHsKLSAgICBzdHJ1Y3QgdmNwdV9pbmZvIHZjcHVf
aW5mb1tYRU5fTEVHQUNZX01BWF9WQ1BVU107Ci0KLSAgICAvKgotICAgICAqIEEgZG9tYWluIGNh
biBjcmVhdGUgImV2ZW50IGNoYW5uZWxzIiBvbiB3aGljaCBpdCBjYW4gc2VuZCBhbmQgcmVjZWl2
ZQotICAgICAqIGFzeW5jaHJvbm91cyBldmVudCBub3RpZmljYXRpb25zLiBUaGVyZSBhcmUgdGhy
ZWUgY2xhc3NlcyBvZiBldmVudCB0aGF0Ci0gICAgICogYXJlIGRlbGl2ZXJlZCBieSB0aGlzIG1l
Y2hhbmlzbToKLSAgICAgKiAgMS4gQmktZGlyZWN0aW9uYWwgaW50ZXItIGFuZCBpbnRyYS1kb21h
aW4gY29ubmVjdGlvbnMuIERvbWFpbnMgbXVzdAotICAgICAqICAgICBhcnJhbmdlIG91dC1vZi1i
YW5kIHRvIHNldCB1cCBhIGNvbm5lY3Rpb24gKHVzdWFsbHkgYnkgYWxsb2NhdGluZwotICAgICAq
ICAgICBhbiB1bmJvdW5kICdsaXN0ZW5lcicgcG9ydCBhbmQgYXZlcnRpc2luZyB0aGF0IHZpYSBh
IHN0b3JhZ2Ugc2VydmljZQotICAgICAqICAgICBzdWNoIGFzIHhlbnN0b3JlKS4KLSAgICAgKiAg
Mi4gUGh5c2ljYWwgaW50ZXJydXB0cy4gQSBkb21haW4gd2l0aCBzdWl0YWJsZSBoYXJkd2FyZS1h
Y2Nlc3MKLSAgICAgKiAgICAgcHJpdmlsZWdlcyBjYW4gYmluZCBhbiBldmVudC1jaGFubmVsIHBv
cnQgdG8gYSBwaHlzaWNhbCBpbnRlcnJ1cHQKLSAgICAgKiAgICAgc291cmNlLgotICAgICAqICAz
LiBWaXJ0dWFsIGludGVycnVwdHMgKCdldmVudHMnKS4gQSBkb21haW4gY2FuIGJpbmQgYW4gZXZl
bnQtY2hhbm5lbAotICAgICAqICAgICBwb3J0IHRvIGEgdmlydHVhbCBpbnRlcnJ1cHQgc291cmNl
LCBzdWNoIGFzIHRoZSB2aXJ0dWFsLXRpbWVyCi0gICAgICogICAgIGRldmljZSBvciB0aGUgZW1l
cmdlbmN5IGNvbnNvbGUuCi0gICAgICogCi0gICAgICogRXZlbnQgY2hhbm5lbHMgYXJlIGFkZHJl
c3NlZCBieSBhICJwb3J0IGluZGV4Ii4gRWFjaCBjaGFubmVsIGlzCi0gICAgICogYXNzb2NpYXRl
ZCB3aXRoIHR3byBiaXRzIG9mIGluZm9ybWF0aW9uOgotICAgICAqICAxLiBQRU5ESU5HIC0tIG5v
dGlmaWVzIHRoZSBkb21haW4gdGhhdCB0aGVyZSBpcyBhIHBlbmRpbmcgbm90aWZpY2F0aW9uCi0g
ICAgICogICAgIHRvIGJlIHByb2Nlc3NlZC4gVGhpcyBiaXQgaXMgY2xlYXJlZCBieSB0aGUgZ3Vl
c3QuCi0gICAgICogIDIuIE1BU0sgLS0gaWYgdGhpcyBiaXQgaXMgY2xlYXIgdGhlbiBhIDAtPjEg
dHJhbnNpdGlvbiBvZiBQRU5ESU5HCi0gICAgICogICAgIHdpbGwgY2F1c2UgYW4gYXN5bmNocm9u
b3VzIHVwY2FsbCB0byBiZSBzY2hlZHVsZWQuIFRoaXMgYml0IGlzIG9ubHkKLSAgICAgKiAgICAg
dXBkYXRlZCBieSB0aGUgZ3Vlc3QuIEl0IGlzIHJlYWQtb25seSB3aXRoaW4gWGVuLiBJZiBhIGNo
YW5uZWwKLSAgICAgKiAgICAgYmVjb21lcyBwZW5kaW5nIHdoaWxlIHRoZSBjaGFubmVsIGlzIG1h
c2tlZCB0aGVuIHRoZSAnZWRnZScgaXMgbG9zdAotICAgICAqICAgICAoaS5lLiwgd2hlbiB0aGUg
Y2hhbm5lbCBpcyB1bm1hc2tlZCwgdGhlIGd1ZXN0IG11c3QgbWFudWFsbHkgaGFuZGxlCi0gICAg
ICogICAgIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBubyB1cGNhbGwgd2lsbCBiZSBzY2hlZHVs
ZWQgYnkgWGVuKS4KLSAgICAgKiAKLSAgICAgKiBUbyBleHBlZGl0ZSBzY2FubmluZyBvZiBwZW5k
aW5nIG5vdGlmaWNhdGlvbnMsIGFueSAwLT4xIHBlbmRpbmcKLSAgICAgKiB0cmFuc2l0aW9uIG9u
IGFuIHVubWFza2VkIGNoYW5uZWwgY2F1c2VzIGEgY29ycmVzcG9uZGluZyBiaXQgaW4gYQotICAg
ICAqIHBlci12Y3B1IHNlbGVjdG9yIHdvcmQgdG8gYmUgc2V0LiBFYWNoIGJpdCBpbiB0aGUgc2Vs
ZWN0b3IgY292ZXJzIGEKLSAgICAgKiAnQyBMT05HX1BUUicgaW4gdGhlIFBFTkRJTkcgYml0Zmll
bGQgYXJyYXkuCi0gICAgICovCi0gICAgeGVuX3Vsb25nX3QgZXZ0Y2huX3BlbmRpbmdbc2l6ZW9m
KHhlbl91bG9uZ190KSAqIDhdOwotICAgIHhlbl91bG9uZ190IGV2dGNobl9tYXNrW3NpemVvZih4
ZW5fdWxvbmdfdCkgKiA4XTsKLQotICAgIC8qCi0gICAgICogV2FsbGNsb2NrIHRpbWU6IHVwZGF0
ZWQgb25seSBieSBjb250cm9sIHNvZnR3YXJlLiBHdWVzdHMgc2hvdWxkIGJhc2UKLSAgICAgKiB0
aGVpciBnZXR0aW1lb2ZkYXkoKSBzeXNjYWxsIG9uIHRoaXMgd2FsbGNsb2NrLWJhc2UgdmFsdWUu
Ci0gICAgICovCi0gICAgdWludDMyX3Qgd2NfdmVyc2lvbjsgICAgICAvKiBWZXJzaW9uIGNvdW50
ZXI6IHNlZSB2Y3B1X3RpbWVfaW5mb190LiAqLwotICAgIHVpbnQzMl90IHdjX3NlYzsgICAgICAg
ICAgLyogU2VjcyAgMDA6MDA6MDAgVVRDLCBKYW4gMSwgMTk3MC4gICovCi0gICAgdWludDMyX3Qg
d2NfbnNlYzsgICAgICAgICAvKiBOc2VjcyAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8K
LQotICAgIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIGFyY2g7Ci0KLX07Ci0jaWZuZGVmIF9fWEVO
X18KLXR5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZvIHNoYXJlZF9pbmZvX3Q7Ci0jZW5kaWYKLQot
LyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5IFN0YXJ0LW9mLWRheSBtZW1vcnkgbGF5
b3V0Ci0gKgotICogIDEuIFRoZSBkb21haW4gaXMgc3RhcnRlZCB3aXRoaW4gY29udGlndW91cyB2
aXJ0dWFsLW1lbW9yeSByZWdpb24uCi0gKiAgMi4gVGhlIGNvbnRpZ3VvdXMgcmVnaW9uIGVuZHMg
b24gYW4gYWxpZ25lZCA0TUIgYm91bmRhcnkuCi0gKiAgMy4gVGhpcyB0aGUgb3JkZXIgb2YgYm9v
dHN0cmFwIGVsZW1lbnRzIGluIHRoZSBpbml0aWFsIHZpcnR1YWwgcmVnaW9uOgotICogICAgICBh
LiByZWxvY2F0ZWQga2VybmVsIGltYWdlCi0gKiAgICAgIGIuIGluaXRpYWwgcmFtIGRpc2sgICAg
ICAgICAgICAgIFttb2Rfc3RhcnQsIG1vZF9sZW5dCi0gKiAgICAgIGMuIGxpc3Qgb2YgYWxsb2Nh
dGVkIHBhZ2UgZnJhbWVzIFttZm5fbGlzdCwgbnJfcGFnZXNdCi0gKiAgICAgICAgICh1bmxlc3Mg
cmVsb2NhdGVkIGR1ZSB0byBYRU5fRUxGTk9URV9JTklUX1AyTSkKLSAqICAgICAgZC4gc3RhcnRf
aW5mb190IHN0cnVjdHVyZSAgICAgICAgW3JlZ2lzdGVyIEVTSSAoeDg2KV0KLSAqICAgICAgZS4g
Ym9vdHN0cmFwIHBhZ2UgdGFibGVzICAgICAgICAgW3B0X2Jhc2UgYW5kIENSMyAoeDg2KV0KLSAq
ICAgICAgZi4gYm9vdHN0cmFwIHN0YWNrICAgICAgICAgICAgICAgW3JlZ2lzdGVyIEVTUCAoeDg2
KV0KLSAqICA0LiBCb290c3RyYXAgZWxlbWVudHMgYXJlIHBhY2tlZCB0b2dldGhlciwgYnV0IGVh
Y2ggaXMgNGtCLWFsaWduZWQuCi0gKiAgNS4gVGhlIGluaXRpYWwgcmFtIGRpc2sgbWF5IGJlIG9t
aXR0ZWQuCi0gKiAgNi4gVGhlIGxpc3Qgb2YgcGFnZSBmcmFtZXMgZm9ybXMgYSBjb250aWd1b3Vz
ICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQotICogICAgIGxheW91dCBmb3IgdGhlIGRvbWFpbi4g
SW4gcGFydGljdWxhciwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsLW1lbW9yeQotICogICAgIHJlZ2lv
biBpcyBhIDE6MSBtYXBwaW5nIHRvIHRoZSBmaXJzdCBzZWN0aW9uIG9mIHRoZSBwc2V1ZG8tcGh5
c2ljYWwgbWFwLgotICogIDcuIEFsbCBib290c3RyYXAgZWxlbWVudHMgYXJlIG1hcHBlZCByZWFk
LXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRoZQotICogICAgIG9ubHkgZXhjZXB0aW9uIGlz
IHRoZSBib290c3RyYXAgcGFnZSB0YWJsZSwgd2hpY2ggaXMgbWFwcGVkIHJlYWQtb25seS4KLSAq
ICA4LiBUaGVyZSBpcyBndWFyYW50ZWVkIHRvIGJlIGF0IGxlYXN0IDUxMmtCIHBhZGRpbmcgYWZ0
ZXIgdGhlIGZpbmFsCi0gKiAgICAgYm9vdHN0cmFwIGVsZW1lbnQuIElmIG5lY2Vzc2FyeSwgdGhl
IGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcwotICogICAgIGV4dGVuZGVkIGJ5IGFuIGV4dHJh
IDRNQiB0byBlbnN1cmUgdGhpcy4KLSAqCi0gKiBOb3RlOiBQcmlvciB0byAyNTgzMzpiYjg1YmJj
Y2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBEb20wIGluaXRpYWwgcGFnZQotICogdGFibGUg
bGF5b3V0IikgYSBidWcgY2F1c2VkIHRoZSBwdF9iYXNlICgzLmUgYWJvdmUpIGFuZCBjcjMgdG8g
bm90IHBvaW50Ci0gKiB0byB0aGUgc3RhcnQgb2YgdGhlIGd1ZXN0IHBhZ2UgdGFibGVzIChpdCB3
YXMgb2Zmc2V0IGJ5IHR3byBwYWdlcykuCi0gKiBUaGlzIG9ubHkgbWFuaWZlc3RlZCBpdHNlbGYg
b24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBub3QgMzItb24tNjQgZG9tVQotICogb3IgNjQt
Yml0IGtlcm5lbHMgb2YgYW55IGNvbG91ci4gVGhlIHBhZ2UgdGFibGVzIGZvciBhIDMyLW9uLTY0
IGRvbTAgZ290Ci0gKiBhbGxvY2F0ZWQgaW4gdGhlIG9yZGVyOiAnZmlyc3QgTDEnLCdmaXJzdCBM
MicsICdmaXJzdCBMMycsIHNvIHRoZSBvZmZzZXQKLSAqIHRvIHRoZSBwYWdlIHRhYmxlIGJhc2Ug
aXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBpbml0aWFsIGRvbWFpbiBpZiBpdCBpcwotICogMzIt
Yml0IGFuZCBydW5zIHVuZGVyIGEgNjQtYml0IGh5cGVydmlzb3Igc2hvdWxkIF9OT1RfIHVzZSB0
d28gb2YgdGhlCi0gKiBwYWdlcyBwcmVjZWRpbmcgcHRfYmFzZSBhbmQgbWFyayB0aGVtIGFzIHJl
c2VydmVkL3VudXNlZC4KLSAqLwotI2lmZGVmIFhFTl9IQVZFX1BWX0dVRVNUX0VOVFJZCi1zdHJ1
Y3Qgc3RhcnRfaW5mbyB7Ci0gICAgLyogVEhFIEZPTExPV0lORyBBUkUgRklMTEVEIElOIEJPVEgg
T04gSU5JVElBTCBCT09UIEFORCBPTiBSRVNVTUUuICAgICovCi0gICAgY2hhciBtYWdpY1szMl07
ICAgICAgICAgICAgIC8qICJ4ZW4tPHZlcnNpb24+LTxwbGF0Zm9ybT4iLiAgICAgICAgICAgICov
Ci0gICAgVUxPTkdfUFRSIG5yX3BhZ2VzOyAgICAgLyogVG90YWwgcGFnZXMgYWxsb2NhdGVkIHRv
IHRoaXMgZG9tYWluLiAgKi8KLSAgICBVTE9OR19QVFIgc2hhcmVkX2luZm87ICAvKiBNQUNISU5F
IGFkZHJlc3Mgb2Ygc2hhcmVkIGluZm8gc3RydWN0LiAqLwotICAgIHVpbnQzMl90IGZsYWdzOyAg
ICAgICAgICAgICAvKiBTSUZfeHh4IGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIHhlbl9wZm5fdCBzdG9yZV9tZm47ICAgICAgICAvKiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9m
IHNoYXJlZCBwYWdlLiAgICAqLwotICAgIHVpbnQzMl90IHN0b3JlX2V2dGNobjsgICAgICAvKiBF
dmVudCBjaGFubmVsIGZvciBzdG9yZSBjb21tdW5pY2F0aW9uLiAqLwotICAgIHVuaW9uIHsKLSAg
ICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIHhlbl9wZm5fdCBtZm47ICAgICAgLyogTUFDSElO
RSBwYWdlIG51bWJlciBvZiBjb25zb2xlIHBhZ2UuICAgKi8KLSAgICAgICAgICAgIHVpbnQzMl90
ICBldnRjaG47ICAgLyogRXZlbnQgY2hhbm5lbCBmb3IgY29uc29sZSBwYWdlLiAgICAgICAgKi8K
LSAgICAgICAgfSBkb21VOwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdWludDMyX3Qg
aW5mb19vZmY7ICAvKiBPZmZzZXQgb2YgY29uc29sZV9pbmZvIHN0cnVjdC4gICAgICAgICAqLwot
ICAgICAgICAgICAgdWludDMyX3QgaW5mb19zaXplOyAvKiBTaXplIG9mIGNvbnNvbGVfaW5mbyBz
dHJ1Y3QgZnJvbSBzdGFydC4qLwotICAgICAgICB9IGRvbTA7Ci0gICAgfSBjb25zb2xlOwotICAg
IC8qIFRIRSBGT0xMT1dJTkcgQVJFIE9OTFkgRklMTEVEIElOIE9OIElOSVRJQUwgQk9PVCAoTk9U
IFJFU1VNRSkuICAgICAqLwotICAgIFVMT05HX1BUUiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwg
YWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAgICovCi0gICAgVUxPTkdfUFRSIG5yX3B0X2Zy
YW1lczsgLyogTnVtYmVyIG9mIGJvb3RzdHJhcCBwLnQuIGZyYW1lcy4gICAgICAgKi8KLSAgICBV
TE9OR19QVFIgbWZuX2xpc3Q7ICAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZS1mcmFtZSBs
aXN0LiAgICAqLwotICAgIFVMT05HX1BUUiBtb2Rfc3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVz
cyBvZiBwcmUtbG9hZGVkIG1vZHVsZSAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIChQRk4gb2YgcHJlLWxvYWRlZCBtb2R1bGUgaWYgICAgICAgICAgICovCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBTSUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxh
Z3MpLiAgICAgICovCi0gICAgVUxPTkdfUFRSIG1vZF9sZW47ICAgICAgLyogU2l6ZSAoYnl0ZXMp
IG9mIHByZS1sb2FkZWQgbW9kdWxlLiAgICAgKi8KLSNkZWZpbmUgTUFYX0dVRVNUX0NNRExJTkUg
MTAyNAotICAgIGludDhfdCBjbWRfbGluZVtNQVhfR1VFU1RfQ01ETElORV07Ci0gICAgLyogVGhl
IHBmbiByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBhZ2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJh
bWVzLiAgICovCi0gICAgVUxPTkdfUFRSIGZpcnN0X3AybV9wZm47LyogMXN0IHBmbiBmb3JtaW5n
IGluaXRpYWwgUC0+TSB0YWJsZS4gICAgKi8KLSAgICBVTE9OR19QVFIgbnJfcDJtX2ZyYW1lczsv
KiAjIG9mIHBmbnMgZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAqLwotfTsKLXR5cGVkZWYg
c3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190OwotCi0vKiBOZXcgY29uc29sZSB1bmlvbiBm
b3IgZG9tMCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDMuICovCi0jaWYgX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXyA8IDB4MDAwMzAyMDMKLSNkZWZpbmUgY29uc29sZV9tZm4gICAgY29uc29sZS5k
b21VLm1mbgotI2RlZmluZSBjb25zb2xlX2V2dGNobiBjb25zb2xlLmRvbVUuZXZ0Y2huCi0jZW5k
aWYKLSNlbmRpZiAvKiBYRU5fSEFWRV9QVl9HVUVTVF9FTlRSWSAqLwotCi0vKiBUaGVzZSBmbGFn
cyBhcmUgcGFzc2VkIGluIHRoZSAnZmxhZ3MnIGZpZWxkIG9mIHN0YXJ0X2luZm9fdC4gKi8KLSNk
ZWZpbmUgU0lGX1BSSVZJTEVHRUQgICAgKDE8PDApICAvKiBJcyB0aGUgZG9tYWluIHByaXZpbGVn
ZWQ/ICovCi0jZGVmaW5lIFNJRl9JTklURE9NQUlOICAgICgxPDwxKSAgLyogSXMgdGhpcyB0aGUg
aW5pdGlhbCBjb250cm9sIGRvbWFpbj8gKi8KLSNkZWZpbmUgU0lGX01VTFRJQk9PVF9NT0QgKDE8
PDIpICAvKiBJcyBtb2Rfc3RhcnQgYSBtdWx0aWJvb3QgbW9kdWxlPyAqLwotI2RlZmluZSBTSUZf
TU9EX1NUQVJUX1BGTiAoMTw8MykgIC8qIElzIG1vZF9zdGFydCBhIFBGTj8gKi8KLSNkZWZpbmUg
U0lGX1BNX01BU0sgICAgICAgKDB4RkY8PDgpIC8qIHJlc2VydmUgMSBieXRlIGZvciB4ZW4tcG0g
b3B0aW9ucyAqLwotCi0vKgotICogQSBtdWx0aWJvb3QgbW9kdWxlIGlzIGEgcGFja2FnZSBjb250
YWluaW5nIG1vZHVsZXMgdmVyeSBzaW1pbGFyIHRvIGEKLSAqIG11bHRpYm9vdCBtb2R1bGUgYXJy
YXkuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZToKLSAqIC0gdGhlIGFycmF5IG9mIG1vZHVsZSBk
ZXNjcmlwdG9ycyBpcyBieSBjb252ZW50aW9uIHNpbXBseSBhdCB0aGUgYmVnaW5uaW5nCi0gKiAg
IG9mIHRoZSBtdWx0aWJvb3QgbW9kdWxlLAotICogLSBhZGRyZXNzZXMgaW4gdGhlIG1vZHVsZSBk
ZXNjcmlwdG9ycyBhcmUgYmFzZWQgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAqICAgbXVsdGli
b290IG1vZHVsZSwKLSAqIC0gdGhlIG51bWJlciBvZiBtb2R1bGVzIGlzIGRldGVybWluZWQgYnkg
YSB0ZXJtaW5hdGlvbiBkZXNjcmlwdG9yIHRoYXQgaGFzCi0gKiAgIG1vZF9zdGFydCA9PSAwLgot
ICoKLSAqIFRoaXMgcGVybWl0cyB0byBib3RoIGJ1aWxkIGl0IHN0YXRpY2FsbHkgYW5kIHJlZmVy
ZW5jZSBpdCBpbiBhIGNvbmZpZ3VyYXRpb24KLSAqIGZpbGUsIGFuZCBsZXQgdGhlIFBWIGd1ZXN0
IGVhc2lseSByZWJhc2UgdGhlIGFkZHJlc3NlcyB0byB2aXJ0dWFsIGFkZHJlc3NlcwotICogYW5k
IGF0IHRoZSBzYW1lIHRpbWUgY291bnQgdGhlIG51bWJlciBvZiBtb2R1bGVzLgotICovCi1zdHJ1
Y3QgeGVuX211bHRpYm9vdF9tb2RfbGlzdAotewotICAgIC8qIEFkZHJlc3Mgb2YgZmlyc3QgYnl0
ZSBvZiB0aGUgbW9kdWxlICovCi0gICAgdWludDMyX3QgbW9kX3N0YXJ0OwotICAgIC8qIEFkZHJl
c3Mgb2YgbGFzdCBieXRlIG9mIHRoZSBtb2R1bGUgKGluY2x1c2l2ZSkgKi8KLSAgICB1aW50MzJf
dCBtb2RfZW5kOwotICAgIC8qIEFkZHJlc3Mgb2YgemVyby10ZXJtaW5hdGVkIGNvbW1hbmQgbGlu
ZSAqLwotICAgIHVpbnQzMl90IGNtZGxpbmU7Ci0gICAgLyogVW51c2VkLCBtdXN0IGJlIHplcm8g
Ki8KLSAgICB1aW50MzJfdCBwYWQ7Ci19OwotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9m
ZGF5X2RvbTBfY29uc29sZSBEb20wX2NvbnNvbGUKLSAqCi0gKiBUaGUgY29uc29sZSBzdHJ1Y3R1
cmUgaW4gc3RhcnRfaW5mby5jb25zb2xlLmRvbTAKLSAqCi0gKiBUaGlzIHN0cnVjdHVyZSBpbmNs
dWRlcyBhIHZhcmlldHkgb2YgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8KLSAqIGhhdmUgYSB3b3Jr
aW5nIFZHQS9WRVNBIGNvbnNvbGUuCi0gKi8KLXR5cGVkZWYgc3RydWN0IGRvbTBfdmdhX2NvbnNv
bGVfaW5mbyB7Ci0gICAgdWludDhfdCB2aWRlb190eXBlOyAvKiBET00wX1ZHQV9DT05TT0xFXz8/
PyAqLwotI2RlZmluZSBYRU5fVkdBVFlQRV9URVhUX01PREVfMyAweDAzCi0jZGVmaW5lIFhFTl9W
R0FUWVBFX1ZFU0FfTEZCICAgIDB4MjMKLSNkZWZpbmUgWEVOX1ZHQVRZUEVfRUZJX0xGQiAgICAg
MHg3MAotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogRm9u
dCBoZWlnaHQsIGluIHBpeGVscy4gKi8KLSAgICAgICAgICAgIHVpbnQxNl90IGZvbnRfaGVpZ2h0
OwotICAgICAgICAgICAgLyogQ3Vyc29yIGxvY2F0aW9uIChjb2x1bW4sIHJvdykuICovCi0gICAg
ICAgICAgICB1aW50MTZfdCBjdXJzb3JfeCwgY3Vyc29yX3k7Ci0gICAgICAgICAgICAvKiBOdW1i
ZXIgb2Ygcm93cyBhbmQgY29sdW1ucyAoZGltZW5zaW9ucyBpbiBjaGFyYWN0ZXJzKS4gKi8KLSAg
ICAgICAgICAgIHVpbnQxNl90IHJvd3MsIGNvbHVtbnM7Ci0gICAgICAgIH0gdGV4dF9tb2RlXzM7
Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8qIFdpZHRoIGFuZCBoZWlnaHQsIGlu
IHBpeGVscy4gKi8KLSAgICAgICAgICAgIHVpbnQxNl90IHdpZHRoLCBoZWlnaHQ7Ci0gICAgICAg
ICAgICAvKiBCeXRlcyBwZXIgc2NhbiBsaW5lLiAqLwotICAgICAgICAgICAgdWludDE2X3QgYnl0
ZXNfcGVyX2xpbmU7Ci0gICAgICAgICAgICAvKiBCaXRzIHBlciBwaXhlbC4gKi8KLSAgICAgICAg
ICAgIHVpbnQxNl90IGJpdHNfcGVyX3BpeGVsOwotICAgICAgICAgICAgLyogTEZCIHBoeXNpY2Fs
IGFkZHJlc3MsIGFuZCBzaXplIChpbiB1bml0cyBvZiA2NGtCKS4gKi8KLSAgICAgICAgICAgIHVp
bnQzMl90IGxmYl9iYXNlOwotICAgICAgICAgICAgdWludDMyX3QgbGZiX3NpemU7Ci0gICAgICAg
ICAgICAvKiBSR0IgbWFzayBvZmZzZXRzIGFuZCBzaXplcywgYXMgZGVmaW5lZCBieSBWQkUgMS4y
KyAqLwotICAgICAgICAgICAgdWludDhfdCAgcmVkX3BvcywgcmVkX3NpemU7Ci0gICAgICAgICAg
ICB1aW50OF90ICBncmVlbl9wb3MsIGdyZWVuX3NpemU7Ci0gICAgICAgICAgICB1aW50OF90ICBi
bHVlX3BvcywgYmx1ZV9zaXplOwotICAgICAgICAgICAgdWludDhfdCAgcnN2ZF9wb3MsIHJzdmRf
c2l6ZTsKLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDYKLSAgICAg
ICAgICAgIC8qIFZFU0EgY2FwYWJpbGl0aWVzIChvZmZzZXQgMHhhLCBWRVNBIGNvbW1hbmQgMHg0
ZjAwKS4gKi8KLSAgICAgICAgICAgIHVpbnQzMl90IGdibF9jYXBzOwotICAgICAgICAgICAgLyog
TW9kZSBhdHRyaWJ1dGVzIChvZmZzZXQgMHgwLCBWRVNBIGNvbW1hbmQgMHg0ZjAxKS4gKi8KLSAg
ICAgICAgICAgIHVpbnQxNl90IG1vZGVfYXR0cnM7Ci0jZW5kaWYKLSAgICAgICAgfSB2ZXNhX2xm
YjsKLSAgICB9IHU7Ci19IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190OwotI2RlZmluZSB4ZW5fdmdh
X2NvbnNvbGVfaW5mbyBkb20wX3ZnYV9jb25zb2xlX2luZm8KLSNkZWZpbmUgeGVuX3ZnYV9jb25z
b2xlX2luZm9fdCBkb20wX3ZnYV9jb25zb2xlX2luZm9fdAotCi10eXBlZGVmIHVpbnQ4X3QgeGVu
X2RvbWFpbl9oYW5kbGVfdFsxNl07Ci0KLS8qIFR1cm4gYSBwbGFpbiBudW1iZXIgaW50byBhIEMg
VUxPTkdfUFRSIGNvbnN0YW50LiAqLwotI2RlZmluZSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkgeCAj
IyBVTAotI2RlZmluZSBta191bnNpZ25lZF9sb25nKHgpIF9fbWtfdW5zaWduZWRfbG9uZyh4KQot
Ci1fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ4LCAgdWludDhfdCk7Ci1fX0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHVpbnQxNiwgdWludDE2X3QpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh1aW50MzIsIHVpbnQzMl90KTsKLV9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0
LCB1aW50NjRfdCk7Ci0KLSNlbHNlIC8qIF9fQVNTRU1CTFlfXyAqLwotCi0vKiBJbiBhc3NlbWJs
eSBjb2RlIHdlIGNhbm5vdCB1c2UgQyBudW1lcmljIGNvbnN0YW50IHN1ZmZpeGVzLiAqLwotI2Rl
ZmluZSBta191bnNpZ25lZF9sb25nKHgpIHgKLQotI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8K
LQotLyogRGVmYXVsdCBkZWZpbml0aW9ucyBmb3IgbWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0
bC4gKi8KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQot
I2lmbmRlZiB1aW50NjRfYWxpZ25lZF90Ci0jZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0
X3QKLSNlbmRpZgotI2lmbmRlZiBYRU5fR1VFU1RfSEFORExFXzY0Ci0jZGVmaW5lIFhFTl9HVUVT
VF9IQU5ETEVfNjQobmFtZSkgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQotI2VuZGlmCi0KLSNpZm5k
ZWYgX19BU1NFTUJMWV9fCi1zdHJ1Y3QgeGVuY3RsX2JpdG1hcCB7Ci0gICAgWEVOX0dVRVNUX0hB
TkRMRV82NCh1aW50OCkgYml0bWFwOwotICAgIHVpbnQzMl90IG5yX2JpdHM7Ci19OwotI2VuZGlm
Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykg
Ki8KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4veGVuL2Vycm5vLmggYi9pbmNsdWRl
L3hlbi94ZW4vZXJybm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTc4
NDY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4veGVuL2Vycm5vLmgKQEAgLTAsMCAr
MSwyMCBAQAorI2lmbmRlZiBfX1hFTl9FUlJOT19IX18KKyNkZWZpbmUgX19YRU5fRVJSTk9fSF9f
CisKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKwor
I2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIG5hbWUgPSBYRU5fIyNuYW1lLAorZW51bSB7
CisjaW5jbHVkZSA8cHVibGljL2Vycm5vLmg+Cit9OworCisjZWxzZSAvKiAhX19BU1NFTUJMWV9f
ICovCisKKyNkZWZpbmUgWEVOX0VSUk5PKG5hbWUsIHZhbHVlKSAuZXF1IG5hbWUsIFhFTl8jI25h
bWUKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAq
LworCisjZW5kaWYgLyogIF9fWEVOX0VSUk5PX0hfXyAqLwpkaWZmIC0tZ2l0IGEvdnMyMDEyL3hl
bnZpZi94ZW52aWYudmN4cHJvaiBiL3ZzMjAxMi94ZW52aWYveGVudmlmLnZjeHByb2oKaW5kZXgg
NDEyMDAxOC4uZWUxOGZjNiAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbnZpZi94ZW52aWYudmN4cHJv
agorKysgYi92czIwMTIveGVudmlmL3hlbnZpZi52Y3hwcm9qCkBAIC0yOCw3ICsyOCw3IEBACiAJ
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
IAogCiAJPFByb3BlcnR5R3JvdXA+Ci0JCTxJbmNsdWRlUGF0aD4uLlwuLlxpbmNsdWRlOyQoSW5j
bHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5c
Li5caW5jbHVkZVx4ZW47JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPgogCQk8UnVuQ29kZUFu
YWx5c2lzPnRydWU8L1J1bkNvZGVBbmFseXNpcz4KICAgICAgICAgPEVuYWJsZUluZjJjYXQ+ZmFs
c2U8L0VuYWJsZUluZjJjYXQ+CiAgICAgICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Q2xD
b21waWxlO1N0YW1wSW5mPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CmRpZmYgLS1naXQgYS92
czIwMTMveGVudmlmL3hlbnZpZi52Y3hwcm9qIGIvdnMyMDEzL3hlbnZpZi94ZW52aWYudmN4cHJv
agppbmRleCAwZTc3NGI3Li5lZjExN2U1IDEwMDY0NAotLS0gYS92czIwMTMveGVudmlmL3hlbnZp
Zi52Y3hwcm9qCisrKyBiL3ZzMjAxMy94ZW52aWYveGVudmlmLnZjeHByb2oKQEAgLTYxLDcgKzYx
LDYgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgogICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPFBy
b3BlcnR5R3JvdXA+Ci0gICAgPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7JChJbmNsdWRlUGF0
aCk8L0luY2x1ZGVQYXRoPgogICAgIDxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwvUnVuQ29kZUFuYWx5
c2lzPgogICAgIDxFbmFibGVJbmYyY2F0PmZhbHNlPC9FbmFibGVJbmYyY2F0PgogICAgIDxDdXN0
b21CdWlsZEJlZm9yZVRhcmdldHM+Q2xDb21waWxlO1N0YW1wSW5mPC9DdXN0b21CdWlsZEJlZm9y
ZVRhcmdldHM+CkBAIC03OSwxMiArNzgsMTYgQEAKICAgICAgIDxJbnB1dHM+Li5cLi5cc3JjXHhl
bnZpZi5pbmY7Li5cLi5caW5jbHVkZVx2ZXJzaW9uLmh4PC9JbnB1dHM+CiAgICAgPC9DdXN0b21C
dWlsZFN0ZXA+CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGlu
Y2x1ZGVceGVuOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19NT0RVTEVf
Xz0iWEVOVklGIjtQT09MX05YX09QVElOPTE7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJu
aW5nczwvV2FybmluZ0xldmVsPgogICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7
NDU0ODs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgogICAgICAgPE11bHRpUHJvY2Vzc29yQ29t
cGlsYXRpb24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj4KICAgICAgIDxFbmFibGVQ
UkVmYXN0PnRydWU8L0VuYWJsZVBSRWZhc3Q+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291
cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGlu
Y2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxJ
bWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9u
SGFuZGxlcnM+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKERES19MSUJfUEFUSCkv
bGliY250cHIubGliOyQoRERLX0xJQl9QQVRIKS9hdXhfa2xpYi5saWI7JChEREtfTElCX1BBVEgp
L2tzZWNkZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVu
Y2llcz4KLS0gCjIuMS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 12:44:12 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 12:44:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwHc-00085b-5M; Fri, 20 Mar 2015 12:44:12 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwHa-00083x-7i
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 12:44:11 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	23/4C-05830-9161C055; Fri, 20 Mar 2015 12:44:09 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1426855440!13912889!1
X-Originating-IP: [74.125.82.178]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13719 invoked from network); 20 Mar 2015 12:44:00 -0000
Received: from mail-we0-f178.google.com (HELO mail-we0-f178.google.com)
	(74.125.82.178)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 12:44:00 -0000
Received: by webcq43 with SMTP id cq43so81274167web.2
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 05:44:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=Mpx6VwcX+7pfW2kQcX19VEmWMotP4EGdOgoIollJeCI=;
	b=EDeqV0HIK3Wz8iZ9z4nroNOo/iejn5Hy8Oyywa9PIA0UWNuGtk73wfyr12BSwJfgs3
	j2yfEa1wfiGBgNsfFUtjkO1AoBgoPuUMkFDG+KAxyPuDWpzqqpo93CaShiQg7sjFbexC
	AWUPUjpEOOOVvCG4GmsgxYjzVNCrhWq1gpkcPwVIdLZLQ4wUm4+aMiQPWkhYCiL4LJRn
	87JcCvBbLymoP5k0vZn8OORK6YUVCy8h7T6SgzihkdwQErRLe/Hl17im5vbAvZ8LiH00
	0ceGOwNoWN0GPJX3r5goYVS95kTehReXvY2Oizdg5qgkOoDGFYHc4W9Erx/O7wq/WQUK
	+W/A==
X-Received: by 10.180.198.37 with SMTP id iz5mr4787008wic.95.1426855439937;
	Fri, 20 Mar 2015 05:43:59 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id ga8sm2891049wib.11.2015.03.20.05.43.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 05:43:59 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 12:43:54 +0000
Message-Id: <1426855436-9864-4-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
References: <1426855436-9864-1-git-send-email-paul.durrant@citrix.com>
MIME-Version: 1.0
Content-Length: 367165
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 3/5] Update headers to
	xen.git:f919dbc0583797d1c5c09da815518084ce77eb81
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

VGhpcyBicmluZ3MgdGhlIGhlYWRlcnMgaW50byBsaW5lIHdpdGggWEVOQlVTLiBUaGVyZSdzIG5v
IHJlbGlhbmNlIG9uIGEKcG9zdC00LjUuMCBjaGFuZ2UgaW4gWEVOVklGIGJ1dCB0aGUgcmUtc3Ry
dWN0dXJpbmcgaW4gdGhlIGhlYWRlcnMgZG9uZQphZnRlciA0LjUuMCBkb2VzIG1lYW4gY2hhbmdl
IGlzIG5lY2Vzc2FyeSBhbmQgd2UgbWF5IGFzIHdlbGwgdGFrZSB0aGUgcGFpbgpzb29uZXIgcmF0
aGVyIHRoYW4gbGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu
dEBjaXRyaXguY29tPgotLS0KIGdldF94ZW5faGVhZGVycy5weSAgICAgICAgICAgICAgICAgICAg
ICAgfCAgNTkgKy0KIGluY2x1ZGUveGVuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDcgKy0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfMzIuaCAgICAgICAgfCAxNzEgLS0t
LS0tCiBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmggICAgICAgIHwgMjAyIC0tLS0t
LS0KIGluY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oICAgICAgICAgICAgICAgfCAyNjQgLS0tLS0t
LS0tCiBpbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oICAgICAgICAgICAgICAgIHwgNjYyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL25ldGlmLmggICAgICAgICAgICAgICAg
ICAgfCAyMzYgLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL3JpbmcuaCAgICAgICAgICAgICAgICAg
ICAgfCAzMjMgLS0tLS0tLS0tLS0KIGluY2x1ZGUveGVuL2lvL3hlbmJ1cy5oICAgICAgICAgICAg
ICAgICAgfCAgODAgLS0tCiBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5o
IHwgMTcyICsrKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaCB8
IDIwMiArKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmggICAgICAgIHwg
MzA3ICsrKysrKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaCAgICAgICAgICAgICAg
IHwgIDkzICsrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oICAgICAgICAgfCA2
ODIgKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9uZXRpZi5o
ICAgICAgICAgICAgfCA0MjIgKysrKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9y
aW5nLmggICAgICAgICAgICAgfCAzMTIgKysrKysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9p
by94ZW5idXMuaCAgICAgICAgICAgfCAgODAgKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2Uu
aCAgICAgICAgICAgICAgIHwgMzMxICsrKysrKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVu
LWNvbXBhdC5oICAgICAgICAgIHwgIDQ0ICsrCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmggICAg
ICAgICAgICAgICAgIHwgOTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1
ZGUveGVuL3hlbi1jb21wYXQuaCAgICAgICAgICAgICAgICAgfCAgNDQgLS0KIGluY2x1ZGUveGVu
L3hlbi5oICAgICAgICAgICAgICAgICAgICAgICAgfCA4OTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBpbmNsdWRlL3hlbi94ZW4vZXJybm8uaCAgICAgICAgICAgICAgICAgIHwgIDIw
ICsKIHZzMjAxMi94ZW52aWYveGVudmlmLnZjeHByb2ogICAgICAgICAgICAgfCAgIDIgKy0KIHZz
MjAxMy94ZW52aWYveGVudmlmLnZjeHByb2ogICAgICAgICAgICAgfCAgIDUgKy0KIDI1IGZpbGVz
IGNoYW5nZWQsIDM2MTkgaW5zZXJ0aW9ucygrKSwgMjkwNCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBpbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUveGVuL2dyYW50X3RhYmxlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9pby9u
ZXRpZi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vaW8vcmluZy5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgaW5jbHVkZS94ZW4vaW8veGVuYnVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4uaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVk
ZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hl
bi9wdWJsaWMvaW8vbmV0aWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1Ymxp
Yy9pby9yaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvaW8veGVu
YnVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3hlbi94ZW4tY29tcGF0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi94
ZW4uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveGVuL3hlbi9lcnJuby5oCgpkaWZmIC0t
Z2l0IGEvZ2V0X3hlbl9oZWFkZXJzLnB5IGIvZ2V0X3hlbl9oZWFkZXJzLnB5CmluZGV4IDE2ODA3
YmIuLjFkMmEwYzggMTAwNzU1Ci0tLSBhL2dldF94ZW5faGVhZGVycy5weQorKysgYi9nZXRfeGVu
X2hlYWRlcnMucHkKQEAgLTUsMzQgKzUsMzkgQEAgaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCByZQogCi1kZWYgc2hlbGwoY29tbWFuZCk6Ci0gICAgcHJpbnQoY29tbWFu
ZCkKK2RlZiBzaGVsbChjb21tYW5kLCBkaXIgPSAnLicpOgorICAgIHByaW50KCJpbiAnJXMnIGV4
ZWN1dGUgJyVzJyIgJSAoZGlyLCAnICcuam9pbihjb21tYW5kKSkpCiAgICAgc3lzLnN0ZG91dC5m
bHVzaCgpCiAKLSAgICBwaXBlID0gb3MucG9wZW4oJyAnLmpvaW4oY29tbWFuZCksICdyJywgMSkK
KyAgICBzdWIgPSBzdWJwcm9jZXNzLlBvcGVuKCcgJy5qb2luKGNvbW1hbmQpLCBjd2Q9ZGlyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAotICAgIGZv
ciBsaW5lIGluIHBpcGU6Ci0gICAgICAgIHByaW50KGxpbmUucnN0cmlwKCkpCisgICAgZm9yIGxp
bmUgaW4gc3ViLnN0ZG91dDoKKyAgICAgICAgcHJpbnQobGluZS5kZWNvZGUoc3lzLmdldGRlZmF1
bHRlbmNvZGluZygpKS5yc3RyaXAoKSkKIAotICAgIHJldHVybiBwaXBlLmNsb3NlKCkKKyAgICBz
dWIud2FpdCgpCisKKyAgICByZXR1cm4gc3ViLnJldHVybmNvZGUKIAogZGVmIGdldF9yZXBvKHVy
bCwgd29ya2luZyk6CiAgICAgc2hlbGwoWydnaXQnLCAnY2xvbmUnLCAnLS1uby1jaGVja291dCcs
IHVybCwgd29ya2luZ10pCiAKIGRlZiBnZXRfYnJhbmNoKHRhZywgd29ya2luZyk6Ci0gICAgY3dk
ID0gb3MuZ2V0Y3dkKCkKLSAgICBvcy5jaGRpcih3b3JraW5nKQotICAgIHNoZWxsKFsnZ2l0Jywg
J2NoZWNrb3V0JywgJy1iJywgdGFnXSkKLSAgICBvcy5jaGRpcihjd2QpCisgICAgc2hlbGwoWydn
aXQnLCAnY2hlY2tvdXQnLCAnLWInLCAndG1wJywgdGFnXSwgd29ya2luZykKKworZGVmIHB1dF9i
cmFuY2god29ya2luZyk6CisgICAgc2hlbGwoWydnaXQnLCAnY2hlY2tvdXQnLCAnbWFzdGVyJ10s
IHdvcmtpbmcpCisgICAgc2hlbGwoWydnaXQnLCAnYnJhbmNoJywgJy1kJywgJ3RtcCddLCB3b3Jr
aW5nKQogCi1kZWYgY29weV9maWxlKHdvcmtpbmcsIHNyY19kaXIsIGRzdF9kaXIsIG5hbWUpOgor
ZGVmIGNvcHlfZmlsZSh3b3JraW5nLCBkaXIsIG5hbWUpOgogICAgIHRyeToKLSAgICAgICAgb3Mu
bWFrZWRpcnMoJ2luY2x1ZGVcXHhlblxcJXMnICUgZHN0X2RpcikKKyAgICAgICAgb3MubWFrZWRp
cnMoJ2luY2x1ZGVcXHhlblxcJXMnICUgZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAg
ICBOb25lCiAKLSAgICBzcmMgPSBvcGVuKCclc1xceGVuXFxpbmNsdWRlXFwlc1xcJXMnICUgKHdv
cmtpbmcsIHNyY19kaXIsIG5hbWUpLCAncicpCi0gICAgZHN0ID0gb3BlbignaW5jbHVkZVxceGVu
XFwlc1xcJXMnICUgKGRzdF9kaXIsIG5hbWUpLCAndycsIG5ld2xpbmU9J1xuJykKKyAgICBzcmMg
PSBvcGVuKCclc1xceGVuXFxpbmNsdWRlXFwlc1xcJXMnICUgKHdvcmtpbmcsIGRpciwgbmFtZSks
ICdyJykKKyAgICBkc3QgPSBvcGVuKCdpbmNsdWRlXFx4ZW5cXCVzXFwlcycgJSAoZGlyLCBuYW1l
KSwgJ3cnLCBuZXdsaW5lPSdcbicpCiAKICAgICBwcmludChuYW1lKQogCkBAIC01MywxNCArNTgs
MjQgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBnZXRfcmVwbygnZ2l0Oi8veGVu
Yml0cy54ZW4ub3JnL3hlbi5naXQnLCB3b3JraW5nKQogICAgIGdldF9icmFuY2godGFnLCB3b3Jr
aW5nKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd4ZW4uaCcpCisg
ICAgc2hlbGwoWydnaXQnLCAncm0nLCAnLXInLCAnLWYnLCAneGVuJ10sICdpbmNsdWRlJykKKwor
ICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ3hlbi5oJykKKyAgICBjb3B5X2ZpbGUo
d29ya2luZywgJ3B1YmxpYycsICd4ZW4tY29tcGF0LmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5n
LCAncHVibGljJywgJ3RyYWNlLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywg
J2dyYW50X3RhYmxlLmgnKQorICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJ2Vycm5v
LmgnKQorCisgICAgY29weV9maWxlKHdvcmtpbmcsICd4ZW4nLCAnZXJybm8uaCcpCisKKyAgICBj
b3B5X2ZpbGUod29ya2luZywgJ3B1YmxpY1xcYXJjaC14ODYnLCAneGVuLmgnKQorICAgIGNvcHlf
ZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4ZW4teDg2XzMyLmgnKQorICAgIGNv
cHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxhcmNoLXg4NicsICd4ZW4teDg2XzY0LmgnKQogCi0g
ICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICd4ZW4tY29tcGF0LmgnKQotICAg
IGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljJywgJy4nLCAndHJhY2UuaCcpCi0gICAgY29weV9m
aWxlKHdvcmtpbmcsICdwdWJsaWMnLCAnLicsICdncmFudF90YWJsZS5oJykKKyAgICBjb3B5X2Zp
bGUod29ya2luZywgJ3B1YmxpY1xcaW8nLCAncmluZy5oJykKKyAgICBjb3B5X2ZpbGUod29ya2lu
ZywgJ3B1YmxpY1xcaW8nLCAnbmV0aWYuaCcpCisgICAgY29weV9maWxlKHdvcmtpbmcsICdwdWJs
aWNcXGlvJywgJ3hlbmJ1cy5oJykKIAotICAgIGNvcHlfZmlsZSh3b3JraW5nLCAncHVibGljXFxh
cmNoLXg4NicsICdhcmNoLXg4NicsICd4ZW4uaCcpCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi14ODZfMzIuaCcpCi0gICAgY29weV9m
aWxlKHdvcmtpbmcsICdwdWJsaWNcXGFyY2gteDg2JywgJ2FyY2gteDg2JywgJ3hlbi14ODZfNjQu
aCcpCisgICAgcHV0X2JyYW5jaCh3b3JraW5nKQogCi0gICAgY29weV9maWxlKHdvcmtpbmcsICdw
dWJsaWNcXGlvJywgJ2lvJywgJ25ldGlmLmgnKQorICAgIHNoZWxsKFsnZ2l0JywgJ2FkZCcsICd4
ZW4nXSwgJ2luY2x1ZGUnKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4uaCBiL2luY2x1ZGUveGVu
LmgKaW5kZXggOTU3NTI4NS4uOWRjY2QwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW4uaAorKysg
Yi9pbmNsdWRlL3hlbi5oCkBAIC0zNyw4ICszNyw5IEBACiAjaW5jbHVkZSA8eGVuLXZlcnNpb24u
aD4KICNpbmNsdWRlIDx4ZW4tdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4td2FybmluZ3MuaD4KLSNp
bmNsdWRlIDx4ZW4vaW8vcmluZy5oPgotI2luY2x1ZGUgPHhlbi9pby9uZXRpZi5oPgotI2luY2x1
ZGUgPHhlbi9pby94ZW5idXMuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9pby9yaW5nLmg+CisjaW5j
bHVkZSA8cHVibGljL2lvL25ldGlmLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL3hlbmJ1cy5oPgog
CiAjZW5kaWYgIC8vIF9YRU5fSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVu
LXg4Nl8zMi5oIGIvaW5jbHVkZS94ZW4vYXJjaC14ODYveGVuLXg4Nl8zMi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMWVkZjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2Fy
Y2gteDg2L3hlbi14ODZfMzIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCi0gKiB4ZW4teDg2XzMyLmgKLSAqIAotICogR3Vlc3QgT1MgaW50
ZXJmYWNlIHRvIHg4NiAzMi1iaXQgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0g
KiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz
b25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu
Ci0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K
LSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U
WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9N
LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S
IE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChj
KSAyMDA0LTIwMDcsIEsgQSBGcmFzZXIKLSAqLwotCi0jaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNI
X1g4Nl9YRU5fWDg2XzMyX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4
Nl8zMl9IX18KLQotLyoKLSAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6Ci0gKiAgSW5wdXQ6ICAlZWJ4
LCAlZWN4LCAlZWR4LCAlZXNpLCAlZWRpLCAlZWJwIChhcmd1bWVudHMgMS02KQotICogIE91dHB1
dDogJWVheAotICogQWNjZXNzIGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0
IGxvYWRlciBvciB2aWEgYSBYZW4gTVNSKToKLSAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlw
ZXJjYWxsLW51bWJlciAqIDMyCi0gKiBDbG9iYmVyZWQ6IEFyZ3VtZW50IHJlZ2lzdGVycyAoZS5n
LiwgMi1hcmcgaHlwZXJjYWxsIGNsb2JiZXJzICVlYngsJWVjeCkKLSAqLwotCi0vKgotICogVGhl
c2UgZmxhdCBzZWdtZW50cyBhcmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkg
R0RULiBTaW5jZSB0aGVzZQotICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQs
IG1hbnkgT1NlcyB3aWxsIGJlIGFibGUgdG8gYXZvaWQKLSAqIGluc3RhbGxpbmcgdGhlaXIgb3du
IEdEVC4KLSAqLwotI2RlZmluZSBGTEFUX1JJTkcxX0NTIDB4ZTAxOSAgICAvKiBHRFQgaW5kZXgg
MjU5ICovCi0jZGVmaW5lIEZMQVRfUklORzFfRFMgMHhlMDIxICAgIC8qIEdEVCBpbmRleCAyNjAg
Ki8KLSNkZWZpbmUgRkxBVF9SSU5HMV9TUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwot
I2RlZmluZSBGTEFUX1JJTkczX0NTIDB4ZTAyYiAgICAvKiBHRFQgaW5kZXggMjYxICovCi0jZGVm
aW5lIEZMQVRfUklORzNfRFMgMHhlMDMzICAgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUg
RkxBVF9SSU5HM19TUyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZM
QVRfS0VSTkVMX0NTIEZMQVRfUklORzFfQ1MKLSNkZWZpbmUgRkxBVF9LRVJORUxfRFMgRkxBVF9S
SU5HMV9EUwotI2RlZmluZSBGTEFUX0tFUk5FTF9TUyBGTEFUX1JJTkcxX1NTCi0jZGVmaW5lIEZM
QVRfVVNFUl9DUyAgICBGTEFUX1JJTkczX0NTCi0jZGVmaW5lIEZMQVRfVVNFUl9EUyAgICBGTEFU
X1JJTkczX0RTCi0jZGVmaW5lIEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NTCi0KLSNkZWZp
bmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfUEFFICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9TVEFSVF9QQUUgICAgIDB4RjU4MDAwMDAKLSNkZWZpbmUgX19NQUNIMlBI
WVNfVklSVF9FTkRfUEFFICAgICAgIDB4RjY4MDAwMDAKLSNkZWZpbmUgSFlQRVJWSVNPUl9WSVJU
X1NUQVJUX1BBRSAgICAgIFwKLSAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJU
X1NUQVJUX1BBRSkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFICAgICAgIFwKLSAg
ICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfUEFFKQotI2RlZmluZSBN
QUNIMlBIWVNfVklSVF9FTkRfUEFFICAgICAgICAgXAotICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19N
QUNIMlBIWVNfVklSVF9FTkRfUEFFKQotCi0vKiBOb24tUEFFIGJvdW5kcyBhcmUgb2Jzb2xldGUu
ICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX05PTlBBRSAweEZDMDAwMDAwCi0j
ZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFFICAweEZDMDAwMDAwCi0jZGVmaW5l
IF9fTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAweEZDNDAwMDAwCi0jZGVmaW5lIEhZUEVS
VklTT1JfVklSVF9TVEFSVF9OT05QQUUgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVS
VklTT1JfVklSVF9TVEFSVF9OT05QQUUpCi0jZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX05P
TlBBRSAgICBcCi0gICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05P
TlBBRSkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKLSAgICBta191
bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSkKLQotI2RlZmluZSBfX0hZ
UEVSVklTT1JfVklSVF9TVEFSVCBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUKLSNkZWZpbmUg
X19NQUNIMlBIWVNfVklSVF9TVEFSVCAgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUKLSNkZWZp
bmUgX19NQUNIMlBIWVNfVklSVF9FTkQgICAgX19NQUNIMlBIWVNfVklSVF9FTkRfUEFFCi0KLSNp
Zm5kZWYgSFlQRVJWSVNPUl9WSVJUX1NUQVJUCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFS
VCBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQotI2VuZGlmCi0KLSNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIG1rX3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNf
VklSVF9TVEFSVCkKLSNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EICAgIG1rX3Vuc2lnbmVkX2xv
bmcoX19NQUNIMlBIWVNfVklSVF9FTkQpCi0jZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAo
KE1BQ0gyUEhZU19WSVJUX0VORC1NQUNIMlBIWVNfVklSVF9TVEFSVCk+PjIpCi0jaWZuZGVmIG1h
Y2hpbmVfdG9fcGh5c19tYXBwaW5nCi0jZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgo
VUxPTkdfUFRSICopTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZW5kaWYKLQotLyogMzItLzY0LWJp
dCBpbnZhcmlhYmlsaXR5IGZvciBjb250cm9sIGludGVyZmFjZXMgKGRvbWN0bC9zeXNjdGwpLiAq
LwotI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQotI3VuZGVm
IF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFCi0jZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKG5hbWUsIHR5cGUpICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgc3RydWN0
IHsgdHlwZSAqcDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
X19ndWVzdF9oYW5kbGVfICMjIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdHlwZWRlZiBzdHJ1Y3QgeyB1bmlvbiB7IHR5cGUgKnA7IHVpbnQ2NF9hbGlnbmVkX3Qg
cTsgfTsgfSAgXAotICAgICAgICBfX2d1ZXN0X2hhbmRsZV82NF8gIyMgbmFtZQotI3VuZGVmIHNl
dF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdwotI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXco
aG5kLCB2YWwpICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgaWYgKCBzaXplb2YoaG5kKSA9
PSA4ICkgKih1aW50NjRfdCAqKSYoaG5kKSA9IDA7ICAgXAotICAgICAgICAgKGhuZCkucCA9IHZh
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKCAw
ICkKLSNkZWZpbmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdCBfX2F0dHJpYnV0ZV9fKChhbGln
bmVkKDgpKSkKLSNkZWZpbmUgX19YRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIF9fZ3Vlc3RfaGFu
ZGxlXzY0XyAjIyBuYW1lCi0jZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19YRU5f
R1VFU1RfSEFORExFXzY0KG5hbWUpCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQot
c3RydWN0IGNwdV91c2VyX3JlZ3MgewotICAgIHVpbnQzMl90IGVieDsKLSAgICB1aW50MzJfdCBl
Y3g7Ci0gICAgdWludDMyX3QgZWR4OwotICAgIHVpbnQzMl90IGVzaTsKLSAgICB1aW50MzJfdCBl
ZGk7Ci0gICAgdWludDMyX3QgZWJwOwotICAgIHVpbnQzMl90IGVheDsKLSAgICB1aW50MTZfdCBl
cnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICovCi0gICAgdWludDE2X3QgZW50cnlfdmVjdG9yOyAg
LyogcHJpdmF0ZSAqLwotICAgIHVpbnQzMl90IGVpcDsKLSAgICB1aW50MTZfdCBjczsKLSAgICB1
aW50OF90ICBzYXZlZF91cGNhbGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMDsKLSAgICB1aW50
MzJfdCBlZmxhZ3M7ICAgICAgICAvKiBlZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICov
Ci0gICAgdWludDMyX3QgZXNwOwotICAgIHVpbnQxNl90IHNzLCBfcGFkMTsKLSAgICB1aW50MTZf
dCBlcywgX3BhZDI7Ci0gICAgdWludDE2X3QgZHMsIF9wYWQzOwotICAgIHVpbnQxNl90IGZzLCBf
cGFkNDsKLSAgICB1aW50MTZfdCBncywgX3BhZDU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3Vz
ZXJfcmVncyBjcHVfdXNlcl9yZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNl
cl9yZWdzX3QpOwotCi0vKgotICogUGFnZS1kaXJlY3RvcnkgYWRkcmVzc2VzIGFib3ZlIDRHQiBk
byBub3QgZml0IGludG8gYXJjaGl0ZWN0dXJhbCAlY3IzLgotICogV2hlbiBhY2Nlc3NpbmcgJWNy
Mywgb3IgZXF1aXZhbGVudCBmaWVsZCBpbiB2Y3B1X2d1ZXN0X2NvbnRleHQsIGd1ZXN0cwotICog
bXVzdCB1c2UgdGhlIGZvbGxvd2luZyBhY2Nlc3NvciBtYWNyb3MgdG8gcGFjay91bnBhY2sgdmFs
aWQgTUZOcy4KLSAqLwotI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoKHVuc2lnbmVkKShw
Zm4pIDw8IDEyKSB8ICgodW5zaWduZWQpKHBmbikgPj4gMjApKQotI2RlZmluZSB4ZW5fY3IzX3Rv
X3BmbihjcjMpICgoKHVuc2lnbmVkKShjcjMpID4+IDEyKSB8ICgodW5zaWduZWQpKGNyMykgPDwg
MjApKQotCi1zdHJ1Y3QgYXJjaF92Y3B1X2luZm8gewotICAgIFVMT05HX1BUUiBjcjI7Ci0gICAg
VUxPTkdfUFRSIHBhZFs1XTsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLwotfTsKLXR5
cGVkZWYgc3RydWN0IGFyY2hfdmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7Ci0KLXN0cnVjdCB4
ZW5fY2FsbGJhY2sgewotICAgIFVMT05HX1BUUiBjczsKLSAgICBVTE9OR19QVFIgZWlwOwotfTsK
LXR5cGVkZWYgc3RydWN0IHhlbl9jYWxsYmFjayB4ZW5fY2FsbGJhY2tfdDsKLQotI2VuZGlmIC8q
ICFfX0FTU0VNQkxZX18gKi8KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5f
WDg2XzMyX0hfXyAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICog
Yy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDog
NAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUveGVuL2FyY2gteDg2L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hl
bi14ODZfNjQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhNDMzYS4uMDAwMDAw
MAotLS0gYS9pbmNsdWRlL3hlbi9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogeGVuLXg4Nl82NC5o
Ci0gKiAKLSAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgNjQtYml0IFhlbi4KLSAqIAotICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZQotICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh
cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAq
Ci0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS
V0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF
LgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lm
bmRlZiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18KLSNkZWZpbmUgX19YRU5f
UFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fCi0KLS8qCi0gKiBIeXBlcmNhbGwgaW50ZXJm
YWNlOgotICogIElucHV0OiAgJXJkaSwgJXJzaSwgJXJkeCwgJXIxMCwgJXI4LCAlcjkgKGFyZ3Vt
ZW50cyAxLTYpCi0gKiAgT3V0cHV0OiAlcmF4Ci0gKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBw
YWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgotICogIGNhbGwg
aHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNhbGwtbnVtYmVyICogMzIKLSAqIENsb2JiZXJlZDogYXJn
dW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJXJkaSwlcnNp
KQotICovCi0KLS8qCi0gKiA2NC1iaXQgc2VnbWVudCBzZWxlY3RvcnMKLSAqIFRoZXNlIGZsYXQg
c2VnbWVudHMgYXJlIGluIHRoZSBYZW4tcHJpdmF0ZSBzZWN0aW9uIG9mIGV2ZXJ5IEdEVC4gU2lu
Y2UgdGhlc2UKLSAqIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlIGluaXRpYWwgR0RULCBtYW55IE9T
ZXMgd2lsbCBiZSBhYmxlIHRvIGF2b2lkCi0gKiBpbnN0YWxsaW5nIHRoZWlyIG93biBHRFQuCi0g
Ki8KLQotI2RlZmluZSBGTEFUX1JJTkczX0NTMzIgMHhlMDIzICAvKiBHRFQgaW5kZXggMjYwICov
Ci0jZGVmaW5lIEZMQVRfUklORzNfQ1M2NCAweGUwMzMgIC8qIEdEVCBpbmRleCAyNjEgKi8KLSNk
ZWZpbmUgRkxBVF9SSU5HM19EUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotI2RlZmlu
ZSBGTEFUX1JJTkczX0RTNjQgMHgwMDAwICAvKiBOVUxMIHNlbGVjdG9yICovCi0jZGVmaW5lIEZM
QVRfUklORzNfU1MzMiAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8KLSNkZWZpbmUgRkxBVF9S
SU5HM19TUzY0IDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLwotCi0jZGVmaW5lIEZMQVRfS0VS
TkVMX0RTNjQgRkxBVF9SSU5HM19EUzY0Ci0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTMzIgRkxBVF9S
SU5HM19EUzMyCi0jZGVmaW5lIEZMQVRfS0VSTkVMX0RTICAgRkxBVF9LRVJORUxfRFM2NAotI2Rl
ZmluZSBGTEFUX0tFUk5FTF9DUzY0IEZMQVRfUklORzNfQ1M2NAotI2RlZmluZSBGTEFUX0tFUk5F
TF9DUzMyIEZMQVRfUklORzNfQ1MzMgotI2RlZmluZSBGTEFUX0tFUk5FTF9DUyAgIEZMQVRfS0VS
TkVMX0NTNjQKLSNkZWZpbmUgRkxBVF9LRVJORUxfU1M2NCBGTEFUX1JJTkczX1NTNjQKLSNkZWZp
bmUgRkxBVF9LRVJORUxfU1MzMiBGTEFUX1JJTkczX1NTMzIKLSNkZWZpbmUgRkxBVF9LRVJORUxf
U1MgICBGTEFUX0tFUk5FTF9TUzY0Ci0KLSNkZWZpbmUgRkxBVF9VU0VSX0RTNjQgRkxBVF9SSU5H
M19EUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9EUzMyIEZMQVRfUklORzNfRFMzMgotI2RlZmluZSBG
TEFUX1VTRVJfRFMgICBGTEFUX1VTRVJfRFM2NAotI2RlZmluZSBGTEFUX1VTRVJfQ1M2NCBGTEFU
X1JJTkczX0NTNjQKLSNkZWZpbmUgRkxBVF9VU0VSX0NTMzIgRkxBVF9SSU5HM19DUzMyCi0jZGVm
aW5lIEZMQVRfVVNFUl9DUyAgIEZMQVRfVVNFUl9DUzY0Ci0jZGVmaW5lIEZMQVRfVVNFUl9TUzY0
IEZMQVRfUklORzNfU1M2NAotI2RlZmluZSBGTEFUX1VTRVJfU1MzMiBGTEFUX1JJTkczX1NTMzIK
LSNkZWZpbmUgRkxBVF9VU0VSX1NTICAgRkxBVF9VU0VSX1NTNjQKLQotI2RlZmluZSBfX0hZUEVS
VklTT1JfVklSVF9TVEFSVCAweEZGRkY4MDAwMDAwMDAwMDAKLSNkZWZpbmUgX19IWVBFUlZJU09S
X1ZJUlRfRU5EICAgMHhGRkZGODgwMDAwMDAwMDAwCi0jZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRf
U1RBUlQgIDB4RkZGRjgwMDAwMDAwMDAwMAotI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORCAg
ICAweEZGRkY4MDQwMDAwMDAwMDAKLQotI2lmbmRlZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKLSNk
ZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlQpCi0jZGVmaW5lIEhZUEVSVklTT1JfVklSVF9FTkQgICBta191bnNpZ25lZF9s
b25nKF9fSFlQRVJWSVNPUl9WSVJUX0VORCkKLSNlbmRpZgotCi0jZGVmaW5lIE1BQ0gyUEhZU19W
SVJUX1NUQVJUICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQpCi0jZGVm
aW5lIE1BQ0gyUEhZU19WSVJUX0VORCAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJ
UlRfRU5EKQotI2RlZmluZSBNQUNIMlBIWVNfTlJfRU5UUklFUyAgKChNQUNIMlBIWVNfVklSVF9F
TkQtTUFDSDJQSFlTX1ZJUlRfU1RBUlQpPj4zKQotI2lmbmRlZiBtYWNoaW5lX3RvX3BoeXNfbWFw
cGluZwotI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUiAqKUhZUEVS
VklTT1JfVklSVF9TVEFSVCkKLSNlbmRpZgotCi0vKgotICogaW50IEhZUEVSVklTT1Jfc2V0X3Nl
Z21lbnRfYmFzZSh1bnNpZ25lZCBpbnQgd2hpY2gsIFVMT05HX1BUUiBiYXNlKQotICogIEB3aGlj
aCA9PSBTRUdCQVNFXyogIDsgIEBiYXNlID09IDY0LWJpdCBiYXNlIGFkZHJlc3MKLSAqIFJldHVy
bnMgMCBvbiBzdWNjZXNzLgotICovCi0jZGVmaW5lIFNFR0JBU0VfRlMgICAgICAgICAgMAotI2Rl
ZmluZSBTRUdCQVNFX0dTX1VTRVIgICAgIDEKLSNkZWZpbmUgU0VHQkFTRV9HU19LRVJORUwgICAy
Ci0jZGVmaW5lIFNFR0JBU0VfR1NfVVNFUl9TRUwgMyAvKiBTZXQgdXNlciAlZ3Mgc3BlY2lmaWVk
IGluIGJhc2VbMTU6MF0gKi8KLQotLyoKLSAqIGludCBIWVBFUlZJU09SX2lyZXQodm9pZCkKLSAq
IEFsbCBhcmd1bWVudHMgYXJlIG9uIHRoZSBrZXJuZWwgc3RhY2ssIGluIHRoZSBmb2xsb3dpbmcg
Zm9ybWF0LgotICogTmV2ZXIgcmV0dXJucyBpZiBzdWNjZXNzZnVsLiBDdXJyZW50IGtlcm5lbCBj
b250ZXh0IGlzIGxvc3QuCi0gKiBUaGUgc2F2ZWQgQ1MgaXMgbWFwcGVkIGFzIGZvbGxvd3M6Ci0g
KiAgIFJJTkcwIC0+IFJJTkczIGtlcm5lbCBtb2RlLgotICogICBSSU5HMSAtPiBSSU5HMyBrZXJu
ZWwgbW9kZS4KLSAqICAgUklORzIgLT4gUklORzMga2VybmVsIG1vZGUuCi0gKiAgIFJJTkczIC0+
IFJJTkczIHVzZXIgbW9kZS4KLSAqIEhvd2V2ZXIgUklORzAgaW5kaWNhdGVzIHRoYXQgdGhlIGd1
ZXN0IGtlcm5lbCBzaG91bGQgcmV0dXJuIHRvIGl0ZXNlbGYKLSAqIGRpcmVjdGx5IHdpdGgKLSAq
ICAgICAgb3JiICAgJDMsMSo4KCVyc3ApCi0gKiAgICAgIGlyZXRxCi0gKiBJZiBmbGFncyBjb250
YWlucyBWR0NGX2luX3N5c2NhbGw6Ci0gKiAgIFJlc3RvcmUgUkFYLCBSSVAsIFJGTEFHUywgUlNQ
LgotICogICBEaXNjYXJkIFIxMSwgUkNYLCBDUywgU1MuCi0gKiBPdGhlcndpc2U6Ci0gKiAgIFJl
c3RvcmUgUkFYLCBSMTEsIFJDWCwgQ1M6UklQLCBSRkxBR1MsIFNTOlJTUC4KLSAqIEFsbCBvdGhl
ciByZWdpc3RlcnMgYXJlIHNhdmVkIG9uIGh5cGVyY2FsbCBlbnRyeSBhbmQgcmVzdG9yZWQgdG8g
dXNlci4KLSAqLwotLyogR3Vlc3QgZXhpdGVkIGluIFNZU0NBTEwgY29udGV4dD8gUmV0dXJuIHRv
IGd1ZXN0IHdpdGggU1lTUkVUPyAqLwotI2RlZmluZSBfVkdDRl9pbl9zeXNjYWxsIDgKLSNkZWZp
bmUgVkdDRl9pbl9zeXNjYWxsICAoMTw8X1ZHQ0ZfaW5fc3lzY2FsbCkKLSNkZWZpbmUgVkdDRl9J
Tl9TWVNDQUxMICBWR0NGX2luX3N5c2NhbGwKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQotc3Ry
dWN0IGlyZXRfY29udGV4dCB7Ci0gICAgLyogVG9wIG9mIHN0YWNrICglcnNwIGF0IHBvaW50IG9m
IGh5cGVyY2FsbCkuICovCi0gICAgdWludDY0X3QgcmF4LCByMTEsIHJjeCwgZmxhZ3MsIHJpcCwg
Y3MsIHJmbGFncywgcnNwLCBzczsKLSAgICAvKiBCb3R0b20gb2YgaXJldCBzdGFjayBmcmFtZS4g
Ki8KLX07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJ
X18pCi0vKiBBbm9ueW1vdXMgdW5pb24gaW5jbHVkZXMgYm90aCAzMi0gYW5kIDY0LWJpdCBuYW1l
cyAoZS5nLiwgZWF4L3JheCkuICovCi0jZGVmaW5lIF9fREVDTF9SRUcobmFtZSkgdW5pb24geyBc
Ci0gICAgdWludDY0X3QgciAjIyBuYW1lLCBlICMjIG5hbWU7IFwKLSAgICB1aW50MzJfdCBfZSAj
IyBuYW1lOyBcCi19Ci0jZWxzZQotLyogTm9uLWdjYyBzb3VyY2VzIG11c3QgYWx3YXlzIHVzZSB0
aGUgcHJvcGVyIDY0LWJpdCBuYW1lIChlLmcuLCByYXgpLiAqLwotI2RlZmluZSBfX0RFQ0xfUkVH
KG5hbWUpIHVpbnQ2NF90IHIgIyMgbmFtZQotI2VuZGlmCi0KLXN0cnVjdCBjcHVfdXNlcl9yZWdz
IHsKLSAgICB1aW50NjRfdCByMTU7Ci0gICAgdWludDY0X3QgcjE0OwotICAgIHVpbnQ2NF90IHIx
MzsKLSAgICB1aW50NjRfdCByMTI7Ci0gICAgX19ERUNMX1JFRyhicCk7Ci0gICAgX19ERUNMX1JF
RyhieCk7Ci0gICAgdWludDY0X3QgcjExOwotICAgIHVpbnQ2NF90IHIxMDsKLSAgICB1aW50NjRf
dCByOTsKLSAgICB1aW50NjRfdCByODsKLSAgICBfX0RFQ0xfUkVHKGF4KTsKLSAgICBfX0RFQ0xf
UkVHKGN4KTsKLSAgICBfX0RFQ0xfUkVHKGR4KTsKLSAgICBfX0RFQ0xfUkVHKHNpKTsKLSAgICBf
X0RFQ0xfUkVHKGRpKTsKLSAgICB1aW50MzJfdCBlcnJvcl9jb2RlOyAgICAvKiBwcml2YXRlICov
Ci0gICAgdWludDMyX3QgZW50cnlfdmVjdG9yOyAgLyogcHJpdmF0ZSAqLwotICAgIF9fREVDTF9S
RUcoaXApOwotICAgIHVpbnQxNl90IGNzLCBfcGFkMFsxXTsKLSAgICB1aW50OF90ICBzYXZlZF91
cGNhbGxfbWFzazsKLSAgICB1aW50OF90ICBfcGFkMVszXTsKLSAgICBfX0RFQ0xfUkVHKGZsYWdz
KTsgICAgICAvKiByZmxhZ3MuSUYgPT0gIXNhdmVkX3VwY2FsbF9tYXNrICovCi0gICAgX19ERUNM
X1JFRyhzcCk7Ci0gICAgdWludDE2X3Qgc3MsIF9wYWQyWzNdOwotICAgIHVpbnQxNl90IGVzLCBf
cGFkM1szXTsKLSAgICB1aW50MTZfdCBkcywgX3BhZDRbM107Ci0gICAgdWludDE2X3QgZnMsIF9w
YWQ1WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZnNfYmFzZS4gICAg
ICovCi0gICAgdWludDE2X3QgZ3MsIF9wYWQ2WzNdOyAvKiBOb24temVybyA9PiB0YWtlcyBwcmVj
ZWRlbmNlIG92ZXIgZ3NfYmFzZV91c3IuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJf
cmVncyBjcHVfdXNlcl9yZWdzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjcHVfdXNlcl9y
ZWdzX3QpOwotCi0jdW5kZWYgX19ERUNMX1JFRwotCi0jZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBm
bikgKChVTE9OR19QVFIpKHBmbikgPDwgMTIpCi0jZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykg
KChVTE9OR19QVFIpKGNyMykgPj4gMTIpCi0KLXN0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7Ci0gICAg
VUxPTkdfUFRSIGNyMjsKLSAgICBVTE9OR19QVFIgcGFkOyAvKiBzaXplb2YodmNwdV9pbmZvX3Qp
ID09IDY0ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2lu
Zm9fdDsKLQotdHlwZWRlZiBVTE9OR19QVFIgeGVuX2NhbGxiYWNrX3Q7Ci0KLSNlbmRpZiAvKiAh
X19BU1NFTUJMWV9fICovCi0KLSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4
Nl82NF9IX18gKi8KLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMt
ZmlsZS1zdHlsZTogIkJTRCIKLSAqIGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQK
LSAqIGluZGVudC10YWJzLW1vZGU6IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNs
dWRlL3hlbi9hcmNoLXg4Ni94ZW4uaCBiL2luY2x1ZGUveGVuL2FyY2gteDg2L3hlbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2MyMmZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUv
eGVuL2FyY2gteDg2L3hlbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIGFyY2gteDg2L3hlbi5oCi0gKiAKLSAqIEd1ZXN0IE9TIGlu
dGVyZmFjZSB0byB4ODYgWGVuLgotICogCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
LSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0g
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
Ci0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0
LTIwMDYsIEsgQSBGcmFzZXIKLSAqLwotCi0jaW5jbHVkZSAiLi4veGVuLmgiCi0KLSNpZm5kZWYg
X19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hf
WDg2X1hFTl9IX18KLQotLyogU3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4g
MHgwMDAzMDIwMS4gKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAy
MDEKLSNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAg
IHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQotI2Vs
c2UKLSNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAotICAg
IHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lCi0jZW5kaWYKLQotLyoKLSAq
IFhFTl9HVUVTVF9IQU5ETEUgcmVwcmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2Vk
IGFzIGEgZmllbGQKLSAqIGluIGEgc3RydWN0IGluIG1lbW9yeS4KLSAqIFhFTl9HVUVTVF9IQU5E
TEVfUEFSQU0gcmVwcmVzZW50IGEgZ3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KLSAq
IGh5cGVyY2FsbCBhcmd1bWVudC4KLSAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9H
VUVTVF9IQU5ETEUgYXJlIHRoZSBzYW1lIG9uIFg4NiBidXQKLSAqIHRoZXkgbWlnaHQgbm90IGJl
IG9uIG90aGVyIGFyY2hpdGVjdHVyZXMuCi0gKi8KLSNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShuYW1lLCB0eXBlKSBcCi0gICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFt
ZSwgdHlwZSk7ICAgXAotICAgIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFt
ZSwgY29uc3QgdHlwZSkKLSNkZWZpbmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBf
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIG5hbWUpCi0jZGVmaW5lIF9fWEVOX0dVRVNU
X0hBTkRMRShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKLSNkZWZpbmUgWEVO
X0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKLSNk
ZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5h
bWUpCi0jZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhu
ZCkucCA9IHZhbDsgfSB3aGlsZSAoMCkKLSNpZmRlZiBfX1hFTl9UT09MU19fCi0jZGVmaW5lIGdl
dF94ZW5fZ3Vlc3RfaGFuZGxlKHZhbCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxl
ICgwKQotI2VuZGlmCi0jZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRf
eGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpCi0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQot
I2luY2x1ZGUgInhlbi14ODZfMzIuaCIKLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLSNpbmNs
dWRlICJ4ZW4teDg2XzY0LmgiCi0jZW5kaWYKLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLXR5cGVk
ZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsKLSNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgotI2VuZGlm
Ci0KLSNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkgMQotCi0jZGVmaW5lIFhFTl9IQVZF
X1BWX1VQQ0FMTF9NQVNLIDEKLQotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21l
bnQgRGVzY3JpcHRvciBUYWJsZXMKLSAqLwotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAq
IGAgSFlQRVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQg
aW50IGVudHJpZXMpOwotICogYAotICovCi0vKgotICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMg
YXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKLSAqIHN0
YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVk
IHNlbGVjdG9yIHZhbHVlcwotICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVl
cyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBHRFQsCi0gKiBzbyBYZW4gcGxhY2Vz
IGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KLSAqCi0g
KiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJW
SVNPUl9tbXVleHRfb3AKLSAqLwotI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQK
LSNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFH
RSAqIDQwOTYpCi0jZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJW
RURfR0RUX0JZVEUgLyA4KQotCi0KLS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZ
UEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7Ci0gKiBgCi0gKiBg
IEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8K
LSAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3
cml0YWJsZS4KLSAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0
aGUgc2FtZSBmb3JtYXQgYXMgYQotICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBl
bnRyeS4KLSAqLwotCi0vKiBNYXhpbXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5
IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovCi0jZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVT
IDMyCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9u
Z190OwotI2RlZmluZSBQUklfeGVuX3Vsb25nICJseCIKLQotLyoKLSAqIGAgZW51bSBuZWdfZXJy
bm92YWwKLSAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19Q
VFIgZXNwKTsKLSAqIGAKLSAqIFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9y
IHRoZSBjdXJyZW50IHZjcHUuCi0gKi8KLQotLyoKLSAqIGAgZW51bSBuZWdfZXJybm92YWwKLSAq
IGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBz
W10pOwotICogYAotICovCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJ
U09SX3NldF90cmFwX3RhYmxlKCkuCi0gKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50
aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAuCi0gKiBUaGUgcHJpdmlsZWdlIGxl
dmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJl
Ci0gKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFp
bGFibGUsIHdlIGFsbG9jYXRlCi0gKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6Ci0gKiAg
TGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCi0gKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBl
bnRlcgotICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50ZXIKLSAqICBMZXZlbCA9PSAzOiBF
dmVyeW9uZSBtYXkgZW50ZXIKLSAqLwotI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90
aSktPmZsYWdzICYgMykKLSNkZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFn
cyAmIDQpCi0jZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9k
cGwpKQotI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEo
X2lmKSk8PDIpKQotc3RydWN0IHRyYXBfaW5mbyB7Ci0gICAgdWludDhfdCAgICAgICB2ZWN0b3I7
ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVh
ciBldmVudCBlbmFibGU/ICAqLwotICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBz
ZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgVUxPTkdfUFRS
IGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKLURFRklORV9Y
RU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KTsKLQotdHlwZWRlZiB1aW50NjRfdCB0c2NfdGlt
ZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLwotCi0vKgotICogVGhlIGZvbGxvd2luZyBp
cyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVk
IAotICogaW4gYnkgRlhTQVZFIGlmIHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNl
IEZTQVZFIGlzIHVzZWQuCi0gKi8KLXN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewotICAgIC8q
IEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVkIGZvciBGWFNB
VkUvRlhSU1RPUi4gKi8KLSAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVfY3R4dDsgICAg
ICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLwotI2RlZmluZSBWR0NGX0kzODdf
VkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCi0jZGVmaW5lIFZHQ0ZfSU5fS0VSTkVMICAgICAg
ICAgICAgICAgICAoMTw8MikKLSNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAgICAgICAgICAg
IDAKLSNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxfVkdDRl9pMzg3
X3ZhbGlkKQotI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAgMgotI2RlZmlu
ZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tlcm5lbCkKLSNk
ZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKLSNkZWZpbmUgVkdDRl9mYWls
c2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMp
Ci0jZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0Ci0jZGVmaW5lIFZHQ0Zf
c3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVu
dHMpCi0jZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1Ci0jZGVmaW5lIFZH
Q0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQotICAgIFVMT05H
X1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAgICAgICAgICAg
ICAgICAgKi8KLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAgICAgICAgLyog
VXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLwotICAgIHN0cnVjdCB0cmFwX2luZm8gdHJh
cF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAgICAgICovCi0g
ICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChsaW5lYXIgYWRk
cmVzcywgIyBlbnRzKSAqLwotICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwgZ2R0X2VudHM7
IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KLSAgICBVTE9OR19QVFIga2VybmVs
X3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1AxKSAgICovCi0g
ICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4gY3RybHJlZ1sx
XS4gKi8KLSAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAvKiBDUjAtQ1I3
IChjb250cm9sIHJlZ2lzdGVycykgICovCi0gICAgVUxPTkdfUFRSIGRlYnVncmVnWzhdOyAgICAg
ICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLwotI2lmZGVmIF9faTM4
Nl9fCi0gICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyogQ1M6RUlQIG9m
IGV2ZW50IGNhbGxiYWNrICAgICAqLwotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7
Ci0gICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6RUlQIG9mIGZh
aWxzYWZlIGNhbGxiYWNrICAqLwotICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxsYmFja19laXA7
Ci0jZWxzZQotICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7Ci0gICAgVUxPTkdfUFRS
IGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKLSNpZmRlZiBfX1hFTl9fCi0gICAgdW5pb24gewotICAg
ICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7Ci0gICAgICAgIHN0cnVjdCB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8qIGNvbXBhdCBD
UyBvZiBldmVudCBjYiAgICAgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBmYWlsc2FmZV9j
YWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLwotICAgICAgICB9Owot
ICAgIH07Ci0jZWxzZQotICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsKLSNlbmRp
ZgotI2VuZGlmCi0gICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAgICAgLyogVk1B
U1NUX1RZUEVfKiBiaXRtYXAgKi8KLSNpZmRlZiBfX3g4Nl82NF9fCi0gICAgLyogU2VnbWVudCBi
YXNlIGFkZHJlc3Nlcy4gKi8KLSAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7Ci0gICAgdWludDY0
X3QgICAgICBnc19iYXNlX2tlcm5lbDsKLSAgICB1aW50NjRfdCAgICAgIGdzX2Jhc2VfdXNlcjsK
LSNlbmRpZgotfTsKLXR5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2Y3B1X2d1ZXN0
X2NvbnRleHRfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4dF90
KTsKLQotc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gewotICAgIFVMT05HX1BUUiBtYXhfcGZuOyAg
ICAgICAgICAgICAgICAgIC8qIG1heCBwZm4gdGhhdCBhcHBlYXJzIGluIHRhYmxlICovCi0gICAg
LyogRnJhbWUgY29udGFpbmluZyBsaXN0IG9mIG1mbnMgY29udGFpbmluZyBsaXN0IG9mIG1mbnMg
Y29udGFpbmluZyBwMm0uICovCi0gICAgeGVuX3Bmbl90ICAgICBwZm5fdG9fbWZuX2ZyYW1lX2xp
c3RfbGlzdDsKLSAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsKLSAgICB1aW50NjRfdCBwYWRbMzJd
OwotfTsKLXR5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8gYXJjaF9zaGFyZWRfaW5mb190
OwotCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJu
b3ZhbAotICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOwotICogYAotICog
U2V0cyAoaWYgc2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgotICovCi0KLS8q
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1Jfc2V0X2RlYnVncmVnKGlu
dCByZWdubywgVUxPTkdfUFRSIHZhbHVlKTsKLSAqCi0gKiBgIFVMT05HX1BUUgotICogYCBIWVBF
UlZJU09SX2dldF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOwotICogRm9yIDA8PXJlZzw9NywgcmV0dXJu
cyB0aGUgZGVidWcgcmVnaXN0ZXIgdmFsdWUuCi0gKiBGb3Igb3RoZXIgdmFsdWVzIG9mIHJlZywg
cmV0dXJucyAoKFVMT05HX1BUUiktRUlOVkFMKS4KLSAqIChVbmZvcnR1bmF0ZWx5LCB0aGlzIGlu
dGVyZmFjZSBpcyBkZWZlY3RpdmUuKQotICovCi0KLS8qCi0gKiBQcmVmaXggZm9yY2VzIGVtdWxh
dGlvbiBvZiBzb21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCi0gKiBDdXJyZW50bHkgb25s
eSBDUFVJRC4KLSAqLwotI2lmZGVmIF9fQVNTRU1CTFlfXwotI2RlZmluZSBYRU5fRU1VTEFURV9Q
UkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKLSNkZWZpbmUgWEVOX0NQVUlE
ICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAotI2Vsc2UKLSNkZWZpbmUgWEVOX0VN
VUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAiCi0jZGVmaW5l
IFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgotI2VuZGlmCi0K
LSNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLwotCi0vKgotICogTG9j
YWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1i
YXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmls
Ci0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi9p
bmNsdWRlL3hlbi9ncmFudF90YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
YmZmMzc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogZ3JhbnRf
dGFibGUuaAotICoKLSAqIEludGVyZmFjZSBmb3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8g
cGFnZSBmcmFtZXMsIGFuZCByZWNlaXZpbmcKLSAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4K
LSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQot
I2lmbmRlZiBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCi0jZGVmaW5lIF9fWEVOX1BVQkxJ
Q19HUkFOVF9UQUJMRV9IX18KLQotI2luY2x1ZGUgInhlbi5oIgotCi0vKgotICogYGluY29udGVu
dHMgMTUwIGdudHRhYiBHcmFudCBUYWJsZXMKLSAqCi0gKiBYZW4ncyBncmFudCB0YWJsZXMgcHJv
dmlkZSBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIG1lbW9yeSBzaGFyaW5nCi0gKiBiZXR3ZWVuIGRv
bWFpbnMuIFRoaXMgc2hhcmVkIG1lbW9yeSBpbnRlcmZhY2UgdW5kZXJwaW5zIHRoZSBzcGxpdAot
ICogZGV2aWNlIGRyaXZlcnMgZm9yIGJsb2NrIGFuZCBuZXR3b3JrIElPLgotICoKLSAqIEVhY2gg
ZG9tYWluIGhhcyBpdHMgb3duIGdyYW50IHRhYmxlLiBUaGlzIGlzIGEgZGF0YSBzdHJ1Y3R1cmUg
dGhhdAotICogaXMgc2hhcmVkIHdpdGggWGVuOyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0ZWxs
IFhlbiB3aGF0IGtpbmQgb2YKLSAqIHBlcm1pc3Npb25zIG90aGVyIGRvbWFpbnMgaGF2ZSBvbiBp
dHMgcGFnZXMuIEVudHJpZXMgaW4gdGhlIGdyYW50Ci0gKiB0YWJsZSBhcmUgaWRlbnRpZmllZCBi
eSBncmFudCByZWZlcmVuY2VzLiBBIGdyYW50IHJlZmVyZW5jZSBpcyBhbgotICogaW50ZWdlciwg
d2hpY2ggaW5kZXhlcyBpbnRvIHRoZSBncmFudCB0YWJsZS4gSXQgYWN0cyBhcyBhCi0gKiBjYXBh
YmlsaXR5IHdoaWNoIHRoZSBncmFudGVlIGNhbiB1c2UgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9u
IHRoZQotICogZ3JhbnRlcuKAmXMgbWVtb3J5LgotICoKLSAqIFRoaXMgY2FwYWJpbGl0eS1iYXNl
ZCBzeXN0ZW0gYWxsb3dzIHNoYXJlZC1tZW1vcnkgY29tbXVuaWNhdGlvbnMKLSAqIGJldHdlZW4g
dW5wcml2aWxlZ2VkIGRvbWFpbnMuIEEgZ3JhbnQgcmVmZXJlbmNlIGFsc28gZW5jYXBzdWxhdGVz
Ci0gKiB0aGUgZGV0YWlscyBvZiBhIHNoYXJlZCBwYWdlLCByZW1vdmluZyB0aGUgbmVlZCBmb3Ig
YSBkb21haW4gdG8KLSAqIGtub3cgdGhlIHJlYWwgbWFjaGluZSBhZGRyZXNzIG9mIGEgcGFnZSBp
dCBpcyBzaGFyaW5nLiBUaGlzIG1ha2VzCi0gKiBpdCBwb3NzaWJsZSB0byBzaGFyZSBtZW1vcnkg
Y29ycmVjdGx5IHdpdGggZG9tYWlucyBydW5uaW5nIGluCi0gKiBmdWxseSB2aXJ0dWFsaXNlZCBt
ZW1vcnkuCi0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBH
UkFOVCBUQUJMRSBSRVBSRVNFTlRBVElPTgotICovCi0KLS8qIFNvbWUgcm91Z2ggZ3VpZGVsaW5l
cyBvbiBhY2Nlc3NpbmcgYW5kIHVwZGF0aW5nIGdyYW50LXRhYmxlIGVudHJpZXMKLSAqIGluIGEg
Y29uY3VycmVuY3ktc2FmZSBtYW5uZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBMaW51eCBjb250
YWlucyBhCi0gKiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGd1ZXN0IE9TZXMgKGRyaXZl
cnMveGVuL2dyYW50X3RhYmxlLmMsIHNlZQotICogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxp
bnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0O2E9YmxvYjtmPWRyaXZlcnMveGVuL2dy
YW50LXRhYmxlLmM7aGI9SEVBRAotICoKLSAqIE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50
LWdlbmVyYXRpb24geDg2IHByb2Nlc3NvcnMuIEhvd2V2ZXIsIGEKLSAqICAgICBjb21waWxlciBi
YXJyaWVyIHdpbGwgc3RpbGwgYmUgcmVxdWlyZWQuCi0gKgotICogSW50cm9kdWNpbmcgYSB2YWxp
ZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJsZToKLSAqICAxLiBXcml0ZSBlbnQtPmRvbWlkLgot
ICogIDIuIFdyaXRlIGVudC0+ZnJhbWU6Ci0gKiAgICAgIEdURl9wZXJtaXRfYWNjZXNzOiAgIEZy
YW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJtaXR0ZWQuCi0gKiAgICAgIEdURl9hY2NlcHRfdHJh
bnNmZXI6IFBzZXVkby1waHlzIGZyYW1lIHNsb3QgYmVpbmcgZmlsbGVkIGJ5IG5ldwotICogICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSwgb3IgemVybyBpZiBub25lLgotICogIDMuIFdy
aXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLgotICogIDQuIFdyaXRlIGVudC0+ZmxhZ3MsIGluYy4g
dmFsaWQgdHlwZS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9wZXJtaXRfYWNj
ZXNzIGVudHJ5OgotICogIDEuIGZsYWdzID0gZW50LT5mbGFncy4KLSAqICAyLiBPYnNlcnZlIHRo
YXQgIShmbGFncyAmIChHVEZfcmVhZGluZ3xHVEZfd3JpdGluZykpLgotICogIDMuIENoZWNrIHJl
c3VsdCBvZiBTTVAtc2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCi0gKiAgTkIu
IE5vIG5lZWQgZm9yIFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBv
biBzdWNjZXNzIG9mCi0gKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJh
bnRlZSBvcmRlcmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuCi0gKgotICogSW52YWxpZGF0aW5nIGFu
IGluLXVzZSBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToKLSAqICBUaGlzIGNhbm5vdCBiZSBkb25l
IGRpcmVjdGx5LiBSZXF1ZXN0IGFzc2lzdGFuY2UgZnJvbSB0aGUgZG9tYWluIGNvbnRyb2xsZXIK
LSAqICB3aGljaCBjYW4gc2V0IGEgdGltZW91dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQgZW50cnkg
YW5kIHRha2UgbmVjZXNzYXJ5Ci0gKiAgYWN0aW9uLiAoTkIuIFRoaXMgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCEpLgotICoKLSAqIEludmFsaWRhdGluZyBhbiB1bnVzZWQgR1RGX2FjY2VwdF90cmFu
c2ZlciBlbnRyeToKLSAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCi0gKiAgMi4gT2JzZXJ2ZSB0
aGF0ICEoZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tbWl0dGVkKS4gWypdCi0gKiAgMy4gQ2hlY2sg
cmVzdWx0IG9mIFNNUC1zYWZlIENNUFhDSEcoJmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KLSAqICBO
Qi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNlIG9mIGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50
IG9uIHN1Y2Nlc3Mgb2YKLSAqICAgICAgc3RlcCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3Vh
cmFudGVlIG9yZGVyaW5nIG9mIGN0cmwtZGVwIHdyaXRlcy4KLSAqICBbKl0gSWYgR1RGX3RyYW5z
ZmVyX2NvbW1pdHRlZCBpcyBzZXQgdGhlbiB0aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcu
Ci0gKiAgICAgIFRoZSBndWVzdCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50
aWwgdGhlIGFkZHJlc3Mgb2YgdGhlCi0gKiAgICAgIHRyYW5zZmVycmVkIGZyYW1lIGlzIHdyaXR0
ZW4uIEl0IGlzIHNhZmUgZm9yIHRoZSBndWVzdCB0byBzcGluIHdhaXRpbmcKLSAqICAgICAgZm9y
IHRoaXMgdG8gb2NjdXIgKGRldGVjdCBieSBvYnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBsZXRl
ZCBpbgotICogICAgICBlbnQtPmZsYWdzKS4KLSAqCi0gKiBJbnZhbGlkYXRpbmcgYSBjb21taXR0
ZWQgR1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToKLSAqICAxLiBXYWl0IGZvciAoZW50LT5mbGFn
cyAmIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQpLgotICoKLSAqIENoYW5naW5nIGEgR1RGX3Blcm1p
dF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byByZWFkLW9ubHk6Ci0gKiAgVXNlIFNNUC1zYWZlIENN
UFhDSEcgdG8gc2V0IEdURl9yZWFkb25seSwgd2hpbGUgY2hlY2tpbmcgIUdURl93cml0aW5nLgot
ICoKLSAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJvbSByZWFkLW9ubHkgdG8gd3Jp
dGFibGU6Ci0gKiAgVXNlIFNNUC1zYWZlIGJpdC1zZXR0aW5nIGluc3RydWN0aW9uLgotICovCi0K
LS8qCi0gKiBSZWZlcmVuY2UgdG8gYSBncmFudCBlbnRyeSBpbiBhIHNwZWNpZmllZCBkb21haW4n
cyBncmFudCB0YWJsZS4KLSAqLwotdHlwZWRlZiB1aW50MzJfdCBncmFudF9yZWZfdDsKLQotLyoK
LSAqIEEgZ3JhbnQgdGFibGUgY29tcHJpc2VzIGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJp
ZXMgaW4gb25lIG9yIG1vcmUKLSAqIHBhZ2UgZnJhbWVzIHNoYXJlZCBiZXR3ZWVuIFhlbiBhbmQg
YSBndWVzdC4KLSAqIFtYRU5dOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgWGVuIGFuZCByZWFk
IGJ5IHRoZSBzaGFyaW5nIGd1ZXN0LgotICogW0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBi
eSB0aGUgZ3Vlc3QgYW5kIHJlYWQgYnkgWGVuLgotICovCi0KLS8qCi0gKiBWZXJzaW9uIDEgb2Yg
dGhlIGdyYW50IHRhYmxlIGVudHJ5IHN0cnVjdHVyZSBpcyBtYWludGFpbmVkIHB1cmVseQotICog
Zm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgTmV3IGd1ZXN0cyBzaG91bGQgdXNlIHZlcnNp
b24gMi4KLSAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjBhCi0j
ZGVmaW5lIGdyYW50X2VudHJ5X3YxIGdyYW50X2VudHJ5Ci0jZGVmaW5lIGdyYW50X2VudHJ5X3Yx
X3QgZ3JhbnRfZW50cnlfdAotI2VuZGlmCi1zdHJ1Y3QgZ3JhbnRfZW50cnlfdjEgewotICAgIC8q
IEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQgZmxhZyBpbmZvcm1hdGlvbi4gIFtYRU4sR1NUXSAq
LwotICAgIHVpbnQxNl90IGZsYWdzOwotICAgIC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBm
b3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICovCi0gICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgLyoK
LSAgICAgKiBHVEZfcGVybWl0X2FjY2VzczogRnJhbWUgdGhhdCBAZG9taWQgaXMgYWxsb3dlZCB0
byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KLSAgICAgKiBHVEZfYWNjZXB0X3RyYW5zZmVyOiBGcmFt
ZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJyZWQgYnkgQGRvbWlkLiBbWEVOXQotICAgICAqLwot
ICAgIHVpbnQzMl90IGZyYW1lOwotfTsKLXR5cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X3YxIGdy
YW50X2VudHJ5X3YxX3Q7Ci0KLS8qIFRoZSBmaXJzdCBmZXcgZ3JhbnQgdGFibGUgZW50cmllcyB3
aWxsIGJlIHByZXNlcnZlZCBhY3Jvc3MgZ3JhbnQgdGFibGUKLSAqIHZlcnNpb24gY2hhbmdlcyBh
bmQgbWF5IGJlIHByZS1wb3B1bGF0ZWQgYXQgZG9tYWluIGNyZWF0aW9uIGJ5IHRvb2xzLgotICov
Ci0jZGVmaW5lIEdOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTICAgICA4Ci0jZGVmaW5lIEdOVFRB
Ql9SRVNFUlZFRF9DT05TT0xFICAgICAgICAwCi0jZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9YRU5T
VE9SRSAgICAgICAxCi0KLS8qCi0gKiBUeXBlIG9mIGdyYW50IGVudHJ5LgotICogIEdURl9pbnZh
bGlkOiBUaGlzIGdyYW50IGVudHJ5IGdyYW50cyBubyBwcml2aWxlZ2VzLgotICogIEdURl9wZXJt
aXRfYWNjZXNzOiBBbGxvdyBAZG9taWQgdG8gbWFwL2FjY2VzcyBAZnJhbWUuCi0gKiAgR1RGX2Fj
Y2VwdF90cmFuc2ZlcjogQWxsb3cgQGRvbWlkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBvbmUg
cGFnZSBmcmFtZQotICogICAgICAgICAgICAgICAgICAgICAgIHRvIHRoaXMgZ3Vlc3QuIFhlbiB3
cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIEBmcmFtZS4KLSAqICBHVEZfdHJhbnNpdGl2ZTogQWxs
b3cgQGRvbWlkIHRvIHRyYW5zaXRpdmVseSBhY2Nlc3MgYSBzdWJyYW5nZSBvZgotICogICAgICAg
ICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4gQHRyYW5zX2RvbWlkLiAgTm8gbWFwcGluZ3MgYXJl
IGFsbG93ZWQuCi0gKi8KLSNkZWZpbmUgR1RGX2ludmFsaWQgICAgICAgICAoMFU8PDApCi0jZGVm
aW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFVPDwwKQotI2RlZmluZSBHVEZfYWNjZXB0X3RyYW5z
ZmVyICgyVTw8MCkKLSNkZWZpbmUgR1RGX3RyYW5zaXRpdmUgICAgICAoM1U8PDApCi0jZGVmaW5l
IEdURl90eXBlX21hc2sgICAgICAgKDNVPDwwKQotCi0vKgotICogU3ViZmxhZ3MgZm9yIEdURl9w
ZXJtaXRfYWNjZXNzLgotICogIEdURl9yZWFkb25seTogUmVzdHJpY3QgQGRvbWlkIHRvIHJlYWQt
b25seSBtYXBwaW5ncyBhbmQgYWNjZXNzZXMuIFtHU1RdCi0gKiAgR1RGX3JlYWRpbmc6IEdyYW50
IGVudHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQgZm9yIHJlYWRpbmcgYnkgQGRvbWlkLiBbWEVOXQot
ICogIEdURl93cml0aW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFwcGVkIGZvciB3cml0
aW5nIGJ5IEBkb21pZC4gW1hFTl0KLSAqICBHVEZfUEFULCBHVEZfUFdULCBHVEZfUENEOiAoeDg2
KSBjYWNoZSBhdHRyaWJ1dGUgZmxhZ3MgZm9yIHRoZSBncmFudCBbR1NUXQotICogIEdURl9zdWJf
cGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkgYSBzdWJyYW5nZSBvZiB0aGUgcGFnZS4gIEBkb21p
ZAotICogICAgICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGFsbG93ZWQgdG8gY29weSBmcm9tIHRo
ZSBncmFudCwgYW5kIG5vdAotICogICAgICAgICAgICAgICAgbWFwIGl0LiBbR1NUXQotICovCi0j
ZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAgKDIpCi0jZGVmaW5lIEdURl9yZWFkb25seSAgICAg
ICAgKDFVPDxfR1RGX3JlYWRvbmx5KQotI2RlZmluZSBfR1RGX3JlYWRpbmcgICAgICAgICgzKQot
I2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAgICgxVTw8X0dURl9yZWFkaW5nKQotI2RlZmluZSBf
R1RGX3dyaXRpbmcgICAgICAgICg0KQotI2RlZmluZSBHVEZfd3JpdGluZyAgICAgICAgICgxVTw8
X0dURl93cml0aW5nKQotI2RlZmluZSBfR1RGX1BXVCAgICAgICAgICAgICg1KQotI2RlZmluZSBH
VEZfUFdUICAgICAgICAgICAgICgxVTw8X0dURl9QV1QpCi0jZGVmaW5lIF9HVEZfUENEICAgICAg
ICAgICAgKDYpCi0jZGVmaW5lIEdURl9QQ0QgICAgICAgICAgICAgKDFVPDxfR1RGX1BDRCkKLSNk
ZWZpbmUgX0dURl9QQVQgICAgICAgICAgICAoNykKLSNkZWZpbmUgR1RGX1BBVCAgICAgICAgICAg
ICAoMVU8PF9HVEZfUEFUKQotI2RlZmluZSBfR1RGX3N1Yl9wYWdlICAgICAgICg4KQotI2RlZmlu
ZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8X0dURl9zdWJfcGFnZSkKLQotLyoKLSAqIFN1YmZs
YWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVyOgotICogIEdURl90cmFuc2Zlcl9jb21taXR0ZWQ6
IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIGNvbW1pdHRlZAotICog
ICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwIG9mIGEgcGFnZSBmcmFtZS4gV2hlbiBhIGd1
ZXN0IHNlZXMgdGhpcyBmbGFnCi0gKiAgICAgIGl0IG11c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFu
dCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJfY29tcGxldGVkIGlzCi0gKiAgICAgIHNldCBieSBY
ZW4uCi0gKiAgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZDogSXQgaXMgc2FmZSBmb3IgdGhlIGd1ZXN0
IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcKLSAqICAgICAgYWZ0ZXIgcmVhZGluZyBHVEZfdHJh
bnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBhbHdheXMgd3JpdGUgdGhlIGZyYW1lCi0gKiAgICAg
IGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5nIHRoaXMgZmxhZywgaW4gYSB0aW1lbHkgbWFubmVy
LgotICovCi0jZGVmaW5lIF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkICgyKQotI2RlZmluZSBHVEZf
dHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkKQotI2RlZmlu
ZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAoMykKLSNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCkKLQotLyoKLSAqIFZlcnNpb24gMiBn
cmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2UgZnVsZmlsIHRoZSBzYW1lIHJvbGUgYXMKLSAqIHZl
cnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJlcHJlc2VudCBtb3JlIGNvbXBsaWNhdGVkIG9wZXJh
dGlvbnMuCi0gKiBBbnkgZ2l2ZW4gZG9tYWluIHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJzaW9uIDEg
b3IgYSB2ZXJzaW9uIDIgdGFibGUsCi0gKiBhbmQgZXZlcnkgZW50cnkgaW4gdGhlIHRhYmxlIHdp
bGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KLSAqCi0gKiBUaGUgaW50ZXJmYWNlIGJ5IHdoaWNoIGRv
bWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMgZG9lcyBub3QgZGVwZW5kCi0gKiBvbiB0aGUgZ3Jh
bnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkgdGhlIG90aGVyIGRvbWFpbi4KLSAqLwotI2lmIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQotLyoKLSAqIFZlcnNpb24gMSBh
bmQgdmVyc2lvbiAyIGdyYW50IGVudHJpZXMgc2hhcmUgYSBjb21tb24gcHJlZml4LiAgVGhlCi0g
KiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUgZG9jdW1lbnRlZCBhcyBwYXJ0IG9mIHN0cnVjdAot
ICogZ3JhbnRfZW50cnlfdjEuCi0gKi8KLXN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgewotICAg
IHVpbnQxNl90IGZsYWdzOwotICAgIGRvbWlkX3QgIGRvbWlkOwotfTsKLXR5cGVkZWYgc3RydWN0
IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9lbnRyeV9oZWFkZXJfdDsKLQotLyoKLSAqIFZlcnNp
b24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3RydWN0dXJlLgotICovCi11bmlvbiBncmFudF9lbnRy
eV92MiB7Ci0gICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOwotCi0gICAgLyoKLSAgICAgKiBU
aGlzIG1lbWJlciBpcyB1c2VkIGZvciBWMS1zdHlsZSBmdWxsIHBhZ2UgZ3JhbnRzLCB3aGVyZSBl
aXRoZXI6Ci0gICAgICoKLSAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfYWNjZXB0X3RyYW5zZmVy
LCBvcgotICAgICAqIC0tIGhkci50eXBlIGlzIEdURl9wZXJtaXRfYWNjZXNzIGFuZCBHVEZfc3Vi
X3BhZ2UgaXMgbm90IHNldC4KLSAgICAgKgotICAgICAqIEluIHRoYXQgY2FzZSwgdGhlIGZyYW1l
IGZpZWxkIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlCi0gICAgICogZmllbGQgb2YgdGhl
IHNhbWUgbmFtZSBpbiB0aGUgVjEgZW50cnkgc3RydWN0dXJlLgotICAgICAqLwotICAgIHN0cnVj
dCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKLSAgICAgICAgdWludDMyX3Qg
cGFkMDsKLSAgICAgICAgdWludDY0X3QgZnJhbWU7Ci0gICAgfSBmdWxsX3BhZ2U7Ci0KLSAgICAv
KgotICAgICAqIElmIHRoZSBncmFudCB0eXBlIGlzIEdURl9ncmFudF9hY2Nlc3MgYW5kIEdURl9z
dWJfcGFnZSBpcyBzZXQsCi0gICAgICogQGRvbWlkIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGJ5dGVz
IFtAcGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5ndGgpCi0gICAgICogaW4gZnJhbWUgQGZyYW1lLgot
ICAgICAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsK
LSAgICAgICAgdWludDE2X3QgcGFnZV9vZmY7Ci0gICAgICAgIHVpbnQxNl90IGxlbmd0aDsKLSAg
ICAgICAgdWludDY0X3QgZnJhbWU7Ci0gICAgfSBzdWJfcGFnZTsKLQotICAgIC8qCi0gICAgICog
SWYgdGhlIGdyYW50IGlzIEdURl90cmFuc2l0aXZlLCBAZG9taWQgaXMgYWxsb3dlZCB0byB1c2Ug
dGhlCi0gICAgICogZ3JhbnQgQGdyZWYgaW4gZG9tYWluIEB0cmFuc19kb21pZCwgYXMgaWYgaXQg
d2FzIHRoZSBsb2NhbAotICAgICAqIGRvbWFpbi4gIE9idmlvdXNseSwgdGhlIHRyYW5zaXRpdmUg
YWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQotICAgICAqIHdpdGggdGhlIG9yaWdpbmFsIGdyYW50
LgotICAgICAqCi0gICAgICogVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBYZW4gZG9lcyBub3QgYWxs
b3cgdHJhbnNpdGl2ZSBncmFudHMKLSAgICAgKiB0byBiZSBtYXBwZWQuCi0gICAgICovCi0gICAg
c3RydWN0IHsKLSAgICAgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOwotICAgICAgICBkb21p
ZF90IHRyYW5zX2RvbWlkOwotICAgICAgICB1aW50MTZfdCBwYWQwOwotICAgICAgICBncmFudF9y
ZWZfdCBncmVmOwotICAgIH0gdHJhbnNpdGl2ZTsKLQotICAgIHVpbnQzMl90IF9fc3BhY2VyWzRd
OyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28gKi8KLX07Ci10eXBlZGVmIHVuaW9uIGdyYW50X2Vu
dHJ5X3YyIGdyYW50X2VudHJ5X3YyX3Q7Ci0KLXR5cGVkZWYgdWludDE2X3QgZ3JhbnRfc3RhdHVz
X3Q7Ci0KLSNlbmRpZiAvKiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fICovCi0KLS8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR1JBTlQgVEFCTEUgUVVFUklFUyBBTkQg
VVNFUwotICovCi0KLS8qIGAgZW51bSBuZWdfZXJybm92YWwKLSAqIGAgSFlQRVJWSVNPUl9ncmFu
dF90YWJsZV9vcChlbnVtIGdyYW50X3RhYmxlX29wIGNtZCwKLSAqIGAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICphcmdzLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBjb3VudCkKLSAqIGAKLSAqCi0gKiBAYXJncyBwb2ludHMgdG8gYW4gYXJyYXkg
b2YgYSBwZXItY29tbWFuZCBkYXRhIHN0cnVjdHVyZS4gVGhlIGFycmF5Ci0gKiBoYXMgQGNvdW50
IG1lbWJlcnMKLSAqLwotCi0vKiBgIGVudW0gZ3JhbnRfdGFibGVfb3AgeyAvLyBHTlRUQUJPUF8q
ID0+IHN0cnVjdCBnbnR0YWJfKiAqLwotI2RlZmluZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmICAg
ICAgICAwCi0jZGVmaW5lIEdOVFRBQk9QX3VubWFwX2dyYW50X3JlZiAgICAgIDEKLSNkZWZpbmUg
R05UVEFCT1Bfc2V0dXBfdGFibGUgICAgICAgICAgMgotI2RlZmluZSBHTlRUQUJPUF9kdW1wX3Rh
YmxlICAgICAgICAgICAzCi0jZGVmaW5lIEdOVFRBQk9QX3RyYW5zZmVyICAgICAgICAgICAgIDQK
LSNkZWZpbmUgR05UVEFCT1BfY29weSAgICAgICAgICAgICAgICAgNQotI2RlZmluZSBHTlRUQUJP
UF9xdWVyeV9zaXplICAgICAgICAgICA2Ci0jZGVmaW5lIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBs
YWNlICAgIDcKLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGEKLSNk
ZWZpbmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24gICAgICAgICAgOAotI2RlZmluZSBHTlRUQUJPUF9n
ZXRfc3RhdHVzX2ZyYW1lcyAgICA5Ci0jZGVmaW5lIEdOVFRBQk9QX2dldF92ZXJzaW9uICAgICAg
ICAgIDEwCi0jZGVmaW5lIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmCSAgICAgIDExCi0jZW5kaWYg
LyogX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLwotLyogYCB9ICovCi0KLS8qCi0gKiBIYW5k
bGUgdG8gdHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQgcmVmZXJlbmNlLgotICov
Ci10eXBlZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OwotCi0vKgotICogR05UVEFCT1BfbWFw
X2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJlZj4pIGZvciBhY2Nlc3MK
LSAqIGJ5IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vzc2Z1bCwgPGhhbmRsZT4g
aXMgYSB0cmFja2luZyBudW1iZXIKLSAqIHRoYXQgbXVzdCBiZSBwcmVzZW50ZWQgbGF0ZXIgdG8g
ZGVzdHJveSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxoYW5kbGU+Ci0gKiBpcyBhIG5lZ2F0
aXZlIHN0YXR1cyBjb2RlLgotICogTk9URVM6Ci0gKiAgMS4gSWYgR05UTUFQX2RldmljZV9tYXAg
aXMgc3BlY2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFkZHJlc3MKLSAqICAgICB2
aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRlZCBmcmFtZS4KLSAqICAy
LiBJZiBHTlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBtYXBwaW5nIHdpbGwgYmUg
YWRkZWQgYXQKLSAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgY3Vy
cmVudCBhZGRyZXNzIHNwYWNlLCBvciBhdAotICogICAgIGEgUFRFIGF0IHRoZSBzcGVjaWZpZWQg
bWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bwotICogICAgIHBlcmZvcm0g
aXMgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0ZSBmbGFnLCBhbmQgdGhl
Ci0gKiAgICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRkcj4uCi0gKiAgMy4gTWFw
cGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91bm1hcF9ncmFudF9y
ZWYuIElmIGEKLSAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVkIGJ5IG90aGVyIG1lYW5z
IHRoZW4gaXQgaXMgKk5PVCogZ3VhcmFudGVlZAotICogICAgIHRvIGJlIGFjY291bnRlZCB0byB0
aGUgY29ycmVjdCBncmFudCByZWZlcmVuY2UhCi0gKi8KLXN0cnVjdCBnbnR0YWJfbWFwX2dyYW50
X3JlZiB7Ci0gICAgLyogSU4gcGFyYW1ldGVycy4gKi8KLSAgICB1aW50NjRfdCBob3N0X2FkZHI7
Ci0gICAgdWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAgICAgLyogR05UTUFQXyogKi8KLSAgICBn
cmFudF9yZWZfdCByZWY7Ci0gICAgZG9taWRfdCAgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJz
LiAqLwotICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRf
c3RhdHVzICovCi0gICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOwotICAgIHVpbnQ2NF90IGRldl9i
dXNfYWRkcjsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiBnbnR0YWJf
bWFwX2dyYW50X3JlZl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX21hcF9ncmFu
dF9yZWZfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWY6IERlc3Ryb3kgb25l
IG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCi0gKiB0cmFja2VkIGJ5IDxoYW5kbGU+
LiBJZiA8aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBpcyB6ZXJvLCB0aGF0Ci0gKiBmaWVs
ZCBpcyBpZ25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0IHJlZmVyIHRvIGEgZGV2aWNlL2hv
c3QgbWFwcGluZwotICogdGhhdCBpcyB0cmFja2VkIGJ5IDxoYW5kbGU+Ci0gKiBOT1RFUzoKLSAq
ICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBt
YXBwaW5nIGlzIG5vdAotICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCi0gKiAgMy4gQWZ0ZXIg
ZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3Rh
bGUKLSAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExC
cy4KLSAqLwotc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgewotICAgIC8qIElOIHBhcmFt
ZXRlcnMuICovCi0gICAgdWludDY0X3QgaG9zdF9hZGRyOwotICAgIHVpbnQ2NF90IGRldl9idXNf
YWRkcjsKLSAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCi0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9z
dGF0dXMgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIGdudHRh
Yl91bm1hcF9ncmFudF9yZWZfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl91bm1h
cF9ncmFudF9yZWZfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF9zZXR1cF90YWJsZTogU2V0IHVwIGEg
Z3JhbnQgdGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QKLSAqIDxucl9mcmFtZXM+
IHBhZ2VzLiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRvIHRoZSA8ZnJhbWVfbGlz
dD4uCi0gKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRlbiwgZXZlbiBpZiB0
aGUgdGFibGUgaXMgbGFyZ2VyLgotICogTk9URVM6Ci0gKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNp
ZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdl
ZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KLSAqICAzLiBYZW4gbWF5
IG5vdCBzdXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJsZSBwYWdlIHBlciBkb21h
aW4uCi0gKi8KLXN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgewotICAgIC8qIElOIHBhcmFtZXRl
cnMuICovCi0gICAgZG9taWRfdCAgZG9tOwotICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKLSAgICAv
KiBPVVQgcGFyYW1ldGVycy4gKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAv
KiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PCAweDAwMDQwMzAwCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJhbWVfbGlzdDsKLSNl
bHNlCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGZyYW1lX2xpc3Q7Ci0jZW5kaWYK
LX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgZ250dGFiX3NldHVwX3RhYmxl
X3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0dXBfdGFibGVfdCk7Ci0KLS8q
Ci0gKiBHTlRUQUJPUF9kdW1wX3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JhbnQg
dGFibGUgdG8gdGhlCi0gKiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBvbmx5LgotICovCi1z
dHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgewotICAgIC8qIElOIHBhcmFtZXRlcnMuICovCi0gICAg
ZG9taWRfdCBkb207Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAgaW50MTZfdCBzdGF0
dXM7ICAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KLX07Ci10eXBlZGVm
IHN0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90OwotREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF90
cmFuc2Zlcl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3JlaWduIGRvbWFpbi4g
VGhlCi0gKiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3RlcmVkIGl0cyBpbnRl
cmVzdCBpbiB0aGUgdHJhbnNmZXIgdmlhCi0gKiA8ZG9taWQsIHJlZj4uCi0gKgotICogTm90ZSB0
aGF0LCBldmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmllZCBwYWdlIG5vIExP
TkdfUFRSZXIgYmVsb25ncwotICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1bmxlc3MqIHRoZSBl
cnJvciBpcyBHTlRTVF9iYWRfcGFnZS4KLSAqLwotc3RydWN0IGdudHRhYl90cmFuc2ZlciB7Ci0g
ICAgLyogSU4gcGFyYW1ldGVycy4gKi8KLSAgICB4ZW5fcGZuX3QgICAgIG1mbjsKLSAgICBkb21p
ZF90ICAgICAgIGRvbWlkOwotICAgIGdyYW50X3JlZl90ICAgcmVmOwotICAgIC8qIE9VVCBwYXJh
bWV0ZXJzLiAqLwotICAgIGludDE2X3QgICAgICAgc3RhdHVzOwotfTsKLXR5cGVkZWYgc3RydWN0
IGdudHRhYl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFO
RExFKGdudHRhYl90cmFuc2Zlcl90KTsKLQotCi0vKgotICogR05UVEFCT1BfY29weTogSHlwZXJ2
aXNvciBiYXNlZCBjb3B5Ci0gKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBjYW4gYmUgZWl0aGVy
cyBNRk5zIG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAotICogZ3JhbnQgcmVmZXJlbmNlcy4gdGhl
IGZvcmVpZ24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2VzcwotICogaW4gaXRz
IGdyYW50IHRhYmxlLgotICoKLSAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQgdHlwZSBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KLSAqIG9yIGdyYW50IHJlZmVyZW5jZSku
Ci0gKgotICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBjb3B5IGRhdGEgYmV0
d2VlbiB0d28gZG9tYWlucwotICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhlIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQotICogZ3JhbnQgYXBwcm9wcmlhdGUg
YWNjZXNzIHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KLSAqCi0gKiBzb3VyY2Vf
b2Zmc2V0IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFtZSwgZGVzdF9vZmZz
ZXQKLSAqIHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxlbiBzcGVjaWZpZXMg
dGhlIG51bWJlciBvZgotICogYnl0ZXMgdG8gYmUgY29waWVkLgotICovCi0KLSNkZWZpbmUgX0dO
VENPUFlfc291cmNlX2dyZWYgICAgICAoMCkKLSNkZWZpbmUgR05UQ09QWV9zb3VyY2VfZ3JlZiAg
ICAgICAoMTw8X0dOVENPUFlfc291cmNlX2dyZWYpCi0jZGVmaW5lIF9HTlRDT1BZX2Rlc3RfZ3Jl
ZiAgICAgICAgKDEpCi0jZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAgICAgKDE8PF9HTlRD
T1BZX2Rlc3RfZ3JlZikKLQotc3RydWN0IGdudHRhYl9jb3B5IHsKLSAgICAvKiBJTiBwYXJhbWV0
ZXJzLiAqLwotICAgIHN0cnVjdCB7Ci0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIGdyYW50
X3JlZl90IHJlZjsKLSAgICAgICAgICAgIHhlbl9wZm5fdCAgIGdtZm47Ci0gICAgICAgIH0gdTsK
LSAgICAgICAgZG9taWRfdCAgZG9taWQ7Ci0gICAgICAgIHVpbnQxNl90IG9mZnNldDsKLSAgICB9
IHNvdXJjZSwgZGVzdDsKLSAgICB1aW50MTZfdCAgICAgIGxlbjsKLSAgICB1aW50MTZfdCAgICAg
IGZsYWdzOyAgICAgICAgICAvKiBHTlRDT1BZXyogKi8KLSAgICAvKiBPVVQgcGFyYW1ldGVycy4g
Ki8KLSAgICBpbnQxNl90ICAgICAgIHN0YXR1czsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJf
Y29weSAgZ250dGFiX2NvcHlfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9jb3B5
X3QpOwotCi0vKgotICogR05UVEFCT1BfcXVlcnlfc2l6ZTogUXVlcnkgdGhlIGN1cnJlbnQgYW5k
IG1heGltdW0gc2l6ZXMgb2YgdGhlIHNoYXJlZAotICogZ3JhbnQgdGFibGUuCi0gKiBOT1RFUzoK
LSAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCi0gKiAgMi4gT25s
eSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBE
T01JRF9TRUxGLgotICovCi1zdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgewotICAgIC8qIElOIHBh
cmFtZXRlcnMuICovCi0gICAgZG9taWRfdCAgZG9tOwotICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAq
LwotICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKLSAgICB1aW50MzJfdCBtYXhfbnJfZnJhbWVzOwot
ICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVz
ICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgZ250dGFiX3F1ZXJ5X3Np
emVfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9xdWVyeV9zaXplX3QpOwotCi0v
KgotICogR05UVEFCT1BfdW5tYXBfYW5kX3JlcGxhY2U6IERlc3Ryb3kgb25lIG9yIG1vcmUgZ3Jh
bnQtcmVmZXJlbmNlIG1hcHBpbmdzCi0gKiB0cmFja2VkIGJ5IDxoYW5kbGU+IGJ1dCBhdG9taWNh
bGx5IHJlcGxhY2UgdGhlIHBhZ2UgdGFibGUgZW50cnkgd2l0aCBvbmUKLSAqIHBvaW50aW5nIHRv
IHRoZSBtYWNoaW5lIGFkZHJlc3MgdW5kZXIgPG5ld19hZGRyPi4gIDxuZXdfYWRkcj4gd2lsbCBi
ZQotICogcmVkaXJlY3RlZCB0byB0aGUgbnVsbCBlbnRyeS4KLSAqIE5PVEVTOgotICogIDEuIFRo
ZSBjYWxsIG1heSBmYWlsIGluIGFuIHVuZGVmaW5lZCBtYW5uZXIgaWYgZWl0aGVyIG1hcHBpbmcg
aXMgbm90Ci0gKiAgICAgdHJhY2tlZCBieSA8aGFuZGxlPi4KLSAqICAyLiBBZnRlciBleGVjdXRp
bmcgYSBiYXRjaCBvZiB1bm1hcHMsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQotICog
ICAgIG1hcHBpbmdzIHdpbGwgcmVtYWluIGluIHRoZSBkZXZpY2Ugb3IgaG9zdCBUTEJzLgotICov
Ci1zdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIHsKLSAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLwotICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKLSAgICB1aW50NjRfdCBuZXdfYWRkcjsKLSAg
ICBncmFudF9oYW5kbGVfdCBoYW5kbGU7Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMuICovCi0gICAg
aW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8K
LX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfYW5kX3JlcGxhY2UgZ250dGFiX3VubWFw
X2FuZF9yZXBsYWNlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdW5tYXBfYW5k
X3JlcGxhY2VfdCk7Ci0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAy
MGEKLS8qCi0gKiBHTlRUQUJPUF9zZXRfdmVyc2lvbjogUmVxdWVzdCBhIHBhcnRpY3VsYXIgdmVy
c2lvbiBvZiB0aGUgZ3JhbnQKLSAqIHRhYmxlIHNoYXJlZCB0YWJsZSBzdHJ1Y3R1cmUuICBUaGlz
IG9wZXJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQKLSAqIG9uY2UgaW4gYW55IGdpdmVuIGRv
bWFpbi4gIEl0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBhbnkgZ3JhbnRzCi0gKiBhcmUgYWN0
aXZhdGVkOyBvdGhlcndpc2UsIHRoZSBkb21haW4gd2lsbCBiZSBzdHVjayB3aXRoIHZlcnNpb24g
MS4KLSAqIFRoZSBvbmx5IGRlZmluZWQgdmVyc2lvbnMgYXJlIDEgYW5kIDIuCi0gKi8KLXN0cnVj
dCBnbnR0YWJfc2V0X3ZlcnNpb24gewotICAgIC8qIElOL09VVCBwYXJhbWV0ZXJzICovCi0gICAg
dWludDMyX3QgdmVyc2lvbjsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0X3ZlcnNpb24g
Z250dGFiX3NldF92ZXJzaW9uX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0
X3ZlcnNpb25fdCk7Ci0KLQotLyoKLSAqIEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzOiBHZXQg
dGhlIGxpc3Qgb2YgZnJhbWVzIHVzZWQgdG8gc3RvcmUgZ3JhbnQKLSAqIHN0YXR1cyBmb3IgPGRv
bT4uIEluIGdyYW50IGZvcm1hdCB2ZXJzaW9uIDIsIHRoZSBzdGF0dXMgaXMgc2VwYXJhdGVkCi0g
KiBmcm9tIHRoZSBvdGhlciBzaGFyZWQgZ3JhbnQgZmllbGRzIHRvIGFsbG93IG1vcmUgZWZmaWNp
ZW50IHN5bmNocm9uaXphdGlvbgotICogdXNpbmcgYmFycmllcnMgaW5zdGVhZCBvZiBhdG9taWMg
Y21wZXhjaCBvcGVyYXRpb25zLgotICogPG5yX2ZyYW1lcz4gc3BlY2lmeSB0aGUgc2l6ZSBvZiB2
ZWN0b3IgPGZyYW1lX2xpc3Q+LgotICogVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQg
aW4gdGhlIDxmcmFtZV9saXN0Pi4KLSAqIE9ubHkgPG5yX2ZyYW1lcz4gYWRkcmVzc2VzIGFyZSBy
ZXR1cm5lZCwgZXZlbiBpZiB0aGUgdGFibGUgaXMgbGFyZ2VyLgotICogTk9URVM6Ci0gKiAgMS4g
PGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgotICogIDIuIE9ubHkgYSBzdWZm
aWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VM
Ri4KLSAqLwotc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyB7Ci0gICAgLyogSU4gcGFy
YW1ldGVycy4gKi8KLSAgICB1aW50MzJfdCBucl9mcmFtZXM7Ci0gICAgZG9taWRfdCAgZG9tOwot
ICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwotICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAg
ICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh1aW50
NjRfdCkgZnJhbWVfbGlzdDsKLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19m
cmFtZXMgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCk7Ci0KLS8qCi0gKiBHTlRUQUJPUF9nZXRfdmVy
c2lvbjogR2V0IHRoZSBncmFudCB0YWJsZSB2ZXJzaW9uIHdoaWNoIGlzIGluCi0gKiBlZmZlY3Qg
Zm9yIGRvbWFpbiA8ZG9tPi4KLSAqLwotc3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiB7Ci0gICAg
LyogSU4gcGFyYW1ldGVycyAqLwotICAgIGRvbWlkX3QgZG9tOwotICAgIHVpbnQxNl90IHBhZDsK
LSAgICAvKiBPVVQgcGFyYW1ldGVycyAqLwotICAgIHVpbnQzMl90IHZlcnNpb247Ci19OwotdHlw
ZWRlZiBzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIGdudHRhYl9nZXRfdmVyc2lvbl90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF92ZXJzaW9uX3QpOwotCi0vKgotICogR05U
VEFCT1Bfc3dhcF9ncmFudF9yZWY6IFN3YXAgdGhlIGNvbnRlbnRzIG9mIHR3byBncmFudCBlbnRy
aWVzLgotICovCi1zdHJ1Y3QgZ250dGFiX3N3YXBfZ3JhbnRfcmVmIHsKLSAgICAvKiBJTiBwYXJh
bWV0ZXJzICovCi0gICAgZ3JhbnRfcmVmX3QgcmVmX2E7Ci0gICAgZ3JhbnRfcmVmX3QgcmVmX2I7
Ci0gICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KLSAgICBpbnQxNl90IHN0YXR1czsgICAgICAgICAg
ICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KLX07Ci10eXBlZGVmIHN0cnVjdCBnbnR0YWJf
c3dhcF9ncmFudF9yZWYgZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3Q7Ci1ERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShnbnR0YWJfc3dhcF9ncmFudF9yZWZfdCk7Ci0KLSNlbmRpZiAvKiBfX1hFTl9JTlRF
UkZBQ0VfVkVSU0lPTl9fICovCi0KLS8qCi0gKiBCaXRmaWVsZCB2YWx1ZXMgZm9yIGdudHRhYl9t
YXBfZ3JhbnRfcmVmLmZsYWdzLgotICovCi0gLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNj
ZXNzIGJ5IEkvTyBkZXZpY2VzLiAqLwotI2RlZmluZSBfR05UTUFQX2RldmljZV9tYXAgICAgICAo
MCkKLSNkZWZpbmUgR05UTUFQX2RldmljZV9tYXAgICAgICAgKDE8PF9HTlRNQVBfZGV2aWNlX21h
cCkKLSAvKiBNYXAgdGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgaG9zdCBDUFVzLiAqLwot
I2RlZmluZSBfR05UTUFQX2hvc3RfbWFwICAgICAgICAoMSkKLSNkZWZpbmUgR05UTUFQX2hvc3Rf
bWFwICAgICAgICAgKDE8PF9HTlRNQVBfaG9zdF9tYXApCi0gLyogQWNjZXNzZXMgdG8gdGhlIGdy
YW50ZWQgZnJhbWUgd2lsbCBiZSByZXN0cmljdGVkIHRvIHJlYWQtb25seSBhY2Nlc3MuICovCi0j
ZGVmaW5lIF9HTlRNQVBfcmVhZG9ubHkgICAgICAgICgyKQotI2RlZmluZSBHTlRNQVBfcmVhZG9u
bHkgICAgICAgICAoMTw8X0dOVE1BUF9yZWFkb25seSkKLSAvKgotICAqIEdOVE1BUF9ob3N0X21h
cCBzdWJmbGFnOgotICAqICAwID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIG9ubHkgYnkg
dGhlIGd1ZXN0IE9TLgotICAqICAxID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIGJ5IGd1
ZXN0IE9TICsgY3VycmVudCBhcHBsaWNhdGlvbi4KLSAgKi8KLSNkZWZpbmUgX0dOVE1BUF9hcHBs
aWNhdGlvbl9tYXAgKDMpCi0jZGVmaW5lIEdOVE1BUF9hcHBsaWNhdGlvbl9tYXAgICgxPDxfR05U
TUFQX2FwcGxpY2F0aW9uX21hcCkKLQotIC8qCi0gICogR05UTUFQX2NvbnRhaW5zX3B0ZSBzdWJm
bGFnOgotICAqICAwID0+IFRoaXMgbWFwIHJlcXVlc3QgY29udGFpbnMgYSBob3N0IHZpcnR1YWwg
YWRkcmVzcy4KLSAgKiAgMSA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIHRoZSBtYWNoaW5l
IGFkZGVzcyBvZiB0aGUgUFRFIHRvIHVwZGF0ZS4KLSAgKi8KLSNkZWZpbmUgX0dOVE1BUF9jb250
YWluc19wdGUgICAgKDQpCi0jZGVmaW5lIEdOVE1BUF9jb250YWluc19wdGUgICAgICgxPDxfR05U
TUFQX2NvbnRhaW5zX3B0ZSkKLQotI2RlZmluZSBfR05UTUFQX2Nhbl9mYWlsICAgICAgICAoNSkK
LSNkZWZpbmUgR05UTUFQX2Nhbl9mYWlsICAgICAgICAgKDE8PF9HTlRNQVBfY2FuX2ZhaWwpCi0K
LS8qCi0gKiBCaXRzIHRvIGJlIHBsYWNlZCBpbiBndWVzdCBrZXJuZWwgYXZhaWxhYmxlIFBURSBi
aXRzIChhcmNoaXRlY3R1cmUKLSAqIGRlcGVuZGVudDsgb25seSBzdXBwb3J0ZWQgd2hlbiBYRU5G
RUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyBpcyBzZXQpLgotICovCi0jZGVmaW5lIF9HTlRNQVBf
Z3Vlc3RfYXZhaWwwICAgICgxNikKLSNkZWZpbmUgR05UTUFQX2d1ZXN0X2F2YWlsX21hc2sgKCh1
aW50MzJfdCl+MCA8PCBfR05UTUFQX2d1ZXN0X2F2YWlsMCkKLQotLyoKLSAqIFZhbHVlcyBmb3Ig
ZXJyb3Igc3RhdHVzIHJldHVybnMuIEFsbCBlcnJvcnMgYXJlIC12ZS4KLSAqLwotLyogYCBlbnVt
IGdyYW50X3N0YXR1cyB7ICovCi0jZGVmaW5lIEdOVFNUX29rYXkgICAgICAgICAgICAgKDApICAv
KiBOb3JtYWwgcmV0dXJuLiAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNU
X2dlbmVyYWxfZXJyb3IgICAgKC0xKSAvKiBHZW5lcmFsIHVuZGVmaW5lZCBlcnJvci4gICAgICAg
ICAgICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9kb21haW4gICAgICAgKC0yKSAvKiBVbnJlY29n
bnNlZCBkb21haW4gaWQuICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9nbnRy
ZWYgICAgICAgKC0zKSAvKiBVbnJlY29nbmlzZWQgb3IgaW5hcHByb3ByaWF0ZSBnbnRyZWYuICov
Ci0jZGVmaW5lIEdOVFNUX2JhZF9oYW5kbGUgICAgICAgKC00KSAvKiBVbnJlY29nbmlzZWQgb3Ig
aW5hcHByb3ByaWF0ZSBoYW5kbGUuICovCi0jZGVmaW5lIEdOVFNUX2JhZF92aXJ0X2FkZHIgICAg
KC01KSAvKiBJbmFwcHJvcHJpYXRlIHZpcnR1YWwgYWRkcmVzcyB0byBtYXAuICovCi0jZGVmaW5l
IEdOVFNUX2JhZF9kZXZfYWRkciAgICAgKC02KSAvKiBJbmFwcHJvcHJpYXRlIGRldmljZSBhZGRy
ZXNzIHRvIHVubWFwLiovCi0jZGVmaW5lIEdOVFNUX25vX2RldmljZV9zcGFjZSAgKC03KSAvKiBP
dXQgb2Ygc3BhY2UgaW4gSS9PIE1NVS4gICAgICAgICAgICAgICovCi0jZGVmaW5lIEdOVFNUX3Bl
cm1pc3Npb25fZGVuaWVkICgtOCkgLyogTm90IGVub3VnaCBwcml2aWxlZ2UgZm9yIG9wZXJhdGlv
bi4gICovCi0jZGVmaW5lIEdOVFNUX2JhZF9wYWdlICAgICAgICAgKC05KSAvKiBTcGVjaWZpZWQg
cGFnZSB3YXMgaW52YWxpZCBmb3Igb3AuICAgICovCi0jZGVmaW5lIEdOVFNUX2JhZF9jb3B5X2Fy
ZyAgICAoLTEwKSAvKiBjb3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5LiAgICovCi0j
ZGVmaW5lIEdOVFNUX2FkZHJlc3NfdG9vX2JpZyAoLTExKSAvKiB0cmFuc2ZlciBwYWdlIGFkZHJl
c3MgdG9vIGxhcmdlLiAgICAgICovCi0jZGVmaW5lIEdOVFNUX2VhZ2FpbiAgICAgICAgICAoLTEy
KSAvKiBPcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2Fpbi4gICAgICAgICovCi0vKiBgIH0gKi8K
LQotI2RlZmluZSBHTlRUQUJPUF9lcnJvcl9tc2dzIHsgICAgICAgICAgICAgICAgICAgXAotICAg
ICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJ1bmRl
ZmluZWQgZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJ1bnJlY29nbmlz
ZWQgZG9tYWluIGlkIiwgICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIGdyYW50IHJl
ZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIG1hcHBpbmcgaGFuZGxl
IiwgICAgICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIHZpcnR1YWwgYWRkcmVzcyIsICAg
ICAgICAgICAgICAgICAgXAotICAgICJpbnZhbGlkIGRldmljZSBhZGRyZXNzIiwgICAgICAgICAg
ICAgICAgICAgXAotICAgICJubyBzcGFyZSB0cmFuc2xhdGlvbiBzbG90IGluIHRoZSBJL08gTU1V
IiwgXAotICAgICJwZXJtaXNzaW9uIGRlbmllZCIsICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICJiYWQgcGFnZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJj
b3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5IiwgICAgICAgXAotICAgICJwYWdlIGFk
ZHJlc3Mgc2l6ZSB0b28gbGFyZ2UiLCAgICAgICAgICAgICAgXAotICAgICJvcGVyYXRpb24gbm90
IGRvbmU7IHRyeSBhZ2FpbiIgICAgICAgICAgICAgXAotfQotCi0jZW5kaWYgLyogX19YRU5fUFVC
TElDX0dSQU5UX1RBQkxFX0hfXyAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9k
ZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRh
Yi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuL2lvL25ldGlmLmggYi9pbmNsdWRlL3hlbi9pby9uZXRpZi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWEyZGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL2lvL25ldGlmLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotICogbmV0aWYuaAotICogCi0gKiBVbmlmaWVkIG5ldHdvcmstZGV2
aWNlIEkvTyBpbnRlcmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLgotICogCi0gKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICog
Q29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIEtlaXIgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfSU9fTkVUSUZfSF9fCi0jZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19ORVRJRl9IX18K
LQotI2luY2x1ZGUgInJpbmcuaCIKLSNpbmNsdWRlICIuLi9ncmFudF90YWJsZS5oIgotCi0vKgot
ICogT2xkZXIgaW1wbGVtZW50YXRpb24gb2YgWGVuIG5ldHdvcmsgZnJvbnRlbmQgLyBiYWNrZW5k
IGhhcyBhbgotICogaW1wbGljaXQgZGVwZW5kZW5jeSBvbiB0aGUgTUFYX1NLQl9GUkFHUyBhcyB0
aGUgbWF4aW11bSBudW1iZXIgb2YKLSAqIHJpbmcgc2xvdHMgYSBza2IgY2FuIHVzZS4gTmV0ZnJv
bnQgLyBuZXRiYWNrIG1heSBub3Qgd29yayBhcwotICogZXhwZWN0ZWQgd2hlbiBmcm9udGVuZCBh
bmQgYmFja2VuZCBoYXZlIGRpZmZlcmVudCBNQVhfU0tCX0ZSQUdTLgotICoKLSAqIEEgYmV0dGVy
IGFwcHJvYWNoIGlzIHRvIGFkZCBtZWNoYW5pc20gZm9yIG5ldGZyb250IC8gbmV0YmFjayB0bwot
ICogbmVnb3RpYXRlIHRoaXMgdmFsdWUuIEhvd2V2ZXIgd2UgY2Fubm90IGZpeCBhbGwgcG9zc2li
bGUKLSAqIGZyb250ZW5kcywgc28gd2UgbmVlZCB0byBkZWZpbmUgYSB2YWx1ZSB3aGljaCBzdGF0
ZXMgdGhlIG1pbmltdW0KLSAqIHNsb3RzIGJhY2tlbmQgbXVzdCBzdXBwb3J0LgotICoKLSAqIFRo
ZSBtaW5pbXVtIHZhbHVlIGRlcml2ZXMgZnJvbSBvbGRlciBMaW51eCBrZXJuZWwncyBNQVhfU0tC
X0ZSQUdTCi0gKiAoMTgpLCB3aGljaCBpcyBwcm92ZWQgdG8gd29yayB3aXRoIG1vc3QgZnJvbnRl
bmRzLiBBbnkgbmV3IGJhY2tlbmQKLSAqIHdoaWNoIGRvZXNuJ3QgbmVnb3RpYXRlIHdpdGggZnJv
bnRlbmQgc2hvdWxkIGV4cGVjdCBmcm9udGVuZCB0bwotICogc2VuZCBhIHZhbGlkIHBhY2tldCB1
c2luZyBzbG90cyB1cCB0byB0aGlzIHZhbHVlLgotICovCi0jZGVmaW5lIFhFTl9ORVRJRl9OUl9T
TE9UU19NSU4gMTgKLQotLyoKLSAqIE5vdGlmaWNhdGlvbnMgYWZ0ZXIgZW5xdWV1aW5nIGFueSB0
eXBlIG9mIG1lc3NhZ2Ugc2hvdWxkIGJlIGNvbmRpdGlvbmFsIG9uCi0gKiB0aGUgYXBwcm9wcmlh
dGUgcmVxX2V2ZW50IG9yIHJzcF9ldmVudCBmaWVsZCBpbiB0aGUgc2hhcmVkIHJpbmcuCi0gKiBJ
ZiB0aGUgY2xpZW50IHNlbmRzIG5vdGlmaWNhdGlvbiBmb3IgcnggcmVxdWVzdHMgdGhlbiBpdCBz
aG91bGQgc3BlY2lmeQotICogZmVhdHVyZSAnZmVhdHVyZS1yeC1ub3RpZnknIHZpYSB4ZW5idXMu
IE90aGVyd2lzZSB0aGUgYmFja2VuZCB3aWxsIGFzc3VtZQotICogdGhhdCBpdCBjYW5ub3Qgc2Fm
ZWx5IHF1ZXVlIHBhY2tldHMgKGFzIGl0IG1heSBub3QgYmUga2lja2VkIHRvIHNlbmQgdGhlbSku
Ci0gKi8KLQotLyoKLSAqICJmZWF0dXJlLXNwbGl0LWV2ZW50LWNoYW5uZWxzIiBpcyBpbnRyb2R1
Y2VkIHRvIHNlcGFyYXRlIGd1ZXN0IFRYCi0gKiBhbmQgUlggbm90aWZpY2F0aW9uLiBCYWNrZW5k
IGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlIG9yCi0gKiBhZHZlcnRpc2VzIGl0
IHZpYSB4ZW5zdG9yZSBhcyAwIChkaXNhYmxlZCkgb3IgMSAoZW5hYmxlZCkuCi0gKgotICogVG8g
bWFrZSB1c2Ugb2YgdGhpcyBmZWF0dXJlLCBmcm9udGVuZCBzaG91bGQgYWxsb2NhdGUgdHdvIGV2
ZW50Ci0gKiBjaGFubmVscyBmb3IgVFggYW5kIFJYLCBhZHZlcnRpc2UgdGhlbSB0byBiYWNrZW5k
IGFzCi0gKiAiZXZlbnQtY2hhbm5lbC10eCIgYW5kICJldmVudC1jaGFubmVsLXJ4IiByZXNwZWN0
aXZlbHkuIElmIGZyb250ZW5kCi0gKiBkb2Vzbid0IHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZSwg
aXQganVzdCB3cml0ZXMgImV2ZW50LWNoYW5uZWwiCi0gKiBub2RlIGFzIGJlZm9yZS4KLSAqLwot
Ci0vKgotICogVGhpcyBpcyB0aGUgJ3dpcmUnIGZvcm1hdCBmb3IgcGFja2V0czoKLSAqICBSZXF1
ZXN0IDE6IG5ldGlmX3R4X3JlcXVlc3QgLS0gTkVUVFhGXyogKGFueSBmbGFncykKLSAqIFtSZXF1
ZXN0IDI6IG5ldGlmX3R4X2V4dHJhXSAgKG9ubHkgaWYgcmVxdWVzdCAxIGhhcyBORVRUWEZfZXh0
cmFfaW5mbykKLSAqIFtSZXF1ZXN0IDM6IG5ldGlmX3R4X2V4dHJhXSAgKG9ubHkgaWYgcmVxdWVz
dCAyIGhhcyBYRU5fTkVUSUZfRVhUUkFfTU9SRSkKLSAqICBSZXF1ZXN0IDQ6IG5ldGlmX3R4X3Jl
cXVlc3QgLS0gTkVUVFhGX21vcmVfZGF0YQotICogIFJlcXVlc3QgNTogbmV0aWZfdHhfcmVxdWVz
dCAtLSBORVRUWEZfbW9yZV9kYXRhCi0gKiAgLi4uCi0gKiAgUmVxdWVzdCBOOiBuZXRpZl90eF9y
ZXF1ZXN0IC0tIDAKLSAqLwotCi0vKiBQcm90b2NvbCBjaGVja3N1bSBmaWVsZCBpcyBibGFuayBp
biB0aGUgcGFja2V0IChoYXJkd2FyZSBvZmZsb2FkKT8gKi8KLSNkZWZpbmUgX05FVFRYRl9jc3Vt
X2JsYW5rICAgICAoMCkKLSNkZWZpbmUgIE5FVFRYRl9jc3VtX2JsYW5rICAgICAoMVU8PF9ORVRU
WEZfY3N1bV9ibGFuaykKLQotLyogUGFja2V0IGRhdGEgaGFzIGJlZW4gdmFsaWRhdGVkIGFnYWlu
c3QgcHJvdG9jb2wgY2hlY2tzdW0uICovCi0jZGVmaW5lIF9ORVRUWEZfZGF0YV92YWxpZGF0ZWQg
KDEpCi0jZGVmaW5lICBORVRUWEZfZGF0YV92YWxpZGF0ZWQgKDFVPDxfTkVUVFhGX2RhdGFfdmFs
aWRhdGVkKQotCi0vKiBQYWNrZXQgY29udGludWVzIGluIHRoZSBuZXh0IHJlcXVlc3QgZGVzY3Jp
cHRvci4gKi8KLSNkZWZpbmUgX05FVFRYRl9tb3JlX2RhdGEgICAgICAoMikKLSNkZWZpbmUgIE5F
VFRYRl9tb3JlX2RhdGEgICAgICAoMVU8PF9ORVRUWEZfbW9yZV9kYXRhKQotCi0vKiBQYWNrZXQg
dG8gYmUgZm9sbG93ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4gKi8KLSNkZWZpbmUgX05FVFRY
Rl9leHRyYV9pbmZvICAgICAoMykKLSNkZWZpbmUgIE5FVFRYRl9leHRyYV9pbmZvICAgICAoMVU8
PF9ORVRUWEZfZXh0cmFfaW5mbykKLQotI2RlZmluZSBYRU5fTkVUSUZfTUFYX1RYX1NJWkUgMHhG
RkZGCi1zdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdCB7Ci0gICAgZ3JhbnRfcmVmX3QgZ3JlZjsgICAg
ICAvKiBSZWZlcmVuY2UgdG8gYnVmZmVyIHBhZ2UgKi8KLSAgICB1aW50MTZfdCBvZmZzZXQ7ICAg
ICAgIC8qIE9mZnNldCB3aXRoaW4gYnVmZmVyIHBhZ2UgKi8KLSAgICB1aW50MTZfdCBmbGFnczsg
ICAgICAgIC8qIE5FVFRYRl8qICovCi0gICAgdWludDE2X3QgaWQ7ICAgICAgICAgICAvKiBFY2hv
ZWQgaW4gcmVzcG9uc2UgbWVzc2FnZS4gKi8KLSAgICB1aW50MTZfdCBzaXplOyAgICAgICAgIC8q
IFBhY2tldCBzaXplIGluIGJ5dGVzLiAgICAgICAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlm
X3R4X3JlcXVlc3QgbmV0aWZfdHhfcmVxdWVzdF90OwotCi0vKiBUeXBlcyBvZiBuZXRpZl9leHRy
YV9pbmZvIGRlc2NyaXB0b3JzLiAqLwotI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9OT05F
ICAgICAgKDApICAvKiBOZXZlciB1c2VkIC0gaW52YWxpZCAqLwotI2RlZmluZSBYRU5fTkVUSUZf
RVhUUkFfVFlQRV9HU08gICAgICAgKDEpICAvKiB1LmdzbyAqLwotI2RlZmluZSBYRU5fTkVUSUZf
RVhUUkFfVFlQRV9NQ0FTVF9BREQgKDIpICAvKiB1Lm1jYXN0ICovCi0jZGVmaW5lIFhFTl9ORVRJ
Rl9FWFRSQV9UWVBFX01DQVNUX0RFTCAoMykgIC8qIHUubWNhc3QgKi8KLSNkZWZpbmUgWEVOX05F
VElGX0VYVFJBX1RZUEVfTUFYICAgICAgICg0KQotCi0vKiBuZXRpZl9leHRyYV9pbmZvIGZsYWdz
LiAqLwotI2RlZmluZSBfWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAoMCkKLSNkZWZpbmUgWEVO
X05FVElGX0VYVFJBX0ZMQUdfTU9SRSAgKDFVPDxfWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSkK
LQotLyogR1NPIHR5cGVzIC0gb25seSBUQ1B2NCBjdXJyZW50bHkgc3VwcG9ydGVkLiAqLwotI2Rl
ZmluZSBYRU5fTkVUSUZfR1NPX1RZUEVfVENQVjQgICAgICAgICgxKQotCi0vKgotICogVGhpcyBz
dHJ1Y3R1cmUgbmVlZHMgdG8gZml0IHdpdGhpbiBib3RoIG5ldGlmX3R4X3JlcXVlc3QgYW5kCi0g
KiBuZXRpZl9yeF9yZXNwb25zZSBmb3IgY29tcGF0aWJpbGl0eS4KLSAqLwotc3RydWN0IG5ldGlm
X2V4dHJhX2luZm8gewotICAgIHVpbnQ4X3QgdHlwZTsgIC8qIFhFTl9ORVRJRl9FWFRSQV9UWVBF
XyogKi8KLSAgICB1aW50OF90IGZsYWdzOyAvKiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qICovCi0K
LSAgICB1bmlvbiB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIFhFTl9ORVRJRl9FWFRSQV9UWVBF
X0dTTzoKLSAgICAgICAgICovCi0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvKgotICAg
ICAgICAgICAgICogTWF4aW11bSBwYXlsb2FkIHNpemUgb2YgZWFjaCBzZWdtZW50LiBGb3IgZXhh
bXBsZSwgZm9yIFRDUCB0aGlzCi0gICAgICAgICAgICAgKiBpcyBqdXN0IHRoZSBwYXRoIE1TUy4K
LSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdWludDE2X3Qgc2l6ZTsKLQotICAgICAgICAg
ICAgLyoKLSAgICAgICAgICAgICAqIEdTTyB0eXBlLiBUaGlzIGRldGVybWluZXMgdGhlIHByb3Rv
Y29sIG9mIHRoZSBwYWNrZXQgYW5kIGFueQotICAgICAgICAgICAgICogZXh0cmEgZmVhdHVyZXMg
cmVxdWlyZWQgdG8gc2VnbWVudCB0aGUgcGFja2V0IHByb3Blcmx5LgotICAgICAgICAgICAgICov
Ci0gICAgICAgICAgICB1aW50OF90IHR5cGU7IC8qIFhFTl9ORVRJRl9HU09fVFlQRV8qICovCi0K
LSAgICAgICAgICAgIC8qIEZ1dHVyZSBleHBhbnNpb24uICovCi0gICAgICAgICAgICB1aW50OF90
IHBhZDsKLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEdTTyBmZWF0dXJlcy4gVGhp
cyBzcGVjaWZpZXMgYW55IGV4dHJhIEdTTyBmZWF0dXJlcyByZXF1aXJlZAotICAgICAgICAgICAg
ICogdG8gcHJvY2VzcyB0aGlzIHBhY2tldCwgc3VjaCBhcyBFQ04gc3VwcG9ydCBmb3IgVENQdjQu
Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHVpbnQxNl90IGZlYXR1cmVzOyAvKiBYRU5f
TkVUSUZfR1NPX0ZFQVRfKiAqLwotICAgICAgICB9IGdzbzsKLQotICAgICAgICAvKgotICAgICAg
ICAgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF97QURELERFTH06Ci0gICAgICAgICAqIEJh
Y2tlbmQgYWR2ZXJ0aXNlcyBhdmFpbGFiaWxpdHkgdmlhICdmZWF0dXJlLW11bHRpY2FzdC1jb250
cm9sJwotICAgICAgICAgKiB4ZW5idXMgbm9kZSBjb250YWluaW5nIHZhbHVlICcxJy4KLSAgICAg
ICAgICogRnJvbnRlbmQgcmVxdWVzdHMgdGhpcyBmZWF0dXJlIGJ5IGFkdmVydGlzaW5nCi0gICAg
ICAgICAqICdyZXF1ZXN0LW11bHRpY2FzdC1jb250cm9sJyB4ZW5idXMgbm9kZSBjb250YWluaW5n
IHZhbHVlICcxJy4KLSAgICAgICAgICogSWYgbXVsdGljYXN0IGNvbnRyb2wgaXMgcmVxdWVzdGVk
IHRoZW4gbXVsdGljYXN0IGZsb29kaW5nIGlzCi0gICAgICAgICAqIGRpc2FibGVkIGFuZCB0aGUg
ZnJvbnRlbmQgbXVzdCBleHBsaWNpdGx5IHJlZ2lzdGVyIGl0cyBpbnRlcmVzdAotICAgICAgICAg
KiBpbiBtdWx0aWNhc3QgZ3JvdXBzIHVzaW5nIGR1bW15IHRyYW5zbWl0IHJlcXVlc3RzIGNvbnRh
aW5pbmcKLSAgICAgICAgICogTUNBU1Rfe0FERCxERUx9IGV4dHJhLWluZm8gZnJhZ21lbnRzLgot
ICAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWRkcls2
XTsgLyogQWRkcmVzcyB0byBhZGQvcmVtb3ZlLiAqLwotICAgICAgICB9IG1jYXN0OwotCi0gICAg
ICAgIHVpbnQxNl90IHBhZFszXTsKLSAgICB9IHU7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbmV0aWZf
ZXh0cmFfaW5mbyBuZXRpZl9leHRyYV9pbmZvX3Q7Ci0KLXN0cnVjdCBuZXRpZl90eF9yZXNwb25z
ZSB7Ci0gICAgdWludDE2X3QgaWQ7Ci0gICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiBORVRJ
Rl9SU1BfKiAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlmX3R4X3Jlc3BvbnNlIG5ldGlmX3R4
X3Jlc3BvbnNlX3Q7Ci0KLXN0cnVjdCBuZXRpZl9yeF9yZXF1ZXN0IHsKLSAgICB1aW50MTZfdCAg
ICBpZDsgICAgICAgIC8qIEVjaG9lZCBpbiByZXNwb25zZSBtZXNzYWdlLiAgICAgICAgKi8KLSAg
ICBncmFudF9yZWZfdCBncmVmOyAgICAgIC8qIFJlZmVyZW5jZSB0byBpbmNvbWluZyBncmFudGVk
IGZyYW1lICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfcnhfcmVxdWVzdCBuZXRpZl9yeF9y
ZXF1ZXN0X3Q7Ci0KLS8qIFBhY2tldCBkYXRhIGhhcyBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHBy
b3RvY29sIGNoZWNrc3VtLiAqLwotI2RlZmluZSBfTkVUUlhGX2RhdGFfdmFsaWRhdGVkICgwKQot
I2RlZmluZSAgTkVUUlhGX2RhdGFfdmFsaWRhdGVkICgxVTw8X05FVFJYRl9kYXRhX3ZhbGlkYXRl
ZCkKLQotLyogUHJvdG9jb2wgY2hlY2tzdW0gZmllbGQgaXMgYmxhbmsgaW4gdGhlIHBhY2tldCAo
aGFyZHdhcmUgb2ZmbG9hZCk/ICovCi0jZGVmaW5lIF9ORVRSWEZfY3N1bV9ibGFuayAgICAgKDEp
Ci0jZGVmaW5lICBORVRSWEZfY3N1bV9ibGFuayAgICAgKDFVPDxfTkVUUlhGX2NzdW1fYmxhbmsp
Ci0KLS8qIFBhY2tldCBjb250aW51ZXMgaW4gdGhlIG5leHQgcmVxdWVzdCBkZXNjcmlwdG9yLiAq
LwotI2RlZmluZSBfTkVUUlhGX21vcmVfZGF0YSAgICAgICgyKQotI2RlZmluZSAgTkVUUlhGX21v
cmVfZGF0YSAgICAgICgxVTw8X05FVFJYRl9tb3JlX2RhdGEpCi0KLS8qIFBhY2tldCB0byBiZSBm
b2xsb3dlZCBieSBleHRyYSBkZXNjcmlwdG9yKHMpLiAqLwotI2RlZmluZSBfTkVUUlhGX2V4dHJh
X2luZm8gICAgICgzKQotI2RlZmluZSAgTkVUUlhGX2V4dHJhX2luZm8gICAgICgxVTw8X05FVFJY
Rl9leHRyYV9pbmZvKQotCi1zdHJ1Y3QgbmV0aWZfcnhfcmVzcG9uc2UgewotICAgIHVpbnQxNl90
IGlkOwotICAgIHVpbnQxNl90IG9mZnNldDsgICAgICAgLyogT2Zmc2V0IGluIHBhZ2Ugb2Ygc3Rh
cnQgb2YgcmVjZWl2ZWQgcGFja2V0ICAqLwotICAgIHVpbnQxNl90IGZsYWdzOyAgICAgICAgLyog
TkVUUlhGXyogKi8KLSAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgIC8qIC12ZTogTkVUSUZfUlNQ
XyogOyArdmU6IFJ4J2VkIHBrdCBzaXplLiAqLwotfTsKLXR5cGVkZWYgc3RydWN0IG5ldGlmX3J4
X3Jlc3BvbnNlIG5ldGlmX3J4X3Jlc3BvbnNlX3Q7Ci0KLS8qCi0gKiBHZW5lcmF0ZSBuZXRpZiBy
aW5nIHN0cnVjdHVyZXMgYW5kIHR5cGVzLgotICovCi0KLURFRklORV9SSU5HX1RZUEVTKG5ldGlm
X3R4LCBzdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdCwgc3RydWN0IG5ldGlmX3R4X3Jlc3BvbnNlKTsK
LURFRklORV9SSU5HX1RZUEVTKG5ldGlmX3J4LCBzdHJ1Y3QgbmV0aWZfcnhfcmVxdWVzdCwgc3Ry
dWN0IG5ldGlmX3J4X3Jlc3BvbnNlKTsKLQotI2RlZmluZSBORVRJRl9SU1BfRFJPUFBFRCAgICAg
ICAgIC0yCi0jZGVmaW5lIE5FVElGX1JTUF9FUlJPUiAgICAgICAgICAgLTEKLSNkZWZpbmUgTkVU
SUZfUlNQX09LQVkgICAgICAgICAgICAgMAotLyogTm8gcmVzcG9uc2U6IHVzZWQgZm9yIGF1eGls
aWFyeSByZXF1ZXN0cyAoZS5nLiwgbmV0aWZfdHhfZXh0cmEpLiAqLwotI2RlZmluZSBORVRJRl9S
U1BfTlVMTCAgICAgICAgICAgICAxCi0KLSNlbmRpZgotCi0vKgotICogTG9jYWwgdmFyaWFibGVz
OgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6
IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0g
Ki8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2lvL3JpbmcuaCBiL2luY2x1ZGUveGVuL2lvL3Jp
bmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4NjkzZi4uMDAwMDAwMAotLS0g
YS9pbmNsdWRlL3hlbi9pby9yaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAot
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotICogcmluZy5oCi0gKiAKLSAqIFNoYXJlZCBwcm9kdWNl
ci1jb25zdW1lciByaW5nIG1hY3Jvcy4KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0g
KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAq
Ci0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogVGltIERlZWdhbiBhbmQg
QW5kcmV3IFdhcmZpZWxkIE5vdmVtYmVyIDIwMDQuCi0gKi8KLQotI2lmbmRlZiBfX1hFTl9QVUJM
SUNfSU9fUklOR19IX18KLSNkZWZpbmUgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCi0KLSNpbmNs
dWRlICIuLi94ZW4tY29tcGF0LmgiCi0KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwg
MHgwMDAzMDIwOAotI2RlZmluZSB4ZW5fbWIoKSAgbWIoKQotI2RlZmluZSB4ZW5fcm1iKCkgcm1i
KCkKLSNkZWZpbmUgeGVuX3dtYigpIHdtYigpCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBp
bnQgUklOR19JRFg7Ci0KLS8qIFJvdW5kIGEgMzItYml0IHVuc2lnbmVkIGNvbnN0YW50IGRvd24g
dG8gdGhlIG5lYXJlc3QgcG93ZXIgb2YgdHdvLiAqLwotI2RlZmluZSBfX1JEMihfeCkgICgoKF94
KSAmIDB4MDAwMDAwMDIpID8gMHgyICAgICAgICAgICAgICAgICAgOiAoKF94KSAmIDB4MSkpCi0j
ZGVmaW5lIF9fUkQ0KF94KSAgKCgoX3gpICYgMHgwMDAwMDAwYykgPyBfX1JEMigoX3gpPj4yKTw8
MiAgICA6IF9fUkQyKF94KSkKLSNkZWZpbmUgX19SRDgoX3gpICAoKChfeCkgJiAweDAwMDAwMGYw
KSA/IF9fUkQ0KChfeCk+PjQpPDw0ICAgIDogX19SRDQoX3gpKQotI2RlZmluZSBfX1JEMTYoX3gp
ICgoKF94KSAmIDB4MDAwMGZmMDApID8gX19SRDgoKF94KT4+OCk8PDggICAgOiBfX1JEOChfeCkp
Ci0jZGVmaW5lIF9fUkQzMihfeCkgKCgoX3gpICYgMHhmZmZmMDAwMCkgPyBfX1JEMTYoKF94KT4+
MTYpPDwxNiA6IF9fUkQxNihfeCkpCi0KLS8qCi0gKiBDYWxjdWxhdGUgc2l6ZSBvZiBhIHNoYXJl
ZCByaW5nLCBnaXZlbiB0aGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUKLSAqIHJpbmcg
YW5kIGluZGV4ZXMgKF9zeiksIGFuZCB0aGUgbmFtZSB0YWcgb2YgdGhlIHJlcXVlc3QvcmVzcG9u
c2Ugc3RydWN0dXJlLgotICogQSByaW5nIGNvbnRhaW5zIGFzIG1hbnkgZW50cmllcyBhcyB3aWxs
IGZpdCwgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IAotICogcG93ZXIgb2YgdHdvIChzbyB3
ZSBjYW4gbWFzayB3aXRoIChzaXplLTEpIHRvIGxvb3AgYXJvdW5kKS4KLSAqLwotI2RlZmluZSBf
X0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCi0gICAgKF9fUkQzMigoKF9zeikgLSBvZmZzZXRv
ZihzdHJ1Y3QgX3MjI19zcmluZywgcmluZykpIC8gXAotCSAgICBzaXplb2YoKChzdHJ1Y3QgX3Mj
I19zcmluZyAqKTApLT5yaW5nWzBdKSkpCi0vKgotICogVGhlIHNhbWUgZm9yIHBhc3NpbmcgaW4g
YW4gYWN0dWFsIHBvaW50ZXIgaW5zdGVhZCBvZiBhIG5hbWUgdGFnLgotICovCi0jZGVmaW5lIF9f
UklOR19TSVpFKF9zLCBfc3opIFwKLSAgICAoX19SRDMyKCgoX3N6KSAtIChMT05HX1BUUikoX3Mp
LT5yaW5nICsgKExPTkdfUFRSKShfcykpIC8gc2l6ZW9mKChfcyktPnJpbmdbMF0pKSkKLQotLyoK
LSAqIE1hY3JvcyB0byBtYWtlIHRoZSBjb3JyZWN0IEMgZGF0YXR5cGVzIGZvciBhIG5ldyBraW5k
IG9mIHJpbmcuCi0gKiAKLSAqIFRvIG1ha2UgYSBuZXcgcmluZyBkYXRhdHlwZSwgeW91IG5lZWQg
dG8gaGF2ZSB0d28gbWVzc2FnZSBzdHJ1Y3R1cmVzLAotICogbGV0J3Mgc2F5IHJlcXVlc3RfdCwg
YW5kIHJlc3BvbnNlX3QgYWxyZWFkeSBkZWZpbmVkLgotICoKLSAqIEluIGEgaGVhZGVyIHdoZXJl
IHlvdSB3YW50IHRoZSByaW5nIGRhdGF0eXBlIGRlY2xhcmVkLCB5b3UgdGhlbiBkbzoKLSAqCi0g
KiAgICAgREVGSU5FX1JJTkdfVFlQRVMobXl0YWcsIHJlcXVlc3RfdCwgcmVzcG9uc2VfdCk7Ci0g
KgotICogVGhlc2UgZXhwYW5kIG91dCB0byBnaXZlIHlvdSBhIHNldCBvZiB0eXBlcywgYXMgeW91
IGNhbiBzZWUgYmVsb3cuCi0gKiBUaGUgbW9zdCBpbXBvcnRhbnQgb2YgdGhlc2UgYXJlOgotICog
Ci0gKiAgICAgbXl0YWdfc3JpbmdfdCAgICAgIC0gVGhlIHNoYXJlZCByaW5nLgotICogICAgIG15
dGFnX2Zyb250X3JpbmdfdCAtIFRoZSAnZnJvbnQnIGhhbGYgb2YgdGhlIHJpbmcuCi0gKiAgICAg
bXl0YWdfYmFja19yaW5nX3QgIC0gVGhlICdiYWNrJyBoYWxmIG9mIHRoZSByaW5nLgotICoKLSAq
IFRvIGluaXRpYWxpemUgYSByaW5nIGluIHlvdXIgY29kZSB5b3UgbmVlZCB0byBrbm93IHRoZSBs
b2NhdGlvbiBhbmQgc2l6ZQotICogb2YgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSAoUEFHRV9TSVpF
LCBmb3IgaW5zdGFuY2UpLiBUbyBpbml0aWFsaXNlCi0gKiB0aGUgZnJvbnQgaGFsZjoKLSAqCi0g
KiAgICAgbXl0YWdfZnJvbnRfcmluZ190IGZyb250X3Jpbmc7Ci0gKiAgICAgU0hBUkVEX1JJTkdf
SU5JVCgobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlKTsKLSAqICAgICBGUk9OVF9SSU5HX0lO
SVQoJmZyb250X3JpbmcsIChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2UsIFBBR0VfU0laRSk7
Ci0gKgotICogSW5pdGlhbGl6aW5nIHRoZSBiYWNrIGZvbGxvd3Mgc2ltaWxhcmx5IChub3RlIHRo
YXQgb25seSB0aGUgZnJvbnQKLSAqIGluaXRpYWxpemVzIHRoZSBzaGFyZWQgcmluZyk6Ci0gKgot
ICogICAgIG15dGFnX2JhY2tfcmluZ190IGJhY2tfcmluZzsKLSAqICAgICBCQUNLX1JJTkdfSU5J
VCgmYmFja19yaW5nLCAobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlLCBQQUdFX1NJWkUpOwot
ICovCi0KLSNkZWZpbmUgREVGSU5FX1JJTkdfVFlQRVMoX19uYW1lLCBfX3JlcV90LCBfX3JzcF90
KSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qIFNoYXJlZCByaW5n
IGVudHJ5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLXVuaW9uIF9fbmFtZSMjX3NyaW5nX2VudHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX3JlcV90IHJlcTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX3JzcF90IHJzcDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qIFNoYXJlZCByaW5nIHBhZ2Ug
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0
cnVjdCBfX25hbWUjI19zcmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfcHJvZCwgcmVxX2V2ZW50OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByc3BfcHJvZCwg
cnNwX2V2ZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1
bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ4X3Qgc21hcnRw
b2xsX2FjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
fSBuZXRpZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ4X3QgbXNnOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSB0
YXBpZl91c2VyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgdWludDhfdCBwdnRfcGFkWzRdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHByaXZhdGU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1aW50OF90IF9f
cGFkWzQ0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSByaW5nWzFdOyAvKiB2YXJpYWJsZS1s
ZW5ndGggKi8gICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LS8qICJGcm9udCIgZW5kJ3MgcHJpdmF0ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfcHJv
ZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBSSU5HX0lEWCByc3BfY29uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgX19uYW1lIyNfc3Jp
bmcgKnNyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qICJCYWNrIiBlbmQncyBwcml2YXRlIHZh
cmlhYmxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBf
X25hbWUjI19iYWNrX3JpbmcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBSSU5HX0lEWCByc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBSSU5HX0lEWCByZXFfY29uczsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1bnNpZ25l
ZCBpbnQgbnJfZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgKnNyaW5nOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLS8qIFN5bnRhY3RpYyBzdWdhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgc3RydWN0IF9fbmFtZSMjX3NyaW5nIF9fbmFt
ZSMjX3NyaW5nX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgc3RydWN0IF9f
bmFtZSMjX2Zyb250X3JpbmcgX19uYW1lIyNfZnJvbnRfcmluZ190OyAgICAgICAgICAgICAgIFwK
LXR5cGVkZWYgc3RydWN0IF9fbmFtZSMjX2JhY2tfcmluZyBfX25hbWUjI19iYWNrX3JpbmdfdAot
Ci0vKgotICogTWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgcmluZ3MuCi0gKiAKLSAqIEZST05UX1JJ
Tkdfd2hhdGV2ZXIgd29ya3Mgb24gdGhlICJmcm9udCBlbmQiIG9mIGEgcmluZzogaGVyZSAKLSAq
IHJlcXVlc3RzIGFyZSBwdXNoZWQgb24gdG8gdGhlIHJpbmcgYW5kIHJlc3BvbnNlcyB0YWtlbiBv
ZmYgaXQuCi0gKiAKLSAqIEJBQ0tfUklOR193aGF0ZXZlciB3b3JrcyBvbiB0aGUgImJhY2sgZW5k
IiBvZiBhIHJpbmc6IGhlcmUgCi0gKiByZXF1ZXN0cyBhcmUgdGFrZW4gb2ZmIHRoZSByaW5nIGFu
ZCByZXNwb25zZXMgcHV0IG9uLgotICogCi0gKiBOLkIuIHRoZXNlIG1hY3JvcyBkbyBOTyBJTlRF
UkxPQ0tTIE9SIEZMT1cgQ09OVFJPTC4gCi0gKiBUaGlzIGlzIE9LIGluIDEtZm9yLTEgcmVxdWVz
dC1yZXNwb25zZSBzaXR1YXRpb25zIHdoZXJlIHRoZSAKLSAqIHJlcXVlc3RvciAoZnJvbnQgZW5k
KSBuZXZlciBoYXMgbW9yZSB0aGFuIFJJTkdfU0laRSgpLTEKLSAqIG91dHN0YW5kaW5nIHJlcXVl
c3RzLgotICovCi0KLS8qIEluaXRpYWxpc2luZyBlbXB0eSByaW5ncyAqLwotI2RlZmluZSBTSEFS
RURfUklOR19JTklUKF9zKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIChfcyktPnJlcV9wcm9kICA9IChfcyktPnJzcF9wcm9kICA9IDA7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfcyktPnJlcV9ldmVudCA9IChfcyktPnJzcF9l
dmVudCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICh2b2lkKW1lbXNl
dCgoX3MpLT5wcml2YXRlLnB2dF9wYWQsIDAsIHNpemVvZigoX3MpLT5wcml2YXRlLnB2dF9wYWQp
KTsgXAotICAgICh2b2lkKW1lbXNldCgoX3MpLT5fX3BhZCwgMCwgc2l6ZW9mKChfcyktPl9fcGFk
KSk7ICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSgwKQotCi0jZGVmaW5lIEZST05UX1JJTkdf
SU5JVChfciwgX3MsIF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKF9yKS0+cmVxX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+cnNwX2NvbnMgPSAwOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+bnJfZW50cyA9IF9f
UklOR19TSVpFKF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
KF9yKS0+c3JpbmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lIEJBQ0tfUklOR19JTklUKF9yLCBf
cywgX19zaXplKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+
cnNwX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgKF9yKS0+cmVxX2NvbnMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+bnJfZW50cyA9IF9fUklOR19TSVpF
KF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+c3Jp
bmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi19IHdoaWxlICgwKQotCi0vKiBJbml0aWFsaXplIHRvIGV4aXN0aW5nIHNoYXJlZCBpbmRl
eGVzIC0tIGZvciByZWNvdmVyeSAqLwotI2RlZmluZSBGUk9OVF9SSU5HX0FUVEFDSChfciwgX3Ms
IF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnNyaW5n
ID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIChfciktPnJlcV9wcm9kX3B2dCA9IChfcyktPnJlcV9wcm9kOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnJzcF9jb25zID0gKF9zKS0+cnNwX3Byb2Q7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPm5yX2VudHMg
PSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
fSB3aGlsZSAoMCkKLQotI2RlZmluZSBCQUNLX1JJTkdfQVRUQUNIKF9yLCBfcywgX19zaXplKSBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPnNyaW5nID0gKF9zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChf
ciktPnJzcF9wcm9kX3B2dCA9IChfcyktPnJzcF9wcm9kOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIChfciktPnJlcV9jb25zID0gKF9zKS0+cmVxX3Byb2Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfciktPm5yX2VudHMgPSBfX1JJTkdf
U0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSAo
MCkKLQotLyogSG93IGJpZyBpcyB0aGlzIHJpbmc/ICovCi0jZGVmaW5lIFJJTkdfU0laRShfcikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
KChfciktPm5yX2VudHMpCi0KLS8qIE51bWJlciBvZiBmcmVlIHJlcXVlc3RzIChmb3IgdXNlIG9u
IGZyb250IHNpZGUgb25seSkuICovCi0jZGVmaW5lIFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKFJJTkdfU0laRShf
cikgLSAoKF9yKS0+cmVxX3Byb2RfcHZ0IC0gKF9yKS0+cnNwX2NvbnMpKQotCi0vKiBUZXN0IGlm
IHRoZXJlIGlzIGFuIGVtcHR5IHNsb3QgYXZhaWxhYmxlIG9uIHRoZSBmcm9udCByaW5nLgotICog
KFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZyb20gdGhlIGZyb250LiApCi0gKi8KLSNkZWZpbmUg
UklOR19GVUxMKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAoUklOR19GUkVFX1JFUVVFU1RTKF9yKSA9PSAwKQotCi0vKiBUZXN0IGlm
IHRoZXJlIGFyZSBvdXRzdGFuZGluZyBtZXNzYWdlcyB0byBiZSBwcm9jZXNzZWQgb24gYSByaW5n
LiAqLwotI2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFU1BPTlNFUyhfcikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoX3IpLT5zcmluZy0+cnNwX3Byb2QgLSAoX3Ip
LT5yc3BfY29ucykKLQotI2lmZGVmIF9fR05VQ19fCi0jZGVmaW5lIFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5z
aWduZWQgaW50IHJlcSA9IChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zOyAg
ICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IHJzcCA9IFJJTkdfU0laRShfcikgLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICgoX3IpLT5yZXFfY29ucyAtIChf
ciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVxIDwg
cnNwID8gcmVxIDogcnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi19KQotI2Vsc2UKLS8qIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRob3V0IHRoZSBuaWNl
IEdDQyAoeyAuLi4gfSkgc3ludGF4LiAqLwotI2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JF
UVVFU1RTKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoKChfcikt
PnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zKSA8ICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgKFJJTkdfU0laRShfcikgLSAoKF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3Bf
cHJvZF9wdnQpKSkgPyAgICAgICAgXAotICAgICAoKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9y
KS0+cmVxX2NvbnMpIDogICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoUklOR19TSVpF
KF9yKSAtICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCkpKQotI2VuZGlmCi0K
LS8qIERpcmVjdCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCByaW5nIGVsZW1lbnRzLCBieSBpbmRleC4g
Ki8KLSNkZWZpbmUgUklOR19HRVRfUkVRVUVTVChfciwgX2lkeCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAoJigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYg
KFJJTkdfU0laRShfcikgLSAxKSldLnJlcSkpCi0KLSNkZWZpbmUgUklOR19HRVRfUkVTUE9OU0Uo
X3IsIF9pZHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoJigo
X3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJzcCkpCi0K
LS8qIExvb3AgdGVybWluYXRpb24gY29uZGl0aW9uOiBXb3VsZCB0aGUgc3BlY2lmaWVkIGluZGV4
IG92ZXJmbG93IHRoZSByaW5nPyAqLwotI2RlZmluZSBSSU5HX1JFUVVFU1RfQ09OU19PVkVSRkxP
VyhfciwgX2NvbnMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgoKF9jb25zKSAt
IChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklOR19TSVpFKF9yKSkKLQotI2RlZmluZSBSSU5HX1BV
U0hfUkVRVUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHhlbl93bWIoKTsgLyogYmFjayBzZWVzIHJlcXVlc3RzIC9iZWZvcmUvIHVwZGF0ZWQg
cHJvZHVjZXIgaW5kZXggKi8gXAotICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9IChfciktPnJl
cV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSAoMCkKLQotI2Rl
ZmluZSBSSU5HX1BVU0hfUkVTUE9OU0VTKF9yKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNwcyAvYmVmb3Jl
LyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAotICAgIChfciktPnNyaW5nLT5yc3BfcHJv
ZCA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGls
ZSAoMCkKLQotLyoKLSAqIE5vdGlmaWNhdGlvbiBob2xkLW9mZiAocmVxX2V2ZW50IGFuZCByc3Bf
ZXZlbnQpOgotICogCi0gKiBXaGVuIHF1ZXVlaW5nIHJlcXVlc3RzIG9yIHJlc3BvbnNlcyBvbiBh
IHNoYXJlZCByaW5nLCBpdCBtYXkgbm90IGFsd2F5cyBiZQotICogbmVjZXNzYXJ5IHRvIG5vdGlm
eSB0aGUgcmVtb3RlIGVuZC4gRm9yIGV4YW1wbGUsIGlmIHJlcXVlc3RzIGFyZSBpbiBmbGlnaHQK
LSAqIGluIGEgYmFja2VuZCwgdGhlIGZyb250IG1heSBiZSBhYmxlIHRvIHF1ZXVlIGZ1cnRoZXIg
cmVxdWVzdHMgd2l0aG91dAotICogbm90aWZ5aW5nIHRoZSBiYWNrIChpZiB0aGUgYmFjayBjaGVj
a3MgZm9yIG5ldyByZXF1ZXN0cyB3aGVuIGl0IHF1ZXVlcwotICogcmVzcG9uc2VzKS4KLSAqIAot
ICogV2hlbiBlbnF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzOgotICogCi0gKiAgVXNlIFJJ
TkdfUFVTSF97UkVRVUVTVFMsUkVTUE9OU0VTfV9BTkRfQ0hFQ0tfTk9USUZZKCkuIFRoZSBzZWNv
bmQgYXJndW1lbnQKLSAqICBpcyBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVlIGluZGljYXRl
cyB0aGF0IHRoZSByZWNlaXZlciByZXF1aXJlcyBhbgotICogIGFzeW5jaHJvbm91cyBub3RpZmlj
YXRpb24uCi0gKiAKLSAqIEFmdGVyIGRlcXVldWluZyByZXF1ZXN0cyBvciByZXNwb25zZXMgKGJl
Zm9yZSBzbGVlcGluZyB0aGUgY29ubmVjdGlvbik6Ci0gKiAKLSAqICBVc2UgUklOR19GSU5BTF9D
SEVDS19GT1JfUkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoKS4K
LSAqICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgYm9vbGVhbiByZXR1cm4gdmFsdWUuIFRydWUg
aW5kaWNhdGVzIHRoYXQgdGhlcmUKLSAqICBhcmUgcGVuZGluZyBtZXNzYWdlcyBvbiB0aGUgcmlu
ZyAoaS5lLiwgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBwdXQKLSAqICB0byBzbGVlcCku
Ci0gKiAKLSAqICBUaGVzZSBtYWNyb3Mgd2lsbCBzZXQgdGhlIHJlcV9ldmVudC9yc3BfZXZlbnQg
ZmllbGQgdG8gdHJpZ2dlciBhCi0gKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5IG5leHQgbWVz
c2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bwotICogIGNyZWF0ZSBiYXRjaGVz
IG9mIHdvcmsgKGkuZS4sIG9ubHkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhZnRlciBzZXZlcmFs
Ci0gKiAgbWVzc2FnZXMgaGF2ZSBiZWVuIGVucXVldWVkKSB0aGVuIHlvdSB3aWxsIG5lZWQgdG8g
Y3JlYXRlIGEgY3VzdG9taXNlZAotICogIHZlcnNpb24gb2YgdGhlIEZJTkFMX0NIRUNLIG1hY3Jv
IGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlIGV2ZW50Ci0gKiAgZmllbGQgYXBwcm9w
cmlhdGVseS4KLSAqLwotCi0jZGVmaW5lIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hFQ0tfTk9U
SUZZKF9yLCBfbm90aWZ5KSBkbyB7ICAgICAgICAgICBcCi0gICAgUklOR19JRFggX19vbGQgPSAo
X3IpLT5zcmluZy0+cmVxX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
UklOR19JRFggX19uZXcgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVzdHMgL2JlZm9y
ZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyBcCi0gICAgKF9yKS0+c3JpbmctPnJlcV9wcm9k
ID0gX19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeGVu
X21iKCk7IC8qIGJhY2sgc2VlcyBuZXcgcmVxdWVzdHMgL2JlZm9yZS8gd2UgY2hlY2sgcmVxX2V2
ZW50ICovICBcCi0gICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmlu
Zy0+cmVxX2V2ZW50KSA8ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIChSSU5HX0lEWCko
X19uZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgw
KQotCi0jZGVmaW5lIFJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElGWShfciwgX25v
dGlmeSkgZG8geyAgICAgICAgICBcCi0gICAgUklOR19JRFggX19vbGQgPSAoX3IpLT5zcmluZy0+
cnNwX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUklOR19JRFggX19u
ZXcgPSAoX3IpLT5yc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgeGVuX3dtYigpOyAvKiBmcm9udCBzZWVzIHJlc3BzIC9iZWZvcmUvIHVwZGF0ZWQgcHJv
ZHVjZXIgaW5kZXggKi8gICBcCi0gICAgKF9yKS0+c3JpbmctPnJzcF9wcm9kID0gX19uZXc7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeGVuX21iKCk7IC8qIGZy
b250IHNlZXMgbmV3IHJlc3BzIC9iZWZvcmUvIHdlIGNoZWNrIHJzcF9ldmVudCAqLyAgICBcCi0g
ICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmluZy0+cnNwX2V2ZW50
KSA8ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIChSSU5HX0lEWCkoX19uZXcgLSBfX29s
ZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5l
IFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKF9yLCBfd29ya190b19kbykgZG8geyAgICAg
ICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVRVUVT
VFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKF93b3JrX3RvX2RvKSBicmVhazsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF9yKS0+
c3JpbmctPnJlcV9ldmVudCA9IChfciktPnJlcV9jb25zICsgMTsgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VO
Q09OU1VNRURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlICgwKQot
Ci0jZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUyhfciwgX3dvcmtfdG9fZG8p
IGRvIHsgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKF93b3JrX3RvX2Rv
KSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKF9yKS0+c3JpbmctPnJzcF9ldmVudCA9IChfciktPnJzcF9jb25zICsgMTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF93b3JrX3RvX2RvKSA9IFJJ
TkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCi19IHdo
aWxlICgwKQotCi0jZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fICovCi0KLS8qCi0g
KiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLXNldC1zdHlsZTogIkJTRCIKLSAq
IGMtYmFzaWMtb2Zmc2V0OiA0Ci0gKiB0YWItd2lkdGg6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6
IG5pbAotICogRW5kOgotICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9pby94ZW5idXMuaCBi
L2luY2x1ZGUveGVuL2lvL3hlbmJ1cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YTA1M2RmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUveGVuL2lvL3hlbmJ1cy5oCisrKyAvZGV2L251
bGwKQEAgLTEsODAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiB4ZW5idXMuaAot
ICoKLSAqIFhlbmJ1cyBwcm90b2NvbCBkZXRhaWxzLgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0bwotICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSAqIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vcgotICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAq
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIKLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUgWGVuU291cmNlIEx0ZC4KLSAqLwotCi0jaWZuZGVmIF9YRU5fUFVCTElDX0lP
X1hFTkJVU19ICi0jZGVmaW5lIF9YRU5fUFVCTElDX0lPX1hFTkJVU19ICi0KLS8qCi0gKiBUaGUg
c3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVuYnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11
bmljYXRpb24KLSAqIHN0YXR1cyBvZiBpbml0aWFsaXNhdGlvbiBhY3Jvc3MgdGhlIGJ1cy4gIFN0
YXRlcyBoZXJlIGltcGx5IG5vdGhpbmcgYWJvdXQKLSAqIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVj
dGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBrZXJuZWwncyBkZXZpY2UKLSAqIGxheWVy
cy4KLSAqLwotZW51bSB4ZW5idXNfc3RhdGUgewotICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAg
ICA9IDAsCi0KLSAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgPSAxLAotCi0gICAgLyoKLSAg
ICAgKiBJbml0V2FpdDogRmluaXNoZWQgZWFybHkgaW5pdGlhbGlzYXRpb24gYnV0IHdhaXRpbmcg
Zm9yIGluZm9ybWF0aW9uCi0gICAgICogZnJvbSB0aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMu
Ci0gICAgICovCi0gICAgWGVuYnVzU3RhdGVJbml0V2FpdCAgICAgID0gMiwKLQotICAgIC8qCi0g
ICAgICogSW5pdGlhbGlzZWQ6IFdhaXRpbmcgZm9yIGEgY29ubmVjdGlvbiBmcm9tIHRoZSBwZWVy
LgotICAgICAqLwotICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQgICA9IDMsCi0KLSAgICBYZW5i
dXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAotCi0gICAgLyoKLSAgICAgKiBDbG9zaW5nOiBUaGUg
ZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8gYW4gZXJyb3Igb3IgYW4gdW5wbHVnIGV2ZW50
LgotICAgICAqLwotICAgIFhlbmJ1c1N0YXRlQ2xvc2luZyAgICAgICA9IDUsCi0KLSAgICBYZW5i
dXNTdGF0ZUNsb3NlZCAgICAgICAgPSA2LAotCi0gICAgLyoKLSAgICAgKiBSZWNvbmZpZ3VyaW5n
OiBUaGUgZGV2aWNlIGlzIGJlaW5nIHJlY29uZmlndXJlZC4KLSAgICAgKi8KLSAgICBYZW5idXNT
dGF0ZVJlY29uZmlndXJpbmcgPSA3LAotCi0gICAgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQgID0g
OAotfTsKLXR5cGVkZWYgZW51bSB4ZW5idXNfc3RhdGUgWGVuYnVzU3RhdGU7Ci0KLSNlbmRpZiAv
KiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSCAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgot
ICogbW9kZTogQwotICogYy1zZXQtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAot
ICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpk
aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaCBiL2lu
Y2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGY3NWY1YgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVu
L3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqIHhlbi14ODZfMzIuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZh
Y2UgdG8geDg2IDMyLWJpdCBYZW4uCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK
KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDQtMjAwNywgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9YODZfMzJfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMy
X0hfXworCisvKgorICogSHlwZXJjYWxsIGludGVyZmFjZToKKyAqICBJbnB1dDogICVlYngsICVl
Y3gsICVlZHgsICVlc2ksICVlZGksICVlYnAgKGFyZ3VtZW50cyAxLTYpCisgKiAgT3V0cHV0OiAl
ZWF4CisgKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9h
ZGVyIG9yIHZpYSBhIFhlbiBNU1IpOgorICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNh
bGwtbnVtYmVyICogMzIKKyAqIENsb2JiZXJlZDogQXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAy
LWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMgJWVieCwlZWN4KQorICovCisKKy8qCisgKiBUaGVzZSBm
bGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlvbiBvZiBldmVyeSBHRFQu
IFNpbmNlIHRoZXNlCisgKiBhcmUgYWxzbyBwcmVzZW50IGluIHRoZSBpbml0aWFsIEdEVCwgbWFu
eSBPU2VzIHdpbGwgYmUgYWJsZSB0byBhdm9pZAorICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RU
LgorICovCisjZGVmaW5lIEZMQVRfUklORzFfQ1MgMHhlMDE5ICAgIC8qIEdEVCBpbmRleCAyNTkg
Ki8KKyNkZWZpbmUgRkxBVF9SSU5HMV9EUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLwor
I2RlZmluZSBGTEFUX1JJTkcxX1NTIDB4ZTAyMSAgICAvKiBHRFQgaW5kZXggMjYwICovCisjZGVm
aW5lIEZMQVRfUklORzNfQ1MgMHhlMDJiICAgIC8qIEdEVCBpbmRleCAyNjEgKi8KKyNkZWZpbmUg
RkxBVF9SSU5HM19EUyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLworI2RlZmluZSBGTEFU
X1JJTkczX1NTIDB4ZTAzMyAgICAvKiBHRFQgaW5kZXggMjYyICovCisKKyNkZWZpbmUgRkxBVF9L
RVJORUxfQ1MgRkxBVF9SSU5HMV9DUworI2RlZmluZSBGTEFUX0tFUk5FTF9EUyBGTEFUX1JJTkcx
X0RTCisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTIEZMQVRfUklORzFfU1MKKyNkZWZpbmUgRkxBVF9V
U0VSX0NTICAgIEZMQVRfUklORzNfQ1MKKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAgIEZMQVRfUklO
RzNfRFMKKyNkZWZpbmUgRkxBVF9VU0VSX1NTICAgIEZMQVRfUklORzNfU1MKKworI2RlZmluZSBf
X0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUgICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gy
UEhZU19WSVJUX1NUQVJUX1BBRSAgICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19W
SVJUX0VORF9QQUUgICAgICAgMHhGNjgwMDAwMAorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RB
UlRfUEFFICAgICAgXAorICAgIG1rX3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RB
UlRfUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUgICAgICAgXAorICAgIG1r
X3Vuc2lnbmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUpCisjZGVmaW5lIE1BQ0gy
UEhZU19WSVJUX0VORF9QQUUgICAgICAgICBcCisgICAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gy
UEhZU19WSVJUX0VORF9QQUUpCisKKy8qIE5vbi1QQUUgYm91bmRzIGFyZSBvYnNvbGV0ZS4gKi8K
KyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfTk9OUEFFIDB4RkMwMDAwMDAKKyNkZWZp
bmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9OT05QQUUgIDB4RkMwMDAwMDAKKyNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgIDB4RkM0MDAwMDAKKyNkZWZpbmUgSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUX05PTlBBRSAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUX05PTlBBRSkKKyNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFF
ICAgIFwKKyAgICBta191bnNpZ25lZF9sb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlRfTk9OUEFF
KQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgICAgXAorICAgIG1rX3Vuc2ln
bmVkX2xvbmcoX19NQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFKQorCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9WSVJUX1NUQVJUIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBfX01B
Q0gyUEhZU19WSVJUX1NUQVJUICBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBf
X01BQ0gyUEhZU19WSVJUX0VORCAgICBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUKKworI2lmbmRl
ZiBIWVBFUlZJU09SX1ZJUlRfU1RBUlQKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIG1r
X3Vuc2lnbmVkX2xvbmcoX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworI2RlZmlu
ZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZU19WSVJU
X1NUQVJUKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkQgICAgbWtfdW5zaWduZWRfbG9uZyhf
X01BQ0gyUEhZU19WSVJUX0VORCkKKyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMgICgoTUFD
SDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZU19WSVJUX1NUQVJUKT4+MikKKyNpZm5kZWYgbWFjaGlu
ZV90b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKChVTE9O
R19QVFIgKilNQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNlbmRpZgorCisvKiAzMi0vNjQtYml0IGlu
dmFyaWFiaWxpdHkgZm9yIGNvbnRyb2wgaW50ZXJmYWNlcyAoZG9tY3RsL3N5c2N0bCkuICovCisj
aWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjdW5kZWYgX19f
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0
eXBlICpwOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX2d1
ZXN0X2hhbmRsZV8gIyMgbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB0eXBlZGVmIHN0cnVjdCB7IHVuaW9uIHsgdHlwZSAqcDsgdWludDY0X2FsaWduZWRfdCBxOyB9
OyB9ICBcCisgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXzY0XyAjIyBuYW1lCisjdW5kZWYgc2V0X3hl
bl9ndWVzdF9oYW5kbGVfcmF3CisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQs
IHZhbCkgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyBpZiAoIHNpemVvZihobmQpID09IDgg
KSAqKHVpbnQ2NF90ICopJihobmQpID0gMDsgICBcCisgICAgICAgICAoaG5kKS5wID0gdmFsOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoIDAgKQor
I2RlZmluZSAgaW50NjRfYWxpZ25lZF90ICBpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFsaWduZWQo
OCkpKQorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFs
aWduZWQoOCkpKQorI2RlZmluZSBfX1hFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19ndWVzdF9o
YW5kbGVfNjRfICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBfX1hF
Tl9HVUVTVF9IQU5ETEVfNjQobmFtZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwor
CitzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgdWludDMyX3QgZWJ4OworICAgIHVpbnQzMl90
IGVjeDsKKyAgICB1aW50MzJfdCBlZHg7CisgICAgdWludDMyX3QgZXNpOworICAgIHVpbnQzMl90
IGVkaTsKKyAgICB1aW50MzJfdCBlYnA7CisgICAgdWludDMyX3QgZWF4OworICAgIHVpbnQxNl90
IGVycm9yX2NvZGU7ICAgIC8qIHByaXZhdGUgKi8KKyAgICB1aW50MTZfdCBlbnRyeV92ZWN0b3I7
ICAvKiBwcml2YXRlICovCisgICAgdWludDMyX3QgZWlwOworICAgIHVpbnQxNl90IGNzOworICAg
IHVpbnQ4X3QgIHNhdmVkX3VwY2FsbF9tYXNrOworICAgIHVpbnQ4X3QgIF9wYWQwOworICAgIHVp
bnQzMl90IGVmbGFnczsgICAgICAgIC8qIGVmbGFncy5JRiA9PSAhc2F2ZWRfdXBjYWxsX21hc2sg
Ki8KKyAgICB1aW50MzJfdCBlc3A7CisgICAgdWludDE2X3Qgc3MsIF9wYWQxOworICAgIHVpbnQx
Nl90IGVzLCBfcGFkMjsKKyAgICB1aW50MTZfdCBkcywgX3BhZDM7CisgICAgdWludDE2X3QgZnMs
IF9wYWQ0OworICAgIHVpbnQxNl90IGdzLCBfcGFkNTsKK307Cit0eXBlZGVmIHN0cnVjdCBjcHVf
dXNlcl9yZWdzIGNwdV91c2VyX3JlZ3NfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNwdV91
c2VyX3JlZ3NfdCk7CisKKy8qCisgKiBQYWdlLWRpcmVjdG9yeSBhZGRyZXNzZXMgYWJvdmUgNEdC
IGRvIG5vdCBmaXQgaW50byBhcmNoaXRlY3R1cmFsICVjcjMuCisgKiBXaGVuIGFjY2Vzc2luZyAl
Y3IzLCBvciBlcXVpdmFsZW50IGZpZWxkIGluIHZjcHVfZ3Vlc3RfY29udGV4dCwgZ3Vlc3RzCisg
KiBtdXN0IHVzZSB0aGUgZm9sbG93aW5nIGFjY2Vzc29yIG1hY3JvcyB0byBwYWNrL3VucGFjayB2
YWxpZCBNRk5zLgorICovCisjZGVmaW5lIHhlbl9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWduZWQp
KHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCisjZGVmaW5lIHhlbl9jcjNf
dG9fcGZuKGNyMykgKCgodW5zaWduZWQpKGNyMykgPj4gMTIpIHwgKCh1bnNpZ25lZCkoY3IzKSA8
PCAyMCkpCisKK3N0cnVjdCBhcmNoX3ZjcHVfaW5mbyB7CisgICAgVUxPTkdfUFRSIGNyMjsKKyAg
ICBVTE9OR19QVFIgcGFkWzVdOyAvKiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCit9Owor
dHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKKworc3RydWN0
IHhlbl9jYWxsYmFjayB7CisgICAgVUxPTkdfUFRSIGNzOworICAgIFVMT05HX1BUUiBlaXA7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2NhbGxiYWNrIHhlbl9jYWxsYmFja190OworCisjZW5kaWYg
LyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hF
Tl9YODZfMzJfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg
KiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRo
OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEv
aW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL3B1
YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTBhNDMzYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNo
LXg4Ni94ZW4teDg2XzY0LmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKyAqIHhlbi14ODZfNjQuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IDY0
LWJpdCBYZW4uCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICog
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNiwgSyBB
IEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRf
SF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzY0X0hfXworCisvKgor
ICogSHlwZXJjYWxsIGludGVyZmFjZToKKyAqICBJbnB1dDogICVyZGksICVyc2ksICVyZHgsICVy
MTAsICVyOCwgJXI5IChhcmd1bWVudHMgMS02KQorICogIE91dHB1dDogJXJheAorICogQWNjZXNz
IGlzIHZpYSBoeXBlcmNhbGwgcGFnZSAoc2V0IHVwIGJ5IGd1ZXN0IGxvYWRlciBvciB2aWEgYSBY
ZW4gTVNSKToKKyAqICBjYWxsIGh5cGVyY2FsbF9wYWdlICsgaHlwZXJjYWxsLW51bWJlciAqIDMy
CisgKiBDbG9iYmVyZWQ6IGFyZ3VtZW50IHJlZ2lzdGVycyAoZS5nLiwgMi1hcmcgaHlwZXJjYWxs
IGNsb2JiZXJzICVyZGksJXJzaSkKKyAqLworCisvKgorICogNjQtYml0IHNlZ21lbnQgc2VsZWN0
b3JzCisgKiBUaGVzZSBmbGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2VjdGlv
biBvZiBldmVyeSBHRFQuIFNpbmNlIHRoZXNlCisgKiBhcmUgYWxzbyBwcmVzZW50IGluIHRoZSBp
bml0aWFsIEdEVCwgbWFueSBPU2VzIHdpbGwgYmUgYWJsZSB0byBhdm9pZAorICogaW5zdGFsbGlu
ZyB0aGVpciBvd24gR0RULgorICovCisKKyNkZWZpbmUgRkxBVF9SSU5HM19DUzMyIDB4ZTAyMyAg
LyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJTkczX0NTNjQgMHhlMDMzICAvKiBH
RFQgaW5kZXggMjYxICovCisjZGVmaW5lIEZMQVRfUklORzNfRFMzMiAweGUwMmIgIC8qIEdEVCBp
bmRleCAyNjIgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19EUzY0IDB4MDAwMCAgLyogTlVMTCBzZWxl
Y3RvciAqLworI2RlZmluZSBGTEFUX1JJTkczX1NTMzIgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYy
ICovCisjZGVmaW5lIEZMQVRfUklORzNfU1M2NCAweGUwMmIgIC8qIEdEVCBpbmRleCAyNjIgKi8K
KworI2RlZmluZSBGTEFUX0tFUk5FTF9EUzY0IEZMQVRfUklORzNfRFM2NAorI2RlZmluZSBGTEFU
X0tFUk5FTF9EUzMyIEZMQVRfUklORzNfRFMzMgorI2RlZmluZSBGTEFUX0tFUk5FTF9EUyAgIEZM
QVRfS0VSTkVMX0RTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1M2NCBGTEFUX1JJTkczX0NTNjQK
KyNkZWZpbmUgRkxBVF9LRVJORUxfQ1MzMiBGTEFUX1JJTkczX0NTMzIKKyNkZWZpbmUgRkxBVF9L
RVJORUxfQ1MgICBGTEFUX0tFUk5FTF9DUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTNjQgRkxB
VF9SSU5HM19TUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX1NTMzIgRkxBVF9SSU5HM19TUzMyCisj
ZGVmaW5lIEZMQVRfS0VSTkVMX1NTICAgRkxBVF9LRVJORUxfU1M2NAorCisjZGVmaW5lIEZMQVRf
VVNFUl9EUzY0IEZMQVRfUklORzNfRFM2NAorI2RlZmluZSBGTEFUX1VTRVJfRFMzMiBGTEFUX1JJ
TkczX0RTMzIKKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAgRkxBVF9VU0VSX0RTNjQKKyNkZWZpbmUg
RkxBVF9VU0VSX0NTNjQgRkxBVF9SSU5HM19DUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9DUzMyIEZM
QVRfUklORzNfQ1MzMgorI2RlZmluZSBGTEFUX1VTRVJfQ1MgICBGTEFUX1VTRVJfQ1M2NAorI2Rl
ZmluZSBGTEFUX1VTRVJfU1M2NCBGTEFUX1JJTkczX1NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX1NT
MzIgRkxBVF9SSU5HM19TUzMyCisjZGVmaW5lIEZMQVRfVVNFUl9TUyAgIEZMQVRfVVNFUl9TUzY0
CisKKyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQgMHhGRkZGODAwMDAwMDAwMDAwCisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX0VORCAgIDB4RkZGRjg4MDAwMDAwMDAwMAorI2RlZmlu
ZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUICAweEZGRkY4MDAwMDAwMDAwMDAKKyNkZWZpbmUgX19N
QUNIMlBIWVNfVklSVF9FTkQgICAgMHhGRkZGODA0MDAwMDAwMDAwCisKKyNpZm5kZWYgSFlQRVJW
SVNPUl9WSVJUX1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25l
ZF9sb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRf
RU5EICAgbWtfdW5zaWduZWRfbG9uZyhfX0hZUEVSVklTT1JfVklSVF9FTkQpCisjZW5kaWYKKwor
I2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVCAgbWtfdW5zaWduZWRfbG9uZyhfX01BQ0gyUEhZ
U19WSVJUX1NUQVJUKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkQgICAgbWtfdW5zaWduZWRf
bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkKKyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMg
ICgoTUFDSDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZU19WSVJUX1NUQVJUKT4+MykKKyNpZm5kZWYg
bWFjaGluZV90b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcg
KChVTE9OR19QVFIgKilIWVBFUlZJU09SX1ZJUlRfU1RBUlQpCisjZW5kaWYKKworLyoKKyAqIGlu
dCBIWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UodW5zaWduZWQgaW50IHdoaWNoLCBVTE9OR19Q
VFIgYmFzZSkKKyAqICBAd2hpY2ggPT0gU0VHQkFTRV8qICA7ICBAYmFzZSA9PSA2NC1iaXQgYmFz
ZSBhZGRyZXNzCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4KKyAqLworI2RlZmluZSBTRUdCQVNF
X0ZTICAgICAgICAgIDAKKyNkZWZpbmUgU0VHQkFTRV9HU19VU0VSICAgICAxCisjZGVmaW5lIFNF
R0JBU0VfR1NfS0VSTkVMICAgMgorI2RlZmluZSBTRUdCQVNFX0dTX1VTRVJfU0VMIDMgLyogU2V0
IHVzZXIgJWdzIHNwZWNpZmllZCBpbiBiYXNlWzE1OjBdICovCisKKy8qCisgKiBpbnQgSFlQRVJW
SVNPUl9pcmV0KHZvaWQpCisgKiBBbGwgYXJndW1lbnRzIGFyZSBvbiB0aGUga2VybmVsIHN0YWNr
LCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdC4KKyAqIE5ldmVyIHJldHVybnMgaWYgc3VjY2Vzc2Z1
bC4gQ3VycmVudCBrZXJuZWwgY29udGV4dCBpcyBsb3N0LgorICogVGhlIHNhdmVkIENTIGlzIG1h
cHBlZCBhcyBmb2xsb3dzOgorICogICBSSU5HMCAtPiBSSU5HMyBrZXJuZWwgbW9kZS4KKyAqICAg
UklORzEgLT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJTkcyIC0+IFJJTkczIGtlcm5lbCBt
b2RlLgorICogICBSSU5HMyAtPiBSSU5HMyB1c2VyIG1vZGUuCisgKiBIb3dldmVyIFJJTkcwIGlu
ZGljYXRlcyB0aGF0IHRoZSBndWVzdCBrZXJuZWwgc2hvdWxkIHJldHVybiB0byBpdGVzZWxmCisg
KiBkaXJlY3RseSB3aXRoCisgKiAgICAgIG9yYiAgICQzLDEqOCglcnNwKQorICogICAgICBpcmV0
cQorICogSWYgZmxhZ3MgY29udGFpbnMgVkdDRl9pbl9zeXNjYWxsOgorICogICBSZXN0b3JlIFJB
WCwgUklQLCBSRkxBR1MsIFJTUC4KKyAqICAgRGlzY2FyZCBSMTEsIFJDWCwgQ1MsIFNTLgorICog
T3RoZXJ3aXNlOgorICogICBSZXN0b3JlIFJBWCwgUjExLCBSQ1gsIENTOlJJUCwgUkZMQUdTLCBT
UzpSU1AuCisgKiBBbGwgb3RoZXIgcmVnaXN0ZXJzIGFyZSBzYXZlZCBvbiBoeXBlcmNhbGwgZW50
cnkgYW5kIHJlc3RvcmVkIHRvIHVzZXIuCisgKi8KKy8qIEd1ZXN0IGV4aXRlZCBpbiBTWVNDQUxM
IGNvbnRleHQ/IFJldHVybiB0byBndWVzdCB3aXRoIFNZU1JFVD8gKi8KKyNkZWZpbmUgX1ZHQ0Zf
aW5fc3lzY2FsbCA4CisjZGVmaW5lIFZHQ0ZfaW5fc3lzY2FsbCAgKDE8PF9WR0NGX2luX3N5c2Nh
bGwpCisjZGVmaW5lIFZHQ0ZfSU5fU1lTQ0FMTCAgVkdDRl9pbl9zeXNjYWxsCisKKyNpZm5kZWYg
X19BU1NFTUJMWV9fCisKK3N0cnVjdCBpcmV0X2NvbnRleHQgeworICAgIC8qIFRvcCBvZiBzdGFj
ayAoJXJzcCBhdCBwb2ludCBvZiBoeXBlcmNhbGwpLiAqLworICAgIHVpbnQ2NF90IHJheCwgcjEx
LCByY3gsIGZsYWdzLCByaXAsIGNzLCByZmxhZ3MsIHJzcCwgc3M7CisgICAgLyogQm90dG9tIG9m
IGlyZXQgc3RhY2sgZnJhbWUuICovCit9OworCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRl
ZmluZWQoX19TVFJJQ1RfQU5TSV9fKQorLyogQW5vbnltb3VzIHVuaW9uIGluY2x1ZGVzIGJvdGgg
MzItIGFuZCA2NC1iaXQgbmFtZXMgKGUuZy4sIGVheC9yYXgpLiAqLworI2RlZmluZSBfX0RFQ0xf
UkVHKG5hbWUpIHVuaW9uIHsgXAorICAgIHVpbnQ2NF90IHIgIyMgbmFtZSwgZSAjIyBuYW1lOyBc
CisgICAgdWludDMyX3QgX2UgIyMgbmFtZTsgXAorfQorI2Vsc2UKKy8qIE5vbi1nY2Mgc291cmNl
cyBtdXN0IGFsd2F5cyB1c2UgdGhlIHByb3BlciA2NC1iaXQgbmFtZSAoZS5nLiwgcmF4KS4gKi8K
KyNkZWZpbmUgX19ERUNMX1JFRyhuYW1lKSB1aW50NjRfdCByICMjIG5hbWUKKyNlbmRpZgorCitz
dHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgdWludDY0X3QgcjE1OworICAgIHVpbnQ2NF90IHIx
NDsKKyAgICB1aW50NjRfdCByMTM7CisgICAgdWludDY0X3QgcjEyOworICAgIF9fREVDTF9SRUco
YnApOworICAgIF9fREVDTF9SRUcoYngpOworICAgIHVpbnQ2NF90IHIxMTsKKyAgICB1aW50NjRf
dCByMTA7CisgICAgdWludDY0X3Qgcjk7CisgICAgdWludDY0X3Qgcjg7CisgICAgX19ERUNMX1JF
RyhheCk7CisgICAgX19ERUNMX1JFRyhjeCk7CisgICAgX19ERUNMX1JFRyhkeCk7CisgICAgX19E
RUNMX1JFRyhzaSk7CisgICAgX19ERUNMX1JFRyhkaSk7CisgICAgdWludDMyX3QgZXJyb3JfY29k
ZTsgICAgLyogcHJpdmF0ZSAqLworICAgIHVpbnQzMl90IGVudHJ5X3ZlY3RvcjsgIC8qIHByaXZh
dGUgKi8KKyAgICBfX0RFQ0xfUkVHKGlwKTsKKyAgICB1aW50MTZfdCBjcywgX3BhZDBbMV07Cisg
ICAgdWludDhfdCAgc2F2ZWRfdXBjYWxsX21hc2s7CisgICAgdWludDhfdCAgX3BhZDFbM107Cisg
ICAgX19ERUNMX1JFRyhmbGFncyk7ICAgICAgLyogcmZsYWdzLklGID09ICFzYXZlZF91cGNhbGxf
bWFzayAqLworICAgIF9fREVDTF9SRUcoc3ApOworICAgIHVpbnQxNl90IHNzLCBfcGFkMlszXTsK
KyAgICB1aW50MTZfdCBlcywgX3BhZDNbM107CisgICAgdWludDE2X3QgZHMsIF9wYWQ0WzNdOwor
ICAgIHVpbnQxNl90IGZzLCBfcGFkNVszXTsgLyogTm9uLXplcm8gPT4gdGFrZXMgcHJlY2VkZW5j
ZSBvdmVyIGZzX2Jhc2UuICAgICAqLworICAgIHVpbnQxNl90IGdzLCBfcGFkNlszXTsgLyogTm9u
LXplcm8gPT4gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGdzX2Jhc2VfdXNyLiAqLworfTsKK3R5cGVk
ZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJfcmVnc190OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsKKworI3VuZGVmIF9fREVDTF9SRUcKKworI2RlZmlu
ZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoVUxPTkdfUFRSKShwZm4pIDw8IDEyKQorI2RlZmluZSB4
ZW5fY3IzX3RvX3BmbihjcjMpICgoVUxPTkdfUFRSKShjcjMpID4+IDEyKQorCitzdHJ1Y3QgYXJj
aF92Y3B1X2luZm8geworICAgIFVMT05HX1BUUiBjcjI7CisgICAgVUxPTkdfUFRSIHBhZDsgLyog
c2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLworfTsKK3R5cGVkZWYgc3RydWN0IGFyY2hfdmNw
dV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7CisKK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9jYWxsYmFj
a190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19YRU5fUFVC
TElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6
CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog
NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oIGIvaW5jbHVk
ZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRlYTY0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJj
aC14ODYveGVuLmgKQEAgLTAsMCArMSwzMDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
IGFyY2gteDg2L3hlbi5oCisgKiAKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgWGVuLgor
ICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIKKyAq
LworCisjaW5jbHVkZSAiLi4veGVuLmgiCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9IX18KKworLyogU3Ry
dWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMS4gKi8KKyNpZiBf
X1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDEKKyNkZWZpbmUgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgc3RydWN0IHsgdHlw
ZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQorI2Vsc2UKKyNkZWZpbmUgX19fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgXAorICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vl
c3RfaGFuZGxlXyAjIyBuYW1lCisjZW5kaWYKKworLyoKKyAqIFhFTl9HVUVTVF9IQU5ETEUgcmVw
cmVzZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQKKyAqIGluIGEg
c3RydWN0IGluIG1lbW9yeS4KKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50IGEg
Z3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQgYXMgYW4KKyAqIGh5cGVyY2FsbCBhcmd1bWVudC4K
KyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5ETEUgYXJlIHRoZSBz
YW1lIG9uIFg4NiBidXQKKyAqIHRoZXkgbWlnaHQgbm90IGJlIG9uIG90aGVyIGFyY2hpdGVjdHVy
ZXMuCisgKi8KKyNkZWZpbmUgX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBc
CisgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSk7ICAgXAorICAgIF9f
X0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbnN0XyMjbmFtZSwgY29uc3QgdHlwZSkKKyNkZWZp
bmUgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICBfX0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKG5hbWUsIG5hbWUpCisjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAgICAgICAg
X19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRShuYW1lKSAg
ICAgICAgICBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRM
RV9QQVJBTShuYW1lKSAgICBYRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5lIHNldF94ZW5f
Z3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgIGRvIHsgKGhuZCkucCA9IHZhbDsgfSB3aGlsZSAo
MCkKKyNpZmRlZiBfX1hFTl9UT09MU19fCisjZGVmaW5lIGdldF94ZW5fZ3Vlc3RfaGFuZGxlKHZh
bCwgaG5kKSAgZG8geyB2YWwgPSAoaG5kKS5wOyB9IHdoaWxlICgwKQorI2VuZGlmCisjZGVmaW5l
IHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXco
aG5kLCB2YWwpCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKQorI2luY2x1ZGUgInhlbi14ODZfMzIu
aCIKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCisj
ZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5f
dDsKKyNkZWZpbmUgUFJJX3hlbl9wZm4gImx4IgorI2VuZGlmCisKKyNkZWZpbmUgWEVOX0hBVkVf
UFZfR1VFU1RfRU5UUlkgMQorCisjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEKKwor
LyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJsZXMK
KyAqLworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZ2R0
KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVudHJpZXMpOworICogYAor
ICovCisvKgorICogQSBudW1iZXIgb2YgR0RUIGVudHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4g
VGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVz
ZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJkLWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICog
aW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhl
IHN0YXJ0IG9mIHRoZSBHRFQsCisgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdh
eSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4KKyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1
c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YgSFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLwor
I2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJW
RURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJ
UlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisK
Ky8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2Ny
aXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7CisgKiBgCisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBo
eXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBN
dXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFnZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2Mg
VGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQor
ICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhp
bXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVz
dHMuICovCisjZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NF
TUJMWV9fCisKK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190OworI2RlZmluZSBQUklfeGVu
X3Vsb25nICJseCIKKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNP
Ul9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19QVFIgZXNwKTsKKyAqIGAKKyAqIFNl
dHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisg
Ki8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJh
cF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOworICogYAorICovCisvKgor
ICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCku
CisgKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFw
c1tdLmFkZHJlc3M9PTAuCisgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBt
b2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4
Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisg
KiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5
IGVudGVyCisgKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcgorICogIExldmVsID09IDI6
IEtlcm5lbCBtYXkgZW50ZXIKKyAqICBMZXZlbCA9PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAq
LworI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAgICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZp
bmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkpLT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NF
VF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3MgfD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRf
SUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRy
YXBfaW5mbyB7CisgICAgdWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB1aW50OF90ICAgICAgIGZsYWdz
OyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAqLwor
ICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCisgICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zm
c2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBf
aW5mb190KTsKKwordHlwZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRp
bWVzdGFtcCAqLworCisvKgorICogVGhlIGZvbGxvd2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5v
dGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVkIAorICogaW4gYnkgRlhTQVZFIGlm
IHRoZSBDUFUgaGFzIGZlYXR1cmUgRlhTUjsgb3RoZXJ3aXNlIEZTQVZFIGlzIHVzZWQuCisgKgor
ICogQWxzbyBub3RlIHRoYXQgd2hlbiBjYWxsaW5nIERPTUNUTF9zZXR2Y3B1Y29udGV4dCBhbmQg
VkNQVV9pbml0aWFsaXNlCisgKiBmb3IgSFZNIGFuZCBQVkggZ3Vlc3RzLCBub3QgYWxsIGluZm9y
bWF0aW9uIGluIHRoaXMgc3RydWN0dXJlIGlzIHVwZGF0ZWQ6CisgKgorICogLSBGb3IgSFZNIGd1
ZXN0cywgdGhlIHN0cnVjdHVyZXMgcmVhZCBpbmNsdWRlOiBmcHVfY3R4dCAoaWYKKyAqIFZHQ1Rf
STM4N19WQUxJRCBpcyBzZXQpLCBmbGFncywgdXNlcl9yZWdzLCBkZWJ1Z3JlZ1sqXQorICoKKyAq
IC0gUFZIIGd1ZXN0cyBhcmUgdGhlIHNhbWUgYXMgSFZNIGd1ZXN0cywgYnV0IGFkZGl0aW9uYWxs
eSB1c2UgY3RybHJlZ1szXSB0bworICogc2V0IGNyMy4gQWxsIG90aGVyIGZpZWxkcyBub3QgdXNl
ZCBzaG91bGQgYmUgc2V0IHRvIDAuCisgKi8KK3N0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewor
ICAgIC8qIEZQVSByZWdpc3RlcnMgY29tZSBmaXJzdCBzbyB0aGV5IGNhbiBiZSBhbGlnbmVkIGZv
ciBGWFNBVkUvRlhSU1RPUi4gKi8KKyAgICBzdHJ1Y3QgeyBjaGFyIHhbNTEyXTsgfSBmcHVfY3R4
dDsgICAgICAgLyogVXNlci1sZXZlbCBGUFUgcmVnaXN0ZXJzICAgICAqLworI2RlZmluZSBWR0NG
X0kzODdfVkFMSUQgICAgICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIFZHQ0ZfSU5fS0VSTkVM
ICAgICAgICAgICAgICAgICAoMTw8MikKKyNkZWZpbmUgX1ZHQ0ZfaTM4N192YWxpZCAgICAgICAg
ICAgICAgIDAKKyNkZWZpbmUgVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgICgxPDxfVkdD
Rl9pMzg3X3ZhbGlkKQorI2RlZmluZSBfVkdDRl9pbl9rZXJuZWwgICAgICAgICAgICAgICAgMgor
I2RlZmluZSBWR0NGX2luX2tlcm5lbCAgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2luX2tlcm5l
bCkKKyNkZWZpbmUgX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzIDMKKyNkZWZpbmUgVkdD
Rl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMgICgxPDxfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19l
dmVudHMpCisjZGVmaW5lIF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNfZXZlbnRzICA0CisjZGVmaW5l
IFZHQ0Zfc3lzY2FsbF9kaXNhYmxlc19ldmVudHMgICAoMTw8X1ZHQ0Zfc3lzY2FsbF9kaXNhYmxl
c19ldmVudHMpCisjZGVmaW5lIF9WR0NGX29ubGluZSAgICAgICAgICAgICAgICAgICA1CisjZGVm
aW5lIFZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgICAoMTw8X1ZHQ0Zfb25saW5lKQorICAg
IFVMT05HX1BUUiBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIFZHQ0ZfKiBmbGFncyAgICAg
ICAgICAgICAgICAgKi8KKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB1c2VyX3JlZ3M7ICAgICAg
ICAgLyogVXNlci1sZXZlbCBDUFUgcmVnaXN0ZXJzICAgICAqLworICAgIHN0cnVjdCB0cmFwX2lu
Zm8gdHJhcF9jdHh0WzI1Nl07ICAgICAgICAvKiBWaXJ0dWFsIElEVCAgICAgICAgICAgICAgICAg
ICovCisgICAgVUxPTkdfUFRSIGxkdF9iYXNlLCBsZHRfZW50czsgICAgICAgLyogTERUIChsaW5l
YXIgYWRkcmVzcywgIyBlbnRzKSAqLworICAgIFVMT05HX1BUUiBnZHRfZnJhbWVzWzE2XSwgZ2R0
X2VudHM7IC8qIEdEVCAobWFjaGluZSBmcmFtZXMsICMgZW50cykgKi8KKyAgICBVTE9OR19QVFIg
a2VybmVsX3NzLCBrZXJuZWxfc3A7ICAgICAvKiBWaXJ0dWFsIFRTUyAob25seSBTUzEvU1AxKSAg
ICovCisgICAgLyogTkIuIFVzZXIgcGFnZXRhYmxlIG9uIHg4Ni82NCBpcyBwbGFjZWQgaW4gY3Ry
bHJlZ1sxXS4gKi8KKyAgICBVTE9OR19QVFIgY3RybHJlZ1s4XTsgICAgICAgICAgICAgICAvKiBD
UjAtQ1I3IChjb250cm9sIHJlZ2lzdGVycykgICovCisgICAgVUxPTkdfUFRSIGRlYnVncmVnWzhd
OyAgICAgICAgICAgICAgLyogREIwLURCNyAoZGVidWcgcmVnaXN0ZXJzKSAgICAqLworI2lmZGVm
IF9faTM4Nl9fCisgICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2NzOyAgICAgICAgLyogQ1M6
RUlQIG9mIGV2ZW50IGNhbGxiYWNrICAgICAqLworICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFj
a19laXA7CisgICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAgICAgLyogQ1M6RUlQ
IG9mIGZhaWxzYWZlIGNhbGxiYWNrICAqLworICAgIFVMT05HX1BUUiBmYWlsc2FmZV9jYWxsYmFj
a19laXA7CisjZWxzZQorICAgIFVMT05HX1BUUiBldmVudF9jYWxsYmFja19laXA7CisgICAgVUxP
TkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKKyNpZmRlZiBfX1hFTl9fCisgICAgdW5pb24g
eworICAgICAgICBVTE9OR19QVFIgc3lzY2FsbF9jYWxsYmFja19laXA7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfY2FsbGJhY2tfY3M7ICAgIC8qIGNv
bXBhdCBDUyBvZiBldmVudCBjYiAgICAgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmYWls
c2FmZV9jYWxsYmFja19jczsgLyogY29tcGF0IENTIG9mIGZhaWxzYWZlIGNiICAqLworICAgICAg
ICB9OworICAgIH07CisjZWxzZQorICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsK
KyNlbmRpZgorI2VuZGlmCisgICAgVUxPTkdfUFRSIHZtX2Fzc2lzdDsgICAgICAgICAgICAgICAg
LyogVk1BU1NUX1RZUEVfKiBiaXRtYXAgKi8KKyNpZmRlZiBfX3g4Nl82NF9fCisgICAgLyogU2Vn
bWVudCBiYXNlIGFkZHJlc3Nlcy4gKi8KKyAgICB1aW50NjRfdCAgICAgIGZzX2Jhc2U7CisgICAg
dWludDY0X3QgICAgICBnc19iYXNlX2tlcm5lbDsKKyAgICB1aW50NjRfdCAgICAgIGdzX2Jhc2Vf
dXNlcjsKKyNlbmRpZgorfTsKK3R5cGVkZWYgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB2Y3B1
X2d1ZXN0X2NvbnRleHRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29u
dGV4dF90KTsKKworc3RydWN0IGFyY2hfc2hhcmVkX2luZm8geworICAgIC8qCisgICAgICogTnVt
YmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlIHAybSB0YWJsZShzKSBhbmNob3JlZCBhdAorICAg
ICAqIHBmbl90b19tZm5fZnJhbWVfbGlzdF9saXN0IGFuZC9vciBwMm1fdmFkZHIuCisgICAgICov
CisgICAgVUxPTkdfUFRSIG1heF9wZm47CisgICAgLyoKKyAgICAgKiBGcmFtZSBjb250YWluaW5n
IGxpc3Qgb2YgbWZucyBjb250YWluaW5nIGxpc3Qgb2YgbWZucyBjb250YWluaW5nIHAybS4KKyAg
ICAgKiBBIHZhbHVlIG9mIDAgaW5kaWNhdGVzIGl0IGhhcyBub3QgeWV0IGJlZW4gc2V0IHVwLCB+
MCBpbmRpY2F0ZXMgaXQgaGFzCisgICAgICogYmVlbiBzZXQgdG8gaW52YWxpZCBlLmcuIGR1ZSB0
byB0aGUgcDJtIGJlaW5nIHRvbyBsYXJnZSBmb3IgdGhlIDMtbGV2ZWwKKyAgICAgKiBwMm0gdHJl
ZS4gSW4gdGhpcyBjYXNlIHRoZSBsaW5lYXIgbWFwcGVyIHAybSBsaXN0IGFuY2hvcmVkIGF0IHAy
bV92YWRkcgorICAgICAqIGlzIHRvIGJlIHVzZWQuCisgICAgICovCisgICAgeGVuX3Bmbl90ICAg
ICBwZm5fdG9fbWZuX2ZyYW1lX2xpc3RfbGlzdDsKKyAgICBVTE9OR19QVFIgbm1pX3JlYXNvbjsK
KyAgICAvKgorICAgICAqIEZvbGxvd2luZyB0aHJlZSBmaWVsZHMgYXJlIHZhbGlkIGlmIHAybV9j
cjMgY29udGFpbnMgYSB2YWx1ZSBkaWZmZXJlbnQKKyAgICAgKiBmcm9tIDAuCisgICAgICogcDJt
X2NyMyBpcyB0aGUgcm9vdCBvZiB0aGUgYWRkcmVzcyBzcGFjZSB3aGVyZSBwMm1fdmFkZHIgaXMg
dmFsaWQuCisgICAgICogcDJtX2NyMyBpcyBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYSBjcjMgdmFs
dWUgaW4gdGhlIHZjcHUgcmVnaXN0ZXIgc3RhdGUKKyAgICAgKiBhbmQgaG9sZHMgdGhlIGZvbGRl
ZCBtYWNoaW5lIGZyYW1lIG51bWJlciAodmlhIHhlbl9wZm5fdG9fY3IzKSBvZiBhCisgICAgICog
TDMgb3IgTDQgcGFnZSB0YWJsZS4KKyAgICAgKiBwMm1fdmFkZHIgaG9sZHMgdGhlIHZpcnR1YWwg
YWRkcmVzcyBvZiB0aGUgbGluZWFyIHAybSBsaXN0LiBBbGwgZW50cmllcworICAgICAqIGluIHRo
ZSByYW5nZSBbMC4uLm1heF9wZm5bIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGlzIHBvaW50ZXIuCisg
ICAgICogcDJtX2dlbmVyYXRpb24gd2lsbCBiZSBpbmNyZW1lbnRlZCBieSB0aGUgZ3Vlc3QgYmVm
b3JlIGFuZCBhZnRlciBlYWNoCisgICAgICogY2hhbmdlIG9mIHRoZSBtYXBwaW5ncyBvZiB0aGUg
cDJtIGxpc3QuIHAybV9nZW5lcmF0aW9uIHN0YXJ0cyBhdCAwIGFuZAorICAgICAqIGEgdmFsdWUg
d2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHNldCBpbmRpY2F0ZXMgdGhhdCBhIG1hcHBp
bmcKKyAgICAgKiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3MuIFRoaXMgYWxsb3dzIGd1ZXN0IGV4dGVy
bmFsIHNvZnR3YXJlIChlLmcuIGluIERvbTApCisgICAgICogdG8gdmVyaWZ5IHRoYXQgcmVhZCBt
YXBwaW5ncyBhcmUgY29uc2lzdGVudCBhbmQgd2hldGhlciB0aGV5IGhhdmUgY2hhbmdlZAorICAg
ICAqIHNpbmNlIHRoZSBsYXN0IGNoZWNrLgorICAgICAqIE1vZGlmeWluZyBhIHAybSBlbGVtZW50
IGluIHRoZSBsaW5lYXIgcDJtIGxpc3QgaXMgYWxsb3dlZCB2aWEgYW4gYXRvbWljCisgICAgICog
d3JpdGUgb25seS4KKyAgICAgKi8KKyAgICBVTE9OR19QVFIgcDJtX2NyMzsgICAgICAgICAvKiBj
cjMgdmFsdWUgb2YgdGhlIHAybSBhZGRyZXNzIHNwYWNlICovCisgICAgVUxPTkdfUFRSIHAybV92
YWRkcjsgICAgICAgLyogdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBwMm0gbGlzdCAqLworICAgIFVM
T05HX1BUUiBwMm1fZ2VuZXJhdGlvbjsgIC8qIGdlbmVyYXRpb24gY291bnQgb2YgcDJtIG1hcHBp
bmcgKi8KKyNpZmRlZiBfX2kzODZfXworICAgIC8qIFRoZXJlJ3Mgbm8gcm9vbSBmb3IgdGhpcyBm
aWVsZCBpbiB0aGUgZ2VuZXJpYyBzdHJ1Y3R1cmUuICovCisgICAgdWludDMyX3Qgd2Nfc2VjX2hp
OworI2VuZGlmCit9OwordHlwZWRlZiBzdHJ1Y3QgYXJjaF9zaGFyZWRfaW5mbyBhcmNoX3NoYXJl
ZF9pbmZvX3Q7CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisKKy8qCisgKiBgIGVudW0g
bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZnB1X3Rhc2tzd2l0Y2goaW50IHNldCk7Cisg
KiBgCisgKiBTZXRzIChpZiBzZXQhPTApIG9yIGNsZWFycyAoaWYgc2V0PT0wKSBDUjAuVFMuCisg
Ki8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZGVi
dWdyZWcoaW50IHJlZ25vLCBVTE9OR19QVFIgdmFsdWUpOworICoKKyAqIGAgVUxPTkdfUFRSCisg
KiBgIEhZUEVSVklTT1JfZ2V0X2RlYnVncmVnKGludCByZWdubyk7CisgKiBGb3IgMDw9cmVnPD03
LCByZXR1cm5zIHRoZSBkZWJ1ZyByZWdpc3RlciB2YWx1ZS4KKyAqIEZvciBvdGhlciB2YWx1ZXMg
b2YgcmVnLCByZXR1cm5zICgoVUxPTkdfUFRSKS1FSU5WQUwpLgorICogKFVuZm9ydHVuYXRlbHks
IHRoaXMgaW50ZXJmYWNlIGlzIGRlZmVjdGl2ZS4pCisgKi8KKworLyoKKyAqIFByZWZpeCBmb3Jj
ZXMgZW11bGF0aW9uIG9mIHNvbWUgbm9uLXRyYXBwaW5nIGluc3RydWN0aW9ucy4KKyAqIEN1cnJl
bnRseSBvbmx5IENQVUlELgorICovCisjaWZkZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIFhFTl9F
TVVMQVRFX1BSRUZJWCAuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOworI2RlZmluZSBY
RU5fQ1BVSUQgICAgICAgICAgWEVOX0VNVUxBVEVfUFJFRklYIGNwdWlkCisjZWxzZQorI2RlZmlu
ZSBYRU5fRU1VTEFURV9QUkVGSVggIi5ieXRlIDB4MGYsMHgwYiwweDc4LDB4NjUsMHg2ZSA7ICIK
KyNkZWZpbmUgWEVOX0NQVUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCAiY3B1aWQiCisj
ZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fSF9fICovCisKKy8q
CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi
CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t
b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2Vy
cm5vLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jNjQ0NjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVi
bGljL2Vycm5vLmgKQEAgLTAsMCArMSw5MyBAQAorI2lmbmRlZiBfX1hFTl9QVUJMSUNfRVJSTk9f
SF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKyNkZWZpbmUgWEVOX0VSUk5PKG5hbWUsIHZh
bHVlKSBYRU5fIyNuYW1lID0gdmFsdWUsCitlbnVtIHhlbl9lcnJubyB7CisKKyNlbHNlIC8qICFf
X0FTU0VNQkxZX18gKi8KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIC5lcXUgWEVO
XyMjbmFtZSwgdmFsdWUKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisvKiBgIGVudW0g
bmVnX2Vycm5vdmFsIHsgIFsgLUVmb28gZm9yIGVhY2ggRWZvbyBpbiB0aGUgbGlzdCBiZWxvdyBd
ICB9ICovCisvKiBgIGVudW0gZXJybm92YWwgeyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElD
X0VSUk5PX0hfXyAqLworCisjaWZkZWYgWEVOX0VSUk5PCisKKy8qCisgKiBWYWx1ZXMgb3JpZ2lu
YXRpbmcgZnJvbSB4ODYgTGludXguIFBsZWFzZSBjb25zaWRlciB1c2luZyByZXNwZWN0aXZlCisg
KiB2YWx1ZXMgd2hlbiBhZGRpbmcgbmV3IGRlZmluaXRpb25zIGhlcmUuCisgKi8KKworWEVOX0VS
Uk5PKEVQRVJNLAkgMSkJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8KK1hFTl9FUlJOTyhF
Tk9FTlQsCSAyKQkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovCitYRU5fRVJSTk8oRVNS
Q0gsCSAzKQkvKiBObyBzdWNoIHByb2Nlc3MgKi8KKyNpZmRlZiBfX1hFTl9fIC8qIEludGVybmFs
IG9ubHksIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8KK1hFTl9FUlJO
TyhFSU5UUiwJIDQpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsICovCisjZW5kaWYKK1hFTl9F
UlJOTyhFSU8sCQkgNSkJLyogSS9PIGVycm9yICovCitYRU5fRVJSTk8oRU5YSU8sCSA2KQkvKiBO
byBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCitYRU5fRVJSTk8oRTJCSUcsCSA3KQkvKiBBcmcg
bGlzdCB0b28gTE9OR19QVFIgKi8KK1hFTl9FUlJOTyhFTk9FWEVDLAkgOCkJLyogRXhlYyBmb3Jt
YXQgZXJyb3IgKi8KK1hFTl9FUlJOTyhFQkFERiwJIDkpCS8qIEJhZCBmaWxlIG51bWJlciAqLwor
WEVOX0VSUk5PKEVDSElMRCwJMTApCS8qIE5vIGNoaWxkIHByb2Nlc3NlcyAqLworWEVOX0VSUk5P
KEVBR0FJTiwJMTEpCS8qIFRyeSBhZ2FpbiAqLworWEVOX0VSUk5PKEVOT01FTSwJMTIpCS8qIE91
dCBvZiBtZW1vcnkgKi8KK1hFTl9FUlJOTyhFQUNDRVMsCTEzKQkvKiBQZXJtaXNzaW9uIGRlbmll
ZCAqLworWEVOX0VSUk5PKEVGQVVMVCwJMTQpCS8qIEJhZCBhZGRyZXNzICovCitYRU5fRVJSTk8o
RUJVU1ksCTE2KQkvKiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSAqLworWEVOX0VSUk5PKEVFWElT
VCwJMTcpCS8qIEZpbGUgZXhpc3RzICovCitYRU5fRVJSTk8oRVhERVYsCTE4KQkvKiBDcm9zcy1k
ZXZpY2UgbGluayAqLworWEVOX0VSUk5PKEVOT0RFViwJMTkpCS8qIE5vIHN1Y2ggZGV2aWNlICov
CitYRU5fRVJSTk8oRUlOVkFMLAkyMikJLyogSW52YWxpZCBhcmd1bWVudCAqLworWEVOX0VSUk5P
KEVORklMRSwJMjMpCS8qIEZpbGUgdGFibGUgb3ZlcmZsb3cgKi8KK1hFTl9FUlJOTyhFTUZJTEUs
CTI0KQkvKiBUb28gbWFueSBvcGVuIGZpbGVzICovCitYRU5fRVJSTk8oRU5PU1BDLAkyOCkJLyog
Tm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UgKi8KK1hFTl9FUlJOTyhFTUxJTkssCTMxKQkvKiBUb28g
bWFueSBsaW5rcyAqLworWEVOX0VSUk5PKEVET00sCQkzMykJLyogTWF0aCBhcmd1bWVudCBvdXQg
b2YgZG9tYWluIG9mIGZ1bmMgKi8KK1hFTl9FUlJOTyhFUkFOR0UsCTM0KQkvKiBNYXRoIHJlc3Vs
dCBub3QgcmVwcmVzZW50YWJsZSAqLworWEVOX0VSUk5PKEVERUFETEssCTM1KQkvKiBSZXNvdXJj
ZSBkZWFkbG9jayB3b3VsZCBvY2N1ciAqLworWEVOX0VSUk5PKEVOQU1FVE9PTE9ORywJMzYpCS8q
IEZpbGUgbmFtZSB0b28gTE9OR19QVFIgKi8KK1hFTl9FUlJOTyhFTk9MQ0ssCTM3KQkvKiBObyBy
ZWNvcmQgbG9ja3MgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRU5PU1lTLAkzOCkJLyogRnVuY3Rp
b24gbm90IGltcGxlbWVudGVkICovCitYRU5fRVJSTk8oRUJBRFJRQywJNTYpCS8qIEludmFsaWQg
cmVxdWVzdCBjb2RlICovCitYRU5fRVJSTk8oRUJBRFNMVCwJNTcpCS8qIEludmFsaWQgc2xvdCAq
LworWEVOX0VSUk5PKEVOT0RBVEEsCTYxKQkvKiBObyBkYXRhIGF2YWlsYWJsZSAqLworWEVOX0VS
Uk5PKEVUSU1FLAk2MikJLyogVGltZXIgZXhwaXJlZCAqLworWEVOX0VSUk5PKEVCQURNU0csCTc0
KQkvKiBOb3QgYSBkYXRhIG1lc3NhZ2UgKi8KK1hFTl9FUlJOTyhFT1ZFUkZMT1csCTc1KQkvKiBW
YWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlICovCitYRU5fRVJSTk8oRUlMU0VR
LAk4NCkJLyogSWxsZWdhbCBieXRlIHNlcXVlbmNlICovCisjaWZkZWYgX19YRU5fXyAvKiBJbnRl
cm5hbCBvbmx5LCBzaG91bGQgbmV2ZXIgYmUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovCitYRU5f
RVJSTk8oRVJFU1RBUlQsCTg1KQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUg
cmVzdGFydGVkICovCisjZW5kaWYKK1hFTl9FUlJOTyhFVVNFUlMsCTg3KQkvKiBUb28gbWFueSB1
c2VycyAqLworWEVOX0VSUk5PKEVPUE5PVFNVUFAsCTk1KQkvKiBPcGVyYXRpb24gbm90IHN1cHBv
cnRlZCBvbiB0cmFuc3BvcnQgZW5kcG9pbnQgKi8KK1hFTl9FUlJOTyhFQUREUklOVVNFLAk5OCkJ
LyogQWRkcmVzcyBhbHJlYWR5IGluIHVzZSAqLworWEVOX0VSUk5PKEVBRERSTk9UQVZBSUwsIDk5
KQkvKiBDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzICovCitYRU5fRVJSTk8oRU5PQlVG
UywJMTA1KQkvKiBObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRUlTQ09O
TiwJMTA2KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KK1hF
Tl9FUlJOTyhFTk9UQ09OTiwJMTA3KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5l
Y3RlZCAqLworWEVOX0VSUk5PKEVTSFVURE9XTiwJMTA4KQkvKiBDYW5ub3Qgc2VuZCBhZnRlciB0
cmFuc3BvcnQgZW5kcG9pbnQgc2h1dGRvd24gKi8KK1hFTl9FUlJOTyhFVE9PTUFOWVJFRlMsCTEw
OSkJLyogVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSAqLworWEVOX0VSUk5PKEVU
SU1FRE9VVCwJMTEwKQkvKiBDb25uZWN0aW9uIHRpbWVkIG91dCAqLworCisjdW5kZWYgWEVOX0VS
Uk5PCisjZW5kaWYgLyogWEVOX0VSUk5PICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0VSUk5P
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfRVJSTk9fSF9fCisKKy8qIGAgfSAqLworCisjaWZu
ZGVmIF9fQVNTRU1CTFlfXworfTsKKyNlbmRpZgorCisjZGVmaW5lCVhFTl9FV09VTERCTE9DSwlY
RU5fRUFHQUlOCS8qIE9wZXJhdGlvbiB3b3VsZCBibG9jayAqLworI2RlZmluZQlYRU5fRURFQURM
T0NLCVhFTl9FREVBRExLCS8qIFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyICovCisKKyNl
bmRpZiAvKiAgX19YRU5fUFVCTElDX0VSUk5PX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW4vcHVibGljL2dyYW50X3RhYmxlLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI3OTE3Ci0tLSAvZGV2L251
bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmgKQEAgLTAsMCArMSw2ODIg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGdyYW50X3RhYmxlLmgKKyAqCisgKiBJbnRl
cmZhY2UgZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVj
ZWl2aW5nCisgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2ZlcnMuCisgKgorICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAwNCwgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElD
X0dSQU5UX1RBQkxFX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCisK
KyNpbmNsdWRlICJ4ZW4uaCIKKworLyoKKyAqIGBpbmNvbnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQg
VGFibGVzCisgKgorICogWGVuJ3MgZ3JhbnQgdGFibGVzIHByb3ZpZGUgYSBnZW5lcmljIG1lY2hh
bmlzbSB0byBtZW1vcnkgc2hhcmluZworICogYmV0d2VlbiBkb21haW5zLiBUaGlzIHNoYXJlZCBt
ZW1vcnkgaW50ZXJmYWNlIHVuZGVycGlucyB0aGUgc3BsaXQKKyAqIGRldmljZSBkcml2ZXJzIGZv
ciBibG9jayBhbmQgbmV0d29yayBJTy4KKyAqCisgKiBFYWNoIGRvbWFpbiBoYXMgaXRzIG93biBn
cmFudCB0YWJsZS4gVGhpcyBpcyBhIGRhdGEgc3RydWN0dXJlIHRoYXQKKyAqIGlzIHNoYXJlZCB3
aXRoIFhlbjsgaXQgYWxsb3dzIHRoZSBkb21haW4gdG8gdGVsbCBYZW4gd2hhdCBraW5kIG9mCisg
KiBwZXJtaXNzaW9ucyBvdGhlciBkb21haW5zIGhhdmUgb24gaXRzIHBhZ2VzLiBFbnRyaWVzIGlu
IHRoZSBncmFudAorICogdGFibGUgYXJlIGlkZW50aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4g
QSBncmFudCByZWZlcmVuY2UgaXMgYW4KKyAqIGludGVnZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0
aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMgYXMgYQorICogY2FwYWJpbGl0eSB3aGljaCB0aGUgZ3Jh
bnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiB0aGUKKyAqIGdyYW50ZXLigJlz
IG1lbW9yeS4KKyAqCisgKiBUaGlzIGNhcGFiaWxpdHktYmFzZWQgc3lzdGVtIGFsbG93cyBzaGFy
ZWQtbWVtb3J5IGNvbW11bmljYXRpb25zCisgKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBkb21haW5z
LiBBIGdyYW50IHJlZmVyZW5jZSBhbHNvIGVuY2Fwc3VsYXRlcworICogdGhlIGRldGFpbHMgb2Yg
YSBzaGFyZWQgcGFnZSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGEgZG9tYWluIHRvCisgKiBrbm93
IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVzcyBvZiBhIHBhZ2UgaXQgaXMgc2hhcmluZy4gVGhpcyBt
YWtlcworICogaXQgcG9zc2libGUgdG8gc2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRoIGRvbWFp
bnMgcnVubmluZyBpbgorICogZnVsbHkgdmlydHVhbGlzZWQgbWVtb3J5LgorICovCisKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUgUkVQUkVTRU5U
QVRJT04KKyAqLworCisvKiBTb21lIHJvdWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5nIGFuZCB1
cGRhdGluZyBncmFudC10YWJsZSBlbnRyaWVzCisgKiBpbiBhIGNvbmN1cnJlbmN5LXNhZmUgbWFu
bmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgTGludXggY29udGFpbnMgYQorICogcmVmZXJlbmNl
IGltcGxlbWVudGF0aW9uIGZvciBndWVzdCBPU2VzIChkcml2ZXJzL3hlbi9ncmFudF90YWJsZS5j
LCBzZWUKKyAqIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZh
bGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jO2hiPUhFQUQK
KyAqCisgKiBOQi4gV01CIGlzIGEgbm8tb3Agb24gY3VycmVudC1nZW5lcmF0aW9uIHg4NiBwcm9j
ZXNzb3JzLiBIb3dldmVyLCBhCisgKiAgICAgY29tcGlsZXIgYmFycmllciB3aWxsIHN0aWxsIGJl
IHJlcXVpcmVkLgorICoKKyAqIEludHJvZHVjaW5nIGEgdmFsaWQgZW50cnkgaW50byB0aGUgZ3Jh
bnQgdGFibGU6CisgKiAgMS4gV3JpdGUgZW50LT5kb21pZC4KKyAqICAyLiBXcml0ZSBlbnQtPmZy
YW1lOgorICogICAgICBHVEZfcGVybWl0X2FjY2VzczogICBGcmFtZSB0byB3aGljaCBhY2Nlc3Mg
aXMgcGVybWl0dGVkLgorICogICAgICBHVEZfYWNjZXB0X3RyYW5zZmVyOiBQc2V1ZG8tcGh5cyBm
cmFtZSBzbG90IGJlaW5nIGZpbGxlZCBieSBuZXcKKyAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUsIG9yIHplcm8gaWYgbm9uZS4KKyAqICAzLiBXcml0ZSBtZW1vcnkgYmFycmllciAo
V01CKS4KKyAqICA0LiBXcml0ZSBlbnQtPmZsYWdzLCBpbmMuIHZhbGlkIHR5cGUuCisgKgorICog
SW52YWxpZGF0aW5nIGFuIHVudXNlZCBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToKKyAqICAxLiBm
bGFncyA9IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAoR1RGX3Jl
YWRpbmd8R1RGX3dyaXRpbmcpKS4KKyAqICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNhZmUgQ01Q
WENIRygmZW50LT5mbGFncywgZmxhZ3MsIDApLgorICogIE5CLiBObyBuZWVkIGZvciBXTUIgYXMg
cmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgorICogICAg
ICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3Ry
bC1kZXAgd3JpdGVzLgorICoKKyAqIEludmFsaWRhdGluZyBhbiBpbi11c2UgR1RGX3Blcm1pdF9h
Y2Nlc3MgZW50cnk6CisgKiAgVGhpcyBjYW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVxdWVzdCBh
c3Npc3RhbmNlIGZyb20gdGhlIGRvbWFpbiBjb250cm9sbGVyCisgKiAgd2hpY2ggY2FuIHNldCBh
IHRpbWVvdXQgb24gdGhlIHVzZSBvZiBhIGdyYW50IGVudHJ5IGFuZCB0YWtlIG5lY2Vzc2FyeQor
ICogIGFjdGlvbi4gKE5CLiBUaGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQhKS4KKyAqCisgKiBJ
bnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6CisgKiAgMS4g
ZmxhZ3MgPSBlbnQtPmZsYWdzLgorICogIDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYgR1RGX3Ry
YW5zZmVyX2NvbW1pdHRlZCkuIFsqXQorICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBD
TVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCisgKiAgTkIuIE5vIG5lZWQgZm9yIFdNQiBh
cyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9mCisgKiAg
ICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmluZyBvZiBj
dHJsLWRlcCB3cml0ZXMuCisgKiAgWypdIElmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQgaXMgc2V0
IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlzICdjb21taXR0ZWQnLgorICogICAgICBUaGUgZ3Vlc3Qg
bXVzdCAvbm90LyBtb2RpZnkgdGhlIGdyYW50IGVudHJ5IHVudGlsIHRoZSBhZGRyZXNzIG9mIHRo
ZQorICogICAgICB0cmFuc2ZlcnJlZCBmcmFtZSBpcyB3cml0dGVuLiBJdCBpcyBzYWZlIGZvciB0
aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5nCisgKiAgICAgIGZvciB0aGlzIHRvIG9jY3VyIChkZXRl
Y3QgYnkgb2JzZXJ2aW5nIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgaW4KKyAqICAgICAgZW50LT5m
bGFncykuCisgKgorICogSW52YWxpZGF0aW5nIGEgY29tbWl0dGVkIEdURl9hY2NlcHRfdHJhbnNm
ZXIgZW50cnk6CisgKiAgMS4gV2FpdCBmb3IgKGVudC0+ZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29t
cGxldGVkKS4KKyAqCisgKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gd3JpdGFi
bGUgdG8gcmVhZC1vbmx5OgorICogIFVzZSBTTVAtc2FmZSBDTVBYQ0hHIHRvIHNldCBHVEZfcmVh
ZG9ubHksIHdoaWxlIGNoZWNraW5nICFHVEZfd3JpdGluZy4KKyAqCisgKiBDaGFuZ2luZyBhIEdU
Rl9wZXJtaXRfYWNjZXNzIGZyb20gcmVhZC1vbmx5IHRvIHdyaXRhYmxlOgorICogIFVzZSBTTVAt
c2FmZSBiaXQtc2V0dGluZyBpbnN0cnVjdGlvbi4KKyAqLworCisvKgorICogUmVmZXJlbmNlIHRv
IGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUuCisgKi8K
K3R5cGVkZWYgdWludDMyX3QgZ3JhbnRfcmVmX3Q7CisKKy8qCisgKiBBIGdyYW50IHRhYmxlIGNv
bXByaXNlcyBhIHBhY2tlZCBhcnJheSBvZiBncmFudCBlbnRyaWVzIGluIG9uZSBvciBtb3JlCisg
KiBwYWdlIGZyYW1lcyBzaGFyZWQgYmV0d2VlbiBYZW4gYW5kIGEgZ3Vlc3QuCisgKiBbWEVOXTog
VGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmluZyBndWVz
dC4KKyAqIFtHU1RdOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgdGhlIGd1ZXN0IGFuZCByZWFk
IGJ5IFhlbi4KKyAqLworCisvKgorICogVmVyc2lvbiAxIG9mIHRoZSBncmFudCB0YWJsZSBlbnRy
eSBzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5lZCBwdXJlbHkKKyAqIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hvdWxkIHVzZSB2ZXJzaW9uIDIuCisgKi8KKyNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwYQorI2RlZmluZSBncmFudF9lbnRyeV92
MSBncmFudF9lbnRyeQorI2RlZmluZSBncmFudF9lbnRyeV92MV90IGdyYW50X2VudHJ5X3QKKyNl
bmRpZgorc3RydWN0IGdyYW50X2VudHJ5X3YxIHsKKyAgICAvKiBHVEZfeHh4OiB2YXJpb3VzIHR5
cGUgYW5kIGZsYWcgaW5mb3JtYXRpb24uICBbWEVOLEdTVF0gKi8KKyAgICB1aW50MTZfdCBmbGFn
czsKKyAgICAvKiBUaGUgZG9tYWluIGJlaW5nIGdyYW50ZWQgZm9yZWlnbiBwcml2aWxlZ2VzLiBb
R1NUXSAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAgIC8qCisgICAgICogR1RGX3Blcm1pdF9h
Y2Nlc3M6IEZyYW1lIHRoYXQgQGRvbWlkIGlzIGFsbG93ZWQgdG8gbWFwIGFuZCBhY2Nlc3MuIFtH
U1RdCisgICAgICogR1RGX2FjY2VwdF90cmFuc2ZlcjogRnJhbWUgd2hvc2Ugb3duZXJzaGlwIHRy
YW5zZmVycmVkIGJ5IEBkb21pZC4gW1hFTl0KKyAgICAgKi8KKyAgICB1aW50MzJfdCBmcmFtZTsK
K307Cit0eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV92MSBncmFudF9lbnRyeV92MV90OworCisv
KiBUaGUgZmlyc3QgZmV3IGdyYW50IHRhYmxlIGVudHJpZXMgd2lsbCBiZSBwcmVzZXJ2ZWQgYWNy
b3NzIGdyYW50IHRhYmxlCisgKiB2ZXJzaW9uIGNoYW5nZXMgYW5kIG1heSBiZSBwcmUtcG9wdWxh
dGVkIGF0IGRvbWFpbiBjcmVhdGlvbiBieSB0b29scy4KKyAqLworI2RlZmluZSBHTlRUQUJfTlJf
UkVTRVJWRURfRU5UUklFUyAgICAgOAorI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfQ09OU09MRSAg
ICAgICAgMAorI2RlZmluZSBHTlRUQUJfUkVTRVJWRURfWEVOU1RPUkUgICAgICAgMQorCisvKgor
ICogVHlwZSBvZiBncmFudCBlbnRyeS4KKyAqICBHVEZfaW52YWxpZDogVGhpcyBncmFudCBlbnRy
eSBncmFudHMgbm8gcHJpdmlsZWdlcy4KKyAqICBHVEZfcGVybWl0X2FjY2VzczogQWxsb3cgQGRv
bWlkIHRvIG1hcC9hY2Nlc3MgQGZyYW1lLgorICogIEdURl9hY2NlcHRfdHJhbnNmZXI6IEFsbG93
IEBkb21pZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2Ygb25lIHBhZ2UgZnJhbWUKKyAqICAgICAg
ICAgICAgICAgICAgICAgICB0byB0aGlzIGd1ZXN0LiBYZW4gd3JpdGVzIHRoZSBwYWdlIG51bWJl
ciB0byBAZnJhbWUuCisgKiAgR1RGX3RyYW5zaXRpdmU6IEFsbG93IEBkb21pZCB0byB0cmFuc2l0
aXZlbHkgYWNjZXNzIGEgc3VicmFuZ2Ugb2YKKyAqICAgICAgICAgICAgICAgICAgQHRyYW5zX2dy
YW50IGluIEB0cmFuc19kb21pZC4gIE5vIG1hcHBpbmdzIGFyZSBhbGxvd2VkLgorICovCisjZGVm
aW5lIEdURl9pbnZhbGlkICAgICAgICAgKDBVPDwwKQorI2RlZmluZSBHVEZfcGVybWl0X2FjY2Vz
cyAgICgxVTw8MCkKKyNkZWZpbmUgR1RGX2FjY2VwdF90cmFuc2ZlciAoMlU8PDApCisjZGVmaW5l
IEdURl90cmFuc2l0aXZlICAgICAgKDNVPDwwKQorI2RlZmluZSBHVEZfdHlwZV9tYXNrICAgICAg
ICgzVTw8MCkKKworLyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfcGVybWl0X2FjY2Vzcy4KKyAqICBH
VEZfcmVhZG9ubHk6IFJlc3RyaWN0IEBkb21pZCB0byByZWFkLW9ubHkgbWFwcGluZ3MgYW5kIGFj
Y2Vzc2VzLiBbR1NUXQorICogIEdURl9yZWFkaW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkg
bWFwcGVkIGZvciByZWFkaW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAqICBHVEZfd3JpdGluZzogR3Jh
bnQgZW50cnkgaXMgY3VycmVudGx5IG1hcHBlZCBmb3Igd3JpdGluZyBieSBAZG9taWQuIFtYRU5d
CisgKiAgR1RGX1BBVCwgR1RGX1BXVCwgR1RGX1BDRDogKHg4NikgY2FjaGUgYXR0cmlidXRlIGZs
YWdzIGZvciB0aGUgZ3JhbnQgW0dTVF0KKyAqICBHVEZfc3ViX3BhZ2U6IEdyYW50IGFjY2VzcyB0
byBvbmx5IGEgc3VicmFuZ2Ugb2YgdGhlIHBhZ2UuICBAZG9taWQKKyAqICAgICAgICAgICAgICAg
IHdpbGwgb25seSBiZSBhbGxvd2VkIHRvIGNvcHkgZnJvbSB0aGUgZ3JhbnQsIGFuZCBub3QKKyAq
ICAgICAgICAgICAgICAgIG1hcCBpdC4gW0dTVF0KKyAqLworI2RlZmluZSBfR1RGX3JlYWRvbmx5
ICAgICAgICgyKQorI2RlZmluZSBHVEZfcmVhZG9ubHkgICAgICAgICgxVTw8X0dURl9yZWFkb25s
eSkKKyNkZWZpbmUgX0dURl9yZWFkaW5nICAgICAgICAoMykKKyNkZWZpbmUgR1RGX3JlYWRpbmcg
ICAgICAgICAoMVU8PF9HVEZfcmVhZGluZykKKyNkZWZpbmUgX0dURl93cml0aW5nICAgICAgICAo
NCkKKyNkZWZpbmUgR1RGX3dyaXRpbmcgICAgICAgICAoMVU8PF9HVEZfd3JpdGluZykKKyNkZWZp
bmUgX0dURl9QV1QgICAgICAgICAgICAoNSkKKyNkZWZpbmUgR1RGX1BXVCAgICAgICAgICAgICAo
MVU8PF9HVEZfUFdUKQorI2RlZmluZSBfR1RGX1BDRCAgICAgICAgICAgICg2KQorI2RlZmluZSBH
VEZfUENEICAgICAgICAgICAgICgxVTw8X0dURl9QQ0QpCisjZGVmaW5lIF9HVEZfUEFUICAgICAg
ICAgICAgKDcpCisjZGVmaW5lIEdURl9QQVQgICAgICAgICAgICAgKDFVPDxfR1RGX1BBVCkKKyNk
ZWZpbmUgX0dURl9zdWJfcGFnZSAgICAgICAoOCkKKyNkZWZpbmUgR1RGX3N1Yl9wYWdlICAgICAg
ICAoMVU8PF9HVEZfc3ViX3BhZ2UpCisKKy8qCisgKiBTdWJmbGFncyBmb3IgR1RGX2FjY2VwdF90
cmFuc2ZlcjoKKyAqICBHVEZfdHJhbnNmZXJfY29tbWl0dGVkOiBYZW4gc2V0cyB0aGlzIGZsYWcg
dG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBjb21taXR0ZWQKKyAqICAgICAgdG8gdHJhbnNmZXJyaW5n
IG93bmVyc2hpcCBvZiBhIHBhZ2UgZnJhbWUuIFdoZW4gYSBndWVzdCBzZWVzIHRoaXMgZmxhZwor
ICogICAgICBpdCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgR1RGX3Ry
YW5zZmVyX2NvbXBsZXRlZCBpcworICogICAgICBzZXQgYnkgWGVuLgorICogIEdURl90cmFuc2Zl
cl9jb21wbGV0ZWQ6IEl0IGlzIHNhZmUgZm9yIHRoZSBndWVzdCB0byBzcGluLXdhaXQgb24gdGhp
cyBmbGFnCisgKiAgICAgIGFmdGVyIHJlYWRpbmcgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZC4gWGVu
IHdpbGwgYWx3YXlzIHdyaXRlIHRoZSBmcmFtZQorICogICAgICBhZGRyZXNzLCBmb2xsb3dlZCBi
eSBPUmluZyB0aGlzIGZsYWcsIGluIGEgdGltZWx5IG1hbm5lci4KKyAqLworI2RlZmluZSBfR1RG
X3RyYW5zZmVyX2NvbW1pdHRlZCAoMikKKyNkZWZpbmUgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCAg
KDFVPDxfR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkKKyNkZWZpbmUgX0dURl90cmFuc2Zlcl9jb21w
bGV0ZWQgKDMpCisjZGVmaW5lIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgICgxVTw8X0dURl90cmFu
c2Zlcl9jb21wbGV0ZWQpCisKKy8qCisgKiBWZXJzaW9uIDIgZ3JhbnQgdGFibGUgZW50cmllcy4g
IFRoZXNlIGZ1bGZpbCB0aGUgc2FtZSByb2xlIGFzCisgKiB2ZXJzaW9uIDEgZW50cmllcywgYnV0
IGNhbiByZXByZXNlbnQgbW9yZSBjb21wbGljYXRlZCBvcGVyYXRpb25zLgorICogQW55IGdpdmVu
IGRvbWFpbiB3aWxsIGhhdmUgZWl0aGVyIGEgdmVyc2lvbiAxIG9yIGEgdmVyc2lvbiAyIHRhYmxl
LAorICogYW5kIGV2ZXJ5IGVudHJ5IGluIHRoZSB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIHZlcnNp
b24uCisgKgorICogVGhlIGludGVyZmFjZSBieSB3aGljaCBkb21haW5zIHVzZSBncmFudCByZWZl
cmVuY2VzIGRvZXMgbm90IGRlcGVuZAorICogb24gdGhlIGdyYW50IHRhYmxlIHZlcnNpb24gaW4g
dXNlIGJ5IHRoZSBvdGhlciBkb21haW4uCisgKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lP
Tl9fID49IDB4MDAwMzAyMGEKKy8qCisgKiBWZXJzaW9uIDEgYW5kIHZlcnNpb24gMiBncmFudCBl
bnRyaWVzIHNoYXJlIGEgY29tbW9uIHByZWZpeC4gIFRoZQorICogZmllbGRzIG9mIHRoZSBwcmVm
aXggYXJlIGRvY3VtZW50ZWQgYXMgcGFydCBvZiBzdHJ1Y3QKKyAqIGdyYW50X2VudHJ5X3YxLgor
ICovCitzdHJ1Y3QgZ3JhbnRfZW50cnlfaGVhZGVyIHsKKyAgICB1aW50MTZfdCBmbGFnczsKKyAg
ICBkb21pZF90ICBkb21pZDsKK307Cit0eXBlZGVmIHN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIg
Z3JhbnRfZW50cnlfaGVhZGVyX3Q7CisKKy8qCisgKiBWZXJzaW9uIDIgb2YgdGhlIGdyYW50IGVu
dHJ5IHN0cnVjdHVyZS4KKyAqLwordW5pb24gZ3JhbnRfZW50cnlfdjIgeworICAgIGdyYW50X2Vu
dHJ5X2hlYWRlcl90IGhkcjsKKworICAgIC8qCisgICAgICogVGhpcyBtZW1iZXIgaXMgdXNlZCBm
b3IgVjEtc3R5bGUgZnVsbCBwYWdlIGdyYW50cywgd2hlcmUgZWl0aGVyOgorICAgICAqCisgICAg
ICogLS0gaGRyLnR5cGUgaXMgR1RGX2FjY2VwdF90cmFuc2Zlciwgb3IKKyAgICAgKiAtLSBoZHIu
dHlwZSBpcyBHVEZfcGVybWl0X2FjY2VzcyBhbmQgR1RGX3N1Yl9wYWdlIGlzIG5vdCBzZXQuCisg
ICAgICoKKyAgICAgKiBJbiB0aGF0IGNhc2UsIHRoZSBmcmFtZSBmaWVsZCBoYXMgdGhlIHNhbWUg
c2VtYW50aWNzIGFzIHRoZQorICAgICAqIGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIFYx
IGVudHJ5IHN0cnVjdHVyZS4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBncmFudF9l
bnRyeV9oZWFkZXJfdCBoZHI7CisgICAgICAgIHVpbnQzMl90IHBhZDA7CisgICAgICAgIHVpbnQ2
NF90IGZyYW1lOworICAgIH0gZnVsbF9wYWdlOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgZ3Jh
bnQgdHlwZSBpcyBHVEZfZ3JhbnRfYWNjZXNzIGFuZCBHVEZfc3ViX3BhZ2UgaXMgc2V0LAorICAg
ICAqIEBkb21pZCBpcyBhbGxvd2VkIHRvIGFjY2VzcyBieXRlcyBbQHBhZ2Vfb2ZmLEBwYWdlX29m
ZitAbGVuZ3RoKQorICAgICAqIGluIGZyYW1lIEBmcmFtZS4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qg
eworICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7CisgICAgICAgIHVpbnQxNl90IHBh
Z2Vfb2ZmOworICAgICAgICB1aW50MTZfdCBsZW5ndGg7CisgICAgICAgIHVpbnQ2NF90IGZyYW1l
OworICAgIH0gc3ViX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCBpcyBHVEZf
dHJhbnNpdGl2ZSwgQGRvbWlkIGlzIGFsbG93ZWQgdG8gdXNlIHRoZQorICAgICAqIGdyYW50IEBn
cmVmIGluIGRvbWFpbiBAdHJhbnNfZG9taWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKKyAgICAg
KiBkb21haW4uICBPYnZpb3VzbHksIHRoZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJlIGNvbXBh
dGlibGUKKyAgICAgKiB3aXRoIHRoZSBvcmlnaW5hbCBncmFudC4KKyAgICAgKgorICAgICAqIFRo
ZSBjdXJyZW50IHZlcnNpb24gb2YgWGVuIGRvZXMgbm90IGFsbG93IHRyYW5zaXRpdmUgZ3JhbnRz
CisgICAgICogdG8gYmUgbWFwcGVkLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGdy
YW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAgICAgZG9taWRfdCB0cmFuc19kb21pZDsKKyAg
ICAgICAgdWludDE2X3QgcGFkMDsKKyAgICAgICAgZ3JhbnRfcmVmX3QgZ3JlZjsKKyAgICB9IHRy
YW5zaXRpdmU7CisKKyAgICB1aW50MzJfdCBfX3NwYWNlcls0XTsgLyogUGFkIHRvIGEgcG93ZXIg
b2YgdHdvICovCit9OwordHlwZWRlZiB1bmlvbiBncmFudF9lbnRyeV92MiBncmFudF9lbnRyeV92
Ml90OworCit0eXBlZGVmIHVpbnQxNl90IGdyYW50X3N0YXR1c190OworCisjZW5kaWYgLyogX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIEdSQU5UIFRBQkxFIFFVRVJJRVMgQU5EIFVTRVMKKyAqLworCisvKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3AoZW51bSBncmFu
dF90YWJsZV9vcCBjbWQsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
cywKKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCisg
KiBgCisgKgorICogQGFyZ3MgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGEgcGVyLWNvbW1hbmQgZGF0
YSBzdHJ1Y3R1cmUuIFRoZSBhcnJheQorICogaGFzIEBjb3VudCBtZW1iZXJzCisgKi8KKworLyog
YCBlbnVtIGdyYW50X3RhYmxlX29wIHsgLy8gR05UVEFCT1BfKiA9PiBzdHJ1Y3QgZ250dGFiXyog
Ki8KKyNkZWZpbmUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiAgICAgICAgMAorI2RlZmluZSBHTlRU
QUJPUF91bm1hcF9ncmFudF9yZWYgICAgICAxCisjZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxl
ICAgICAgICAgIDIKKyNkZWZpbmUgR05UVEFCT1BfZHVtcF90YWJsZSAgICAgICAgICAgMworI2Rl
ZmluZSBHTlRUQUJPUF90cmFuc2ZlciAgICAgICAgICAgICA0CisjZGVmaW5lIEdOVFRBQk9QX2Nv
cHkgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgR05UVEFCT1BfcXVlcnlfc2l6ZSAgICAgICAg
ICAgNgorI2RlZmluZSBHTlRUQUJPUF91bm1hcF9hbmRfcmVwbGFjZSAgICA3CisjaWYgX19YRU5f
SU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhCisjZGVmaW5lIEdOVFRBQk9QX3NldF92
ZXJzaW9uICAgICAgICAgIDgKKyNkZWZpbmUgR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXMgICAg
OQorI2RlZmluZSBHTlRUQUJPUF9nZXRfdmVyc2lvbiAgICAgICAgICAxMAorI2RlZmluZSBHTlRU
QUJPUF9zd2FwX2dyYW50X3JlZgkgICAgICAxMQorI2RlZmluZSBHTlRUQUJPUF9jYWNoZV9mbHVz
aAkgICAgICAxMgorI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KKy8qIGAg
fSAqLworCisvKgorICogSGFuZGxlIHRvIHRyYWNrIGEgbWFwcGluZyBjcmVhdGVkIHZpYSBhIGdy
YW50IHJlZmVyZW5jZS4KKyAqLwordHlwZWRlZiB1aW50MzJfdCBncmFudF9oYW5kbGVfdDsKKwor
LyoKKyAqIEdOVFRBQk9QX21hcF9ncmFudF9yZWY6IE1hcCB0aGUgZ3JhbnQgZW50cnkgKDxkb20+
LDxyZWY+KSBmb3IgYWNjZXNzCisgKiBieSBkZXZpY2VzIGFuZC9vciBob3N0IENQVXMuIElmIHN1
Y2Nlc3NmdWwsIDxoYW5kbGU+IGlzIGEgdHJhY2tpbmcgbnVtYmVyCisgKiB0aGF0IG11c3QgYmUg
cHJlc2VudGVkIGxhdGVyIHRvIGRlc3Ryb3kgdGhlIG1hcHBpbmcocykuIE9uIGVycm9yLCA8aGFu
ZGxlPgorICogaXMgYSBuZWdhdGl2ZSBzdGF0dXMgY29kZS4KKyAqIE5PVEVTOgorICogIDEuIElm
IEdOVE1BUF9kZXZpY2VfbWFwIGlzIHNwZWNpZmllZCB0aGVuIDxkZXZfYnVzX2FkZHI+IGlzIHRo
ZSBhZGRyZXNzCisgKiAgICAgdmlhIHdoaWNoIEkvTyBkZXZpY2VzIG1heSBhY2Nlc3MgdGhlIGdy
YW50ZWQgZnJhbWUuCisgKiAgMi4gSWYgR05UTUFQX2hvc3RfbWFwIGlzIHNwZWNpZmllZCB0aGVu
IGEgbWFwcGluZyB3aWxsIGJlIGFkZGVkIGF0CisgKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFs
IGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQKKyAqICAgICBhIFBU
RSBhdCB0aGUgc3BlY2lmaWVkIG1hY2hpbmUgYWRkcmVzcy4gIFRoZSB0eXBlIG9mIG1hcHBpbmcg
dG8KKyAqICAgICBwZXJmb3JtIGlzIHNlbGVjdGVkIHRocm91Z2ggdGhlIEdOVE1BUF9jb250YWlu
c19wdGUgZmxhZywgYW5kIHRoZQorICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0
X2FkZHI+LgorICogIDMuIE1hcHBpbmdzIHNob3VsZCBvbmx5IGJlIGRlc3Ryb3llZCB2aWEgR05U
VEFCT1BfdW5tYXBfZ3JhbnRfcmVmLiBJZiBhCisgKiAgICAgaG9zdCBtYXBwaW5nIGlzIGRlc3Ry
b3llZCBieSBvdGhlciBtZWFucyB0aGVuIGl0IGlzICpOT1QqIGd1YXJhbnRlZWQKKyAqICAgICB0
byBiZSBhY2NvdW50ZWQgdG8gdGhlIGNvcnJlY3QgZ3JhbnQgcmVmZXJlbmNlIQorICovCitzdHJ1
Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAg
dWludDY0X3QgaG9zdF9hZGRyOworICAgIHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAgIC8q
IEdOVE1BUF8qICovCisgICAgZ3JhbnRfcmVmX3QgcmVmOworICAgIGRvbWlkX3QgIGRvbTsKKyAg
ICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAg
ICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsK
KyAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX21h
cF9ncmFudF9yZWYgZ250dGFiX21hcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO
RExFKGdudHRhYl9tYXBfZ3JhbnRfcmVmX3QpOworCisvKgorICogR05UVEFCT1BfdW5tYXBfZ3Jh
bnRfcmVmOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICog
dHJhY2tlZCBieSA8aGFuZGxlPi4gSWYgPGhvc3RfYWRkcj4gb3IgPGRldl9idXNfYWRkcj4gaXMg
emVybywgdGhhdAorICogZmllbGQgaXMgaWdub3JlZC4gSWYgbm9uLXplcm8sIHRoZXkgbXVzdCBy
ZWZlciB0byBhIGRldmljZS9ob3N0IG1hcHBpbmcKKyAqIHRoYXQgaXMgdHJhY2tlZCBieSA8aGFu
ZGxlPgorICogTk9URVM6CisgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4gdW5kZWZpbmVk
IG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKKyAqICAgICB0cmFja2VkIGJ5IDxoYW5k
bGU+LgorICogIDMuIEFmdGVyIGV4ZWN1dGluZyBhIGJhdGNoIG9mIHVubWFwcywgaXQgaXMgZ3Vh
cmFudGVlZCB0aGF0IG5vIHN0YWxlCisgKiAgICAgbWFwcGluZ3Mgd2lsbCByZW1haW4gaW4gdGhl
IGRldmljZSBvciBob3N0IFRMQnMuCisgKi8KK3N0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVm
IHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKKyAg
ICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7CisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAg
IC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAg
IC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3Vu
bWFwX2dyYW50X3JlZiBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmX3Q7CitERUZJTkVfWEVOX0dVRVNU
X0hBTkRMRShnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmX3QpOworCisvKgorICogR05UVEFCT1Bfc2V0
dXBfdGFibGU6IFNldCB1cCBhIGdyYW50IHRhYmxlIGZvciA8ZG9tPiBjb21wcmlzaW5nIGF0IGxl
YXN0CisgKiA8bnJfZnJhbWVzPiBwYWdlcy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRl
biB0byB0aGUgPGZyYW1lX2xpc3Q+LgorICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJl
IHdyaXR0ZW4sIGV2ZW4gaWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KKyAqIE5PVEVTOgorICogIDEu
IDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3Vm
ZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NF
TEYuCisgKiAgMy4gWGVuIG1heSBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gYSBzaW5nbGUgZ3JhbnQt
dGFibGUgcGFnZSBwZXIgZG9tYWluLgorICovCitzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIHsK
KyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgIGRvbTsKKyAgICB1aW50MzJf
dCBucl9mcmFtZXM7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgc3Rh
dHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KKyNpZiBfX1hFTl9J
TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAorICAgIFhFTl9HVUVTVF9IQU5ETEUodWxv
bmcpIGZyYW1lX2xpc3Q7CisjZWxzZQorICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3Bmbl90KSBm
cmFtZV9saXN0OworI2VuZGlmCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxl
IGdudHRhYl9zZXR1cF90YWJsZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3Nl
dHVwX3RhYmxlX3QpOworCisvKgorICogR05UVEFCT1BfZHVtcF90YWJsZTogRHVtcCB0aGUgY29u
dGVudHMgb2YgdGhlIGdyYW50IHRhYmxlIHRvIHRoZQorICogeGVuIGNvbnNvbGUuIERlYnVnZ2lu
ZyB1c2Ugb25seS4KKyAqLworc3RydWN0IGdudHRhYl9kdW1wX3RhYmxlIHsKKyAgICAvKiBJTiBw
YXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgZG9tOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAq
LworICAgIGludDE2X3Qgc3RhdHVzOyAgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3Rh
dHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2R1bXBfdGFibGUgZ250dGFiX2R1bXBf
dGFibGVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9kdW1wX3RhYmxlX3QpOwor
CisvKgorICogR05UVEFCT1BfdHJhbnNmZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRv
IGEgZm9yZWlnbiBkb21haW4uIFRoZQorICogZm9yZWlnbiBkb21haW4gaGFzIHByZXZpb3VzbHkg
cmVnaXN0ZXJlZCBpdHMgaW50ZXJlc3QgaW4gdGhlIHRyYW5zZmVyIHZpYQorICogPGRvbWlkLCBy
ZWY+LgorICoKKyAqIE5vdGUgdGhhdCwgZXZlbiBpZiB0aGUgdHJhbnNmZXIgZmFpbHMsIHRoZSBz
cGVjaWZpZWQgcGFnZSBubyBMT05HX1BUUmVyIGJlbG9uZ3MKKyAqIHRvIHRoZSBjYWxsaW5nIGRv
bWFpbiAqdW5sZXNzKiB0aGUgZXJyb3IgaXMgR05UU1RfYmFkX3BhZ2UuCisgKi8KK3N0cnVjdCBn
bnR0YWJfdHJhbnNmZXIgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgeGVuX3Bmbl90
ICAgICBtZm47CisgICAgZG9taWRfdCAgICAgICBkb21pZDsKKyAgICBncmFudF9yZWZfdCAgIHJl
ZjsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICAgICAgIHN0YXR1czsK
K307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdHJhbnNmZXIgZ250dGFiX3RyYW5zZmVyX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfdHJhbnNmZXJfdCk7CisKKworLyoKKyAqIEdO
VFRBQk9QX2NvcHk6IEh5cGVydmlzb3IgYmFzZWQgY29weQorICogc291cmNlIGFuZCBkZXN0aW5h
dGlvbnMgY2FuIGJlIGVpdGhlcnMgTUZOcyBvciwgZm9yIGZvcmVpZ24gZG9tYWlucywKKyAqIGdy
YW50IHJlZmVyZW5jZXMuIHRoZSBmb3JlaWduIGRvbWFpbiBoYXMgdG8gZ3JhbnQgcmVhZC93cml0
ZSBhY2Nlc3MKKyAqIGluIGl0cyBncmFudCB0YWJsZS4KKyAqCisgKiBUaGUgZmxhZ3Mgc3BlY2lm
eSB3aGF0IHR5cGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgYXJlIChlaXRoZXIgTUZOCisgKiBv
ciBncmFudCByZWZlcmVuY2UpLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGNhbiBhbHNvIGJlIHVz
ZWQgdG8gY29weSBkYXRhIGJldHdlZW4gdHdvIGRvbWFpbnMKKyAqIHZpYSBhIHRoaXJkIHBhcnR5
IGlmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvbWFpbnMgaGFkIHByZXZpb3VzbHkKKyAq
IGdyYW50IGFwcHJvcHJpYXRlIGFjY2VzcyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFy
dHkuCisgKgorICogc291cmNlX29mZnNldCBzcGVjaWZpZXMgYW4gb2Zmc2V0IGluIHRoZSBzb3Vy
Y2UgZnJhbWUsIGRlc3Rfb2Zmc2V0CisgKiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUg
YW5kICBsZW4gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKKyAqIGJ5dGVzIHRvIGJlIGNvcGllZC4K
KyAqLworCisjZGVmaW5lIF9HTlRDT1BZX3NvdXJjZV9ncmVmICAgICAgKDApCisjZGVmaW5lIEdO
VENPUFlfc291cmNlX2dyZWYgICAgICAgKDE8PF9HTlRDT1BZX3NvdXJjZV9ncmVmKQorI2RlZmlu
ZSBfR05UQ09QWV9kZXN0X2dyZWYgICAgICAgICgxKQorI2RlZmluZSBHTlRDT1BZX2Rlc3RfZ3Jl
ZiAgICAgICAgICgxPDxfR05UQ09QWV9kZXN0X2dyZWYpCisKK3N0cnVjdCBnbnR0YWJfY29weSB7
CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBzdHJ1Y3QgZ250dGFiX2NvcHlfcHRyIHsK
KyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOworICAgICAgICAg
ICAgeGVuX3Bmbl90ICAgZ21mbjsKKyAgICAgICAgfSB1OworICAgICAgICBkb21pZF90ICBkb21p
ZDsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0OworICAgIH0gc291cmNlLCBkZXN0OworICAgIHVp
bnQxNl90ICAgICAgbGVuOworICAgIHVpbnQxNl90ICAgICAgZmxhZ3M7ICAgICAgICAgIC8qIEdO
VENPUFlfKiAqLworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2X3QgICAgICAg
c3RhdHVzOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9jb3B5ICBnbnR0YWJfY29weV90Owor
REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2NvcHlfdCk7CisKKy8qCisgKiBHTlRUQUJP
UF9xdWVyeV9zaXplOiBRdWVyeSB0aGUgY3VycmVudCBhbmQgbWF4aW11bSBzaXplcyBvZiB0aGUg
c2hhcmVkCisgKiBncmFudCB0YWJsZS4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBz
cGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZp
bGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCisgKi8KK3N0cnVj
dCBnbnR0YWJfcXVlcnlfc2l6ZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBkb21p
ZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJfZnJh
bWVzOworICAgIHVpbnQzMl90IG1heF9ucl9mcmFtZXM7CisgICAgaW50MTZfdCAgc3RhdHVzOyAg
ICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVj
dCBnbnR0YWJfcXVlcnlfc2l6ZSBnbnR0YWJfcXVlcnlfc2l6ZV90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoZ250dGFiX3F1ZXJ5X3NpemVfdCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9h
bmRfcmVwbGFjZTogRGVzdHJveSBvbmUgb3IgbW9yZSBncmFudC1yZWZlcmVuY2UgbWFwcGluZ3MK
KyAqIHRyYWNrZWQgYnkgPGhhbmRsZT4gYnV0IGF0b21pY2FsbHkgcmVwbGFjZSB0aGUgcGFnZSB0
YWJsZSBlbnRyeSB3aXRoIG9uZQorICogcG9pbnRpbmcgdG8gdGhlIG1hY2hpbmUgYWRkcmVzcyB1
bmRlciA8bmV3X2FkZHI+LiAgPG5ld19hZGRyPiB3aWxsIGJlCisgKiByZWRpcmVjdGVkIHRvIHRo
ZSBudWxsIGVudHJ5LgorICogTk9URVM6CisgKiAgMS4gVGhlIGNhbGwgbWF5IGZhaWwgaW4gYW4g
dW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKKyAqICAgICB0cmFja2Vk
IGJ5IDxoYW5kbGU+LgorICogIDIuIEFmdGVyIGV4ZWN1dGluZyBhIGJhdGNoIG9mIHVubWFwcywg
aXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIHN0YWxlCisgKiAgICAgbWFwcGluZ3Mgd2lsbCByZW1h
aW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCisgKi8KK3N0cnVjdCBnbnR0YWJfdW5tYXBf
YW5kX3JlcGxhY2UgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDY0X3QgaG9z
dF9hZGRyOworICAgIHVpbnQ2NF90IG5ld19hZGRyOworICAgIGdyYW50X2hhbmRsZV90IGhhbmRs
ZTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAg
ICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdu
dHRhYl91bm1hcF9hbmRfcmVwbGFjZSBnbnR0YWJfdW5tYXBfYW5kX3JlcGxhY2VfdDsKK0RFRklO
RV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZV90KTsKKworI2lmIF9f
WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQorLyoKKyAqIEdOVFRBQk9QX3Nl
dF92ZXJzaW9uOiBSZXF1ZXN0IGEgcGFydGljdWxhciB2ZXJzaW9uIG9mIHRoZSBncmFudAorICog
dGFibGUgc2hhcmVkIHRhYmxlIHN0cnVjdHVyZS4gIFRoaXMgb3BlcmF0aW9uIGNhbiBvbmx5IGJl
IHBlcmZvcm1lZAorICogb25jZSBpbiBhbnkgZ2l2ZW4gZG9tYWluLiAgSXQgbXVzdCBiZSBwZXJm
b3JtZWQgYmVmb3JlIGFueSBncmFudHMKKyAqIGFyZSBhY3RpdmF0ZWQ7IG90aGVyd2lzZSwgdGhl
IGRvbWFpbiB3aWxsIGJlIHN0dWNrIHdpdGggdmVyc2lvbiAxLgorICogVGhlIG9ubHkgZGVmaW5l
ZCB2ZXJzaW9ucyBhcmUgMSBhbmQgMi4KKyAqLworc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiB7
CisgICAgLyogSU4vT1VUIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCB2ZXJzaW9uOworfTsK
K3R5cGVkZWYgc3RydWN0IGdudHRhYl9zZXRfdmVyc2lvbiBnbnR0YWJfc2V0X3ZlcnNpb25fdDsK
K0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zZXRfdmVyc2lvbl90KTsKKworCisvKgor
ICogR05UVEFCT1BfZ2V0X3N0YXR1c19mcmFtZXM6IEdldCB0aGUgbGlzdCBvZiBmcmFtZXMgdXNl
ZCB0byBzdG9yZSBncmFudAorICogc3RhdHVzIGZvciA8ZG9tPi4gSW4gZ3JhbnQgZm9ybWF0IHZl
cnNpb24gMiwgdGhlIHN0YXR1cyBpcyBzZXBhcmF0ZWQKKyAqIGZyb20gdGhlIG90aGVyIHNoYXJl
ZCBncmFudCBmaWVsZHMgdG8gYWxsb3cgbW9yZSBlZmZpY2llbnQgc3luY2hyb25pemF0aW9uCisg
KiB1c2luZyBiYXJyaWVycyBpbnN0ZWFkIG9mIGF0b21pYyBjbXBleGNoIG9wZXJhdGlvbnMuCisg
KiA8bnJfZnJhbWVzPiBzcGVjaWZ5IHRoZSBzaXplIG9mIHZlY3RvciA8ZnJhbWVfbGlzdD4uCisg
KiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSByZXR1cm5lZCBpbiB0aGUgPGZyYW1lX2xpc3Q+Lgor
ICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHJldHVybmVkLCBldmVuIGlmIHRoZSB0
YWJsZSBpcyBsYXJnZXIuCisgKiBOT1RFUzoKKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVk
IGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRv
bWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBET01JRF9TRUxGLgorICovCitzdHJ1Y3QgZ250dGFi
X2dldF9zdGF0dXNfZnJhbWVzIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQz
Ml90IG5yX2ZyYW1lczsKKyAgICBkb21pZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9z
dGF0dXMgKi8KKyAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ2NF90KSBmcmFtZV9saXN0OworfTsK
K3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyBnbnR0YWJfZ2V0X3N0YXR1
c19mcmFtZXNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfc3RhdHVzX2Zy
YW1lc190KTsKKworLyoKKyAqIEdOVFRBQk9QX2dldF92ZXJzaW9uOiBHZXQgdGhlIGdyYW50IHRh
YmxlIHZlcnNpb24gd2hpY2ggaXMgaW4KKyAqIGVmZmVjdCBmb3IgZG9tYWluIDxkb20+LgorICov
CitzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovCisg
ICAgZG9taWRfdCBkb207CisgICAgdWludDE2X3QgcGFkOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
ICovCisgICAgdWludDMyX3QgdmVyc2lvbjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfZ2V0
X3ZlcnNpb24gZ250dGFiX2dldF92ZXJzaW9uX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfZ2V0X3ZlcnNpb25fdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zd2FwX2dyYW50X3JlZjog
U3dhcCB0aGUgY29udGVudHMgb2YgdHdvIGdyYW50IGVudHJpZXMuCisgKi8KK3N0cnVjdCBnbnR0
YWJfc3dhcF9ncmFudF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBncmFudF9y
ZWZfdCByZWZfYTsKKyAgICBncmFudF9yZWZfdCByZWZfYjsKKyAgICAvKiBPVVQgcGFyYW1ldGVy
cyAqLworICAgIGludDE2X3Qgc3RhdHVzOyAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0
YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiBnbnR0YWJf
c3dhcF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9zd2FwX2dy
YW50X3JlZl90KTsKKworLyoKKyAqIElzc3VlIG9uZSBvciBtb3JlIGNhY2hlIG1haW50ZW5hbmNl
IG9wZXJhdGlvbnMgb24gYSBwb3J0aW9uIG9mIGEKKyAqIHBhZ2UgZ3JhbnRlZCB0byB0aGUgY2Fs
bGluZyBkb21haW4gYnkgYSBmb3JlaWduIGRvbWFpbi4KKyAqLworc3RydWN0IGdudHRhYl9jYWNo
ZV9mbHVzaCB7CisgICAgdW5pb24geworICAgICAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7Cisg
ICAgICAgIGdyYW50X3JlZl90IHJlZjsKKyAgICB9IGE7CisgICAgdWludDE2X3Qgb2Zmc2V0OyAv
KiBvZmZzZXQgZnJvbSBzdGFydCBvZiBncmFudCAqLworICAgIHVpbnQxNl90IGxlbmd0aDsgLyog
c2l6ZSB3aXRoaW4gdGhlIGdyYW50ICovCisjZGVmaW5lIEdOVFRBQl9DQUNIRV9DTEVBTiAgICAg
ICAgICAoMTw8MCkKKyNkZWZpbmUgR05UVEFCX0NBQ0hFX0lOVkFMICAgICAgICAgICgxPDwxKQor
I2RlZmluZSBHTlRUQUJfQ0FDSEVfU09VUkNFX0dSRUYgICAgKDE8PDMxKQorICAgIHVpbnQzMl90
IG9wOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9jYWNoZV9mbHVzaCBnbnR0YWJfY2FjaGVf
Zmx1c2hfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9jYWNoZV9mbHVzaF90KTsK
KworI2VuZGlmIC8qIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gKi8KKworLyoKKyAqIEJpdGZp
ZWxkIHZhbHVlcyBmb3IgZ250dGFiX21hcF9ncmFudF9yZWYuZmxhZ3MuCisgKi8KKyAvKiBNYXAg
dGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgSS9PIGRldmljZXMuICovCisjZGVmaW5lIF9H
TlRNQVBfZGV2aWNlX21hcCAgICAgICgwKQorI2RlZmluZSBHTlRNQVBfZGV2aWNlX21hcCAgICAg
ICAoMTw8X0dOVE1BUF9kZXZpY2VfbWFwKQorIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFj
Y2VzcyBieSBob3N0IENQVXMuICovCisjZGVmaW5lIF9HTlRNQVBfaG9zdF9tYXAgICAgICAgICgx
KQorI2RlZmluZSBHTlRNQVBfaG9zdF9tYXAgICAgICAgICAoMTw8X0dOVE1BUF9ob3N0X21hcCkK
KyAvKiBBY2Nlc3NlcyB0byB0aGUgZ3JhbnRlZCBmcmFtZSB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8g
cmVhZC1vbmx5IGFjY2Vzcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9yZWFkb25seSAgICAgICAgKDIp
CisjZGVmaW5lIEdOVE1BUF9yZWFkb25seSAgICAgICAgICgxPDxfR05UTUFQX3JlYWRvbmx5KQor
IC8qCisgICogR05UTUFQX2hvc3RfbWFwIHN1YmZsYWc6CisgICogIDAgPT4gVGhlIGhvc3QgbWFw
cGluZyBpcyB1c2FibGUgb25seSBieSB0aGUgZ3Vlc3QgT1MuCisgICogIDEgPT4gVGhlIGhvc3Qg
bWFwcGluZyBpcyB1c2FibGUgYnkgZ3Vlc3QgT1MgKyBjdXJyZW50IGFwcGxpY2F0aW9uLgorICAq
LworI2RlZmluZSBfR05UTUFQX2FwcGxpY2F0aW9uX21hcCAoMykKKyNkZWZpbmUgR05UTUFQX2Fw
cGxpY2F0aW9uX21hcCAgKDE8PF9HTlRNQVBfYXBwbGljYXRpb25fbWFwKQorCisgLyoKKyAgKiBH
TlRNQVBfY29udGFpbnNfcHRlIHN1YmZsYWc6CisgICogIDAgPT4gVGhpcyBtYXAgcmVxdWVzdCBj
b250YWlucyBhIGhvc3QgdmlydHVhbCBhZGRyZXNzLgorICAqICAxID0+IFRoaXMgbWFwIHJlcXVl
c3QgY29udGFpbnMgdGhlIG1hY2hpbmUgYWRkZXNzIG9mIHRoZSBQVEUgdG8gdXBkYXRlLgorICAq
LworI2RlZmluZSBfR05UTUFQX2NvbnRhaW5zX3B0ZSAgICAoNCkKKyNkZWZpbmUgR05UTUFQX2Nv
bnRhaW5zX3B0ZSAgICAgKDE8PF9HTlRNQVBfY29udGFpbnNfcHRlKQorCisjZGVmaW5lIF9HTlRN
QVBfY2FuX2ZhaWwgICAgICAgICg1KQorI2RlZmluZSBHTlRNQVBfY2FuX2ZhaWwgICAgICAgICAo
MTw8X0dOVE1BUF9jYW5fZmFpbCkKKworLyoKKyAqIEJpdHMgdG8gYmUgcGxhY2VkIGluIGd1ZXN0
IGtlcm5lbCBhdmFpbGFibGUgUFRFIGJpdHMgKGFyY2hpdGVjdHVyZQorICogZGVwZW5kZW50OyBv
bmx5IHN1cHBvcnRlZCB3aGVuIFhFTkZFQVRfZ250dGFiX21hcF9hdmFpbF9iaXRzIGlzIHNldCku
CisgKi8KKyNkZWZpbmUgX0dOVE1BUF9ndWVzdF9hdmFpbDAgICAgKDE2KQorI2RlZmluZSBHTlRN
QVBfZ3Vlc3RfYXZhaWxfbWFzayAoKHVpbnQzMl90KX4wIDw8IF9HTlRNQVBfZ3Vlc3RfYXZhaWww
KQorCisvKgorICogVmFsdWVzIGZvciBlcnJvciBzdGF0dXMgcmV0dXJucy4gQWxsIGVycm9ycyBh
cmUgLXZlLgorICovCisvKiBgIGVudW0gZ3JhbnRfc3RhdHVzIHsgKi8KKyNkZWZpbmUgR05UU1Rf
b2theSAgICAgICAgICAgICAoMCkgIC8qIE5vcm1hbCByZXR1cm4uICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgR05UU1RfZ2VuZXJhbF9lcnJvciAgICAoLTEpIC8qIEdlbmVyYWwg
dW5kZWZpbmVkIGVycm9yLiAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX2RvbWFp
biAgICAgICAoLTIpIC8qIFVucmVjb2duc2VkIGRvbWFpbiBpZC4gICAgICAgICAgICAgICAgKi8K
KyNkZWZpbmUgR05UU1RfYmFkX2dudHJlZiAgICAgICAoLTMpIC8qIFVucmVjb2duaXNlZCBvciBp
bmFwcHJvcHJpYXRlIGdudHJlZi4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX2hhbmRsZSAgICAgICAo
LTQpIC8qIFVucmVjb2duaXNlZCBvciBpbmFwcHJvcHJpYXRlIGhhbmRsZS4gKi8KKyNkZWZpbmUg
R05UU1RfYmFkX3ZpcnRfYWRkciAgICAoLTUpIC8qIEluYXBwcm9wcmlhdGUgdmlydHVhbCBhZGRy
ZXNzIHRvIG1hcC4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX2Rldl9hZGRyICAgICAoLTYpIC8qIElu
YXBwcm9wcmlhdGUgZGV2aWNlIGFkZHJlc3MgdG8gdW5tYXAuKi8KKyNkZWZpbmUgR05UU1Rfbm9f
ZGV2aWNlX3NwYWNlICAoLTcpIC8qIE91dCBvZiBzcGFjZSBpbiBJL08gTU1VLiAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgR05UU1RfcGVybWlzc2lvbl9kZW5pZWQgKC04KSAvKiBOb3QgZW5vdWdo
IHByaXZpbGVnZSBmb3Igb3BlcmF0aW9uLiAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX3BhZ2UgICAg
ICAgICAoLTkpIC8qIFNwZWNpZmllZCBwYWdlIHdhcyBpbnZhbGlkIGZvciBvcC4gICAgKi8KKyNk
ZWZpbmUgR05UU1RfYmFkX2NvcHlfYXJnICAgICgtMTApIC8qIGNvcHkgYXJndW1lbnRzIGNyb3Nz
IHBhZ2UgYm91bmRhcnkuICAgKi8KKyNkZWZpbmUgR05UU1RfYWRkcmVzc190b29fYmlnICgtMTEp
IC8qIHRyYW5zZmVyIHBhZ2UgYWRkcmVzcyB0b28gbGFyZ2UuICAgICAgKi8KKyNkZWZpbmUgR05U
U1RfZWFnYWluICAgICAgICAgICgtMTIpIC8qIE9wZXJhdGlvbiBub3QgZG9uZTsgdHJ5IGFnYWlu
LiAgICAgICAgKi8KKy8qIGAgfSAqLworCisjZGVmaW5lIEdOVFRBQk9QX2Vycm9yX21zZ3MgeyAg
ICAgICAgICAgICAgICAgICBcCisgICAgIm9rYXkiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgInVuZGVmaW5lZCBlcnJvciIsICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgInVucmVjb2duaXNlZCBkb21haW4gaWQiLCAgICAgICAgICAgICAgICAgICBc
CisgICAgImludmFsaWQgZ3JhbnQgcmVmZXJlbmNlIiwgICAgICAgICAgICAgICAgICBcCisgICAg
ImludmFsaWQgbWFwcGluZyBoYW5kbGUiLCAgICAgICAgICAgICAgICAgICBcCisgICAgImludmFs
aWQgdmlydHVhbCBhZGRyZXNzIiwgICAgICAgICAgICAgICAgICBcCisgICAgImludmFsaWQgZGV2
aWNlIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgICBcCisgICAgIm5vIHNwYXJlIHRyYW5zbGF0
aW9uIHNsb3QgaW4gdGhlIEkvTyBNTVUiLCBcCisgICAgInBlcm1pc3Npb24gZGVuaWVkIiwgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgImJhZCBwYWdlIiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgImNvcHkgYXJndW1lbnRzIGNyb3NzIHBhZ2UgYm91bmRhcnki
LCAgICAgICBcCisgICAgInBhZ2UgYWRkcmVzcyBzaXplIHRvbyBsYXJnZSIsICAgICAgICAgICAg
ICBcCisgICAgIm9wZXJhdGlvbiBub3QgZG9uZTsgdHJ5IGFnYWluIiAgICAgICAgICAgICBcCit9
CisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fICovCisKKy8qCisgKiBM
b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj
LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu
aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2lvL25ldGlm
LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vbmV0aWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNTNlYWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVi
bGljL2lvL25ldGlmLmgKQEAgLTAsMCArMSw0MjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyAqIG5ldGlmLmgKKyAqIAorICogVW5pZmllZCBuZXR3b3JrLWRldmljZSBJL08gaW50ZXJmYWNl
IGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAw
My0yMDA0LCBLZWlyIEZyYXNlcgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX05FVElG
X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSU9fTkVUSUZfSF9fCisKKyNpbmNsdWRlICJyaW5n
LmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqIE9sZGVyIGltcGxlbWVu
dGF0aW9uIG9mIFhlbiBuZXR3b3JrIGZyb250ZW5kIC8gYmFja2VuZCBoYXMgYW4KKyAqIGltcGxp
Y2l0IGRlcGVuZGVuY3kgb24gdGhlIE1BWF9TS0JfRlJBR1MgYXMgdGhlIG1heGltdW0gbnVtYmVy
IG9mCisgKiByaW5nIHNsb3RzIGEgc2tiIGNhbiB1c2UuIE5ldGZyb250IC8gbmV0YmFjayBtYXkg
bm90IHdvcmsgYXMKKyAqIGV4cGVjdGVkIHdoZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgaGF2ZSBk
aWZmZXJlbnQgTUFYX1NLQl9GUkFHUy4KKyAqCisgKiBBIGJldHRlciBhcHByb2FjaCBpcyB0byBh
ZGQgbWVjaGFuaXNtIGZvciBuZXRmcm9udCAvIG5ldGJhY2sgdG8KKyAqIG5lZ290aWF0ZSB0aGlz
IHZhbHVlLiBIb3dldmVyIHdlIGNhbm5vdCBmaXggYWxsIHBvc3NpYmxlCisgKiBmcm9udGVuZHMs
IHNvIHdlIG5lZWQgdG8gZGVmaW5lIGEgdmFsdWUgd2hpY2ggc3RhdGVzIHRoZSBtaW5pbXVtCisg
KiBzbG90cyBiYWNrZW5kIG11c3Qgc3VwcG9ydC4KKyAqCisgKiBUaGUgbWluaW11bSB2YWx1ZSBk
ZXJpdmVzIGZyb20gb2xkZXIgTGludXgga2VybmVsJ3MgTUFYX1NLQl9GUkFHUworICogKDE4KSwg
d2hpY2ggaXMgcHJvdmVkIHRvIHdvcmsgd2l0aCBtb3N0IGZyb250ZW5kcy4gQW55IG5ldyBiYWNr
ZW5kCisgKiB3aGljaCBkb2Vzbid0IG5lZ290aWF0ZSB3aXRoIGZyb250ZW5kIHNob3VsZCBleHBl
Y3QgZnJvbnRlbmQgdG8KKyAqIHNlbmQgYSB2YWxpZCBwYWNrZXQgdXNpbmcgc2xvdHMgdXAgdG8g
dGhpcyB2YWx1ZS4KKyAqLworI2RlZmluZSBYRU5fTkVUSUZfTlJfU0xPVFNfTUlOIDE4CisKKy8q
CisgKiBOb3RpZmljYXRpb25zIGFmdGVyIGVucXVldWluZyBhbnkgdHlwZSBvZiBtZXNzYWdlIHNo
b3VsZCBiZSBjb25kaXRpb25hbCBvbgorICogdGhlIGFwcHJvcHJpYXRlIHJlcV9ldmVudCBvciBy
c3BfZXZlbnQgZmllbGQgaW4gdGhlIHNoYXJlZCByaW5nLgorICogSWYgdGhlIGNsaWVudCBzZW5k
cyBub3RpZmljYXRpb24gZm9yIHJ4IHJlcXVlc3RzIHRoZW4gaXQgc2hvdWxkIHNwZWNpZnkKKyAq
IGZlYXR1cmUgJ2ZlYXR1cmUtcngtbm90aWZ5JyB2aWEgeGVuYnVzLiBPdGhlcndpc2UgdGhlIGJh
Y2tlbmQgd2lsbCBhc3N1bWUKKyAqIHRoYXQgaXQgY2Fubm90IHNhZmVseSBxdWV1ZSBwYWNrZXRz
IChhcyBpdCBtYXkgbm90IGJlIGtpY2tlZCB0byBzZW5kIHRoZW0pLgorICovCisKKy8qCisgKiAi
ZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIgaXMgaW50cm9kdWNlZCB0byBzZXBhcmF0ZSBn
dWVzdCBUWAorICogYW5kIFJYIG5vdGlmaWNhdGlvbi4gQmFja2VuZCBlaXRoZXIgZG9lc24ndCBz
dXBwb3J0IHRoaXMgZmVhdHVyZSBvcgorICogYWR2ZXJ0aXNlcyBpdCB2aWEgeGVuc3RvcmUgYXMg
MCAoZGlzYWJsZWQpIG9yIDEgKGVuYWJsZWQpLgorICoKKyAqIFRvIG1ha2UgdXNlIG9mIHRoaXMg
ZmVhdHVyZSwgZnJvbnRlbmQgc2hvdWxkIGFsbG9jYXRlIHR3byBldmVudAorICogY2hhbm5lbHMg
Zm9yIFRYIGFuZCBSWCwgYWR2ZXJ0aXNlIHRoZW0gdG8gYmFja2VuZCBhcworICogImV2ZW50LWNo
YW5uZWwtdHgiIGFuZCAiZXZlbnQtY2hhbm5lbC1yeCIgcmVzcGVjdGl2ZWx5LiBJZiBmcm9udGVu
ZAorICogZG9lc24ndCB3YW50IHRvIHVzZSB0aGlzIGZlYXR1cmUsIGl0IGp1c3Qgd3JpdGVzICJl
dmVudC1jaGFubmVsIgorICogbm9kZSBhcyBiZWZvcmUuCisgKi8KKworLyoKKyAqIE11bHRpcGxl
IHRyYW5zbWl0IGFuZCByZWNlaXZlIHF1ZXVlczoKKyAqIElmIHN1cHBvcnRlZCwgdGhlIGJhY2tl
bmQgd2lsbCB3cml0ZSB0aGUga2V5ICJtdWx0aS1xdWV1ZS1tYXgtcXVldWVzIiB0bworICogdGhl
IGRpcmVjdG9yeSBmb3IgdGhhdCB2aWYsIGFuZCBzZXQgaXRzIHZhbHVlIHRvIHRoZSBtYXhpbXVt
IHN1cHBvcnRlZAorICogbnVtYmVyIG9mIHF1ZXVlcy4KKyAqIEZyb250ZW5kcyB0aGF0IGFyZSBh
d2FyZSBvZiB0aGlzIGZlYXR1cmUgYW5kIHdpc2ggdG8gdXNlIGl0IGNhbiB3cml0ZSB0aGUKKyAq
IGtleSAibXVsdGktcXVldWUtbnVtLXF1ZXVlcyIsIHNldCB0byB0aGUgbnVtYmVyIHRoZXkgd2lz
aCB0byB1c2UsIHdoaWNoCisgKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgbm8gbW9y
ZSB0aGFuIHRoZSB2YWx1ZSByZXBvcnRlZCBieSB0aGUgYmFja2VuZAorICogaW4gIm11bHRpLXF1
ZXVlLW1heC1xdWV1ZXMiLgorICoKKyAqIFF1ZXVlcyByZXBsaWNhdGUgdGhlIHNoYXJlZCByaW5n
cyBhbmQgZXZlbnQgY2hhbm5lbHMuCisgKiAiZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIg
bWF5IG9wdGlvbmFsbHkgYmUgdXNlZCB3aGVuIHVzaW5nCisgKiBtdWx0aXBsZSBxdWV1ZXMsIGJ1
dCBpcyBub3QgbWFuZGF0b3J5LgorICoKKyAqIEVhY2ggcXVldWUgY29uc2lzdHMgb2Ygb25lIHNo
YXJlZCByaW5nIHBhaXIsIGkuZS4gdGhlcmUgbXVzdCBiZSB0aGUgc2FtZQorICogbnVtYmVyIG9m
IHR4IGFuZCByeCByaW5ncy4KKyAqCisgKiBGb3IgZnJvbnRlbmRzIHJlcXVlc3RpbmcganVzdCBv
bmUgcXVldWUsIHRoZSB1c3VhbCBldmVudC1jaGFubmVsIGFuZAorICogcmluZy1yZWYga2V5cyBh
cmUgd3JpdHRlbiBhcyBiZWZvcmUsIHNpbXBsaWZ5aW5nIHRoZSBiYWNrZW5kIHByb2Nlc3NpbmcK
KyAqIHRvIGF2b2lkIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gYSBmcm9udGVuZCB0aGF0IGRvZXNu
J3QgdW5kZXJzdGFuZCB0aGUKKyAqIG11bHRpLXF1ZXVlIGZlYXR1cmUsIGFuZCBvbmUgdGhhdCBk
b2VzLCBidXQgcmVxdWVzdGVkIG9ubHkgb25lIHF1ZXVlLgorICoKKyAqIEZyb250ZW5kcyByZXF1
ZXN0aW5nIHR3byBvciBtb3JlIHF1ZXVlcyBtdXN0IG5vdCB3cml0ZSB0aGUgdG9wbGV2ZWwKKyAq
IGV2ZW50LWNoYW5uZWwgKG9yIGV2ZW50LWNoYW5uZWwte3R4LHJ4fSkgYW5kIHt0eCxyeH0tcmlu
Zy1yZWYga2V5cywKKyAqIGluc3RlYWQgd3JpdGluZyB0aG9zZSBrZXlzIHVuZGVyIHN1Yi1rZXlz
IGhhdmluZyB0aGUgbmFtZSAicXVldWUtTiIgd2hlcmUKKyAqIE4gaXMgdGhlIGludGVnZXIgSUQg
b2YgdGhlIHF1ZXVlIGZvciB3aGljaCB0aG9zZSBrZXlzIGJlbG9uZy4gUXVldWVzCisgKiBhcmUg
aW5kZXhlZCBmcm9tIHplcm8uIEZvciBleGFtcGxlLCBhIGZyb250ZW5kIHdpdGggdHdvIHF1ZXVl
cyBhbmQgc3BsaXQKKyAqIGV2ZW50IGNoYW5uZWxzIG11c3Qgd3JpdGUgdGhlIGZvbGxvd2luZyBz
ZXQgb2YgcXVldWUtcmVsYXRlZCBrZXlzOgorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv
dmlmLzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcyA9ICIyIgorICogL2xvY2FsL2RvbWFpbi8xL2Rl
dmljZS92aWYvMC9xdWV1ZS0wID0gIiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAv
cXVldWUtMC90eC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtdHgwPiIKKyAqIC9sb2NhbC9kb21haW4v
MS9kZXZpY2UvdmlmLzAvcXVldWUtMC9yeC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtcngwPiIKKyAq
IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVudC1jaGFubmVsLXR4ID0g
IjxldnRjaG4tdHgwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9l
dmVudC1jaGFubmVsLXJ4ID0gIjxldnRjaG4tcngwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp
Y2UvdmlmLzAvcXVldWUtMSA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1
ZXVlLTEvdHgtcmluZy1yZWYgPSAiPHJpbmctcmVmLXR4MT4iCisgKiAvbG9jYWwvZG9tYWluLzEv
ZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvcngtcmluZy1yZWYgPSAiPHJpbmctcmVmLXJ4MSIKKyAqIC9s
b2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVudC1jaGFubmVsLXR4ID0gIjxl
dnRjaG4tdHgxPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVu
dC1jaGFubmVsLXJ4ID0gIjxldnRjaG4tcngxPiIKKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgaW5j
b25zaXN0ZW5jeSBpbiB0aGUgWGVuU3RvcmUgZGF0YSwgdGhlIGJhY2tlbmQgbWF5CisgKiBjaG9v
c2Ugbm90IHRvIGNvbm5lY3QgYW55IHF1ZXVlcywgaW5zdGVhZCB0cmVhdGluZyB0aGUgcmVxdWVz
dCBhcyBhbgorICogZXJyb3IuIFRoaXMgaW5jbHVkZXMgc2NlbmFyaW9zIHdoZXJlIG1vcmUgKG9y
IGZld2VyKSBxdWV1ZXMgd2VyZQorICogcmVxdWVzdGVkIHRoYW4gdGhlIGZyb250ZW5kIHByb3Zp
ZGVkIGRldGFpbHMgZm9yLgorICoKKyAqIE1hcHBpbmcgb2YgcGFja2V0cyB0byBxdWV1ZXMgaXMg
Y29uc2lkZXJlZCB0byBiZSBhIGZ1bmN0aW9uIG9mIHRoZQorICogdHJhbnNtaXR0aW5nIHN5c3Rl
bSAoYmFja2VuZCBvciBmcm9udGVuZCkgYW5kIGlzIG5vdCBuZWdvdGlhdGVkCisgKiBiZXR3ZWVu
IHRoZSB0d28uIEd1ZXN0cyBhcmUgZnJlZSB0byB0cmFuc21pdCBwYWNrZXRzIG9uIGFueSBxdWV1
ZQorICogdGhleSBjaG9vc2UsIHByb3ZpZGVkIGl0IGhhcyBiZWVuIHNldCB1cCBjb3JyZWN0bHku
IEd1ZXN0cyBtdXN0IGJlCisgKiBwcmVwYXJlZCB0byByZWNlaXZlIHBhY2tldHMgb24gYW55IHF1
ZXVlIHRoZXkgaGF2ZSByZXF1ZXN0ZWQgYmUgc2V0IHVwLgorICovCisKKy8qCisgKiAiZmVhdHVy
ZS1uby1jc3VtLW9mZmxvYWQiIHNob3VsZCBiZSB1c2VkIHRvIHR1cm4gSVB2NCBUQ1AvVURQIGNo
ZWNrc3VtCisgKiBvZmZsb2FkIG9mZiBvciBvbi4gSWYgaXQgaXMgbWlzc2luZyB0aGVuIHRoZSBm
ZWF0dXJlIGlzIGFzc3VtZWQgdG8gYmUgb24uCisgKiAiZmVhdHVyZS1pcHY2LWNzdW0tb2ZmbG9h
ZCIgc2hvdWxkIGJlIHVzZWQgdG8gdHVybiBJUHY2IFRDUC9VRFAgY2hlY2tzdW0KKyAqIG9mZmxv
YWQgb24gb3Igb2ZmLiBJZiBpdCBpcyBtaXNzaW5nIHRoZW4gdGhlIGZlYXR1cmUgaXMgYXNzdW1l
ZCB0byBiZSBvZmYuCisgKi8KKworLyoKKyAqICJmZWF0dXJlLWdzby10Y3B2NCIgYW5kICJmZWF0
dXJlLWdzby10Y3B2NiIgYWR2ZXJ0aXNlIHRoZSBjYXBhYmlsaXR5IHRvCisgKiBoYW5kbGUgbGFy
Z2UgVENQIHBhY2tldHMgKGluIElQdjQgb3IgSVB2NiBmb3JtIHJlc3BlY3RpdmVseSkuIE5laXRo
ZXIKKyAqIGZyb250ZW5kcyBub3IgYmFja2VuZHMgYXJlIGFzc3VtZWQgdG8gYmUgY2FwYWJsZSB1
bmxlc3MgdGhlIGZsYWdzIGFyZQorICogcHJlc2VudC4KKyAqLworCisvKgorICogVGhpcyBpcyB0
aGUgJ3dpcmUnIGZvcm1hdCBmb3IgcGFja2V0czoKKyAqICBSZXF1ZXN0IDE6IG5ldGlmX3R4X3Jl
cXVlc3RfdCAtLSBORVRUWEZfKiAoYW55IGZsYWdzKQorICogW1JlcXVlc3QgMjogbmV0aWZfZXh0
cmFfaW5mb190XSAob25seSBpZiByZXF1ZXN0IDEgaGFzIE5FVFRYRl9leHRyYV9pbmZvKQorICog
W1JlcXVlc3QgMzogbmV0aWZfZXh0cmFfaW5mb190XSAob25seSBpZiByZXF1ZXN0IDIgaGFzIFhF
Tl9ORVRJRl9FWFRSQV9NT1JFKQorICogIFJlcXVlc3QgNDogbmV0aWZfdHhfcmVxdWVzdF90IC0t
IE5FVFRYRl9tb3JlX2RhdGEKKyAqICBSZXF1ZXN0IDU6IG5ldGlmX3R4X3JlcXVlc3RfdCAtLSBO
RVRUWEZfbW9yZV9kYXRhCisgKiAgLi4uCisgKiAgUmVxdWVzdCBOOiBuZXRpZl90eF9yZXF1ZXN0
X3QgLS0gMAorICovCisKKy8qCisgKiBHdWVzdCB0cmFuc21pdAorICogPT09PT09PT09PT09PT0K
KyAqCisgKiBSaW5nIHNsb3Qgc2l6ZSBpcyAxMiBvY3RldHMsIGhvd2V2ZXIgbm90IGFsbCByZXF1
ZXN0L3Jlc3BvbnNlCisgKiBzdHJ1Y3RzIHVzZSB0aGUgZnVsbCBzaXplLgorICoKKyAqIHR4IHJl
cXVlc3QgZGF0YSAobmV0aWZfdHhfcmVxdWVzdF90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAg
NSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSsKKyAqIHwgZ3JhbnQgcmVmICAgICAgICAgICAgIHwgb2Zmc2V0ICAg
IHwgZmxhZ3MgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSsKKyAqIHwgaWQgICAgICAgIHwgc2l6ZSAgICAgIHwKKyAqICstLS0tLSstLS0t
LSstLS0tLSstLS0tLSsKKyAqCisgKiBncmFudCByZWY6IFJlZmVyZW5jZSB0byBidWZmZXIgcGFn
ZS4KKyAqIG9mZnNldDogT2Zmc2V0IHdpdGhpbiBidWZmZXIgcGFnZS4KKyAqIGZsYWdzOiBORVRU
WEZfKi4KKyAqIGlkOiByZXF1ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiByZXNwb25zZS4KKyAq
IHNpemU6IHBhY2tldCBzaXplIGluIGJ5dGVzLgorICoKKyAqIHR4IHJlc3BvbnNlIChuZXRpZl90
eF9yZXNwb25zZV90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor
ICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQK
KyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAq
IHwgaWQgICAgICAgIHwgc3RhdHVzICAgIHwgdW51c2VkICAgICAgICAgICAgICAgIHwKKyAqICst
LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgdW51
c2VkICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisg
KiBpZDogcmVmbGVjdHMgaWQgaW4gdHJhbnNtaXQgcmVxdWVzdAorICogc3RhdHVzOiBORVRJRl9S
U1BfKgorICoKKyAqIEd1ZXN0IHJlY2VpdmUKKyAqID09PT09PT09PT09PT0KKyAqCisgKiBSaW5n
IHNsb3Qgc2l6ZSBpcyA4IG9jdGV0cy4KKyAqCisgKiByeCByZXF1ZXN0IChuZXRpZl9yeF9yZXF1
ZXN0X3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAg
ICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0t
LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgaWQgICAg
ICAgIHwgcGFkICAgICAgIHwgZ3JlZiAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0t
LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiBpZDogcmVxdWVz
dCBpZGVudGlmaWVyLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiBncmVmOiByZWZlcmVuY2UgdG8g
aW5jb21pbmcgZ3JhbnRlZCBmcmFtZS4KKyAqCisgKiByeCByZXNwb25zZSAobmV0aWZfcnhfcmVz
cG9uc2VfdCkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqICAg
IDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiAr
LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8IGlk
ICAgICAgICB8IG9mZnNldCAgICB8IGZsYWdzICAgICB8IHN0YXR1cyAgICB8CisgKiArLS0tLS0r
LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKgorICogaWQ6IHJl
ZmxlY3RzIGlkIGluIHJlY2VpdmUgcmVxdWVzdAorICogb2Zmc2V0OiBvZmZzZXQgaW4gcGFnZSBv
ZiBzdGFydCBvZiByZWNlaXZlZCBwYWNrZXQKKyAqIGZsYWdzOiBORVRSWEZfKgorICogc3RhdHVz
OiAtdmU6IE5FVElGX1JTUF8qOyArdmU6IFJ4J2VkIHBrdCBzaXplLgorICoKKyAqIEV4dHJhIElu
Zm8KKyAqID09PT09PT09PT0KKyAqCisgKiBDYW4gYmUgcHJlc2VudCBpZiBpbml0aWFsIHJlcXVl
c3QgaGFzIE5FVHtULFJ9WEZfZXh0cmFfaW5mbywgb3IKKyAqIHByZXZpb3VzIGV4dHJhIHJlcXVl
c3QgaGFzIFhFTl9ORVRJRl9FWFRSQV9NT1JFLgorICoKKyAqIFRoZSBzdHJ1Y3QgdGhlcmVmb3Jl
IG5lZWRzIHRvIGZpdCBpbnRvIGVpdGhlciBhIHR4IG9yIHJ4IHNsb3QgYW5kCisgKiBpcyB0aGVy
ZWZvcmUgbGltaXRlZCB0byA4IG9jdGV0cy4KKyAqCisgKiBleHRyYSBpbmZvIChuZXRpZl9leHRy
YV9pbmZvX3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogR2Vu
ZXJhbCBmb3JtYXQ6CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAg
ICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t
LSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3wgdHlwZSBzcGVjZmljIGRhdGEgICAgICAg
ICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t
LSstLS0tLSsKKyAqIHwgcGFkZGluZyBmb3IgdHggICAgICAgIHwKKyAqICstLS0tLSstLS0tLSst
LS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBYRU5fTkVUSUZfRVhUUkFfVFlQRV8qCisgKiBmbGFn
czogWEVOX05FVElGX0VYVFJBX0ZMQUdfKgorICogcGFkZGluZyBmb3IgdHg6IHByZXNlbnQgb25s
eSBpbiB0aGUgdHggY2FzZSBkdWUgdG8gOCBvY3RldCBsaW1pdAorICogICAgIGZyb20gcnggY2Fz
ZS4gTm90IHNob3duIGluIHR5cGUgc3BlY2lmaWMgZW50cmllcyBiZWxvdy4KKyAqCisgKiBYRU5f
TkVUSUZfRVhUUkFfVFlQRV9HU086CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAg
NCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3wgc2l6ZSAgICAgIHx0eXBl
IHwgcGFkIHwgZmVhdHVyZXMgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst
LS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBNdXN0IGJlIFhFTl9ORVRJRl9FWFRSQV9U
WVBFX0dTTworICogZmxhZ3M6IFhFTl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIHNpemU6IE1heGlt
dW0gcGF5bG9hZCBzaXplIG9mIGVhY2ggc2VnbWVudC4KKyAqIHR5cGU6IFhFTl9ORVRJRl9HU09f
VFlQRV8qCisgKiBmZWF0dXJlczogRU5fTkVUSUZfR1NPX0ZFQVRfKgorICoKKyAqIFhFTl9ORVRJ
Rl9FWFRSQV9UWVBFX01DQVNUX3tBREQsREVMfToKKyAqCisgKiAgICAwICAgICAxICAgICAyICAg
ICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0t
Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfHR5cGUgfGZsYWdzfCBhZGRyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t
Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIHR5cGU6IE11c3QgYmUgWEVOX05FVElG
X0VYVFJBX1RZUEVfTUNBU1Rfe0FERCxERUx9CisgKiBmbGFnczogWEVOX05FVElGX0VYVFJBX0ZM
QUdfKgorICogYWRkcjogYWRkcmVzcyB0byBhZGQvcmVtb3ZlCisgKi8KKworLyogUHJvdG9jb2wg
Y2hlY2tzdW0gZmllbGQgaXMgYmxhbmsgaW4gdGhlIHBhY2tldCAoaGFyZHdhcmUgb2ZmbG9hZCk/
ICovCisjZGVmaW5lIF9ORVRUWEZfY3N1bV9ibGFuayAgICAgKDApCisjZGVmaW5lICBORVRUWEZf
Y3N1bV9ibGFuayAgICAgKDFVPDxfTkVUVFhGX2NzdW1fYmxhbmspCisKKy8qIFBhY2tldCBkYXRh
IGhhcyBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHByb3RvY29sIGNoZWNrc3VtLiAqLworI2RlZmlu
ZSBfTkVUVFhGX2RhdGFfdmFsaWRhdGVkICgxKQorI2RlZmluZSAgTkVUVFhGX2RhdGFfdmFsaWRh
dGVkICgxVTw8X05FVFRYRl9kYXRhX3ZhbGlkYXRlZCkKKworLyogUGFja2V0IGNvbnRpbnVlcyBp
biB0aGUgbmV4dCByZXF1ZXN0IGRlc2NyaXB0b3IuICovCisjZGVmaW5lIF9ORVRUWEZfbW9yZV9k
YXRhICAgICAgKDIpCisjZGVmaW5lICBORVRUWEZfbW9yZV9kYXRhICAgICAgKDFVPDxfTkVUVFhG
X21vcmVfZGF0YSkKKworLyogUGFja2V0IHRvIGJlIGZvbGxvd2VkIGJ5IGV4dHJhIGRlc2NyaXB0
b3IocykuICovCisjZGVmaW5lIF9ORVRUWEZfZXh0cmFfaW5mbyAgICAgKDMpCisjZGVmaW5lICBO
RVRUWEZfZXh0cmFfaW5mbyAgICAgKDFVPDxfTkVUVFhGX2V4dHJhX2luZm8pCisKKyNkZWZpbmUg
WEVOX05FVElGX01BWF9UWF9TSVpFIDB4RkZGRgorc3RydWN0IG5ldGlmX3R4X3JlcXVlc3Qgewor
ICAgIGdyYW50X3JlZl90IGdyZWY7ICAgICAgLyogUmVmZXJlbmNlIHRvIGJ1ZmZlciBwYWdlICov
CisgICAgdWludDE2X3Qgb2Zmc2V0OyAgICAgICAvKiBPZmZzZXQgd2l0aGluIGJ1ZmZlciBwYWdl
ICovCisgICAgdWludDE2X3QgZmxhZ3M7ICAgICAgICAvKiBORVRUWEZfKiAqLworICAgIHVpbnQx
Nl90IGlkOyAgICAgICAgICAgLyogRWNob2VkIGluIHJlc3BvbnNlIG1lc3NhZ2UuICovCisgICAg
dWludDE2X3Qgc2l6ZTsgICAgICAgICAvKiBQYWNrZXQgc2l6ZSBpbiBieXRlcy4gICAgICAgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBuZXRpZl90eF9yZXF1ZXN0IG5ldGlmX3R4X3JlcXVlc3RfdDsK
KworLyogVHlwZXMgb2YgbmV0aWZfZXh0cmFfaW5mbyBkZXNjcmlwdG9ycy4gKi8KKyNkZWZpbmUg
WEVOX05FVElGX0VYVFJBX1RZUEVfTk9ORSAgICAgICgwKSAgLyogTmV2ZXIgdXNlZCAtIGludmFs
aWQgKi8KKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfR1NPICAgICAgICgxKSAgLyogdS5n
c28gKi8KKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfTUNBU1RfQUREICgyKSAgLyogdS5t
Y2FzdCAqLworI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF9ERUwgKDMpICAvKiB1
Lm1jYXN0ICovCisjZGVmaW5lIFhFTl9ORVRJRl9FWFRSQV9UWVBFX01BWCAgICAgICAoNCkKKwor
LyogbmV0aWZfZXh0cmFfaW5mb190IGZsYWdzLiAqLworI2RlZmluZSBfWEVOX05FVElGX0VYVFJB
X0ZMQUdfTU9SRSAoMCkKKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAgKDFVPDxf
WEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSkKKworLyogR1NPIHR5cGVzICovCisjZGVmaW5lIFhF
Tl9ORVRJRl9HU09fVFlQRV9OT05FICAgICAgICAgKDApCisjZGVmaW5lIFhFTl9ORVRJRl9HU09f
VFlQRV9UQ1BWNCAgICAgICAgKDEpCisjZGVmaW5lIFhFTl9ORVRJRl9HU09fVFlQRV9UQ1BWNiAg
ICAgICAgKDIpCisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBuZWVkcyB0byBmaXQgd2l0aGluIGJv
dGggbmV0aWZfdHhfcmVxdWVzdF90IGFuZAorICogbmV0aWZfcnhfcmVzcG9uc2VfdCBmb3IgY29t
cGF0aWJpbGl0eS4KKyAqLworc3RydWN0IG5ldGlmX2V4dHJhX2luZm8geworICAgIHVpbnQ4X3Qg
dHlwZTsgIC8qIFhFTl9ORVRJRl9FWFRSQV9UWVBFXyogKi8KKyAgICB1aW50OF90IGZsYWdzOyAv
KiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qICovCisKKyAgICB1bmlvbiB7CisgICAgICAgIC8qCisg
ICAgICAgICAqIFhFTl9ORVRJRl9FWFRSQV9UWVBFX0dTTzoKKyAgICAgICAgICovCisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogTWF4aW11bSBwYXlsb2Fk
IHNpemUgb2YgZWFjaCBzZWdtZW50LiBGb3IgZXhhbXBsZSwgZm9yIFRDUCB0aGlzCisgICAgICAg
ICAgICAgKiBpcyBqdXN0IHRoZSBwYXRoIE1TUy4KKyAgICAgICAgICAgICAqLworICAgICAgICAg
ICAgdWludDE2X3Qgc2l6ZTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEdTTyB0
eXBlLiBUaGlzIGRldGVybWluZXMgdGhlIHByb3RvY29sIG9mIHRoZSBwYWNrZXQgYW5kIGFueQor
ICAgICAgICAgICAgICogZXh0cmEgZmVhdHVyZXMgcmVxdWlyZWQgdG8gc2VnbWVudCB0aGUgcGFj
a2V0IHByb3Blcmx5LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB1aW50OF90IHR5cGU7
IC8qIFhFTl9ORVRJRl9HU09fVFlQRV8qICovCisKKyAgICAgICAgICAgIC8qIEZ1dHVyZSBleHBh
bnNpb24uICovCisgICAgICAgICAgICB1aW50OF90IHBhZDsKKworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAqIEdTTyBmZWF0dXJlcy4gVGhpcyBzcGVjaWZpZXMgYW55IGV4dHJhIEdTTyBm
ZWF0dXJlcyByZXF1aXJlZAorICAgICAgICAgICAgICogdG8gcHJvY2VzcyB0aGlzIHBhY2tldCwg
c3VjaCBhcyBFQ04gc3VwcG9ydCBmb3IgVENQdjQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIHVpbnQxNl90IGZlYXR1cmVzOyAvKiBYRU5fTkVUSUZfR1NPX0ZFQVRfKiAqLworICAgICAg
ICB9IGdzbzsKKworICAgICAgICAvKgorICAgICAgICAgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9N
Q0FTVF97QURELERFTH06CisgICAgICAgICAqIEJhY2tlbmQgYWR2ZXJ0aXNlcyBhdmFpbGFiaWxp
dHkgdmlhICdmZWF0dXJlLW11bHRpY2FzdC1jb250cm9sJworICAgICAgICAgKiB4ZW5idXMgbm9k
ZSBjb250YWluaW5nIHZhbHVlICcxJy4KKyAgICAgICAgICogRnJvbnRlbmQgcmVxdWVzdHMgdGhp
cyBmZWF0dXJlIGJ5IGFkdmVydGlzaW5nCisgICAgICAgICAqICdyZXF1ZXN0LW11bHRpY2FzdC1j
b250cm9sJyB4ZW5idXMgbm9kZSBjb250YWluaW5nIHZhbHVlICcxJy4KKyAgICAgICAgICogSWYg
bXVsdGljYXN0IGNvbnRyb2wgaXMgcmVxdWVzdGVkIHRoZW4gbXVsdGljYXN0IGZsb29kaW5nIGlz
CisgICAgICAgICAqIGRpc2FibGVkIGFuZCB0aGUgZnJvbnRlbmQgbXVzdCBleHBsaWNpdGx5IHJl
Z2lzdGVyIGl0cyBpbnRlcmVzdAorICAgICAgICAgKiBpbiBtdWx0aWNhc3QgZ3JvdXBzIHVzaW5n
IGR1bW15IHRyYW5zbWl0IHJlcXVlc3RzIGNvbnRhaW5pbmcKKyAgICAgICAgICogTUNBU1Rfe0FE
RCxERUx9IGV4dHJhLWluZm8gZnJhZ21lbnRzLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWRkcls2XTsgLyogQWRkcmVzcyB0byBhZGQvcmVtb3Zl
LiAqLworICAgICAgICB9IG1jYXN0OworCisgICAgICAgIHVpbnQxNl90IHBhZFszXTsKKyAgICB9
IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbmV0aWZfZXh0cmFfaW5mbyBuZXRpZl9leHRyYV9pbmZv
X3Q7CisKK3N0cnVjdCBuZXRpZl90eF9yZXNwb25zZSB7CisgICAgdWludDE2X3QgaWQ7CisgICAg
aW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiBORVRJRl9SU1BfKiAqLworfTsKK3R5cGVkZWYgc3Ry
dWN0IG5ldGlmX3R4X3Jlc3BvbnNlIG5ldGlmX3R4X3Jlc3BvbnNlX3Q7CisKK3N0cnVjdCBuZXRp
Zl9yeF9yZXF1ZXN0IHsKKyAgICB1aW50MTZfdCAgICBpZDsgICAgICAgIC8qIEVjaG9lZCBpbiBy
ZXNwb25zZSBtZXNzYWdlLiAgICAgICAgKi8KKyAgICB1aW50MTZfdCAgICBwYWQ7CisgICAgZ3Jh
bnRfcmVmX3QgZ3JlZjsgICAgICAvKiBSZWZlcmVuY2UgdG8gaW5jb21pbmcgZ3JhbnRlZCBmcmFt
ZSAqLworfTsKK3R5cGVkZWYgc3RydWN0IG5ldGlmX3J4X3JlcXVlc3QgbmV0aWZfcnhfcmVxdWVz
dF90OworCisvKiBQYWNrZXQgZGF0YSBoYXMgYmVlbiB2YWxpZGF0ZWQgYWdhaW5zdCBwcm90b2Nv
bCBjaGVja3N1bS4gKi8KKyNkZWZpbmUgX05FVFJYRl9kYXRhX3ZhbGlkYXRlZCAoMCkKKyNkZWZp
bmUgIE5FVFJYRl9kYXRhX3ZhbGlkYXRlZCAoMVU8PF9ORVRSWEZfZGF0YV92YWxpZGF0ZWQpCisK
Ky8qIFByb3RvY29sIGNoZWNrc3VtIGZpZWxkIGlzIGJsYW5rIGluIHRoZSBwYWNrZXQgKGhhcmR3
YXJlIG9mZmxvYWQpPyAqLworI2RlZmluZSBfTkVUUlhGX2NzdW1fYmxhbmsgICAgICgxKQorI2Rl
ZmluZSAgTkVUUlhGX2NzdW1fYmxhbmsgICAgICgxVTw8X05FVFJYRl9jc3VtX2JsYW5rKQorCisv
KiBQYWNrZXQgY29udGludWVzIGluIHRoZSBuZXh0IHJlcXVlc3QgZGVzY3JpcHRvci4gKi8KKyNk
ZWZpbmUgX05FVFJYRl9tb3JlX2RhdGEgICAgICAoMikKKyNkZWZpbmUgIE5FVFJYRl9tb3JlX2Rh
dGEgICAgICAoMVU8PF9ORVRSWEZfbW9yZV9kYXRhKQorCisvKiBQYWNrZXQgdG8gYmUgZm9sbG93
ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4gKi8KKyNkZWZpbmUgX05FVFJYRl9leHRyYV9pbmZv
ICAgICAoMykKKyNkZWZpbmUgIE5FVFJYRl9leHRyYV9pbmZvICAgICAoMVU8PF9ORVRSWEZfZXh0
cmFfaW5mbykKKworc3RydWN0IG5ldGlmX3J4X3Jlc3BvbnNlIHsKKyAgICB1aW50MTZfdCBpZDsK
KyAgICB1aW50MTZfdCBvZmZzZXQ7ICAgICAgIC8qIE9mZnNldCBpbiBwYWdlIG9mIHN0YXJ0IG9m
IHJlY2VpdmVkIHBhY2tldCAgKi8KKyAgICB1aW50MTZfdCBmbGFnczsgICAgICAgIC8qIE5FVFJY
Rl8qICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAvKiAtdmU6IE5FVElGX1JTUF8qIDsg
K3ZlOiBSeCdlZCBwa3Qgc2l6ZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCBuZXRpZl9yeF9yZXNw
b25zZSBuZXRpZl9yeF9yZXNwb25zZV90OworCisvKgorICogR2VuZXJhdGUgbmV0aWYgcmluZyBz
dHJ1Y3R1cmVzIGFuZCB0eXBlcy4KKyAqLworCitERUZJTkVfUklOR19UWVBFUyhuZXRpZl90eCwg
c3RydWN0IG5ldGlmX3R4X3JlcXVlc3QsIHN0cnVjdCBuZXRpZl90eF9yZXNwb25zZSk7CitERUZJ
TkVfUklOR19UWVBFUyhuZXRpZl9yeCwgc3RydWN0IG5ldGlmX3J4X3JlcXVlc3QsIHN0cnVjdCBu
ZXRpZl9yeF9yZXNwb25zZSk7CisKKyNkZWZpbmUgTkVUSUZfUlNQX0RST1BQRUQgICAgICAgICAt
MgorI2RlZmluZSBORVRJRl9SU1BfRVJST1IgICAgICAgICAgIC0xCisjZGVmaW5lIE5FVElGX1JT
UF9PS0FZICAgICAgICAgICAgIDAKKy8qIE5vIHJlc3BvbnNlOiB1c2VkIGZvciBhdXhpbGlhcnkg
cmVxdWVzdHMgKGUuZy4sIG5ldGlmX2V4dHJhX2luZm9fdCkuICovCisjZGVmaW5lIE5FVElGX1JT
UF9OVUxMICAgICAgICAgICAgIDEKKworI2VuZGlmCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6
CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog
NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq
LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2lvL3JpbmcuaCBiL2luY2x1ZGUveGVu
L3B1YmxpYy9pby9yaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3
YTQyOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9pby9yaW5nLmgKQEAg
LTAsMCArMSwzMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHJpbmcuaAorICogCisg
KiBTaGFyZWQgcHJvZHVjZXItY29uc3VtZXIgcmluZyBtYWNyb3MuCisgKgorICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICog
cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ
VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO
VC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg
T1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq
IFRpbSBEZWVnYW4gYW5kIEFuZHJldyBXYXJmaWVsZCBOb3ZlbWJlciAyMDA0LgorICovCisKKyNp
Zm5kZWYgX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19S
SU5HX0hfXworCisjaW5jbHVkZSAiLi4veGVuLWNvbXBhdC5oIgorCisjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDgKKyNkZWZpbmUgeGVuX21iKCkgIG1iKCkKKyNkZWZp
bmUgeGVuX3JtYigpIHJtYigpCisjZGVmaW5lIHhlbl93bWIoKSB3bWIoKQorI2VuZGlmCisKK3R5
cGVkZWYgdW5zaWduZWQgaW50IFJJTkdfSURYOworCisvKiBSb3VuZCBhIDMyLWJpdCB1bnNpZ25l
ZCBjb25zdGFudCBkb3duIHRvIHRoZSBuZWFyZXN0IHBvd2VyIG9mIHR3by4gKi8KKyNkZWZpbmUg
X19SRDIoX3gpICAoKChfeCkgJiAweDAwMDAwMDAyKSA/IDB4MiAgICAgICAgICAgICAgICAgIDog
KChfeCkgJiAweDEpKQorI2RlZmluZSBfX1JENChfeCkgICgoKF94KSAmIDB4MDAwMDAwMGMpID8g
X19SRDIoKF94KT4+Mik8PDIgICAgOiBfX1JEMihfeCkpCisjZGVmaW5lIF9fUkQ4KF94KSAgKCgo
X3gpICYgMHgwMDAwMDBmMCkgPyBfX1JENCgoX3gpPj40KTw8NCAgICA6IF9fUkQ0KF94KSkKKyNk
ZWZpbmUgX19SRDE2KF94KSAoKChfeCkgJiAweDAwMDBmZjAwKSA/IF9fUkQ4KChfeCk+PjgpPDw4
ICAgIDogX19SRDgoX3gpKQorI2RlZmluZSBfX1JEMzIoX3gpICgoKF94KSAmIDB4ZmZmZjAwMDAp
ID8gX19SRDE2KChfeCk+PjE2KTw8MTYgOiBfX1JEMTYoX3gpKQorCisvKgorICogQ2FsY3VsYXRl
IHNpemUgb2YgYSBzaGFyZWQgcmluZywgZ2l2ZW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBzcGFjZSBm
b3IgdGhlCisgKiByaW5nIGFuZCBpbmRleGVzIChfc3opLCBhbmQgdGhlIG5hbWUgdGFnIG9mIHRo
ZSByZXF1ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZS4KKyAqIEEgcmluZyBjb250YWlucyBhcyBtYW55
IGVudHJpZXMgYXMgd2lsbCBmaXQsIHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCAKKyAqIHBv
d2VyIG9mIHR3byAoc28gd2UgY2FuIG1hc2sgd2l0aCAoc2l6ZS0xKSB0byBsb29wIGFyb3VuZCku
CisgKi8KKyNkZWZpbmUgX19DT05TVF9SSU5HX1NJWkUoX3MsIF9zeikgXAorICAgIChfX1JEMzIo
KChfc3opIC0gb2Zmc2V0b2Yoc3RydWN0IF9zIyNfc3JpbmcsIHJpbmcpKSAvIFwKKwkgICAgc2l6
ZW9mKCgoc3RydWN0IF9zIyNfc3JpbmcgKikwKS0+cmluZ1swXSkpKQorLyoKKyAqIFRoZSBzYW1l
IGZvciBwYXNzaW5nIGluIGFuIGFjdHVhbCBwb2ludGVyIGluc3RlYWQgb2YgYSBuYW1lIHRhZy4K
KyAqLworI2RlZmluZSBfX1JJTkdfU0laRShfcywgX3N6KSBcCisgICAgKF9fUkQzMigoKF9zeikg
LSAoTE9OR19QVFIpKF9zKS0+cmluZyArIChMT05HX1BUUikoX3MpKSAvIHNpemVvZigoX3MpLT5y
aW5nWzBdKSkpCisKKy8qCisgKiBNYWNyb3MgdG8gbWFrZSB0aGUgY29ycmVjdCBDIGRhdGF0eXBl
cyBmb3IgYSBuZXcga2luZCBvZiByaW5nLgorICogCisgKiBUbyBtYWtlIGEgbmV3IHJpbmcgZGF0
YXR5cGUsIHlvdSBuZWVkIHRvIGhhdmUgdHdvIG1lc3NhZ2Ugc3RydWN0dXJlcywKKyAqIGxldCdz
IHNheSByZXF1ZXN0X3QsIGFuZCByZXNwb25zZV90IGFscmVhZHkgZGVmaW5lZC4KKyAqCisgKiBJ
biBhIGhlYWRlciB3aGVyZSB5b3Ugd2FudCB0aGUgcmluZyBkYXRhdHlwZSBkZWNsYXJlZCwgeW91
IHRoZW4gZG86CisgKgorICogICAgIERFRklORV9SSU5HX1RZUEVTKG15dGFnLCByZXF1ZXN0X3Qs
IHJlc3BvbnNlX3QpOworICoKKyAqIFRoZXNlIGV4cGFuZCBvdXQgdG8gZ2l2ZSB5b3UgYSBzZXQg
b2YgdHlwZXMsIGFzIHlvdSBjYW4gc2VlIGJlbG93LgorICogVGhlIG1vc3QgaW1wb3J0YW50IG9m
IHRoZXNlIGFyZToKKyAqIAorICogICAgIG15dGFnX3NyaW5nX3QgICAgICAtIFRoZSBzaGFyZWQg
cmluZy4KKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgLSBUaGUgJ2Zyb250JyBoYWxmIG9mIHRo
ZSByaW5nLgorICogICAgIG15dGFnX2JhY2tfcmluZ190ICAtIFRoZSAnYmFjaycgaGFsZiBvZiB0
aGUgcmluZy4KKyAqCisgKiBUbyBpbml0aWFsaXplIGEgcmluZyBpbiB5b3VyIGNvZGUgeW91IG5l
ZWQgdG8ga25vdyB0aGUgbG9jYXRpb24gYW5kIHNpemUKKyAqIG9mIHRoZSBzaGFyZWQgbWVtb3J5
IGFyZWEgKFBBR0VfU0laRSwgZm9yIGluc3RhbmNlKS4gVG8gaW5pdGlhbGlzZQorICogdGhlIGZy
b250IGhhbGY6CisgKgorICogICAgIG15dGFnX2Zyb250X3JpbmdfdCBmcm9udF9yaW5nOworICog
ICAgIFNIQVJFRF9SSU5HX0lOSVQoKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFnZSk7CisgKiAg
ICAgRlJPTlRfUklOR19JTklUKCZmcm9udF9yaW5nLCAobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9w
YWdlLCBQQUdFX1NJWkUpOworICoKKyAqIEluaXRpYWxpemluZyB0aGUgYmFjayBmb2xsb3dzIHNp
bWlsYXJseSAobm90ZSB0aGF0IG9ubHkgdGhlIGZyb250CisgKiBpbml0aWFsaXplcyB0aGUgc2hh
cmVkIHJpbmcpOgorICoKKyAqICAgICBteXRhZ19iYWNrX3JpbmdfdCBiYWNrX3Jpbmc7CisgKiAg
ICAgQkFDS19SSU5HX0lOSVQoJmJhY2tfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFn
ZSwgUEFHRV9TSVpFKTsKKyAqLworCisjZGVmaW5lIERFRklORV9SSU5HX1RZUEVTKF9fbmFtZSwg
X19yZXFfdCwgX19yc3BfdCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisvKiBTaGFyZWQgcmluZyBlbnRyeSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCit1bmlvbiBfX25hbWUjI19zcmluZ19lbnRyeSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19yZXFfdCByZXE7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgX19yc3BfdCByc3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisvKiBT
aGFyZWQgcmluZyBwYWdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfc3JpbmcgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFggcmVxX3Byb2QsIHJl
cV9ldmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklO
R19JRFggcnNwX3Byb2QsIHJzcF9ldmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICB1aW50OF90IHNtYXJ0cG9sbF9hY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gbmV0aWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB1
aW50OF90IG1zZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gdGFwaWZfdXNlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHVpbnQ4X3QgcHZ0X3BhZFs0XTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSBwcml2YXRlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdWludDhfdCBfX3BhZFs0NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdW5pb24gX19uYW1lIyNfc3JpbmdfZW50cnkgcmluZ1sx
XTsgLyogdmFyaWFibGUtbGVuZ3RoICovICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisvKiAiRnJvbnQiIGVuZCdzIHByaXZhdGUgdmFyaWFibGVzICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfZnJvbnRf
cmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
UklOR19JRFggcmVxX3Byb2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgUklOR19JRFggcnNwX2NvbnM7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50IG5yX2VudHM7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3Ry
dWN0IF9fbmFtZSMjX3NyaW5nICpzcmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCit9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisvKiAiQmFjayIg
ZW5kJ3MgcHJpdmF0ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCitzdHJ1Y3QgX19uYW1lIyNfYmFja19yaW5nIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFggcnNwX3Byb2RfcHZ0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklOR19JRFgg
cmVxX2NvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdW5zaWduZWQgaW50IG5yX2VudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RydWN0IF9fbmFtZSMjX3NyaW5nICpzcmluZzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisvKiBTeW50YWN0aWMgc3VnYXIgKi8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit0eXBlZGVmIHN0cnVjdCBfX25h
bWUjI19zcmluZyBfX25hbWUjI19zcmluZ190OyAgICAgICAgICAgICAgICAgICAgICAgICBcCit0
eXBlZGVmIHN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIF9fbmFtZSMjX2Zyb250X3JpbmdfdDsg
ICAgICAgICAgICAgICBcCit0eXBlZGVmIHN0cnVjdCBfX25hbWUjI19iYWNrX3JpbmcgX19uYW1l
IyNfYmFja19yaW5nX3QKKworLyoKKyAqIE1hY3JvcyBmb3IgbWFuaXB1bGF0aW5nIHJpbmdzLgor
ICogCisgKiBGUk9OVF9SSU5HX3doYXRldmVyIHdvcmtzIG9uIHRoZSAiZnJvbnQgZW5kIiBvZiBh
IHJpbmc6IGhlcmUgCisgKiByZXF1ZXN0cyBhcmUgcHVzaGVkIG9uIHRvIHRoZSByaW5nIGFuZCBy
ZXNwb25zZXMgdGFrZW4gb2ZmIGl0LgorICogCisgKiBCQUNLX1JJTkdfd2hhdGV2ZXIgd29ya3Mg
b24gdGhlICJiYWNrIGVuZCIgb2YgYSByaW5nOiBoZXJlIAorICogcmVxdWVzdHMgYXJlIHRha2Vu
IG9mZiB0aGUgcmluZyBhbmQgcmVzcG9uc2VzIHB1dCBvbi4KKyAqIAorICogTi5CLiB0aGVzZSBt
YWNyb3MgZG8gTk8gSU5URVJMT0NLUyBPUiBGTE9XIENPTlRST0wuIAorICogVGhpcyBpcyBPSyBp
biAxLWZvci0xIHJlcXVlc3QtcmVzcG9uc2Ugc2l0dWF0aW9ucyB3aGVyZSB0aGUgCisgKiByZXF1
ZXN0b3IgKGZyb250IGVuZCkgbmV2ZXIgaGFzIG1vcmUgdGhhbiBSSU5HX1NJWkUoKS0xCisgKiBv
dXRzdGFuZGluZyByZXF1ZXN0cy4KKyAqLworCisvKiBJbml0aWFsaXNpbmcgZW1wdHkgcmluZ3Mg
Ki8KKyNkZWZpbmUgU0hBUkVEX1JJTkdfSU5JVChfcykgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3MpLT5yZXFfcHJvZCAgPSAoX3MpLT5yc3BfcHJv
ZCAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3MpLT5yZXFfZXZl
bnQgPSAoX3MpLT5yc3BfZXZlbnQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAodm9pZCltZW1zZXQoKF9zKS0+cHJpdmF0ZS5wdnRfcGFkLCAwLCBzaXplb2YoKF9zKS0+
cHJpdmF0ZS5wdnRfcGFkKSk7IFwKKyAgICAodm9pZCltZW1zZXQoKF9zKS0+X19wYWQsIDAsIHNp
emVvZigoX3MpLT5fX3BhZCkpOyAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUoMCkKKworI2Rl
ZmluZSBGUk9OVF9SSU5HX0lOSVQoX3IsIF9zLCBfX3NpemUpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIChfciktPnJlcV9wcm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnJzcF9jb25zID0gMDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChf
ciktPm5yX2VudHMgPSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIChfciktPnNyaW5nID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBCQUNL
X1JJTkdfSU5JVChfciwgX3MsIF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIChfciktPnJzcF9wcm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnJlcV9jb25zID0gMDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPm5yX2Vu
dHMgPSBfX1JJTkdfU0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIChfciktPnNyaW5nID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworLyogSG93IGJpZyBpcyB0aGlzIHJp
bmc/ICovCisjZGVmaW5lIFJJTkdfU0laRShfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChfciktPm5yX2VudHMpCisKKy8qIE51bWJl
ciBvZiBmcmVlIHJlcXVlc3RzIChmb3IgdXNlIG9uIGZyb250IHNpZGUgb25seSkuICovCisjZGVm
aW5lIFJJTkdfRlJFRV9SRVFVRVNUUyhfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKFJJTkdfU0laRShfcikgLSAoKF9yKS0+cmVxX3Byb2RfcHZ0IC0g
KF9yKS0+cnNwX2NvbnMpKQorCisvKiBUZXN0IGlmIHRoZXJlIGlzIGFuIGVtcHR5IHNsb3QgYXZh
aWxhYmxlIG9uIHRoZSBmcm9udCByaW5nLgorICogKFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZy
b20gdGhlIGZyb250LiApCisgKi8KKyNkZWZpbmUgUklOR19GVUxMKF9yKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoUklOR19GUkVFX1JF
UVVFU1RTKF9yKSA9PSAwKQorCisvKiBUZXN0IGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBtZXNz
YWdlcyB0byBiZSBwcm9jZXNzZWQgb24gYSByaW5nLiAqLworI2RlZmluZSBSSU5HX0hBU19VTkNP
TlNVTUVEX1JFU1BPTlNFUyhfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICgoX3IpLT5zcmluZy0+cnNwX3Byb2QgLSAoX3IpLT5yc3BfY29ucykKKworI2lmZGVmIF9fR05V
Q19fCisjZGVmaW5lIFJJTkdfSEFTX1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50IHJlcSA9IChfciktPnNyaW5n
LT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zOyAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50
IHJzcCA9IFJJTkdfU0laRShfcikgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgcmVxIDwgcnNwID8gcmVxIDogcnNwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9KQorI2Vsc2UKKy8qIFNhbWUg
YXMgYWJvdmUsIGJ1dCB3aXRob3V0IHRoZSBuaWNlIEdDQyAoeyAuLi4gfSkgc3ludGF4LiAqLwor
I2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKF9yKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICgoKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJl
cV9jb25zKSA8ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKFJJTkdfU0laRShfcikg
LSAoKF9yKS0+cmVxX2NvbnMgLSAoX3IpLT5yc3BfcHJvZF9wdnQpKSkgPyAgICAgICAgXAorICAg
ICAoKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9yKS0+cmVxX2NvbnMpIDogICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAoUklOR19TSVpFKF9yKSAtICgoX3IpLT5yZXFfY29ucyAtIChf
ciktPnJzcF9wcm9kX3B2dCkpKQorI2VuZGlmCisKKy8qIERpcmVjdCBhY2Nlc3MgdG8gaW5kaXZp
ZHVhbCByaW5nIGVsZW1lbnRzLCBieSBpbmRleC4gKi8KKyNkZWZpbmUgUklOR19HRVRfUkVRVUVT
VChfciwgX2lkeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
JigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJlcSkp
CisKKyNkZWZpbmUgUklOR19HRVRfUkVTUE9OU0UoX3IsIF9pZHgpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoJigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYg
KFJJTkdfU0laRShfcikgLSAxKSldLnJzcCkpCisKKy8qIExvb3AgdGVybWluYXRpb24gY29uZGl0
aW9uOiBXb3VsZCB0aGUgc3BlY2lmaWVkIGluZGV4IG92ZXJmbG93IHRoZSByaW5nPyAqLworI2Rl
ZmluZSBSSU5HX1JFUVVFU1RfQ09OU19PVkVSRkxPVyhfciwgX2NvbnMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgoKF9jb25zKSAtIChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklO
R19TSVpFKF9yKSkKKworLyogSWxsLWJlaGF2ZWQgZnJvbnRlbmQgZGV0ZXJtaW5hdGlvbjogQ2Fu
IHRoZXJlIGJlIHRoaXMgbWFueSByZXF1ZXN0cz8gKi8KKyNkZWZpbmUgUklOR19SRVFVRVNUX1BS
T0RfT1ZFUkZMT1coX3IsIF9wcm9kKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
KChfcHJvZCkgLSAoX3IpLT5yc3BfcHJvZF9wdnQpID4gUklOR19TSVpFKF9yKSkKKworI2RlZmlu
ZSBSSU5HX1BVU0hfUkVRVUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHhlbl93bWIoKTsgLyogYmFjayBzZWVzIHJlcXVlc3RzIC9iZWZvcmUv
IHVwZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gXAorICAgIChfciktPnNyaW5nLT5yZXFfcHJvZCA9
IChfciktPnJlcV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAo
MCkKKworI2RlZmluZSBSSU5HX1BVU0hfUkVTUE9OU0VTKF9yKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNw
cyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovICAgXAorICAgIChfciktPnNyaW5n
LT5yc3BfcHJvZCA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAg
XAorfSB3aGlsZSAoMCkKKworLyoKKyAqIE5vdGlmaWNhdGlvbiBob2xkLW9mZiAocmVxX2V2ZW50
IGFuZCByc3BfZXZlbnQpOgorICogCisgKiBXaGVuIHF1ZXVlaW5nIHJlcXVlc3RzIG9yIHJlc3Bv
bnNlcyBvbiBhIHNoYXJlZCByaW5nLCBpdCBtYXkgbm90IGFsd2F5cyBiZQorICogbmVjZXNzYXJ5
IHRvIG5vdGlmeSB0aGUgcmVtb3RlIGVuZC4gRm9yIGV4YW1wbGUsIGlmIHJlcXVlc3RzIGFyZSBp
biBmbGlnaHQKKyAqIGluIGEgYmFja2VuZCwgdGhlIGZyb250IG1heSBiZSBhYmxlIHRvIHF1ZXVl
IGZ1cnRoZXIgcmVxdWVzdHMgd2l0aG91dAorICogbm90aWZ5aW5nIHRoZSBiYWNrIChpZiB0aGUg
YmFjayBjaGVja3MgZm9yIG5ldyByZXF1ZXN0cyB3aGVuIGl0IHF1ZXVlcworICogcmVzcG9uc2Vz
KS4KKyAqIAorICogV2hlbiBlbnF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzOgorICogCisg
KiAgVXNlIFJJTkdfUFVTSF97UkVRVUVTVFMsUkVTUE9OU0VTfV9BTkRfQ0hFQ0tfTk9USUZZKCku
IFRoZSBzZWNvbmQgYXJndW1lbnQKKyAqICBpcyBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVl
IGluZGljYXRlcyB0aGF0IHRoZSByZWNlaXZlciByZXF1aXJlcyBhbgorICogIGFzeW5jaHJvbm91
cyBub3RpZmljYXRpb24uCisgKiAKKyAqIEFmdGVyIGRlcXVldWluZyByZXF1ZXN0cyBvciByZXNw
b25zZXMgKGJlZm9yZSBzbGVlcGluZyB0aGUgY29ubmVjdGlvbik6CisgKiAKKyAqICBVc2UgUklO
R19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQ
T05TRVMoKS4KKyAqICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgYm9vbGVhbiByZXR1cm4gdmFs
dWUuIFRydWUgaW5kaWNhdGVzIHRoYXQgdGhlcmUKKyAqICBhcmUgcGVuZGluZyBtZXNzYWdlcyBv
biB0aGUgcmluZyAoaS5lLiwgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBwdXQKKyAqICB0
byBzbGVlcCkuCisgKiAKKyAqICBUaGVzZSBtYWNyb3Mgd2lsbCBzZXQgdGhlIHJlcV9ldmVudC9y
c3BfZXZlbnQgZmllbGQgdG8gdHJpZ2dlciBhCisgKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5
IG5leHQgbWVzc2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bworICogIGNyZWF0
ZSBiYXRjaGVzIG9mIHdvcmsgKGkuZS4sIG9ubHkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhZnRl
ciBzZXZlcmFsCisgKiAgbWVzc2FnZXMgaGF2ZSBiZWVuIGVucXVldWVkKSB0aGVuIHlvdSB3aWxs
IG5lZWQgdG8gY3JlYXRlIGEgY3VzdG9taXNlZAorICogIHZlcnNpb24gb2YgdGhlIEZJTkFMX0NI
RUNLIG1hY3JvIGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlIGV2ZW50CisgKiAgZmll
bGQgYXBwcm9wcmlhdGVseS4KKyAqLworCisjZGVmaW5lIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRf
Q0hFQ0tfTk9USUZZKF9yLCBfbm90aWZ5KSBkbyB7ICAgICAgICAgICBcCisgICAgUklOR19JRFgg
X19vbGQgPSAoX3IpLT5zcmluZy0+cmVxX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgUklOR19JRFggX19uZXcgPSAoX3IpLT5yZXFfcHJvZF9wdnQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVz
dHMgL2JlZm9yZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyBcCisgICAgKF9yKS0+c3Jpbmct
PnJlcV9wcm9kID0gX19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgeGVuX21iKCk7IC8qIGJhY2sgc2VlcyBuZXcgcmVxdWVzdHMgL2JlZm9yZS8gd2UgY2hl
Y2sgcmVxX2V2ZW50ICovICBcCisgICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAo
X3IpLT5zcmluZy0+cmVxX2V2ZW50KSA8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIChS
SU5HX0lEWCkoX19uZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9
IHdoaWxlICgwKQorCisjZGVmaW5lIFJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElG
WShfciwgX25vdGlmeSkgZG8geyAgICAgICAgICBcCisgICAgUklOR19JRFggX19vbGQgPSAoX3Ip
LT5zcmluZy0+cnNwX3Byb2Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUklO
R19JRFggX19uZXcgPSAoX3IpLT5yc3BfcHJvZF9wdnQ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBmcm9udCBzZWVzIHJlc3BzIC9iZWZvcmUvIHVw
ZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gICBcCisgICAgKF9yKS0+c3JpbmctPnJzcF9wcm9kID0g
X19uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX21i
KCk7IC8qIGZyb250IHNlZXMgbmV3IHJlc3BzIC9iZWZvcmUvIHdlIGNoZWNrIHJzcF9ldmVudCAq
LyAgICBcCisgICAgKF9ub3RpZnkpID0gKChSSU5HX0lEWCkoX19uZXcgLSAoX3IpLT5zcmluZy0+
cnNwX2V2ZW50KSA8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIChSSU5HX0lEWCkoX19u
ZXcgLSBfX29sZCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQor
CisjZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKF9yLCBfd29ya190b19kbykg
ZG8geyAgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VN
RURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKF93b3JrX3RvX2Rv
KSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgKF9yKS0+c3JpbmctPnJlcV9ldmVudCA9IChfciktPnJlcV9jb25zICsgMTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJ
TkdfSEFTX1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpOyAgICAgICAgICAgICAgICAgICBcCit9IHdo
aWxlICgwKQorCisjZGVmaW5lIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUyhfciwgX3dv
cmtfdG9fZG8pIGRvIHsgICAgICAgICAgICBcCisgICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFT
X1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKF93
b3JrX3RvX2RvKSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgKF9yKS0+c3JpbmctPnJzcF9ldmVudCA9IChfciktPnJzcF9jb25zICsgMTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF93b3JrX3Rv
X2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAg
ICBcCit9IHdoaWxlICgwKQorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fICov
CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6
ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQt
dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVi
bGljL2lvL3hlbmJ1cy5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL3hlbmJ1cy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyN2Y5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9p
bmNsdWRlL3hlbi9wdWJsaWMvaW8veGVuYnVzLmgKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisgKiB4ZW5idXMuaAorICoKKyAqIFhlbmJ1cyBwcm90b2NvbCBkZXRhaWxz
LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVh
bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRI
RSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgWGVuU291cmNlIEx0ZC4KKyAq
LworCisjaWZuZGVmIF9YRU5fUFVCTElDX0lPX1hFTkJVU19ICisjZGVmaW5lIF9YRU5fUFVCTElD
X0lPX1hFTkJVU19ICisKKy8qCisgKiBUaGUgc3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVu
YnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11bmljYXRpb24KKyAqIHN0YXR1cyBvZiBpbml0aWFs
aXNhdGlvbiBhY3Jvc3MgdGhlIGJ1cy4gIFN0YXRlcyBoZXJlIGltcGx5IG5vdGhpbmcgYWJvdXQK
KyAqIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRo
ZSBrZXJuZWwncyBkZXZpY2UKKyAqIGxheWVycy4KKyAqLworZW51bSB4ZW5idXNfc3RhdGUgewor
ICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAgICA9IDAsCisKKyAgICBYZW5idXNTdGF0ZUluaXRp
YWxpc2luZyAgPSAxLAorCisgICAgLyoKKyAgICAgKiBJbml0V2FpdDogRmluaXNoZWQgZWFybHkg
aW5pdGlhbGlzYXRpb24gYnV0IHdhaXRpbmcgZm9yIGluZm9ybWF0aW9uCisgICAgICogZnJvbSB0
aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVJbml0
V2FpdCAgICAgID0gMiwKKworICAgIC8qCisgICAgICogSW5pdGlhbGlzZWQ6IFdhaXRpbmcgZm9y
IGEgY29ubmVjdGlvbiBmcm9tIHRoZSBwZWVyLgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlSW5p
dGlhbGlzZWQgICA9IDMsCisKKyAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAorCisg
ICAgLyoKKyAgICAgKiBDbG9zaW5nOiBUaGUgZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8g
YW4gZXJyb3Igb3IgYW4gdW5wbHVnIGV2ZW50LgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlQ2xv
c2luZyAgICAgICA9IDUsCisKKyAgICBYZW5idXNTdGF0ZUNsb3NlZCAgICAgICAgPSA2LAorCisg
ICAgLyoKKyAgICAgKiBSZWNvbmZpZ3VyaW5nOiBUaGUgZGV2aWNlIGlzIGJlaW5nIHJlY29uZmln
dXJlZC4KKyAgICAgKi8KKyAgICBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgPSA3LAorCisgICAg
WGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQgID0gOAorfTsKK3R5cGVkZWYgZW51bSB4ZW5idXNfc3Rh
dGUgWGVuYnVzU3RhdGU7CisKKyNlbmRpZiAvKiBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSCAqLwor
CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi
QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRh
YnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1Ymxp
Yy90cmFjZS5oIGIvaW5jbHVkZS94ZW4vcHVibGljL3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGRlNjMwZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVu
L3B1YmxpYy90cmFjZS5oCkBAIC0wLDAgKzEsMzMxIEBACisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisgKiBpbmNsdWRlL3B1YmxpYy90cmFjZS5oCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
KyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBNYXJrIFdpbGxp
YW1zb24sIChDKSAyMDA0IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQorICogQ29weXJpZ2h0IChD
KSAyMDA1IEJpbiBSZW4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KKyNk
ZWZpbmUgX19YRU5fUFVCTElDX1RSQUNFX0hfXworCisjZGVmaW5lIFRSQUNFX0VYVFJBX01BWCAg
ICA3CisjZGVmaW5lIFRSQUNFX0VYVFJBX1NISUZUIDI4CisKKy8qIFRyYWNlIGNsYXNzZXMgKi8K
KyNkZWZpbmUgVFJDX0NMU19TSElGVCAxNgorI2RlZmluZSBUUkNfR0VOICAgICAgMHgwMDAxZjAw
MCAgICAvKiBHZW5lcmFsIHRyYWNlICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX1NDSEVEICAg
IDB4MDAwMmYwMDAgICAgLyogWGVuIFNjaGVkdWxlciB0cmFjZSAgICAgICovCisjZGVmaW5lIFRS
Q19ET00wT1AgICAweDAwMDRmMDAwICAgIC8qIFhlbiBET00wIG9wZXJhdGlvbiB0cmFjZSAqLwor
I2RlZmluZSBUUkNfSFZNICAgICAgMHgwMDA4ZjAwMCAgICAvKiBYZW4gSFZNIHRyYWNlICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgVFJDX01FTSAgICAgIDB4MDAxMGYwMDAgICAgLyogWGVuIG1lbW9y
eSB0cmFjZSAgICAgICAgICovCisjZGVmaW5lIFRSQ19QViAgICAgICAweDAwMjBmMDAwICAgIC8q
IFhlbiBQViB0cmFjZXMgICAgICAgICAgICAqLworI2RlZmluZSBUUkNfU0hBRE9XICAgMHgwMDQw
ZjAwMCAgICAvKiBYZW4gc2hhZG93IHRyYWNpbmcgICAgICAgKi8KKyNkZWZpbmUgVFJDX0hXICAg
ICAgIDB4MDA4MGYwMDAgICAgLyogWGVuIGhhcmR3YXJlLXJlbGF0ZWQgdHJhY2VzICovCisjZGVm
aW5lIFRSQ19HVUVTVCAgICAweDA4MDBmMDAwICAgIC8qIEd1ZXN0LWdlbmVyYXRlZCB0cmFjZXMg
ICAqLworI2RlZmluZSBUUkNfQUxMICAgICAgMHgwZmZmZjAwMAorI2RlZmluZSBUUkNfSERfVE9f
RVZFTlQoeCkgKCh4KSYweDBmZmZmZmZmKQorI2RlZmluZSBUUkNfSERfQ1lDTEVfRkxBRyAoMVVM
PDwzMSkKKyNkZWZpbmUgVFJDX0hEX0lOQ0xVREVTX0NZQ0xFX0NPVU5UKHgpICggISEoICh4KSAm
IFRSQ19IRF9DWUNMRV9GTEFHICkgKQorI2RlZmluZSBUUkNfSERfRVhUUkEoeCkgICAgKCgoeCk+
PlRSQUNFX0VYVFJBX1NISUZUKSZUUkFDRV9FWFRSQV9NQVgpCisKKy8qIFRyYWNlIHN1YmNsYXNz
ZXMgKi8KKyNkZWZpbmUgVFJDX1NVQkNMU19TSElGVCAxMgorCisvKiB0cmFjZSBzdWJjbGFzc2Vz
IGZvciBTVk0gKi8KKyNkZWZpbmUgVFJDX0hWTV9FTlRSWUVYSVQgICAweDAwMDgxMDAwICAgLyog
Vk1FTlRSWSBhbmQgI1ZNRVhJVCAgICAgICAqLworI2RlZmluZSBUUkNfSFZNX0hBTkRMRVIgICAg
IDB4MDAwODIwMDAgICAvKiB2YXJpb3VzIEhWTSBoYW5kbGVycyAgICAgICovCisjZGVmaW5lIFRS
Q19IVk1fRU1VTCAgICAgICAgMHgwMDA4NDAwMCAgIC8qIGVtdWxhdGVkIGRldmljZXMgKi8KKwor
I2RlZmluZSBUUkNfU0NIRURfTUlOICAgICAgIDB4MDAwMjEwMDAgICAvKiBKdXN0IHJ1bnN0YXRl
IGNoYW5nZXMgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0NMQVNTICAgICAweDAwMDIyMDAwICAgLyog
U2NoZWR1bGVyLXNwZWNpZmljICAgICovCisjZGVmaW5lIFRSQ19TQ0hFRF9WRVJCT1NFICAgMHgw
MDAyODAwMCAgIC8qIE1vcmUgaW5jbHVzaXZlIHNjaGVkdWxpbmcgKi8KKworLyoKKyAqIFRoZSBo
aWdoZXN0IDMgYml0cyBvZiB0aGUgbGFzdCAxMiBiaXRzIG9mIFRSQ19TQ0hFRF9DTEFTUyBhYm92
ZSBhcmUKKyAqIHJlc2VydmVkIGZvciBlbmNvZGluZyB3aGF0IHNjaGVkdWxlciBwcm9kdWNlZCB0
aGUgaW5mb3JtYXRpb24uIFRoZQorICogYWN0dWFsIGV2ZW50IGlzIGVuY29kZWQgaW4gdGhlIGxh
c3QgOSBiaXRzLgorICoKKyAqIFRoaXMgbWVhbnMgd2UgaGF2ZSA4IHNjaGVkdWxpbmcgSURzIGF2
YWlsYWJsZSAod2hpY2ggbWVhbnMgYXQgbW9zdCA4CisgKiBzY2hlZHVsZXJzIGdlbmVyYXRpbmcg
ZXZlbnRzKSBhbmQsIGluIGVhY2ggc2NoZWR1bGVyLCB1cCB0byA1MTIKKyAqIGRpZmZlcmVudCBl
dmVudHMuCisgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0lEX0JJVFMgMworI2RlZmluZSBUUkNfU0NI
RURfSURfU0hJRlQgKFRSQ19TVUJDTFNfU0hJRlQgLSBUUkNfU0NIRURfSURfQklUUykKKyNkZWZp
bmUgVFJDX1NDSEVEX0lEX01BU0sgKCgoMVVMPDxUUkNfU0NIRURfSURfQklUUykgLSAxKSA8PCBU
UkNfU0NIRURfSURfU0hJRlQpCisjZGVmaW5lIFRSQ19TQ0hFRF9FVlRfTUFTSyAofihUUkNfU0NI
RURfSURfTUFTSykpCisKKy8qIFBlci1zY2hlZHVsZXIgSURzLCB0byBpZGVudGlmeSBzY2hlZHVs
ZXIgc3BlY2lmaWMgZXZlbnRzICovCisjZGVmaW5lIFRSQ19TQ0hFRF9DU0NIRUQgICAwCisjZGVm
aW5lIFRSQ19TQ0hFRF9DU0NIRUQyICAxCisjZGVmaW5lIFRSQ19TQ0hFRF9TRURGICAgICAyCisj
ZGVmaW5lIFRSQ19TQ0hFRF9BUklOQzY1MyAzCisjZGVmaW5lIFRSQ19TQ0hFRF9SVERTICAgICA0
CisKKy8qIFBlci1zY2hlZHVsZXIgdHJhY2luZyAqLworI2RlZmluZSBUUkNfU0NIRURfQ0xBU1Nf
RVZUKF9jLCBfZSkgXAorICAoICggVFJDX1NDSEVEX0NMQVNTIHwgXAorICAgICAgKChUUkNfU0NI
RURfIyNfYyA8PCBUUkNfU0NIRURfSURfU0hJRlQpICYgVFJDX1NDSEVEX0lEX01BU0spICkgKyBc
CisgICAgKF9lICYgVFJDX1NDSEVEX0VWVF9NQVNLKSApCisKKy8qIFRyYWNlIGNsYXNzZXMgZm9y
IEhhcmR3YXJlICovCisjZGVmaW5lIFRSQ19IV19QTSAgICAgICAgICAgMHgwMDgwMTAwMCAgIC8q
IFBvd2VyIG1hbmFnZW1lbnQgdHJhY2VzICovCisjZGVmaW5lIFRSQ19IV19JUlEgICAgICAgICAg
MHgwMDgwMjAwMCAgIC8qIFRyYWNlcyByZWxhdGluZyB0byB0aGUgaGFuZGxpbmcgb2YgSVJRcyAq
LworCisvKiBUcmFjZSBldmVudHMgcGVyIGNsYXNzICovCisjZGVmaW5lIFRSQ19MT1NUX1JFQ09S
RFMgICAgICAgIChUUkNfR0VOICsgMSkKKyNkZWZpbmUgVFJDX1RSQUNFX1dSQVBfQlVGRkVSICAo
VFJDX0dFTiArIDIpCisjZGVmaW5lIFRSQ19UUkFDRV9DUFVfQ0hBTkdFICAgIChUUkNfR0VOICsg
MykKKworI2RlZmluZSBUUkNfU0NIRURfUlVOU1RBVEVfQ0hBTkdFICAgKFRSQ19TQ0hFRF9NSU4g
KyAxKQorI2RlZmluZSBUUkNfU0NIRURfQ09OVElOVUVfUlVOTklORyAgKFRSQ19TQ0hFRF9NSU4g
KyAyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX0FERCAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NF
ICsgIDEpCisjZGVmaW5lIFRSQ19TQ0hFRF9ET01fUkVNICAgICAgICAoVFJDX1NDSEVEX1ZFUkJP
U0UgKyAgMikKKyNkZWZpbmUgVFJDX1NDSEVEX1NMRUVQICAgICAgICAgIChUUkNfU0NIRURfVkVS
Qk9TRSArICAzKQorI2RlZmluZSBUUkNfU0NIRURfV0FLRSAgICAgICAgICAgKFRSQ19TQ0hFRF9W
RVJCT1NFICsgIDQpCisjZGVmaW5lIFRSQ19TQ0hFRF9ZSUVMRCAgICAgICAgICAoVFJDX1NDSEVE
X1ZFUkJPU0UgKyAgNSkKKyNkZWZpbmUgVFJDX1NDSEVEX0JMT0NLICAgICAgICAgIChUUkNfU0NI
RURfVkVSQk9TRSArICA2KQorI2RlZmluZSBUUkNfU0NIRURfU0hVVERPV04gICAgICAgKFRSQ19T
Q0hFRF9WRVJCT1NFICsgIDcpCisjZGVmaW5lIFRSQ19TQ0hFRF9DVEwgICAgICAgICAgICAoVFJD
X1NDSEVEX1ZFUkJPU0UgKyAgOCkKKyNkZWZpbmUgVFJDX1NDSEVEX0FESkRPTSAgICAgICAgIChU
UkNfU0NIRURfVkVSQk9TRSArICA5KQorI2RlZmluZSBUUkNfU0NIRURfU1dJVENIICAgICAgICAg
KFRSQ19TQ0hFRF9WRVJCT1NFICsgMTApCisjZGVmaW5lIFRSQ19TQ0hFRF9TX1RJTUVSX0ZOICAg
ICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMSkKKyNkZWZpbmUgVFJDX1NDSEVEX1RfVElNRVJfRk4g
ICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEyKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX1RJTUVS
X0ZOICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTMpCisjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hf
SU5GUFJFViAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxNCkKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRD
SF9JTkZORVhUIChUUkNfU0NIRURfVkVSQk9TRSArIDE1KQorI2RlZmluZSBUUkNfU0NIRURfU0hV
VERPV05fQ09ERSAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTYpCisKKyNkZWZpbmUgVFJDX01FTV9Q
QUdFX0dSQU5UX01BUCAgICAgIChUUkNfTUVNICsgMSkKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dS
QU5UX1VOTUFQICAgIChUUkNfTUVNICsgMikKKyNkZWZpbmUgVFJDX01FTV9QQUdFX0dSQU5UX1RS
QU5TRkVSIChUUkNfTUVNICsgMykKKyNkZWZpbmUgVFJDX01FTV9TRVRfUDJNX0VOVFJZICAgICAg
IChUUkNfTUVNICsgNCkKKyNkZWZpbmUgVFJDX01FTV9ERUNSRUFTRV9SRVNFUlZBVElPTiAoVFJD
X01FTSArIDUpCisjZGVmaW5lIFRSQ19NRU1fUE9EX1BPUFVMQVRFICAgICAgICAoVFJDX01FTSAr
IDE2KQorI2RlZmluZSBUUkNfTUVNX1BPRF9aRVJPX1JFQ0xBSU0gICAgKFRSQ19NRU0gKyAxNykK
KyNkZWZpbmUgVFJDX01FTV9QT0RfU1VQRVJQQUdFX1NQTElOVEVSIChUUkNfTUVNICsgMTgpCisK
KyNkZWZpbmUgVFJDX1BWX0VOVFJZICAgMHgwMDIwMTAwMCAvKiBIeXBlcnZpc29yIGVudHJ5IHBv
aW50cyBmb3IgUFYgZ3Vlc3RzLiAqLworI2RlZmluZSBUUkNfUFZfU1VCQ0FMTCAweDAwMjAyMDAw
IC8qIFN1Yi1jYWxsIGluIGEgbXVsdGljYWxsIGh5cGVyY2FsbCAqLworCisjZGVmaW5lIFRSQ19Q
Vl9IWVBFUkNBTEwgICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICAxKQorI2RlZmluZSBUUkNf
UFZfVFJBUCAgICAgICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMykKKyNkZWZpbmUgVFJD
X1BWX1BBR0VfRkFVTFQgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDQpCisjZGVmaW5lIFRS
Q19QVl9GT1JDRURfSU5WQUxJRF9PUCAgICAgKFRSQ19QVl9FTlRSWSArICA1KQorI2RlZmluZSBU
UkNfUFZfRU1VTEFURV9QUklWT1AgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgNikKKyNkZWZpbmUg
VFJDX1BWX0VNVUxBVEVfNEdCICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDcpCisjZGVmaW5l
IFRSQ19QVl9NQVRIX1NUQVRFX1JFU1RPUkUgICAgKFRSQ19QVl9FTlRSWSArICA4KQorI2RlZmlu
ZSBUUkNfUFZfUEFHSU5HX0ZJWFVQICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgOSkKKyNkZWZp
bmUgVFJDX1BWX0dEVF9MRFRfTUFQUElOR19GQVVMVCAoVFJDX1BWX0VOVFJZICsgMTApCisjZGVm
aW5lIFRSQ19QVl9QVFdSX0VNVUxBVElPTiAgICAgICAgKFRSQ19QVl9FTlRSWSArIDExKQorI2Rl
ZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT05fUEFFICAgIChUUkNfUFZfRU5UUlkgKyAxMikKKyNk
ZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMiAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgMTMpCisj
ZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfU1VCQ0FMTCAgICAgKFRSQ19QVl9TVUJDQUxMICsgMTQp
CisKKy8qCisgKiBUUkNfUFZfSFlQRVJDQUxMX1YyIGZvcm1hdAorICoKKyAqIE9ubHkgc29tZSBv
ZiB0aGUgaHlwZXJjYWxsIGFyZ3VtZW50IGFyZSByZWNvcmRlZC4gQml0IGZpZWxkcyBBMCB0bwor
ICogQTUgaW4gdGhlIGZpcnN0IGV4dHJhIHdvcmQgYXJlIHNldCBpZiB0aGUgYXJndW1lbnQgaXMg
cHJlc2VudCBhbmQKKyAqIHRoZSBhcmd1bWVudHMgdGhlbXNlbHZlcyBhcmUgcGFja2VkIHNlcXVl
bnRpYWxseSBpbiB0aGUgZm9sbG93aW5nCisgKiB3b3Jkcy4KKyAqCisgKiBUaGUgVFJDXzY0X0ZM
QUcgYml0IGlzIG5vdCBzZXQgZm9yIHRoZXNlIGV2ZW50cyAoZXZlbiBpZiB0aGVyZSBhcmUKKyAq
IDY0LWJpdCBhcmd1bWVudHMgaW4gdGhlIHJlY29yZCkuCisgKgorICogV29yZAorICogMCAgICBi
aXQgMzEgMzB8MjkgMjh8MjcgMjZ8MjUgMjR8MjMgMjJ8MjEgMjB8MTkgLi4uIDAKKyAqICAgICAg
ICAgIEE1ICAgfEE0ICAgfEEzICAgfEEyICAgfEExICAgfEEwICAgfEh5cGVyY2FsbCBvcAorICog
MSAgICBGaXJzdCAzMiBiaXQgKG9yIGxvdyB3b3JkIG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJl
Y29yZAorICogMiAgICBTZWNvbmQgMzIgYml0IChvciBoaWdoIHdvcmQgb2YgZmlyc3QgNjQgYml0
KSBhcmcgaW4gcmVjb3JkCisgKiAuLi4KKyAqCisgKiBBMC1BNSBiaXRmaWVsZCB2YWx1ZXM6Cisg
KgorICogICAwMGIgIEFyZ3VtZW50IG5vdCBwcmVzZW50CisgKiAgIDAxYiAgMzItYml0IGFyZ3Vt
ZW50IHByZXNlbnQKKyAqICAgMTBiICA2NC1iaXQgYXJndW1lbnQgcHJlc2VudAorICogICAxMWIg
IFJlc2VydmVkCisgKi8KKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfMzIoaSkgKDB4
MSA8PCAoMjAgKyAyKihpKSkpCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHXzY0KGkp
ICgweDIgPDwgKDIwICsgMiooaSkpKQorI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR19N
QVNLICAoMHhmZmYwMDAwMCkKKworI2RlZmluZSBUUkNfU0hBRE9XX05PVF9TSEFET1cgICAgICAg
ICAgICAgICAgIChUUkNfU0hBRE9XICsgIDEpCisjZGVmaW5lIFRSQ19TSEFET1dfRkFTVF9QUk9Q
QUdBVEUgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgMikKKyNkZWZpbmUgVFJDX1NIQURPV19G
QVNUX01NSU8gICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAzKQorI2RlZmluZSBUUkNf
U0hBRE9XX0ZBTFNFX0ZBU1RfUEFUSCAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDQpCisjZGVm
aW5lIFRSQ19TSEFET1dfTU1JTyAgICAgICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAg
NSkKKyNkZWZpbmUgVFJDX1NIQURPV19GSVhVUCAgICAgICAgICAgICAgICAgICAgICAoVFJDX1NI
QURPVyArICA2KQorI2RlZmluZSBUUkNfU0hBRE9XX0RPTUZfRFlJTkcgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDcpCisjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURSAgICAgICAgICAg
ICAgICAgICAgKFRSQ19TSEFET1cgKyAgOCkKKyNkZWZpbmUgVFJDX1NIQURPV19FTVVMQVRFX1VO
U0hBRE9XX1VTRVIgICAgICAoVFJDX1NIQURPVyArICA5KQorI2RlZmluZSBUUkNfU0hBRE9XX0VN
VUxBVEVfVU5TSEFET1dfRVZUSU5KICAgIChUUkNfU0hBRE9XICsgMTApCisjZGVmaW5lIFRSQ19T
SEFET1dfRU1VTEFURV9VTlNIQURPV19VTkhBTkRMRUQgKFRSQ19TSEFET1cgKyAxMSkKKyNkZWZp
bmUgVFJDX1NIQURPV19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEy
KQorI2RlZmluZSBUUkNfU0hBRE9XX1BSRUFMTE9DX1VOUElOICAgICAgICAgICAgIChUUkNfU0hB
RE9XICsgMTMpCisjZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAg
KFRSQ19TSEFET1cgKyAxNCkKKyNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAgICAgICAg
ICAgICAgICAoVFJDX1NIQURPVyArIDE1KQorCisvKiB0cmFjZSBldmVudHMgcGVyIHN1YmNsYXNz
ICovCisjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkKKyNkZWZpbmUgVFJD
X0hWTV9WTUVOVFJZICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMSkKKyNkZWZpbmUg
VFJDX0hWTV9WTUVYSVQgICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMikKKyNkZWZp
bmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgVFJDXzY0X0ZM
QUcgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1BGX1hFTiAgICAgICAgICAoVFJDX0hWTV9IQU5E
TEVSICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9QRl9YRU42NCAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIFRSQ182NF9GTEFHICsgMHgwMSkKKyNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIpCisjZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDIpCisjZGVmaW5lIFRSQ19I
Vk1fSU5KX0VYQyAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAzKQorI2RlZmluZSBUUkNf
SFZNX0lOSl9WSVJRICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNCkKKyNkZWZpbmUgVFJD
X0hWTV9SRUlOSl9WSVJRICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDUpCisjZGVmaW5lIFRS
Q19IVk1fSU9fUkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA2KQorI2RlZmluZSBU
UkNfSFZNX0lPX1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykKKyNkZWZpbmUg
VFJDX0hWTV9DUl9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDgpCisjZGVmaW5l
IFRSQ19IVk1fQ1JfUkVBRDY0ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyAr
IDB4MDgpCisjZGVmaW5lIFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIg
KyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFNjQgICAgICAoVFJDX0hWTV9IQU5ETEVS
ICsgVFJDXzY0X0ZMQUcgKyAweDA5KQorI2RlZmluZSBUUkNfSFZNX0RSX1JFQUQgICAgICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgwQSkKKyNkZWZpbmUgVFJDX0hWTV9EUl9XUklURSAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MEIpCisjZGVmaW5lIFRSQ19IVk1fTVNSX1JFQUQgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDBDKQorI2RlZmluZSBUUkNfSFZNX01TUl9XUklURSAgICAg
ICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRCkKKyNkZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEUpCisjZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBGKQorI2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAg
ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMCkKKyNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTEpCisjZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAg
ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDEyKQorI2RlZmluZSBUUkNfSFZNX0hMVCAgICAg
ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMykKKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEcg
ICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTQpCisjZGVmaW5lIFRSQ19IVk1fSU5WTFBH
NjQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MTQpCisjZGVmaW5l
IFRSQ19IVk1fTUNFICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE1KQorI2RlZmlu
ZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNikKKyNkZWZp
bmUgVFJDX0hWTV9JT01FTV9SRUFEICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTcpCisjZGVm
aW5lIFRSQ19IVk1fQ0xUUyAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE4KQorI2Rl
ZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxOSkKKyNk
ZWZpbmUgVFJDX0hWTV9MTVNXNjQgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9G
TEFHICsgMHgxOSkKKyNkZWZpbmUgVFJDX0hWTV9SRFRTQyAgICAgICAgICAgKFRSQ19IVk1fSEFO
RExFUiArIDB4MWEpCisjZGVmaW5lIFRSQ19IVk1fSU5UUl9XSU5ET1cgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDIwKQorI2RlZmluZSBUUkNfSFZNX05QRiAgICAgICAgICAgICAoVFJDX0hWTV9I
QU5ETEVSICsgMHgyMSkKKyNkZWZpbmUgVFJDX0hWTV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZN
X0hBTkRMRVIgKyAweDIyKQorI2RlZmluZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIDB4MjMpCisjZGVmaW5lIFRSQ19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJD
X0hWTV9IQU5ETEVSICsgMHgyNCkKKyNkZWZpbmUgVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDI1KQorCisjZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikKKyNkZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAg
ICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE3KQorCisvKiBUcmFjZSBldmVudHMgZm9yIGVtdWxh
dGVkIGRldmljZXMgKi8KKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChU
UkNfSFZNX0VNVUwgKyAweDEpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIg
ICAoVFJDX0hWTV9FTVVMICsgMHgyKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJUX1RJ
TUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1NU
QVJUX1RJTUVSIChUUkNfSFZNX0VNVUwgKyAweDQpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVU
X1NUT1BfVElNRVIgICAoVFJDX0hWTV9FTVVMICsgMHg1KQorI2RlZmluZSBUUkNfSFZNX0VNVUxf
UElUX1NUT1BfVElNRVIgICAgKFRSQ19IVk1fRU1VTCArIDB4NikKKyNkZWZpbmUgVFJDX0hWTV9F
TVVMX1JUQ19TVE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDcpCisjZGVmaW5lIFRSQ19I
Vk1fRU1VTF9MQVBJQ19TVE9QX1RJTUVSICAoVFJDX0hWTV9FTVVMICsgMHg4KQorI2RlZmluZSBU
UkNfSFZNX0VNVUxfUElUX1RJTUVSX0NCICAgICAgKFRSQ19IVk1fRU1VTCArIDB4OSkKKyNkZWZp
bmUgVFJDX0hWTV9FTVVMX0xBUElDX1RJTUVSX0NCICAgIChUUkNfSFZNX0VNVUwgKyAweEEpCisj
ZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UX09VVFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhC
KQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX0tJQ0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCAr
IDB4QykKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VN
VUwgKyAweEQpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hW
TV9FTVVMICsgMHhFKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX05FR0VER0UgICAgICAgKFRS
Q19IVk1fRU1VTCArIDB4RikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxM
IChUUkNfSFZNX0VNVUwgKyAweDEwKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lO
VFIgICAgKFRSQ19IVk1fRU1VTCArIDB4MTEpCisKKy8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNs
YXNzICovCisjZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAx
KQorI2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKKyNk
ZWZpbmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpCisKKy8qIFRy
YWNlIGV2ZW50cyBmb3IgSVJRcyAqLworI2RlZmluZSBUUkNfSFdfSVJRX01PVkVfQ0xFQU5VUF9E
RUxBWSAoVFJDX0hXX0lSUSArIDB4MSkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0NMRUFOVVAg
ICAgICAgKFRSQ19IV19JUlEgKyAweDIpCisjZGVmaW5lIFRSQ19IV19JUlFfQklORF9WRUNUT1Ig
ICAgICAgIChUUkNfSFdfSVJRICsgMHgzKQorI2RlZmluZSBUUkNfSFdfSVJRX0NMRUFSX1ZFQ1RP
UiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkKKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklT
SCAgICAgICAgKFRSQ19IV19JUlEgKyAweDUpCisjZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZF
Q1RPUiAgICAgIChUUkNfSFdfSVJRICsgMHg2KQorI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVE
X1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4NykKKyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVE
ICAgICAgICAgICAgKFRSQ19IV19JUlEgKyAweDgpCisKKy8qCisgKiBFdmVudCBGbGFncworICoK
KyAqIFNvbWUgZXZlbnRzIChlLmcsIFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQp
IGhhdmUgbXVsdGlwbGUKKyAqIHJlY29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlz
dGluZ3Vpc2ggYmV0d2VlbiB0aGUKKyAqIGRpZmZlcmVudCBmb3JtYXRzLgorICovCisjZGVmaW5l
IFRSQ182NF9GTEFHIDB4MTAwIC8qIEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVhZCBvZiAz
MiBiaXRzKSAqLworCisvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIHRyYWNl
IGJ1ZmZlciByZWNvcmQuICovCitzdHJ1Y3QgdF9yZWMgeworICAgIHVpbnQzMl90IGV2ZW50OjI4
OworICAgIHVpbnQzMl90IGV4dHJhX3UzMjozOyAgICAgICAgIC8qICMgZW50cmllcyBpbiB0cmFp
bGluZyBleHRyYV91MzJbXSBhcnJheSAqLworICAgIHVpbnQzMl90IGN5Y2xlc19pbmNsdWRlZDox
OyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3ljbGVzPyAqLworICAgIHVuaW9uIHsKKyAgICAgICAg
c3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBj
eWNsZSBjb3VudGVyIHRpbWVzdGFtcCAqLworICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMy
WzddOyAgICAgICAgIC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KKyAgICAgICAgfSBjeWNsZXM7Cisg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBleHRyYV91MzJbN107ICAgICAg
ICAgLyogZXZlbnQgZGF0YSBpdGVtcyAqLworICAgICAgICB9IG5vY3ljbGVzOworICAgIH0gdTsK
K307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgbWV0YWRhdGEgZm9yIGEg
c2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFkCisgKiBmaWVsZCwgaW5kZXhlcyBpbnRvIGFu
IGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLgorICovCitzdHJ1Y3QgdF9idWYgeworICAgIC8qIEFz
c3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBnZW5lcmFsbHkgbm90IGEgcG93
ZXIgb2YgMi4KKyAgICAgKiBDT05TIGFuZCBQUk9EIGFyZSBpbmNyZW1lbnRlZCBtb2R1bG8gKDIq
WCk6CisgICAgICogICAgIDAgPD0gY29ucyA8IDIqWAorICAgICAqICAgICAwIDw9IHByb2QgPCAy
KlgKKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3Mg
YXQgMl4zMiB3aGVuIFggaXMgbm90IGEKKyAgICAgKiBwb3dlciBvZiAyOgorICAgICAqICAgICAo
KCgyXjMyIC0gMSkgJSBYKSArIDEpICUgWCAhPSAoMl4zMikgJSBYCisgICAgICovCisgICAgdWlu
dDMyX3QgY29uczsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNv
bnRyb2wgdG9vbHMuICovCisgICAgdWludDMyX3QgcHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBp
dGVtIHRvIGJlIHByb2R1Y2VkIGJ5IFhlbi4gICAgICAgICAgICovCisgICAgLyogIFJlY29yZHMg
Zm9sbG93IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtZXRhLWRhdGEgaGVhZGVyLiAgICAqLworfTsK
KworLyogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBNRk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJh
Y2sgdG8gdHJhY2UgY29uc3VtZXJzLgorICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRvIHRoZSBt
YXBwZWQgc3RydWN0dXJlIHdoZXJlIHRoZSBtZm4gbGlzdCB3aWxsIGJlIGhlbGQuCisgKiBNRk5z
IHdpbGwgYmUgYXQgKChVTE9OR19QVFIgKikodF9pbmZvKSkrKHRfaW5mby0+Y3B1X29mZnNldFtj
cHVdKS4KKyAqLworc3RydWN0IHRfaW5mbyB7CisgICAgdWludDE2X3QgdGJ1Zl9zaXplOyAvKiBT
aXplIGluIHBhZ2VzIG9mIGVhY2ggdHJhY2UgYnVmZmVyICovCisgICAgdWludDE2X3QgbWZuX29m
ZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2luZm8gc3RydWN0dXJlIG9mIHRoZSBwYWdlIGxp
c3QgcGVyIGNwdSAqLworICAgIC8qIE1GTiBsaXN0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVh
ZGVyICovCit9OworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hfXyAqLworCisvKgor
ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor
ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k
ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4t
Y29tcGF0LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjJkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRl
L3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIHhlbi1jb21wYXQuaAorICogCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8g
WGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQor
ICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq
ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp
bgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAo
YykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19Y
RU5fQ09NUEFUX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9IX18KKworI2Rl
ZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNjAwCisKKyNpZiBk
ZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKy8qIFhlbiBpcyBidWls
dCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVzdCBpbnRlcmZh
Y2UuICovCisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5fTEFURVNUX0lO
VEVSRkFDRV9WRVJTSU9OX18KKyNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18pCisvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdldCB0aGUgbGVn
YWN5IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyAweDAw
MDAwMDAwCisjZW5kaWYKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPiBfX1hFTl9M
QVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2Vycm9yICJUaGVzZSBoZWFkZXIgZmlsZXMgZG8g
bm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCisjZW5kaWYKKwor
I2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW4vcHVibGljL3hlbi5oIGIvaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyOGNjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9p
bmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKQEAgLTAsMCArMSw5MDggQEAKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIHhlbi5oCisgKiAKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byBYZW4uCisg
KiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg
KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT
T0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEsgQSBGcmFzZXIKKyAqLworCisj
aWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5fSF9f
CisKKyNpbmNsdWRlICJ4ZW4tY29tcGF0LmgiCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk
ZWZpbmVkKF9feDg2XzY0X18pCisjaW5jbHVkZSAiYXJjaC14ODYveGVuLmgiCisjZWxpZiBkZWZp
bmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKQorI2luY2x1ZGUgImFyY2gtYXJt
LmgiCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKwor
I2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIEd1ZXN0IGhhbmRsZXMgZm9yIHByaW1pdGl2ZSBDIHR5
cGVzLiAqLworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY2hhcik7CitfX0RFRklORV9YRU5fR1VF
U1RfSEFORExFKHVjaGFyLCB1bnNpZ25lZCBjaGFyKTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExF
KGludCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQsICB1bnNpZ25lZCBpbnQpOwor
I2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCitERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShMT05HX1BUUik7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVsb25nLCBV
TE9OR19QVFIpOworI2VuZGlmCitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2b2lkKTsKKworREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0X3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
eGVuX3Bmbl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsKKyNlbmRp
ZgorCisvKgorICogSFlQRVJDQUxMUworICovCisKKy8qIGBpbmNvbnRlbnRzIDEwMCBoY2FsbHMg
TGlzdCBvZiBoeXBlcmNhbGxzCisgKiBgIGVudW0gaHlwZXJjYWxsX251bSB7IC8vIF9fSFlQRVJW
SVNPUl8qID0+IEhZUEVSVklTT1JfKigpCisgKi8KKworI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0
X3RyYXBfdGFibGUgICAgICAgIDAKKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdV91cGRhdGUgICAg
ICAgICAgICAxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfZ2R0ICAgICAgICAgICAgICAgMgor
I2RlZmluZSBfX0hZUEVSVklTT1Jfc3RhY2tfc3dpdGNoICAgICAgICAgIDMKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3NldF9jYWxsYmFja3MgICAgICAgICA0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9m
cHVfdGFza3N3aXRjaCAgICAgICAgNQorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2NoZWRfb3BfY29t
cGF0ICAgICAgIDYgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAxMDEgKi8KKyNkZWZpbmUgX19IWVBF
UlZJU09SX3BsYXRmb3JtX29wICAgICAgICAgICA3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRf
ZGVidWdyZWcgICAgICAgICAgOAorI2RlZmluZSBfX0hZUEVSVklTT1JfZ2V0X2RlYnVncmVnICAg
ICAgICAgIDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV9kZXNjcmlwdG9yICAgIDEwCisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tZW1vcnlfb3AgICAgICAgICAgICAxMgorI2RlZmluZSBfX0hZ
UEVSVklTT1JfbXVsdGljYWxsICAgICAgICAgICAgMTMKKyNkZWZpbmUgX19IWVBFUlZJU09SX3Vw
ZGF0ZV92YV9tYXBwaW5nICAgIDE0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfdGltZXJfb3Ag
ICAgICAgICAxNQorI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcF9jb21wYXQg
MTYgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX3hl
bl92ZXJzaW9uICAgICAgICAgIDE3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9jb25zb2xlX2lvICAg
ICAgICAgICAxOAorI2RlZmluZSBfX0hZUEVSVklTT1JfcGh5c2Rldl9vcF9jb21wYXQgICAgMTkg
LyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX2dyYW50
X3RhYmxlX29wICAgICAgIDIwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92bV9hc3Npc3QgICAgICAg
ICAgICAyMQorI2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJkb21h
aW4gMjIKKyNkZWZpbmUgX19IWVBFUlZJU09SX2lyZXQgICAgICAgICAgICAgICAgIDIzIC8qIHg4
NiBvbmx5ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92Y3B1X29wICAgICAgICAgICAgICAyNAor
I2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFzZSAgICAgMjUgLyogeDg2LzY0IG9u
bHkgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdWV4dF9vcCAgICAgICAgICAgIDI2CisjZGVm
aW5lIF9fSFlQRVJWSVNPUl94c21fb3AgICAgICAgICAgICAgICAyNworI2RlZmluZSBfX0hZUEVS
VklTT1Jfbm1pX29wICAgICAgICAgICAgICAgMjgKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVk
X29wICAgICAgICAgICAgIDI5CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9jYWxsYmFja19vcCAgICAg
ICAgICAzMAorI2RlZmluZSBfX0hZUEVSVklTT1JfeGVub3Byb2Zfb3AgICAgICAgICAgMzEKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AgICAgIDMyCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9waHlzZGV2X29wICAgICAgICAgICAzMworI2RlZmluZSBfX0hZUEVSVklTT1JfaHZt
X29wICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgX19IWVBFUlZJU09SX3N5c2N0bCAgICAgICAg
ICAgICAgIDM1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kb21jdGwgICAgICAgICAgICAgICAzNgor
I2RlZmluZSBfX0hZUEVSVklTT1Jfa2V4ZWNfb3AgICAgICAgICAgICAgMzcKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3RtZW1fb3AgICAgICAgICAgICAgIDM4CisjZGVmaW5lIF9fSFlQRVJWSVNPUl94
Y19yZXNlcnZlZF9vcCAgICAgICAzOSAvKiByZXNlcnZlZCBmb3IgWGVuQ2xpZW50ICovCisKKy8q
IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBoeXBlcmNhbGwgZGVmaW5pdGlvbnMuICovCisjZGVmaW5l
IF9fSFlQRVJWSVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBfX0hZUEVSVklT
T1JfYXJjaF8xICAgICAgICAgICAgICAgNDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMiAg
ICAgICAgICAgICAgIDUwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzMgICAgICAgICAgICAg
ICA1MQorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF80ICAgICAgICAgICAgICAgNTIKKyNkZWZp
bmUgX19IWVBFUlZJU09SX2FyY2hfNSAgICAgICAgICAgICAgIDUzCisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9hcmNoXzYgICAgICAgICAgICAgICA1NAorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF83
ICAgICAgICAgICAgICAgNTUKKworLyogYCB9ICovCisKKy8qCisgKiBIWVBFUkNBTEwgQ09NUEFU
SUJJTElUWS4KKyAqLworCisvKiBOZXcgc2NoZWRfb3AgaHlwZXJjYWxsIGludHJvZHVjZWQgaW4g
MHgwMDAzMDEwMS4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDEw
MQorI3VuZGVmIF9fSFlQRVJWSVNPUl9zY2hlZF9vcAorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2No
ZWRfb3AgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdAorI2VuZGlmCisKKy8qIE5ldyBldmVu
dC1jaGFubmVsIGFuZCBwaHlzZGV2IGh5cGVyY2FsbHMgaW50cm9kdWNlZCBpbiAweDAwMDMwMjAy
LiAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAyCisjdW5kZWYg
X19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AKKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50
X2NoYW5uZWxfb3AgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0CisjdW5kZWYg
X19IWVBFUlZJU09SX3BoeXNkZXZfb3AKKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3Ag
X19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0CisjZW5kaWYKKworLyogTmV3IHBsYXRmb3Jt
X29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDQuICovCisjaWYgX19YRU5fSU5U
RVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDQKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvbTBf
b3AgX19IWVBFUlZJU09SX3BsYXRmb3JtX29wCisjZW5kaWYKKworLyogCisgKiBWSVJUVUFMIElO
VEVSUlVQVFMKKyAqIAorICogVmlydHVhbCBpbnRlcnJ1cHRzIHRoYXQgYSBndWVzdCBPUyBtYXkg
cmVjZWl2ZSBmcm9tIFhlbi4KKyAqIAorICogSW4gdGhlIHNpZGUgY29tbWVudHMsICdWLicgZGVu
b3RlcyBhIHBlci1WQ1BVIFZJUlEgd2hpbGUgJ0cuJyBkZW5vdGVzIGEKKyAqIGdsb2JhbCBWSVJR
LiBUaGUgZm9ybWVyIGNhbiBiZSBib3VuZCBvbmNlIHBlciBWQ1BVIGFuZCBjYW5ub3QgYmUgcmUt
Ym91bmQuCisgKiBUaGUgbGF0dGVyIGNhbiBiZSBhbGxvY2F0ZWQgb25seSBvbmNlIHBlciBndWVz
dDogdGhleSBtdXN0IGluaXRpYWxseSBiZQorICogYWxsb2NhdGVkIHRvIFZDUFUwIGJ1dCBjYW4g
c3Vic2VxdWVudGx5IGJlIHJlLWJvdW5kLgorICovCisvKiBgIGVudW0gdmlycSB7ICovCisjZGVm
aW5lIFZJUlFfVElNRVIgICAgICAwICAvKiBWLiBUaW1lYmFzZSB1cGRhdGUsIGFuZC9vciByZXF1
ZXN0ZWQgdGltZW91dC4gICovCisjZGVmaW5lIFZJUlFfREVCVUcgICAgICAxICAvKiBWLiBSZXF1
ZXN0IGd1ZXN0IHRvIGR1bXAgZGVidWcgaW5mby4gICAgICAgICAgICovCisjZGVmaW5lIFZJUlFf
Q09OU09MRSAgICAyICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQgb24gZW1lcmdlbmN5IGNv
bnNvbGUuICovCisjZGVmaW5lIFZJUlFfRE9NX0VYQyAgICAzICAvKiBHLiAoRE9NMCkgRXhjZXB0
aW9uYWwgZXZlbnQgZm9yIHNvbWUgZG9tYWluLiAgICovCisjZGVmaW5lIFZJUlFfVEJVRiAgICAg
ICA0ICAvKiBHLiAoRE9NMCkgVHJhY2UgYnVmZmVyIGhhcyByZWNvcmRzIGF2YWlsYWJsZS4gICov
CisjZGVmaW5lIFZJUlFfREVCVUdHRVIgICA2ICAvKiBHLiAoRE9NMCkgQSBkb21haW4gaGFzIHBh
dXNlZCBmb3IgZGVidWdnaW5nLiAgICovCisjZGVmaW5lIFZJUlFfWEVOT1BST0YgICA3ICAvKiBW
LiBYZW5PcHJvZmlsZSBpbnRlcnJ1cHQ6IG5ldyBzYW1wbGUgYXZhaWxhYmxlICovCisjZGVmaW5l
IFZJUlFfQ09OX1JJTkcgICA4ICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQgb24gY29uc29s
ZSAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfUENQVV9TVEFURSA5ICAvKiBHLiAoRE9NMCkg
UENQVSBzdGF0ZSBjaGFuZ2VkICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfTUVN
X0VWRU5UICAxMCAvKiBHLiAoRE9NMCkgQSBtZW1vcnkgZXZlbnQgaGFzIG9jY3VyZWQgICAgICAg
ICAgICovCisjZGVmaW5lIFZJUlFfWENfUkVTRVJWRUQgMTEgLyogRy4gUmVzZXJ2ZWQgZm9yIFhl
bkNsaWVudCAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfRU5PTUVNICAgICAx
MiAvKiBHLiAoRE9NMCkgTG93IG9uIGhlYXAgbWVtb3J5ICAgICAgICovCisKKy8qIEFyY2hpdGVj
dHVyZS1zcGVjaWZpYyBWSVJRIGRlZmluaXRpb25zLiAqLworI2RlZmluZSBWSVJRX0FSQ0hfMCAg
ICAxNgorI2RlZmluZSBWSVJRX0FSQ0hfMSAgICAxNworI2RlZmluZSBWSVJRX0FSQ0hfMiAgICAx
OAorI2RlZmluZSBWSVJRX0FSQ0hfMyAgICAxOQorI2RlZmluZSBWSVJRX0FSQ0hfNCAgICAyMAor
I2RlZmluZSBWSVJRX0FSQ0hfNSAgICAyMQorI2RlZmluZSBWSVJRX0FSQ0hfNiAgICAyMgorI2Rl
ZmluZSBWSVJRX0FSQ0hfNyAgICAyMworLyogYCB9ICovCisKKyNkZWZpbmUgTlJfVklSUVMgICAg
ICAgMjQKKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9tbXVf
dXBkYXRlKGNvbnN0IHN0cnVjdCBtbXVfdXBkYXRlIHJlcXNbXSwKKyAqIGAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCAqZG9uZV9vdXQsCisgKiBgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JlaWduZG9tKQorICogYAorICogQHJlcXMgaXMg
YW4gYXJyYXkgb2YgbW11X3VwZGF0ZV90IHN0cnVjdHVyZXMgKChwdHIsIHZhbCkgcGFpcnMpLgor
ICogQGNvdW50IGlzIHRoZSBsZW5ndGggb2YgdGhlIGFib3ZlIGFycmF5LgorICogQHBkb25lIGlz
IGFuIG91dHB1dCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBudW1iZXIgb2YgY29tcGxldGVkIG9wZXJh
dGlvbnMKKyAqIEBmb3JlaWduZG9tWzE1OjBdOiBGRCwgdGhlIGV4cGVjdGVkIG93bmVyIG9mIGRh
dGEgcGFnZXMgcmVmZXJlbmNlZCBpbiB0aGlzCisgKiAgICAgICAgICAgICAgICAgICAgaHlwZXJj
YWxsIGludm9jYXRpb24uIENhbiBiZSBET01JRF9TRUxGLgorICogQGZvcmVpZ25kb21bMzE6MTZd
OiBQRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBwYWdldGFibGUgcGFnZXMgcmVmZXJlbmNlZAor
ICogICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBUaGUg
dmFsdWUgb2YgdGhpcyBmaWVsZAorICogICAgICAgICAgICAgICAgICAgICAoeCkgZW5jb2RlcyB0
aGUgUEZEIGFzIGZvbGxvd3M6CisgKiAgICAgICAgICAgICAgICAgICAgIHggPT0gMCA9PiBQRkQg
PT0gRE9NSURfU0VMRgorICogICAgICAgICAgICAgICAgICAgICB4ICE9IDAgPT4gUEZEID09IHgg
LSAxCisgKiAKKyAqIFN1Yi1jb21tYW5kczogcHRyWzE6MF0gc3BlY2lmaWVzIHRoZSBhcHByb3By
aWF0ZSBNTVVfKiBjb21tYW5kLgorICogLS0tLS0tLS0tLS0tLQorICogcHRyWzE6MF0gPT0gTU1V
X05PUk1BTF9QVF9VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIGEgcGFnZSB0YWJsZSBi
ZWxvbmdpbmcgdG8gUEZELiBJZiB1cGRhdGluZyBhbiBMMSB0YWJsZSwKKyAqIGFuZCB0aGUgbmV3
IHRhYmxlIGVudHJ5IGlzIHZhbGlkL3ByZXNlbnQsIHRoZSBtYXBwZWQgZnJhbWUgbXVzdCBiZWxv
bmcgdG8KKyAqIEZELiBJZiBhdHRlbXB0aW5nIHRvIG1hcCBhbiBJL08gcGFnZSB0aGVuIHRoZSBj
YWxsZXIgYXNzdW1lcyB0aGUgcHJpdmlsZWdlCisgKiBvZiB0aGUgRkQuCisgKiBGRCA9PSBET01J
RF9JTzogUGVybWl0IC9vbmx5LyBJL08gbWFwcGluZ3MsIGF0IHRoZSBwcml2IGxldmVsIG9mIHRo
ZSBjYWxsZXIuCisgKiBGRCA9PSBET01JRF9YRU46IE1hcCByZXN0cmljdGVkIGFyZWFzIG9mIFhl
bidzIGhlYXAgc3BhY2UuCisgKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJlc3Mgb2YgdGhlIHBh
Z2UtdGFibGUgZW50cnkgdG8gbW9kaWZ5LgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUu
CisgKgorICogVGhlcmUgYWxzbyBjZXJ0YWluIGltcGxpY2l0IHJlcXVpcmVtZW50cyB3aGVuIHVz
aW5nIHRoaXMgaHlwZXJjYWxsLiBUaGUKKyAqIHBhZ2VzIHRoYXQgbWFrZSB1cCBhIHBhZ2V0YWJs
ZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9ubHkgaW4gdGhlIGd1ZXN0LgorICogVGhpcyBwcmV2ZW50
cyB1bmNvbnRyb2xsZWQgZ3Vlc3QgdXBkYXRlcyB0byB0aGUgcGFnZXRhYmxlLiBYZW4gc3RyaWN0
bHkKKyAqIGVuZm9yY2VzIHRoaXMsIGFuZCB3aWxsIGRpc2FsbG93IGFueSBwYWdldGFibGUgdXBk
YXRlIHdoaWNoIHdpbGwgZW5kIHVwCisgKiBtYXBwaW5nIHBhZ2V0YWJsZSBwYWdlIFJXLCBhbmQg
d2lsbCBkaXNhbGxvdyB1c2luZyBhbnkgd3JpdGFibGUgcGFnZSBhcyBhCisgKiBwYWdldGFibGUu
IEluIHByYWN0aWNlIGl0IG1lYW5zIHRoYXQgd2hlbiBjb25zdHJ1Y3RpbmcgYSBwYWdlIHRhYmxl
IGZvciBhCisgKiBwcm9jZXNzLCB0aHJlYWQsIGV0Yywgd2UgTVVTVCBiZSB2ZXJ5IGRpbGxpZ2ll
bnQgaW4gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICogIDEpLiBTdGFydCB3aXRoIHRvcC1sZXZl
bCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxhbmd1YWdlOiBMNCkuIEZpbGwgb3V0CisgKiAgICAgIHRo
ZSBlbnRyaWVzLgorICogIDIpLiBLZWVwIG9uIGdvaW5nLCBmaWxsaW5nIG91dCB0aGUgdXBwZXIg
KFBVRCBvciBMMyksIGFuZCBtaWRkbGUgKFBNRAorICogICAgICBvciBMMikuCisgKiAgMykuIFN0
YXJ0IGZpbGxpbmcgb3V0IHRoZSBQVEUgdGFibGUgKEwxKSB3aXRoIHRoZSBQVEUgZW50cmllcy4g
T25jZQorICogIAlkb25lLCBtYWtlIHN1cmUgdG8gc2V0IGVhY2ggb2YgdGhvc2UgZW50cmllcyB0
byBSTyAoc28gd3JpdGVhYmxlIGJpdAorICogIAlpcyB1bnNldCkuIE9uY2UgdGhhdCBoYXMgYmVl
biBjb21wbGV0ZWQsIHNldCB0aGUgUE1EIChMMikgZm9yIHRoaXMKKyAqICAJUFRFIHRhYmxlIGFz
IFJPLgorICogIDQpLiBXaGVuIGNvbXBsZXRlZCB3aXRoIGFsbCBvZiB0aGUgUE1EIChMMikgZW50
cmllcywgYW5kIGFsbCBvZiB0aGVtIGhhdmUKKyAqICAJYmVlbiBzZXQgdG8gUk8sIG1ha2Ugc3Vy
ZSB0byBzZXQgUk8gdGhlIFBVRCAoTDMpLiBEbyB0aGUgc2FtZQorICogIAlvcGVyYXRpb24gb24g
UEdEIChMNCkgcGFnZXRhYmxlIGVudHJpZXMgdGhhdCBoYXZlIGEgUFVEIChMMykgZW50cnkuCisg
KiAgNSkuIE5vdyBiZWZvcmUgeW91IGNhbiB1c2UgdGhvc2UgcGFnZXMgKHNvIHNldHRpbmcgdGhl
IGNyMyksIHlvdSBNVVNUIGFsc28KKyAqICAgICAgcGluIHRoZW0gc28gdGhhdCB0aGUgaHlwZXJ2
aXNvciBjYW4gdmVyaWZ5IHRoZSBlbnRyaWVzLiBUaGlzIGlzIGRvbmUKKyAqICAgICAgdmlhIHRo
ZSBIWVBFUlZJU09SX21tdWV4dF9vcChNTVVFWFRfUElOX0w0X1RBQkxFLCBndWVzdCBwaHlzaWNh
bCBmcmFtZQorICogICAgICBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKS4gQW5kIHRoaXMgcG9pbnQg
dGhlIEhZUEVSVklTT1JfbW11ZXh0X29wKAorICogICAgICBNTVVFWFRfTkVXX0JBU0VQVFIsIGd1
ZXN0IHBoeXNpY2FsIGZyYW1lIG51bWJlciBvZiB0aGUgUEdEIChMNCkpIGNhbiBiZQorICogICAg
ICBpc3N1ZWQuCisgKiBGb3IgMzItYml0IGd1ZXN0cywgdGhlIEw0IGlzIG5vdCB1c2VkIChhcyB0
aGVyZSBpcyBsZXNzIHBhZ2V0YWJsZXMpLCBzbworICogaW5zdGVhZCB1c2UgTDMuCisgKiBBdCB0
aGlzIHBvaW50IHRoZSBwYWdldGFibGVzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgTU1VX05P
Uk1BTF9QVF9VUERBVEUKKyAqIGh5cGVyY2FsbC4gQWxzbyBpZiBzbyBkZXNpcmVkIHRoZSBPUyBj
YW4gYWxzbyB0cnkgdG8gd3JpdGUgdG8gdGhlIFBURQorICogYW5kIGJlIHRyYXBwZWQgYnkgdGhl
IGh5cGVydmlzb3IgKGFzIHRoZSBQVEUgZW50cnkgaXMgUk8pLgorICoKKyAqIFRvIGRlYWxsb2Nh
dGUgdGhlIHBhZ2VzLCB0aGUgb3BlcmF0aW9ucyBhcmUgdGhlIHJldmVyc2Ugb2YgdGhlIHN0ZXBz
CisgKiBtZW50aW9uZWQgYWJvdmUuIFRoZSBhcmd1bWVudCBpcyBNTVVFWFRfVU5QSU5fVEFCTEUg
Zm9yIGFsbCBsZXZlbHMgYW5kIHRoZQorICogcGFnZXRhYmxlIE1VU1Qgbm90IGJlIGluIHVzZSAo
bWVhbmluZyB0aGF0IHRoZSBjcjMgaXMgbm90IHNldCB0byBpdCkuCisgKiAKKyAqIHB0clsxOjBd
ID09IE1NVV9NQUNIUEhZU19VUERBVEU6CisgKiBVcGRhdGVzIGFuIGVudHJ5IGluIHRoZSBtYWNo
aW5lLT5wc2V1ZG8tcGh5c2ljYWwgbWFwcGluZyB0YWJsZS4KKyAqIHB0cls6Ml0gIC0tIE1hY2hp
bmUgYWRkcmVzcyB3aXRoaW4gdGhlIGZyYW1lIHdob3NlIG1hcHBpbmcgdG8gbW9kaWZ5LgorICog
ICAgICAgICAgICAgVGhlIGZyYW1lIG11c3QgYmVsb25nIHRvIHRoZSBGRCwgaWYgb25lIGlzIHNw
ZWNpZmllZC4KKyAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlIGludG8gdGhlIG1hcHBpbmcg
ZW50cnkuCisgKiAKKyAqIHB0clsxOjBdID09IE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQ6Cisg
KiBBcyBNTVVfTk9STUFMX1BUX1VQREFURSBhYm92ZSwgYnV0IEEvRCBiaXRzIGN1cnJlbnRseSBp
biB0aGUgUFRFIGFyZSBPUmVkCisgKiB3aXRoIHRob3NlIGluIEB2YWwuCisgKgorICogQHZhbCBp
cyB1c3VhbGx5IHRoZSBtYWNoaW5lIGZyYW1lIG51bWJlciBhbG9uZyB3aXRoIHNvbWUgYXR0cmli
dXRlcy4KKyAqIFRoZSBhdHRyaWJ1dGVzIGJ5IGRlZmF1bHQgZm9sbG93IHRoZSBhcmNoaXRlY3R1
cmUgZGVmaW5lZCBiaXRzLiBNZWFuaW5nIHRoYXQKKyAqIGlmIHRoaXMgaXMgYSBYODZfNjQgbWFj
aGluZSBhbmQgZm91ciBwYWdlIHRhYmxlIGxheW91dCBpcyB1c2VkLCB0aGUgbGF5b3V0CisgKiBv
ZiB2YWwgaXM6CisgKiAgLSA2MyBpZiBzZXQgbWVhbnMgTm8gZXhlY3V0ZSAoTlgpCisgKiAgLSA0
Ni0xMyB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIKKyAqICAtIDEyIGF2YWlsYWJsZSBmb3IgZ3Vl
c3QKKyAqICAtIDExIGF2YWlsYWJsZSBmb3IgZ3Vlc3QKKyAqICAtIDEwIGF2YWlsYWJsZSBmb3Ig
Z3Vlc3QKKyAqICAtIDkgYXZhaWxhYmxlIGZvciBndWVzdAorICogIC0gOCBnbG9iYWwKKyAqICAt
IDcgUEFUIChQU0UgaXMgZGlzYWJsZWQsIG11c3QgdXNlIGh5cGVyY2FsbCB0byBtYWtlIDRNQiBv
ciAyTUIgcGFnZXMpCisgKiAgLSA2IGRpcnR5CisgKiAgLSA1IGFjY2Vzc2VkCisgKiAgLSA0IHBh
Z2UgY2FjaGVkIGRpc2FibGVkCisgKiAgLSAzIHBhZ2Ugd3JpdGUgdGhyb3VnaAorICogIC0gMiB1
c2Vyc3BhY2UgYWNjZXNzaWJsZQorICogIC0gMSB3cml0ZWFibGUKKyAqICAtIDAgcHJlc2VudAor
ICoKKyAqICBUaGUgb25lIGJpdHMgdGhhdCBkb2VzIG5vdCBmaXQgd2l0aCB0aGUgZGVmYXVsdCBs
YXlvdXQgaXMgdGhlIFBBR0VfUFNFCisgKiAgYWxzbyBjYWxsZWQgUEFHRV9QQVQpLiBUaGUgTU1V
RVhUX1tVTl1NQVJLX1NVUEVSIGFyZ3VtZW50cyB0byB0aGUKKyAqICBIWVBFUlZJU09SX21tdWV4
dF9vcCBzZXJ2ZSBhcyBtZWNoYW5pc20gdG8gc2V0IGEgcGFnZXRhYmxlIHRvIGJlIDRNQgorICog
IChvciAyTUIpIGluc3RlYWQgb2YgdXNpbmcgdGhlIFBBR0VfUFNFIGJpdC4KKyAqCisgKiAgVGhl
IHJlYXNvbiB0aGF0IHRoZSBQQUdFX1BTRSAoYml0IDcpIGlzIG5vdCBiZWluZyB1dGlsaXplZCBp
cyBkdWUgdG8gWGVuCisgKiAgdXNpbmcgaXQgYXMgdGhlIFBhZ2UgQXR0cmlidXRlIFRhYmxlIChQ
QVQpIGJpdCAtIGZvciBkZXRhaWxzIG9uIGl0IHBsZWFzZQorICogIHJlZmVyIHRvIEludGVsIFNE
TSAxMC4xMi4gVGhlIFBBVCBhbGxvd3MgdG8gc2V0IHRoZSBjYWNoaW5nIGF0dHJpYnV0ZXMgb2YK
KyAqICBwYWdlcyBpbnN0ZWFkIG9mIHVzaW5nIE1UUlJzLgorICoKKyAqICBUaGUgUEFUIE1TUiBp
cyBhcyBmb2xsb3dzIChpdCBpcyBhIDY0LWJpdCB2YWx1ZSwgZWFjaCBlbnRyeSBpcyA4IGJpdHMp
OgorICogICAgICAgICAgICAgICAgICAgIFBBVDQgICAgICAgICAgICAgICAgIFBBVDAKKyAqICAr
LS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICogIHwgVUMgIHwg
VUMtIHwgV0MgfCBXQiB8IFVDIHwgVUMtIHwgV0MgfCBXQiB8ICA8PSBMaW51eAorICogICstLS0t
LSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0rCisgKiAgfCBVQyAgfCBVQy0g
fCBXVCB8IFdCIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwgIDw9IEJJT1MgKGRlZmF1bHQgd2hlbiBt
YWNoaW5lIGJvb3RzKQorICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0t
Ky0tLS0rCisgKiAgfCByc3YgfCByc3YgfCBXUCB8IFdDIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwg
IDw9IFhlbgorICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0r
CisgKgorICogIFRoZSBsb29rdXAgb2YgdGhpcyBpbmRleCB0YWJsZSB0cmFuc2xhdGVzIHRvIGxv
b2tpbmcgdXAKKyAqICBCaXQgNywgQml0IDQsIGFuZCBCaXQgMyBvZiB2YWwgZW50cnk6CisgKgor
ICogIFBBVC9QU0UgKGJpdCA3KSAuLi4gUENEIChiaXQgNCkgLi4gUFdUIChiaXQgMykuCisgKgor
ICogIElmIGFsbCBiaXRzIGFyZSBvZmYsIHRoZW4gd2UgYXJlIHVzaW5nIFBBVDAuIElmIGJpdCAz
IHR1cm5lZCBvbiwKKyAqICB0aGVuIHdlIGFyZSB1c2luZyBQQVQxLCBpZiBiaXQgMyBhbmQgYml0
IDQsIHRoZW4gUEFUMi4uCisgKgorICogIEFzIHlvdSBjYW4gc2VlLCB0aGUgTGludXggUEFUMSB0
cmFuc2xhdGVzIHRvIFBBVDQgdW5kZXIgWGVuLiBXaGljaCBtZWFucworICogIHRoYXQgaWYgYSBn
dWVzdCB0aGF0IGZvbGxvd3MgTGludXgncyBQQVQgc2V0dXAgYW5kIHdvdWxkIGxpa2UgdG8gc2V0
IFdyaXRlCisgKiAgQ29tYmluZWQgb24gcGFnZXMgaXQgTVVTVCB1c2UgUEFUNCBlbnRyeS4gTWVh
bmluZyB0aGF0IEJpdCA3IChQQUdFX1BBVCkgaXMKKyAqICBzZXQuIEZvciBleGFtcGxlLCB1bmRl
ciBMaW51eCBpdCBvbmx5IHVzZXMgUEFUMCwgUEFUMSwgYW5kIFBBVDIgZm9yIHRoZQorICogIGNh
Y2hpbmcgYXM6CisgKgorICogICBXQiA9IG5vbmUgKHNvIFBBVDApCisgKiAgIFdDID0gUFdUIChi
aXQgMyBvbikKKyAqICAgVUMgPSBQV1QgfCBQQ0QgKGJpdCAzIGFuZCA0IGFyZSBvbikuCisgKgor
ICogVG8gbWFrZSBpdCB3b3JrIHdpdGggWGVuLCBpdCBuZWVkcyB0byB0cmFuc2xhdGUgdGhlIFdD
IGJpdCBhcyBzbzoKKyAqCisgKiAgUFdUIChzbyBiaXQgMyBvbikgLS0+IFBBVCAoc28gYml0IDcg
aXMgb24pIGFuZCBjbGVhciBiaXQgMworICoKKyAqIEFuZCB0byB0cmFuc2xhdGUgYmFjayBpdCB3
b3VsZDoKKyAqCisgKiBQQVQgKGJpdCA3IG9uKSAtLT4gUFdUIChiaXQgMyBvbikgYW5kIGNsZWFy
IGJpdCA3LgorICovCisjZGVmaW5lIE1NVV9OT1JNQUxfUFRfVVBEQVRFICAgICAgMCAvKiBjaGVj
a2VkICcqcHRyID0gdmFsJy4gcHRyIGlzIE1BLiAgICAgICovCisjZGVmaW5lIE1NVV9NQUNIUEhZ
U19VUERBVEUgICAgICAgMSAvKiBwdHIgPSBNQSBvZiBmcmFtZSB0byBtb2RpZnkgZW50cnkgZm9y
ICovCisjZGVmaW5lIE1NVV9QVF9VUERBVEVfUFJFU0VSVkVfQUQgMiAvKiBhdG9taWNhbGx5OiAq
cHRyID0gdmFsIHwgKCpwdHImKEF8RCkpICovCisKKy8qCisgKiBNTVUgRVhURU5ERUQgT1BFUkFU
SU9OUworICoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9tbXVleHRf
b3AobW11ZXh0X29wX3QgdW9wc1tdLAorICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgY291bnQsCisgKiBgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqcGRv
bmUsCisgKiBgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JlaWduZG9tKQor
ICovCisvKiBIWVBFUlZJU09SX21tdWV4dF9vcCgpIGFjY2VwdHMgYSBsaXN0IG9mIG1tdWV4dF9v
cCBzdHJ1Y3R1cmVzLgorICogQSBmb3JlaWduZG9tIChGRCkgY2FuIGJlIHNwZWNpZmllZCAob3Ig
RE9NSURfU0VMRiBmb3Igbm9uZSkuCisgKiBXaGVyZSB0aGUgRkQgaGFzIHNvbWUgZWZmZWN0LCBp
dCBpcyBkZXNjcmliZWQgYmVsb3cuCisgKgorICogY21kOiBNTVVFWFRfKFVOKVBJTl8qX1RBQkxF
CisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlICh1bilwaW5uZWQgYXMgYSBwLnQu
IHBhZ2UuCisgKiAgICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBp
cyBzcGVjaWZpZWQuCisgKgorICogY21kOiBNTVVFWFRfTkVXX0JBU0VQVFIKKyAqIG1mbjogTWFj
aGluZSBmcmFtZSBudW1iZXIgb2YgbmV3IHBhZ2UtdGFibGUgYmFzZSB0byBpbnN0YWxsIGluIE1N
VS4KKyAqCisgKiBjbWQ6IE1NVUVYVF9ORVdfVVNFUl9CQVNFUFRSIFt4ODYvNjQgb25seV0KKyAq
IG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgbmV3IHBhZ2UtdGFibGUgYmFzZSB0byBpbnN0
YWxsIGluIE1NVQorICogICAgICB3aGVuIGluIHVzZXIgc3BhY2UuCisgKgorICogY21kOiBNTVVF
WFRfVExCX0ZMVVNIX0xPQ0FMCisgKiBObyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gRmx1c2hlcyBs
b2NhbCBUTEIuCisgKgorICogY21kOiBNTVVFWFRfSU5WTFBHX0xPQ0FMCisgKiBsaW5lYXJfYWRk
cjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIHRoZSBsb2NhbCBUTEIuCisgKgor
ICogY21kOiBNTVVFWFRfVExCX0ZMVVNIX01VTFRJCisgKiB2Y3B1bWFzazogUG9pbnRlciB0byBi
aXRtYXAgb2YgVkNQVXMgdG8gYmUgZmx1c2hlZC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9JTlZMUEdf
TVVMVEkKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0byBiZSBmbHVzaGVkLgorICog
dmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNoZWQuCisgKgor
ICogY21kOiBNTVVFWFRfVExCX0ZMVVNIX0FMTAorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IEZsdXNoZXMgYWxsIFZDUFVzJyBUTEJzLgorICoKKyAqIGNtZDogTU1VRVhUX0lOVkxQR19BTEwK
KyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyB0byBiZSBmbHVzaGVkIGZyb20gYWxsIFZD
UFVzJyBUTEJzLgorICoKKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NBQ0hFCisgKiBObyBhZGRpdGlv
bmFsIGFyZ3VtZW50cy4gV3JpdGVzIGJhY2sgYW5kIGZsdXNoZXMgY2FjaGUgY29udGVudHMuCisg
KgorICogY21kOiBNTVVFWFRfRkxVU0hfQ0FDSEVfR0xPQkFMCisgKiBObyBhZGRpdGlvbmFsIGFy
Z3VtZW50cy4gV3JpdGVzIGJhY2sgYW5kIGZsdXNoZXMgY2FjaGUgY29udGVudHMKKyAqIG9uIGFs
bCBDUFVzIGluIHRoZSBzeXN0ZW0uCisgKgorICogY21kOiBNTVVFWFRfU0VUX0xEVAorICogbGlu
ZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIG9mIExEVCBiYXNlIChOQi4gbXVzdCBiZSBwYWdlLWFs
aWduZWQpLgorICogbnJfZW50czogTnVtYmVyIG9mIGVudHJpZXMgaW4gTERULgorICoKKyAqIGNt
ZDogTU1VRVhUX0NMRUFSX1BBR0UKKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgdG8gYmUg
Y2xlYXJlZC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9DT1BZX1BBR0UKKyAqIG1mbjogTWFjaGluZSBm
cmFtZSBudW1iZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHBhZ2UuCisgKiBzcmNfbWZuOiBNYWNoaW5l
IGZyYW1lIG51bWJlciBvZiB0aGUgc291cmNlIHBhZ2UuCisgKgorICogY21kOiBNTVVFWFRfW1VO
XU1BUktfU1VQRVIKKyAqIG1mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgaGVhZCBvZiBzdXBl
cnBhZ2UgdG8gYmUgW3VuXW1hcmtlZC4KKyAqLworLyogYCBlbnVtIG1tdWV4dF9jbWQgeyAqLwor
I2RlZmluZSBNTVVFWFRfUElOX0wxX1RBQkxFICAgICAgMAorI2RlZmluZSBNTVVFWFRfUElOX0wy
X1RBQkxFICAgICAgMQorI2RlZmluZSBNTVVFWFRfUElOX0wzX1RBQkxFICAgICAgMgorI2RlZmlu
ZSBNTVVFWFRfUElOX0w0X1RBQkxFICAgICAgMworI2RlZmluZSBNTVVFWFRfVU5QSU5fVEFCTEUg
ICAgICAgNAorI2RlZmluZSBNTVVFWFRfTkVXX0JBU0VQVFIgICAgICAgNQorI2RlZmluZSBNTVVF
WFRfVExCX0ZMVVNIX0xPQ0FMICAgNgorI2RlZmluZSBNTVVFWFRfSU5WTFBHX0xPQ0FMICAgICAg
NworI2RlZmluZSBNTVVFWFRfVExCX0ZMVVNIX01VTFRJICAgOAorI2RlZmluZSBNTVVFWFRfSU5W
TFBHX01VTFRJICAgICAgOQorI2RlZmluZSBNTVVFWFRfVExCX0ZMVVNIX0FMTCAgICAxMAorI2Rl
ZmluZSBNTVVFWFRfSU5WTFBHX0FMTCAgICAgICAxMQorI2RlZmluZSBNTVVFWFRfRkxVU0hfQ0FD
SEUgICAgICAxMgorI2RlZmluZSBNTVVFWFRfU0VUX0xEVCAgICAgICAgICAxMworI2RlZmluZSBN
TVVFWFRfTkVXX1VTRVJfQkFTRVBUUiAxNQorI2RlZmluZSBNTVVFWFRfQ0xFQVJfUEFHRSAgICAg
ICAxNgorI2RlZmluZSBNTVVFWFRfQ09QWV9QQUdFICAgICAgICAxNworI2RlZmluZSBNTVVFWFRf
RkxVU0hfQ0FDSEVfR0xPQkFMIDE4CisjZGVmaW5lIE1NVUVYVF9NQVJLX1NVUEVSICAgICAgIDE5
CisjZGVmaW5lIE1NVUVYVF9VTk1BUktfU1VQRVIgICAgIDIwCisvKiBgIH0gKi8KKworI2lmbmRl
ZiBfX0FTU0VNQkxZX18KK3N0cnVjdCBtbXVleHRfb3AgeworICAgIHVuc2lnbmVkIGludCBjbWQ7
IC8qID0+IGVudW0gbW11ZXh0X2NtZCAqLworICAgIHVuaW9uIHsKKyAgICAgICAgLyogW1VOXVBJ
Tl9UQUJMRSwgTkVXX0JBU0VQVFIsIE5FV19VU0VSX0JBU0VQVFIKKyAgICAgICAgICogQ0xFQVJf
UEFHRSwgQ09QWV9QQUdFLCBbVU5dTUFSS19TVVBFUiAqLworICAgICAgICB4ZW5fcGZuX3QgICAg
IG1mbjsKKyAgICAgICAgLyogSU5WTFBHX0xPQ0FMLCBJTlZMUEdfQUxMLCBTRVRfTERUICovCisg
ICAgICAgIFVMT05HX1BUUiBsaW5lYXJfYWRkcjsKKyAgICB9IGFyZzE7CisgICAgdW5pb24gewor
ICAgICAgICAvKiBTRVRfTERUICovCisgICAgICAgIHVuc2lnbmVkIGludCBucl9lbnRzOworICAg
ICAgICAvKiBUTEJfRkxVU0hfTVVMVEksIElOVkxQR19NVUxUSSAqLworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwNQorICAgICAgICBYRU5fR1VFU1RfSEFORExFKGNv
bnN0X3ZvaWQpIHZjcHVtYXNrOworI2Vsc2UKKyAgICAgICAgY29uc3Qgdm9pZCAqdmNwdW1hc2s7
CisjZW5kaWYKKyAgICAgICAgLyogQ09QWV9QQUdFICovCisgICAgICAgIHhlbl9wZm5fdCBzcmNf
bWZuOworICAgIH0gYXJnMjsKK307Cit0eXBlZGVmIHN0cnVjdCBtbXVleHRfb3AgbW11ZXh0X29w
X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShtbXVleHRfb3BfdCk7CisjZW5kaWYKKworLyoK
KyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGlu
ZyhVTE9OR19QVFIgdmEsIHU2NCB2YWwsCisgKiBgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW51bSB1dm1fZmxhZ3MgZmxhZ3MpCisgKiBgCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisg
KiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJkb21haW4oVUxPTkdfUFRSIHZh
LCB1NjQgdmFsLAorICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudW0gdXZtX2ZsYWdzIGZsYWdzLAorICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvbWlkX3QgZG9taWQpCisgKiBgCisgKiBgIEB2YTogVGhlIHZpcnR1YWwg
YWRkcmVzcyB3aG9zZSBtYXBwaW5nIHdlIHdhbnQgdG8gY2hhbmdlCisgKiBgIEB2YWw6IFRoZSBu
ZXcgcGFnZSB0YWJsZSBlbnRyeSwgbXVzdCBjb250YWluIGEgbWFjaGluZSBhZGRyZXNzCisgKiBg
IEBmbGFnczogQ29udHJvbCBUTEIgZmx1c2hlcworICovCisvKiBUaGVzZSBhcmUgcGFzc2VkIGFz
ICdmbGFncycgdG8gdXBkYXRlX3ZhX21hcHBpbmcuIFRoZXkgY2FuIGJlIE9SZWQuICovCisvKiBX
aGVuIHNwZWNpZnlpbmcgVVZNRl9NVUxUSSwgYWxzbyBPUiBpbiBhIHBvaW50ZXIgdG8gYSBDUFUg
Yml0bWFwLiAgICovCisvKiBVVk1GX0xPQ0FMIGlzIG1lcmVseSBVVk1GX01VTFRJIHdpdGggYSBO
VUxMIGJpdG1hcCBwb2ludGVyLiAgICAgICAgICovCisvKiBgIGVudW0gdXZtX2ZsYWdzIHsgKi8K
KyNkZWZpbmUgVVZNRl9OT05FICAgICAgICAgICAgICAgKDBVTDw8MCkgLyogTm8gZmx1c2hpbmcg
YXQgYWxsLiAgICovCisjZGVmaW5lIFVWTUZfVExCX0ZMVVNIICAgICAgICAgICgxVUw8PDApIC8q
IEZsdXNoIGVudGlyZSBUTEIocykuICAqLworI2RlZmluZSBVVk1GX0lOVkxQRyAgICAgICAgICAg
ICAoMlVMPDwwKSAvKiBGbHVzaCBvbmx5IG9uZSBlbnRyeS4gKi8KKyNkZWZpbmUgVVZNRl9GTFVT
SFRZUEVfTUFTSyAgICAgKDNVTDw8MCkKKyNkZWZpbmUgVVZNRl9NVUxUSSAgICAgICAgICAgICAg
KDBVTDw8MikgLyogRmx1c2ggc3Vic2V0IG9mIFRMQnMuICovCisjZGVmaW5lIFVWTUZfTE9DQUwg
ICAgICAgICAgICAgICgwVUw8PDIpIC8qIEZsdXNoIGxvY2FsIFRMQi4gICAgICAqLworI2RlZmlu
ZSBVVk1GX0FMTCAgICAgICAgICAgICAgICAoMVVMPDwyKSAvKiBGbHVzaCBhbGwgVExCcy4gICAg
ICAgKi8KKy8qIGAgfSAqLworCisvKgorICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl9jb25zb2xl
X2lvKCkuCisgKi8KKyNkZWZpbmUgQ09OU09MRUlPX3dyaXRlICAgICAgICAgMAorI2RlZmluZSBD
T05TT0xFSU9fcmVhZCAgICAgICAgICAxCisKKy8qCisgKiBDb21tYW5kcyB0byBIWVBFUlZJU09S
X3ZtX2Fzc2lzdCgpLgorICovCisjZGVmaW5lIFZNQVNTVF9DTURfZW5hYmxlICAgICAgICAgICAg
ICAgIDAKKyNkZWZpbmUgVk1BU1NUX0NNRF9kaXNhYmxlICAgICAgICAgICAgICAgMQorCisvKiB4
ODYvMzIgZ3Vlc3RzOiBzaW11bGF0ZSBmdWxsIDRHQiBzZWdtZW50IGxpbWl0cy4gKi8KKyNkZWZp
bmUgVk1BU1NUX1RZUEVfNGdiX3NlZ21lbnRzICAgICAgICAgMAorCisvKiB4ODYvMzIgZ3Vlc3Rz
OiB0cmFwICh2ZWN0b3IgMTUpIHdoZW5ldmVyIGFib3ZlIHZtYXNzaXN0IGlzIHVzZWQuICovCisj
ZGVmaW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50c19ub3RpZnkgIDEKKworLyoKKyAqIHg4NiBn
dWVzdHM6IHN1cHBvcnQgd3JpdGVzIHRvIGJvdHRvbS1sZXZlbCBQVEVzLgorICogTkIxLiBQYWdl
LWRpcmVjdG9yeSBlbnRyaWVzIGNhbm5vdCBiZSB3cml0dGVuLgorICogTkIyLiBHdWVzdCBtdXN0
IGNvbnRpbnVlIHRvIHJlbW92ZSBhbGwgd3JpdGFibGUgbWFwcGluZ3Mgb2YgUFRFcy4KKyAqLwor
I2RlZmluZSBWTUFTU1RfVFlQRV93cml0YWJsZV9wYWdldGFibGVzICAyCisKKy8qIHg4Ni9QQUUg
Z3Vlc3RzOiBzdXBwb3J0IFBEUFRzIGFib3ZlIDRHQi4gKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVf
cGFlX2V4dGVuZGVkX2NyMyAgICAgMworCisjZGVmaW5lIE1BWF9WTUFTU1RfVFlQRSAgICAgICAg
ICAgICAgICAgIDMKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKwordHlwZWRlZiB1aW50MTZfdCBk
b21pZF90OworCisvKiBEb21haW4gaWRzID49IERPTUlEX0ZJUlNUX1JFU0VSVkVEIGNhbm5vdCBi
ZSB1c2VkIGZvciBvcmRpbmFyeSBkb21haW5zLiAqLworI2RlZmluZSBET01JRF9GSVJTVF9SRVNF
UlZFRCAoMHg3RkYwVSkKKworLyogRE9NSURfU0VMRiBpcyB1c2VkIGluIGNlcnRhaW4gY29udGV4
dHMgdG8gcmVmZXIgdG8gb25lc2VsZi4gKi8KKyNkZWZpbmUgRE9NSURfU0VMRiAoMHg3RkYwVSkK
KworLyoKKyAqIERPTUlEX0lPIGlzIHVzZWQgdG8gcmVzdHJpY3QgcGFnZS10YWJsZSB1cGRhdGVz
IHRvIG1hcHBpbmcgSS9PIG1lbW9yeS4KKyAqIEFsdGhvdWdoIG5vIEZvcmVpZ24gRG9tYWluIG5l
ZWQgYmUgc3BlY2lmaWVkIHRvIG1hcCBJL08gcGFnZXMsIERPTUlEX0lPCisgKiBpcyB1c2VmdWwg
dG8gZW5zdXJlIHRoYXQgbm8gbWFwcGluZ3MgdG8gdGhlIE9TJ3Mgb3duIGhlYXAgYXJlIGFjY2lk
ZW50YWxseQorICogaW5zdGFsbGVkLiAoZS5nLiwgaW4gTGludXggdGhpcyBjb3VsZCBjYXVzZSBo
YXZvYyBhcyByZWZlcmVuY2UgY291bnRzCisgKiBhcmVuJ3QgYWRqdXN0ZWQgb24gdGhlIEkvTy1t
YXBwaW5nIGNvZGUgcGF0aCkuCisgKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NF
VF9GT1JFSUdORE9NLCBidXQgaW4gdGhhdCBjb250ZXh0IGNhbgorICogYmUgc3BlY2lmaWVkIGJ5
IGFueSBjYWxsaW5nIGRvbWFpbi4KKyAqLworI2RlZmluZSBET01JRF9JTyAgICgweDdGRjFVKQor
CisvKgorICogRE9NSURfWEVOIGlzIHVzZWQgdG8gYWxsb3cgcHJpdmlsZWdlZCBkb21haW5zIHRv
IG1hcCByZXN0cmljdGVkIHBhcnRzIG9mCisgKiBYZW4ncyBoZWFwIHNwYWNlIChlLmcuLCB0aGUg
bWFjaGluZV90b19waHlzIHRhYmxlKS4KKyAqIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiBNTVVF
WFRfU0VUX0ZPUkVJR05ET00sIGFuZCBpcyBvbmx5IHBlcm1pdHRlZCBpZgorICogdGhlIGNhbGxl
ciBpcyBwcml2aWxlZ2VkLgorICovCisjZGVmaW5lIERPTUlEX1hFTiAgKDB4N0ZGMlUpCisKKy8q
CisgKiBET01JRF9DT1cgaXMgdXNlZCBhcyB0aGUgb3duZXIgb2Ygc2hhcmFibGUgcGFnZXMgKi8K
KyNkZWZpbmUgRE9NSURfQ09XICAoMHg3RkYzVSkKKworLyogRE9NSURfSU5WQUxJRCBpcyB1c2Vk
IHRvIGlkZW50aWZ5IHBhZ2VzIHdpdGggdW5rbm93biBvd25lci4gKi8KKyNkZWZpbmUgRE9NSURf
SU5WQUxJRCAoMHg3RkY0VSkKKworLyogSWRsZSBkb21haW4uICovCisjZGVmaW5lIERPTUlEX0lE
TEUgKDB4N0ZGRlUpCisKKy8qCisgKiBTZW5kIGFuIGFycmF5IG9mIHRoZXNlIHRvIEhZUEVSVklT
T1JfbW11X3VwZGF0ZSgpLgorICogTkIuIFRoZSBmaWVsZHMgYXJlIG5hdHVyYWwgcG9pbnRlci9h
ZGRyZXNzIHNpemUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICovCitzdHJ1Y3QgbW11X3VwZGF0
ZSB7CisgICAgdWludDY0X3QgcHRyOyAgICAgICAvKiBNYWNoaW5lIGFkZHJlc3Mgb2YgUFRFLiAq
LworICAgIHVpbnQ2NF90IHZhbDsgICAgICAgLyogTmV3IGNvbnRlbnRzIG9mIFBURS4gICAgKi8K
K307Cit0eXBlZGVmIHN0cnVjdCBtbXVfdXBkYXRlIG1tdV91cGRhdGVfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKG1tdV91cGRhdGVfdCk7CisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFs
CisgKiBgIEhZUEVSVklTT1JfbXVsdGljYWxsKG11bHRpY2FsbF9lbnRyeV90IGNhbGxfbGlzdFtd
LAorICogYCAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBucl9jYWxscyk7CisgKgorICog
TkIuIFRoZSBmaWVsZHMgYXJlIGxvZ2ljYWxseSB0aGUgbmF0dXJhbCByZWdpc3RlciBzaXplIGZv
ciB0aGlzCisgKiBhcmNoaXRlY3R1cmUuIEluIGNhc2VzIHdoZXJlIHhlbl91bG9uZ190IGlzIGxh
cmdlciB0aGFuIHRoaXMgdGhlbgorICogYW55IHVudXNlZCBiaXRzIGluIHRoZSB1cHBlciBwb3J0
aW9uIG11c3QgYmUgemVyby4KKyAqLworc3RydWN0IG11bHRpY2FsbF9lbnRyeSB7CisgICAgeGVu
X3Vsb25nX3Qgb3AsIHJlc3VsdDsKKyAgICB4ZW5fdWxvbmdfdCBhcmdzWzZdOworfTsKK3R5cGVk
ZWYgc3RydWN0IG11bHRpY2FsbF9lbnRyeSBtdWx0aWNhbGxfZW50cnlfdDsKK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKG11bHRpY2FsbF9lbnRyeV90KTsKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDQwNDAwCisvKgorICogRXZlbnQgY2hhbm5lbCBlbmRwb2ludHMgcGVy
IGRvbWFpbiAod2hlbiB1c2luZyB0aGUgMi1sZXZlbCBBQkkpOgorICogIDEwMjQgaWYgYSBMT05H
X1BUUiBpcyAzMiBiaXRzOyA0MDk2IGlmIGEgTE9OR19QVFIgaXMgNjQgYml0cy4KKyAqLworI2Rl
ZmluZSBOUl9FVkVOVF9DSEFOTkVMUyBFVlRDSE5fMkxfTlJfQ0hBTk5FTFMKKyNlbmRpZgorCitz
dHJ1Y3QgdmNwdV90aW1lX2luZm8geworICAgIC8qCisgICAgICogVXBkYXRlcyB0byB0aGUgZm9s
bG93aW5nIHZhbHVlcyBhcmUgcHJlY2VkZWQgYW5kIGZvbGxvd2VkIGJ5IGFuCisgICAgICogaW5j
cmVtZW50IG9mICd2ZXJzaW9uJy4gVGhlIGd1ZXN0IGNhbiB0aGVyZWZvcmUgZGV0ZWN0IHVwZGF0
ZXMgYnkKKyAgICAgKiBsb29raW5nIGZvciBjaGFuZ2VzIHRvICd2ZXJzaW9uJy4gSWYgdGhlIGxl
YXN0LXNpZ25pZmljYW50IGJpdCBvZgorICAgICAqIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQg
dGhlbiBhbiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSBndWVzdAorICAgICAqIG11c3Qg
d2FpdCB0byByZWFkIGEgY29uc2lzdGVudCBzZXQgb2YgdmFsdWVzLgorICAgICAqIFRoZSBjb3Jy
ZWN0IHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzaW1pbGFyIHRv
CisgICAgICogTGludXgncyBzZXFsb2NrOiBzZWUgdGhlIGltcGxlbWVudGF0aW9ucyBvZiByZWFk
X3NlcWJlZ2luL3JlYWRfc2VxcmV0cnkuCisgICAgICovCisgICAgdWludDMyX3QgdmVyc2lvbjsK
KyAgICB1aW50MzJfdCBwYWQwOworICAgIHVpbnQ2NF90IHRzY190aW1lc3RhbXA7ICAgLyogVFND
IGF0IGxhc3QgdXBkYXRlIG9mIHRpbWUgdmFscy4gICovCisgICAgdWludDY0X3Qgc3lzdGVtX3Rp
bWU7ICAgICAvKiBUaW1lLCBpbiBuYW5vc2Vjcywgc2luY2UgYm9vdC4gICAgKi8KKyAgICAvKgor
ICAgICAqIEN1cnJlbnQgc3lzdGVtIHRpbWU6CisgICAgICogICBzeXN0ZW1fdGltZSArCisgICAg
ICogICAoKCgodHNjIC0gdHNjX3RpbWVzdGFtcCkgPDwgdHNjX3NoaWZ0KSAqIHRzY190b19zeXN0
ZW1fbXVsKSA+PiAzMikKKyAgICAgKiBDUFUgZnJlcXVlbmN5IChIeik6CisgICAgICogICAoKDEw
XjkgPDwgMzIpIC8gdHNjX3RvX3N5c3RlbV9tdWwpID4+IHRzY19zaGlmdAorICAgICAqLworICAg
IHVpbnQzMl90IHRzY190b19zeXN0ZW1fbXVsOworICAgIGludDhfdCAgIHRzY19zaGlmdDsKKyAg
ICBpbnQ4X3QgICBwYWQxWzNdOworfTsgLyogMzIgYnl0ZXMgKi8KK3R5cGVkZWYgc3RydWN0IHZj
cHVfdGltZV9pbmZvIHZjcHVfdGltZV9pbmZvX3Q7CisKK3N0cnVjdCB2Y3B1X2luZm8geworICAg
IC8qCisgICAgICogJ2V2dGNobl91cGNhbGxfcGVuZGluZycgaXMgd3JpdHRlbiBub24temVybyBi
eSBYZW4gdG8gaW5kaWNhdGUKKyAgICAgKiBhIHBlbmRpbmcgbm90aWZpY2F0aW9uIGZvciBhIHBh
cnRpY3VsYXIgVkNQVS4gSXQgaXMgdGhlbiBjbGVhcmVkIAorICAgICAqIGJ5IHRoZSBndWVzdCBP
UyAvYmVmb3JlLyBjaGVja2luZyBmb3IgcGVuZGluZyB3b3JrLCB0aHVzIGF2b2lkaW5nCisgICAg
ICogYSBzZXQtYW5kLWNoZWNrIHJhY2UuIE5vdGUgdGhhdCB0aGUgbWFzayBpcyBvbmx5IGFjY2Vz
c2VkIGJ5IFhlbgorICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBjdXJyZW50bHkgaG9zdGluZyB0
aGUgVkNQVS4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAqIHBlbmRpbmcgYW5kIG1hc2sgZmxh
Z3MgY2FuIGJlIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0IHdpdGhvdXQgc3BlY2lhbAorICAgICAqIHN5
bmNocm9uaXNhdGlvbiAoaS5lLiwgbm8gbmVlZCBmb3IgdGhlIHg4NiBMT0NLIHByZWZpeCkuCisg
ICAgICogVGhpcyBtYXkgc2VlbSBzdWJvcHRpbWFsIGJlY2F1c2UgaWYgdGhlIHBlbmRpbmcgZmxh
ZyBpcyBzZXQgYnkKKyAgICAgKiBhIGRpZmZlcmVudCBDUFUgdGhlbiBhbiBJUEkgbWF5IGJlIHNj
aGVkdWxlZCBldmVuIHdoZW4gdGhlIG1hc2sKKyAgICAgKiBpcyBzZXQuIEhvd2V2ZXIsIG5vdGU6
CisgICAgICogIDEuIFRoZSB0YXNrIG9mICdpbnRlcnJ1cHQgaG9sZG9mZicgaXMgY292ZXJlZCBi
eSB0aGUgcGVyLWV2ZW50LQorICAgICAqICAgICBjaGFubmVsIG1hc2sgYml0cy4gQSAnbm9pc3kn
IGV2ZW50IHRoYXQgaXMgY29udGludWFsbHkgYmVpbmcKKyAgICAgKiAgICAgdHJpZ2dlcmVkIGNh
biBiZSBtYXNrZWQgYXQgc291cmNlIGF0IHRoaXMgdmVyeSBwcmVjaXNlCisgICAgICogICAgIGdy
YW51bGFyaXR5LgorICAgICAqICAyLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBwZXItVkNQVSBt
YXNrIGlzIHRoZXJlZm9yZSB0byByZXN0cmljdAorICAgICAqICAgICByZWVudHJhbnQgZXhlY3V0
aW9uOiB3aGV0aGVyIGZvciBjb25jdXJyZW5jeSBjb250cm9sLCBvciB0bworICAgICAqICAgICBw
cmV2ZW50IHVuYm91bmRlZCBzdGFjayB1c2FnZS4gV2hhdGV2ZXIgdGhlIHB1cnBvc2UsIHdlIGV4
cGVjdAorICAgICAqICAgICB0aGF0IHRoZSBtYXNrIHdpbGwgYmUgYXNzZXJ0ZWQgb25seSBmb3Ig
c2hvcnQgcGVyaW9kcyBhdCBhIHRpbWUsCisgICAgICogICAgIGFuZCBzbyB0aGUgbGlrZWxpaG9v
ZCBvZiBhICdzcHVyaW91cycgSVBJIGlzIHN1aXRhYmx5IHNtYWxsLgorICAgICAqIFRoZSBtYXNr
IGlzIHJlYWQgYmVmb3JlIG1ha2luZyBhbiBldmVudCB1cGNhbGwgdG8gdGhlIGd1ZXN0OiBhCisg
ICAgICogbm9uLXplcm8gbWFzayB0aGVyZWZvcmUgZ3VhcmFudGVlcyB0aGF0IHRoZSBWQ1BVIHdp
bGwgbm90IHJlY2VpdmUKKyAgICAgKiBhbiB1cGNhbGwgYWN0aXZhdGlvbi4gVGhlIG1hc2sgaXMg
Y2xlYXJlZCB3aGVuIHRoZSBWQ1BVIHJlcXVlc3RzCisgICAgICogdG8gYmxvY2s6IHRoaXMgYXZv
aWRzIHdha2V1cC13YWl0aW5nIHJhY2VzLgorICAgICAqLworICAgIHVpbnQ4X3QgZXZ0Y2huX3Vw
Y2FsbF9wZW5kaW5nOworI2lmZGVmIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLCisgICAgdWludDhf
dCBldnRjaG5fdXBjYWxsX21hc2s7CisjZWxzZSAvKiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSyAq
LworICAgIHVpbnQ4X3QgcGFkMDsKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSyAq
LworICAgIHhlbl91bG9uZ190IGV2dGNobl9wZW5kaW5nX3NlbDsKKyAgICBzdHJ1Y3QgYXJjaF92
Y3B1X2luZm8gYXJjaDsKKyAgICBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdGltZTsKK307IC8qIDY0
IGJ5dGVzICh4ODYpICovCisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0IHZjcHVfaW5m
byB2Y3B1X2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVudHMgMjAwIHN0YXJ0b2Zk
YXlfc2hhcmVkIFN0YXJ0LW9mLWRheSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUKKyAqIFhlbi9rZXJu
ZWwgc2hhcmVkIGRhdGEgLS0gcG9pbnRlciBwcm92aWRlZCBpbiBzdGFydF9pbmZvLgorICoKKyAq
IFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgdG8gYmUgYm90aCBzbWFsbGVyIHRoYW4gYSBwYWdl
LCBhbmQgdGhlCisgKiBvbmx5IGRhdGEgb24gdGhlIHNoYXJlZCBwYWdlLCBidXQgbWF5IHZhcnkg
aW4gYWN0dWFsIHNpemUgZXZlbiB3aXRoaW4KKyAqIGNvbXBhdGlibGUgWGVuIHZlcnNpb25zOyBn
dWVzdHMgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBzaXplCisgKiBvZiB0aGlzIHN0cnVjdHVyZSBy
ZW1haW5pbmcgY29uc3RhbnQuCisgKi8KK3N0cnVjdCBzaGFyZWRfaW5mbyB7CisgICAgc3RydWN0
IHZjcHVfaW5mbyB2Y3B1X2luZm9bWEVOX0xFR0FDWV9NQVhfVkNQVVNdOworCisgICAgLyoKKyAg
ICAgKiBBIGRvbWFpbiBjYW4gY3JlYXRlICJldmVudCBjaGFubmVscyIgb24gd2hpY2ggaXQgY2Fu
IHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgKiBhc3luY2hyb25vdXMgZXZlbnQgbm90aWZpY2F0aW9u
cy4gVGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZXZlbnQgdGhhdAorICAgICAqIGFyZSBkZWxp
dmVyZWQgYnkgdGhpcyBtZWNoYW5pc206CisgICAgICogIDEuIEJpLWRpcmVjdGlvbmFsIGludGVy
LSBhbmQgaW50cmEtZG9tYWluIGNvbm5lY3Rpb25zLiBEb21haW5zIG11c3QKKyAgICAgKiAgICAg
YXJyYW5nZSBvdXQtb2YtYmFuZCB0byBzZXQgdXAgYSBjb25uZWN0aW9uICh1c3VhbGx5IGJ5IGFs
bG9jYXRpbmcKKyAgICAgKiAgICAgYW4gdW5ib3VuZCAnbGlzdGVuZXInIHBvcnQgYW5kIGF2ZXJ0
aXNpbmcgdGhhdCB2aWEgYSBzdG9yYWdlIHNlcnZpY2UKKyAgICAgKiAgICAgc3VjaCBhcyB4ZW5z
dG9yZSkuCisgICAgICogIDIuIFBoeXNpY2FsIGludGVycnVwdHMuIEEgZG9tYWluIHdpdGggc3Vp
dGFibGUgaGFyZHdhcmUtYWNjZXNzCisgICAgICogICAgIHByaXZpbGVnZXMgY2FuIGJpbmQgYW4g
ZXZlbnQtY2hhbm5lbCBwb3J0IHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0CisgICAgICogICAgIHNv
dXJjZS4KKyAgICAgKiAgMy4gVmlydHVhbCBpbnRlcnJ1cHRzICgnZXZlbnRzJykuIEEgZG9tYWlu
IGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwKKyAgICAgKiAgICAgcG9ydCB0byBhIHZpcnR1YWwg
aW50ZXJydXB0IHNvdXJjZSwgc3VjaCBhcyB0aGUgdmlydHVhbC10aW1lcgorICAgICAqICAgICBk
ZXZpY2Ugb3IgdGhlIGVtZXJnZW5jeSBjb25zb2xlLgorICAgICAqIAorICAgICAqIEV2ZW50IGNo
YW5uZWxzIGFyZSBhZGRyZXNzZWQgYnkgYSAicG9ydCBpbmRleCIuIEVhY2ggY2hhbm5lbCBpcwor
ICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZvcm1hdGlvbjoKKyAgICAgKiAg
MS4gUEVORElORyAtLSBub3RpZmllcyB0aGUgZG9tYWluIHRoYXQgdGhlcmUgaXMgYSBwZW5kaW5n
IG5vdGlmaWNhdGlvbgorICAgICAqICAgICB0byBiZSBwcm9jZXNzZWQuIFRoaXMgYml0IGlzIGNs
ZWFyZWQgYnkgdGhlIGd1ZXN0LgorICAgICAqICAyLiBNQVNLIC0tIGlmIHRoaXMgYml0IGlzIGNs
ZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2YgUEVORElORworICAgICAqICAgICB3aWxsIGNh
dXNlIGFuIGFzeW5jaHJvbm91cyB1cGNhbGwgdG8gYmUgc2NoZWR1bGVkLiBUaGlzIGJpdCBpcyBv
bmx5CisgICAgICogICAgIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0LiBJdCBpcyByZWFkLW9ubHkgd2l0
aGluIFhlbi4gSWYgYSBjaGFubmVsCisgICAgICogICAgIGJlY29tZXMgcGVuZGluZyB3aGlsZSB0
aGUgY2hhbm5lbCBpcyBtYXNrZWQgdGhlbiB0aGUgJ2VkZ2UnIGlzIGxvc3QKKyAgICAgKiAgICAg
KGkuZS4sIHdoZW4gdGhlIGNoYW5uZWwgaXMgdW5tYXNrZWQsIHRoZSBndWVzdCBtdXN0IG1hbnVh
bGx5IGhhbmRsZQorICAgICAqICAgICBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgYXMgbm8gdXBjYWxs
IHdpbGwgYmUgc2NoZWR1bGVkIGJ5IFhlbikuCisgICAgICogCisgICAgICogVG8gZXhwZWRpdGUg
c2Nhbm5pbmcgb2YgcGVuZGluZyBub3RpZmljYXRpb25zLCBhbnkgMC0+MSBwZW5kaW5nCisgICAg
ICogdHJhbnNpdGlvbiBvbiBhbiB1bm1hc2tlZCBjaGFubmVsIGNhdXNlcyBhIGNvcnJlc3BvbmRp
bmcgYml0IGluIGEKKyAgICAgKiBwZXItdmNwdSBzZWxlY3RvciB3b3JkIHRvIGJlIHNldC4gRWFj
aCBiaXQgaW4gdGhlIHNlbGVjdG9yIGNvdmVycyBhCisgICAgICogJ0MgTE9OR19QVFInIGluIHRo
ZSBQRU5ESU5HIGJpdGZpZWxkIGFycmF5LgorICAgICAqLworICAgIHhlbl91bG9uZ190IGV2dGNo
bl9wZW5kaW5nW3NpemVvZih4ZW5fdWxvbmdfdCkgKiA4XTsKKyAgICB4ZW5fdWxvbmdfdCBldnRj
aG5fbWFza1tzaXplb2YoeGVuX3Vsb25nX3QpICogOF07CisKKyAgICAvKgorICAgICAqIFdhbGxj
bG9jayB0aW1lOiB1cGRhdGVkIG9ubHkgYnkgY29udHJvbCBzb2Z0d2FyZS4gR3Vlc3RzIHNob3Vs
ZCBiYXNlCisgICAgICogdGhlaXIgZ2V0dGltZW9mZGF5KCkgc3lzY2FsbCBvbiB0aGlzIHdhbGxj
bG9jay1iYXNlIHZhbHVlLgorICAgICAqLworICAgIHVpbnQzMl90IHdjX3ZlcnNpb247ICAgICAg
LyogVmVyc2lvbiBjb3VudGVyOiBzZWUgdmNwdV90aW1lX2luZm9fdC4gKi8KKyAgICB1aW50MzJf
dCB3Y19zZWM7ICAgICAgICAgIC8qIFNlY3MgIDAwOjAwOjAwIFVUQywgSmFuIDEsIDE5NzAuICAq
LworICAgIHVpbnQzMl90IHdjX25zZWM7ICAgICAgICAgLyogTnNlY3MgMDA6MDA6MDAgVVRDLCBK
YW4gMSwgMTk3MC4gICovCisjaWYgIWRlZmluZWQoX19pMzg2X18pCisgICAgdWludDMyX3Qgd2Nf
c2VjX2hpOworIyBkZWZpbmUgeGVuX3djX3NlY19oaSB3Y19zZWNfaGkKKyNlbGlmICFkZWZpbmVk
KF9fWEVOX18pICYmICFkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjIGRlZmluZSB4ZW5fd2Nfc2Vj
X2hpIGFyY2gud2Nfc2VjX2hpCisjZW5kaWYKKworICAgIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZv
IGFyY2g7CisKK307CisjaWZuZGVmIF9fWEVOX18KK3R5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZv
IHNoYXJlZF9pbmZvX3Q7CisjZW5kaWYKKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9m
ZGF5IFN0YXJ0LW9mLWRheSBtZW1vcnkgbGF5b3V0CisgKgorICogIDEuIFRoZSBkb21haW4gaXMg
c3RhcnRlZCB3aXRoaW4gY29udGlndW91cyB2aXJ0dWFsLW1lbW9yeSByZWdpb24uCisgKiAgMi4g
VGhlIGNvbnRpZ3VvdXMgcmVnaW9uIGVuZHMgb24gYW4gYWxpZ25lZCA0TUIgYm91bmRhcnkuCisg
KiAgMy4gVGhpcyB0aGUgb3JkZXIgb2YgYm9vdHN0cmFwIGVsZW1lbnRzIGluIHRoZSBpbml0aWFs
IHZpcnR1YWwgcmVnaW9uOgorICogICAgICBhLiByZWxvY2F0ZWQga2VybmVsIGltYWdlCisgKiAg
ICAgIGIuIGluaXRpYWwgcmFtIGRpc2sgICAgICAgICAgICAgIFttb2Rfc3RhcnQsIG1vZF9sZW5d
CisgKiAgICAgIGMuIGxpc3Qgb2YgYWxsb2NhdGVkIHBhZ2UgZnJhbWVzIFttZm5fbGlzdCwgbnJf
cGFnZXNdCisgKiAgICAgICAgICh1bmxlc3MgcmVsb2NhdGVkIGR1ZSB0byBYRU5fRUxGTk9URV9J
TklUX1AyTSkKKyAqICAgICAgZC4gc3RhcnRfaW5mb190IHN0cnVjdHVyZSAgICAgICAgW3JlZ2lz
dGVyIEVTSSAoeDg2KV0KKyAqICAgICAgZS4gYm9vdHN0cmFwIHBhZ2UgdGFibGVzICAgICAgICAg
W3B0X2Jhc2UgYW5kIENSMyAoeDg2KV0KKyAqICAgICAgZi4gYm9vdHN0cmFwIHN0YWNrICAgICAg
ICAgICAgICAgW3JlZ2lzdGVyIEVTUCAoeDg2KV0KKyAqICA0LiBCb290c3RyYXAgZWxlbWVudHMg
YXJlIHBhY2tlZCB0b2dldGhlciwgYnV0IGVhY2ggaXMgNGtCLWFsaWduZWQuCisgKiAgNS4gVGhl
IGluaXRpYWwgcmFtIGRpc2sgbWF5IGJlIG9taXR0ZWQuCisgKiAgNi4gVGhlIGxpc3Qgb2YgcGFn
ZSBmcmFtZXMgZm9ybXMgYSBjb250aWd1b3VzICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQorICog
ICAgIGxheW91dCBmb3IgdGhlIGRvbWFpbi4gSW4gcGFydGljdWxhciwgdGhlIGJvb3RzdHJhcCB2
aXJ0dWFsLW1lbW9yeQorICogICAgIHJlZ2lvbiBpcyBhIDE6MSBtYXBwaW5nIHRvIHRoZSBmaXJz
dCBzZWN0aW9uIG9mIHRoZSBwc2V1ZG8tcGh5c2ljYWwgbWFwLgorICogIDcuIEFsbCBib290c3Ry
YXAgZWxlbWVudHMgYXJlIG1hcHBlZCByZWFkLXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRo
ZQorICogICAgIG9ubHkgZXhjZXB0aW9uIGlzIHRoZSBib290c3RyYXAgcGFnZSB0YWJsZSwgd2hp
Y2ggaXMgbWFwcGVkIHJlYWQtb25seS4KKyAqICA4LiBUaGVyZSBpcyBndWFyYW50ZWVkIHRvIGJl
IGF0IGxlYXN0IDUxMmtCIHBhZGRpbmcgYWZ0ZXIgdGhlIGZpbmFsCisgKiAgICAgYm9vdHN0cmFw
IGVsZW1lbnQuIElmIG5lY2Vzc2FyeSwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcwor
ICogICAgIGV4dGVuZGVkIGJ5IGFuIGV4dHJhIDRNQiB0byBlbnN1cmUgdGhpcy4KKyAqCisgKiBO
b3RlOiBQcmlvciB0byAyNTgzMzpiYjg1YmJjY2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBE
b20wIGluaXRpYWwgcGFnZQorICogdGFibGUgbGF5b3V0IikgYSBidWcgY2F1c2VkIHRoZSBwdF9i
YXNlICgzLmUgYWJvdmUpIGFuZCBjcjMgdG8gbm90IHBvaW50CisgKiB0byB0aGUgc3RhcnQgb2Yg
dGhlIGd1ZXN0IHBhZ2UgdGFibGVzIChpdCB3YXMgb2Zmc2V0IGJ5IHR3byBwYWdlcykuCisgKiBU
aGlzIG9ubHkgbWFuaWZlc3RlZCBpdHNlbGYgb24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBu
b3QgMzItb24tNjQgZG9tVQorICogb3IgNjQtYml0IGtlcm5lbHMgb2YgYW55IGNvbG91ci4gVGhl
IHBhZ2UgdGFibGVzIGZvciBhIDMyLW9uLTY0IGRvbTAgZ290CisgKiBhbGxvY2F0ZWQgaW4gdGhl
IG9yZGVyOiAnZmlyc3QgTDEnLCdmaXJzdCBMMicsICdmaXJzdCBMMycsIHNvIHRoZSBvZmZzZXQK
KyAqIHRvIHRoZSBwYWdlIHRhYmxlIGJhc2UgaXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBpbml0
aWFsIGRvbWFpbiBpZiBpdCBpcworICogMzItYml0IGFuZCBydW5zIHVuZGVyIGEgNjQtYml0IGh5
cGVydmlzb3Igc2hvdWxkIF9OT1RfIHVzZSB0d28gb2YgdGhlCisgKiBwYWdlcyBwcmVjZWRpbmcg
cHRfYmFzZSBhbmQgbWFyayB0aGVtIGFzIHJlc2VydmVkL3VudXNlZC4KKyAqLworI2lmZGVmIFhF
Tl9IQVZFX1BWX0dVRVNUX0VOVFJZCitzdHJ1Y3Qgc3RhcnRfaW5mbyB7CisgICAgLyogVEhFIEZP
TExPV0lORyBBUkUgRklMTEVEIElOIEJPVEggT04gSU5JVElBTCBCT09UIEFORCBPTiBSRVNVTUUu
ICAgICovCisgICAgY2hhciBtYWdpY1szMl07ICAgICAgICAgICAgIC8qICJ4ZW4tPHZlcnNpb24+
LTxwbGF0Zm9ybT4iLiAgICAgICAgICAgICovCisgICAgVUxPTkdfUFRSIG5yX3BhZ2VzOyAgICAg
LyogVG90YWwgcGFnZXMgYWxsb2NhdGVkIHRvIHRoaXMgZG9tYWluLiAgKi8KKyAgICBVTE9OR19Q
VFIgc2hhcmVkX2luZm87ICAvKiBNQUNISU5FIGFkZHJlc3Mgb2Ygc2hhcmVkIGluZm8gc3RydWN0
LiAqLworICAgIHVpbnQzMl90IGZsYWdzOyAgICAgICAgICAgICAvKiBTSUZfeHh4IGZsYWdzLiAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHhlbl9wZm5fdCBzdG9yZV9tZm47ICAgICAg
ICAvKiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9mIHNoYXJlZCBwYWdlLiAgICAqLworICAgIHVpbnQz
Ml90IHN0b3JlX2V2dGNobjsgICAgICAvKiBFdmVudCBjaGFubmVsIGZvciBzdG9yZSBjb21tdW5p
Y2F0aW9uLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHhl
bl9wZm5fdCBtZm47ICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBjb25zb2xlIHBhZ2Uu
ICAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90ICBldnRjaG47ICAgLyogRXZlbnQgY2hhbm5lbCBm
b3IgY29uc29sZSBwYWdlLiAgICAgICAgKi8KKyAgICAgICAgfSBkb21VOworICAgICAgICBzdHJ1
Y3QgeworICAgICAgICAgICAgdWludDMyX3QgaW5mb19vZmY7ICAvKiBPZmZzZXQgb2YgY29uc29s
ZV9pbmZvIHN0cnVjdC4gICAgICAgICAqLworICAgICAgICAgICAgdWludDMyX3QgaW5mb19zaXpl
OyAvKiBTaXplIG9mIGNvbnNvbGVfaW5mbyBzdHJ1Y3QgZnJvbSBzdGFydC4qLworICAgICAgICB9
IGRvbTA7CisgICAgfSBjb25zb2xlOworICAgIC8qIFRIRSBGT0xMT1dJTkcgQVJFIE9OTFkgRklM
TEVEIElOIE9OIElOSVRJQUwgQk9PVCAoTk9UIFJFU1VNRSkuICAgICAqLworICAgIFVMT05HX1BU
UiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAg
ICovCisgICAgVUxPTkdfUFRSIG5yX3B0X2ZyYW1lczsgLyogTnVtYmVyIG9mIGJvb3RzdHJhcCBw
LnQuIGZyYW1lcy4gICAgICAgKi8KKyAgICBVTE9OR19QVFIgbWZuX2xpc3Q7ICAgICAvKiBWSVJU
VUFMIGFkZHJlc3Mgb2YgcGFnZS1mcmFtZSBsaXN0LiAgICAqLworICAgIFVMT05HX1BUUiBtb2Rf
c3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwcmUtbG9hZGVkIG1vZHVsZSAgICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChQRk4gb2YgcHJlLWxvYWRlZCBtb2R1
bGUgaWYgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBT
SUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxhZ3MpLiAgICAgICovCisgICAgVUxPTkdfUFRSIG1v
ZF9sZW47ICAgICAgLyogU2l6ZSAoYnl0ZXMpIG9mIHByZS1sb2FkZWQgbW9kdWxlLiAgICAgKi8K
KyNkZWZpbmUgTUFYX0dVRVNUX0NNRExJTkUgMTAyNAorICAgIGludDhfdCBjbWRfbGluZVtNQVhf
R1VFU1RfQ01ETElORV07CisgICAgLyogVGhlIHBmbiByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBh
Z2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJhbWVzLiAgICovCisgICAgVUxPTkdfUFRSIGZpcnN0
X3AybV9wZm47LyogMXN0IHBmbiBmb3JtaW5nIGluaXRpYWwgUC0+TSB0YWJsZS4gICAgKi8KKyAg
ICBVTE9OR19QVFIgbnJfcDJtX2ZyYW1lczsvKiAjIG9mIHBmbnMgZm9ybWluZyBpbml0aWFsIFAt
Pk0gdGFibGUuICAqLworfTsKK3R5cGVkZWYgc3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190
OworCisvKiBOZXcgY29uc29sZSB1bmlvbiBmb3IgZG9tMCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAy
MDMuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAyMDMKKyNkZWZp
bmUgY29uc29sZV9tZm4gICAgY29uc29sZS5kb21VLm1mbgorI2RlZmluZSBjb25zb2xlX2V2dGNo
biBjb25zb2xlLmRvbVUuZXZ0Y2huCisjZW5kaWYKKyNlbmRpZiAvKiBYRU5fSEFWRV9QVl9HVUVT
VF9FTlRSWSAqLworCisvKiBUaGVzZSBmbGFncyBhcmUgcGFzc2VkIGluIHRoZSAnZmxhZ3MnIGZp
ZWxkIG9mIHN0YXJ0X2luZm9fdC4gKi8KKyNkZWZpbmUgU0lGX1BSSVZJTEVHRUQgICAgKDE8PDAp
ICAvKiBJcyB0aGUgZG9tYWluIHByaXZpbGVnZWQ/ICovCisjZGVmaW5lIFNJRl9JTklURE9NQUlO
ICAgICgxPDwxKSAgLyogSXMgdGhpcyB0aGUgaW5pdGlhbCBjb250cm9sIGRvbWFpbj8gKi8KKyNk
ZWZpbmUgU0lGX01VTFRJQk9PVF9NT0QgKDE8PDIpICAvKiBJcyBtb2Rfc3RhcnQgYSBtdWx0aWJv
b3QgbW9kdWxlPyAqLworI2RlZmluZSBTSUZfTU9EX1NUQVJUX1BGTiAoMTw8MykgIC8qIElzIG1v
ZF9zdGFydCBhIFBGTj8gKi8KKyNkZWZpbmUgU0lGX1BNX01BU0sgICAgICAgKDB4RkY8PDgpIC8q
IHJlc2VydmUgMSBieXRlIGZvciB4ZW4tcG0gb3B0aW9ucyAqLworCisvKgorICogQSBtdWx0aWJv
b3QgbW9kdWxlIGlzIGEgcGFja2FnZSBjb250YWluaW5nIG1vZHVsZXMgdmVyeSBzaW1pbGFyIHRv
IGEKKyAqIG11bHRpYm9vdCBtb2R1bGUgYXJyYXkuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZToK
KyAqIC0gdGhlIGFycmF5IG9mIG1vZHVsZSBkZXNjcmlwdG9ycyBpcyBieSBjb252ZW50aW9uIHNp
bXBseSBhdCB0aGUgYmVnaW5uaW5nCisgKiAgIG9mIHRoZSBtdWx0aWJvb3QgbW9kdWxlLAorICog
LSBhZGRyZXNzZXMgaW4gdGhlIG1vZHVsZSBkZXNjcmlwdG9ycyBhcmUgYmFzZWQgb24gdGhlIGJl
Z2lubmluZyBvZiB0aGUKKyAqICAgbXVsdGlib290IG1vZHVsZSwKKyAqIC0gdGhlIG51bWJlciBv
ZiBtb2R1bGVzIGlzIGRldGVybWluZWQgYnkgYSB0ZXJtaW5hdGlvbiBkZXNjcmlwdG9yIHRoYXQg
aGFzCisgKiAgIG1vZF9zdGFydCA9PSAwLgorICoKKyAqIFRoaXMgcGVybWl0cyB0byBib3RoIGJ1
aWxkIGl0IHN0YXRpY2FsbHkgYW5kIHJlZmVyZW5jZSBpdCBpbiBhIGNvbmZpZ3VyYXRpb24KKyAq
IGZpbGUsIGFuZCBsZXQgdGhlIFBWIGd1ZXN0IGVhc2lseSByZWJhc2UgdGhlIGFkZHJlc3NlcyB0
byB2aXJ0dWFsIGFkZHJlc3NlcworICogYW5kIGF0IHRoZSBzYW1lIHRpbWUgY291bnQgdGhlIG51
bWJlciBvZiBtb2R1bGVzLgorICovCitzdHJ1Y3QgeGVuX211bHRpYm9vdF9tb2RfbGlzdAorewor
ICAgIC8qIEFkZHJlc3Mgb2YgZmlyc3QgYnl0ZSBvZiB0aGUgbW9kdWxlICovCisgICAgdWludDMy
X3QgbW9kX3N0YXJ0OworICAgIC8qIEFkZHJlc3Mgb2YgbGFzdCBieXRlIG9mIHRoZSBtb2R1bGUg
KGluY2x1c2l2ZSkgKi8KKyAgICB1aW50MzJfdCBtb2RfZW5kOworICAgIC8qIEFkZHJlc3Mgb2Yg
emVyby10ZXJtaW5hdGVkIGNvbW1hbmQgbGluZSAqLworICAgIHVpbnQzMl90IGNtZGxpbmU7Cisg
ICAgLyogVW51c2VkLCBtdXN0IGJlIHplcm8gKi8KKyAgICB1aW50MzJfdCBwYWQ7Cit9OworLyoK
KyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5X2RvbTBfY29uc29sZSBEb20wX2NvbnNvbGUK
KyAqCisgKiBUaGUgY29uc29sZSBzdHJ1Y3R1cmUgaW4gc3RhcnRfaW5mby5jb25zb2xlLmRvbTAK
KyAqCisgKiBUaGlzIHN0cnVjdHVyZSBpbmNsdWRlcyBhIHZhcmlldHkgb2YgaW5mb3JtYXRpb24g
cmVxdWlyZWQgdG8KKyAqIGhhdmUgYSB3b3JraW5nIFZHQS9WRVNBIGNvbnNvbGUuCisgKi8KK3R5
cGVkZWYgc3RydWN0IGRvbTBfdmdhX2NvbnNvbGVfaW5mbyB7CisgICAgdWludDhfdCB2aWRlb190
eXBlOyAvKiBET00wX1ZHQV9DT05TT0xFXz8/PyAqLworI2RlZmluZSBYRU5fVkdBVFlQRV9URVhU
X01PREVfMyAweDAzCisjZGVmaW5lIFhFTl9WR0FUWVBFX1ZFU0FfTEZCICAgIDB4MjMKKyNkZWZp
bmUgWEVOX1ZHQVRZUEVfRUZJX0xGQiAgICAgMHg3MAorCisgICAgdW5pb24geworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgLyogRm9udCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAg
ICAgICAgIHVpbnQxNl90IGZvbnRfaGVpZ2h0OworICAgICAgICAgICAgLyogQ3Vyc29yIGxvY2F0
aW9uIChjb2x1bW4sIHJvdykuICovCisgICAgICAgICAgICB1aW50MTZfdCBjdXJzb3JfeCwgY3Vy
c29yX3k7CisgICAgICAgICAgICAvKiBOdW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyAoZGltZW5z
aW9ucyBpbiBjaGFyYWN0ZXJzKS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IHJvd3MsIGNvbHVt
bnM7CisgICAgICAgIH0gdGV4dF9tb2RlXzM7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAg
ICAgIC8qIFdpZHRoIGFuZCBoZWlnaHQsIGluIHBpeGVscy4gKi8KKyAgICAgICAgICAgIHVpbnQx
Nl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgICAgICAvKiBCeXRlcyBwZXIgc2NhbiBsaW5lLiAq
LworICAgICAgICAgICAgdWludDE2X3QgYnl0ZXNfcGVyX2xpbmU7CisgICAgICAgICAgICAvKiBC
aXRzIHBlciBwaXhlbC4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IGJpdHNfcGVyX3BpeGVsOwor
ICAgICAgICAgICAgLyogTEZCIHBoeXNpY2FsIGFkZHJlc3MsIGFuZCBzaXplIChpbiB1bml0cyBv
ZiA2NGtCKS4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90IGxmYl9iYXNlOworICAgICAgICAgICAg
dWludDMyX3QgbGZiX3NpemU7CisgICAgICAgICAgICAvKiBSR0IgbWFzayBvZmZzZXRzIGFuZCBz
aXplcywgYXMgZGVmaW5lZCBieSBWQkUgMS4yKyAqLworICAgICAgICAgICAgdWludDhfdCAgcmVk
X3BvcywgcmVkX3NpemU7CisgICAgICAgICAgICB1aW50OF90ICBncmVlbl9wb3MsIGdyZWVuX3Np
emU7CisgICAgICAgICAgICB1aW50OF90ICBibHVlX3BvcywgYmx1ZV9zaXplOworICAgICAgICAg
ICAgdWludDhfdCAgcnN2ZF9wb3MsIHJzdmRfc2l6ZTsKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDYKKyAgICAgICAgICAgIC8qIFZFU0EgY2FwYWJpbGl0aWVzIChv
ZmZzZXQgMHhhLCBWRVNBIGNvbW1hbmQgMHg0ZjAwKS4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90
IGdibF9jYXBzOworICAgICAgICAgICAgLyogTW9kZSBhdHRyaWJ1dGVzIChvZmZzZXQgMHgwLCBW
RVNBIGNvbW1hbmQgMHg0ZjAxKS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IG1vZGVfYXR0cnM7
CisjZW5kaWYKKyAgICAgICAgfSB2ZXNhX2xmYjsKKyAgICB9IHU7Cit9IGRvbTBfdmdhX2NvbnNv
bGVfaW5mb190OworI2RlZmluZSB4ZW5fdmdhX2NvbnNvbGVfaW5mbyBkb20wX3ZnYV9jb25zb2xl
X2luZm8KKyNkZWZpbmUgeGVuX3ZnYV9jb25zb2xlX2luZm9fdCBkb20wX3ZnYV9jb25zb2xlX2lu
Zm9fdAorCit0eXBlZGVmIHVpbnQ4X3QgeGVuX2RvbWFpbl9oYW5kbGVfdFsxNl07CisKKy8qIFR1
cm4gYSBwbGFpbiBudW1iZXIgaW50byBhIEMgVUxPTkdfUFRSIGNvbnN0YW50LiAqLworI2RlZmlu
ZSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkgeCAjIyBVTAorI2RlZmluZSBta191bnNpZ25lZF9sb25n
KHgpIF9fbWtfdW5zaWduZWRfbG9uZyh4KQorCitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVp
bnQ4LCAgdWludDhfdCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQxNiwgdWludDE2
X3QpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50MzIsIHVpbnQzMl90KTsKK19fREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0LCB1aW50NjRfdCk7CisKKyNlbHNlIC8qIF9fQVNT
RU1CTFlfXyAqLworCisvKiBJbiBhc3NlbWJseSBjb2RlIHdlIGNhbm5vdCB1c2UgQyBudW1lcmlj
IGNvbnN0YW50IHN1ZmZpeGVzLiAqLworI2RlZmluZSBta191bnNpZ25lZF9sb25nKHgpIHgKKwor
I2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworLyogRGVmYXVsdCBkZWZpbml0aW9ucyBmb3Ig
bWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0bC4gKi8KKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8
IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworI2lmbmRlZiBpbnQ2NF9hbGlnbmVkX3QKKyNkZWZp
bmUgaW50NjRfYWxpZ25lZF90IGludDY0X3QKKyNlbmRpZgorI2lmbmRlZiB1aW50NjRfYWxpZ25l
ZF90CisjZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0X3QKKyNlbmRpZgorI2lmbmRlZiBY
RU5fR1VFU1RfSEFORExFXzY0CisjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgWEVO
X0dVRVNUX0hBTkRMRShuYW1lKQorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1
Y3QgeGVuY3RsX2JpdG1hcCB7CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50OCkgYml0bWFw
OworICAgIHVpbnQzMl90IG5yX2JpdHM7Cit9OworI2VuZGlmCisKKyNlbmRpZiAvKiBkZWZpbmVk
KF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KKworI2VuZGlmIC8qIF9fWEVO
X1BVQkxJQ19YRU5fSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD
CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdp
ZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oIGIvaW5jbHVkZS94ZW4veGVuLWNvbXBhdC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTE0MWM0Li4wMDAwMDAwCi0tLSBhL2luY2x1
ZGUveGVuL3hlbi1jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIHhlbi1jb21wYXQuaAotICogCi0gKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KLSAqIAotICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0gKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yCi0gKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAot
ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIENv
cHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gKLSAqLwotCi0jaWZuZGVmIF9fWEVO
X1BVQkxJQ19YRU5fQ09NUEFUX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9I
X18KLQotI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwMzAw
Ci0KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLS8qIFhl
biBpcyBidWlsdCB3aXRoIG1hdGNoaW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVz
dCBpbnRlcmZhY2UuICovCi0jZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5f
TEFURVNUX0lOVEVSRkFDRV9WRVJTSU9OX18KLSNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFD
RV9WRVJTSU9OX18pCi0vKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdl
dCB0aGUgbGVnYWN5IGludGVyZmFjZS4gKi8KLSNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyAweDAwMDAwMDAwCi0jZW5kaWYKLQotI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g
PiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXwotI2Vycm9yICJUaGVzZSBoZWFkZXIg
ZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdmVyc2lvbi4iCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXyAqLwpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW4veGVuLmggYi9pbmNsdWRlL3hlbi94ZW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzE0ZjlhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3hlbi94ZW4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDg5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKiB4ZW4uaAotICogCi0gKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8gWGVuLgotICogCi0gKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoK
LSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Ci0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCi0gKi8KLQotI2lmbmRlZiBf
X1hFTl9QVUJMSUNfWEVOX0hfXwotI2RlZmluZSBfX1hFTl9QVUJMSUNfWEVOX0hfXwotCi0jaW5j
bHVkZSAieGVuLWNvbXBhdC5oIgotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf
X3g4Nl82NF9fKQotI2luY2x1ZGUgImFyY2gteDg2L3hlbi5oIgotI2VsaWYgZGVmaW5lZChfX2Fy
bV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSNpbmNsdWRlICJhcmNoLWFybS5oIgotI2Vs
c2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0KLSNpZm5kZWYg
X19BU1NFTUJMWV9fCi0vKiBHdWVzdCBoYW5kbGVzIGZvciBwcmltaXRpdmUgQyB0eXBlcy4gKi8K
LURFRklORV9YRU5fR1VFU1RfSEFORExFKGNoYXIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RSh1Y2hhciwgdW5zaWduZWQgY2hhcik7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShpbnQpOwot
X19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50LCAgdW5zaWduZWQgaW50KTsKLSNpZiBfX1hF
Tl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDMwMAotREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUoTE9OR19QVFIpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1bG9uZywgVUxPTkdfUFRS
KTsKLSNlbmRpZgotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodm9pZCk7Ci0KLURFRklORV9YRU5f
R1VFU1RfSEFORExFKHVpbnQ2NF90KTsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9wZm5f
dCk7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7Ci0jZW5kaWYKLQotLyoK
LSAqIEhZUEVSQ0FMTFMKLSAqLwotCi0vKiBgaW5jb250ZW50cyAxMDAgaGNhbGxzIExpc3Qgb2Yg
aHlwZXJjYWxscwotICogYCBlbnVtIGh5cGVyY2FsbF9udW0geyAvLyBfX0hZUEVSVklTT1JfKiA9
PiBIWVBFUlZJU09SXyooKQotICovCi0KLSNkZWZpbmUgX19IWVBFUlZJU09SX3NldF90cmFwX3Rh
YmxlICAgICAgICAwCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVfdXBkYXRlICAgICAgICAgICAg
MQotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2dkdCAgICAgICAgICAgICAgIDIKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3N0YWNrX3N3aXRjaCAgICAgICAgICAzCi0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul9zZXRfY2FsbGJhY2tzICAgICAgICAgNAotI2RlZmluZSBfX0hZUEVSVklTT1JfZnB1X3Rhc2tz
d2l0Y2ggICAgICAgIDUKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdCAgICAg
ICA2IC8qIGNvbXBhdCBzaW5jZSAweDAwMDMwMTAxICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9w
bGF0Zm9ybV9vcCAgICAgICAgICAgNwotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2RlYnVncmVn
ICAgICAgICAgIDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyAgICAgICAgICA5
Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfZGVzY3JpcHRvciAgICAxMAotI2RlZmluZSBf
X0hZUEVSVklTT1JfbWVtb3J5X29wICAgICAgICAgICAgMTIKLSNkZWZpbmUgX19IWVBFUlZJU09S
X211bHRpY2FsbCAgICAgICAgICAgIDEzCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFf
bWFwcGluZyAgICAxNAotI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3RpbWVyX29wICAgICAgICAg
MTUKLSNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29tcGF0IDE2IC8qIGNv
bXBhdCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5fdmVyc2lv
biAgICAgICAgICAxNwotI2RlZmluZSBfX0hZUEVSVklTT1JfY29uc29sZV9pbyAgICAgICAgICAg
MTgKLSNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0ICAgIDE5IC8qIGNvbXBh
dCBzaW5jZSAweDAwMDMwMjAyICovCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ncmFudF90YWJsZV9v
cCAgICAgICAyMAotI2RlZmluZSBfX0hZUEVSVklTT1Jfdm1fYXNzaXN0ICAgICAgICAgICAgMjEK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluIDIyCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9pcmV0ICAgICAgICAgICAgICAgICAyMyAvKiB4ODYgb25seSAq
LwotI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9vcCAgICAgICAgICAgICAgMjQKLSNkZWZpbmUg
X19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8qIHg4Ni82NCBvbmx5ICovCi0j
ZGVmaW5lIF9fSFlQRVJWSVNPUl9tbXVleHRfb3AgICAgICAgICAgICAyNgotI2RlZmluZSBfX0hZ
UEVSVklTT1JfeHNtX29wICAgICAgICAgICAgICAgMjcKLSNkZWZpbmUgX19IWVBFUlZJU09SX25t
aV9vcCAgICAgICAgICAgICAgIDI4Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcCAgICAg
ICAgICAgICAyOQotI2RlZmluZSBfX0hZUEVSVklTT1JfY2FsbGJhY2tfb3AgICAgICAgICAgMzAK
LSNkZWZpbmUgX19IWVBFUlZJU09SX3hlbm9wcm9mX29wICAgICAgICAgIDMxCi0jZGVmaW5lIF9f
SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wICAgICAzMgotI2RlZmluZSBfX0hZUEVSVklTT1Jf
cGh5c2Rldl9vcCAgICAgICAgICAgMzMKLSNkZWZpbmUgX19IWVBFUlZJU09SX2h2bV9vcCAgICAg
ICAgICAgICAgIDM0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9zeXNjdGwgICAgICAgICAgICAgICAz
NQotI2RlZmluZSBfX0hZUEVSVklTT1JfZG9tY3RsICAgICAgICAgICAgICAgMzYKLSNkZWZpbmUg
X19IWVBFUlZJU09SX2tleGVjX29wICAgICAgICAgICAgIDM3Ci0jZGVmaW5lIF9fSFlQRVJWSVNP
Ul90bWVtX29wICAgICAgICAgICAgICAzOAotI2RlZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2
ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwotCi0vKiBBcmNoaXRl
Y3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25zLiAqLwotI2RlZmluZSBfX0hZUEVS
VklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hf
MSAgICAgICAgICAgICAgIDQ5Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzIgICAgICAgICAg
ICAgICA1MAotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8zICAgICAgICAgICAgICAgNTEKLSNk
ZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAgICAgIDUyCi0jZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1MwotI2RlZmluZSBfX0hZUEVSVklTT1JfYXJj
aF82ICAgICAgICAgICAgICAgNTQKLSNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNyAgICAgICAg
ICAgICAgIDU1Ci0KLS8qIGAgfSAqLwotCi0vKgotICogSFlQRVJDQUxMIENPTVBBVElCSUxJVFku
Ci0gKi8KLQotLyogTmV3IHNjaGVkX29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAx
MDEuICovCi0jaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAxMDEKLSN1bmRl
ZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKLSNkZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKLSNlbmRpZgotCi0vKiBOZXcgZXZlbnQtY2hhbm5l
bCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVjZWQgaW4gMHgwMDAzMDIwMi4gKi8KLSNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMgotI3VuZGVmIF9fSFlQRVJW
SVNPUl9ldmVudF9jaGFubmVsX29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs
X29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdAotI3VuZGVmIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wCi0jZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wIF9fSFlQRVJW
SVNPUl9waHlzZGV2X29wX2NvbXBhdAotI2VuZGlmCi0KLS8qIE5ldyBwbGF0Zm9ybV9vcCBoeXBl
cmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAqLwotI2lmIF9fWEVOX0lOVEVSRkFDRV9W
RVJTSU9OX18gPCAweDAwMDMwMjA0Ci0jZGVmaW5lIF9fSFlQRVJWSVNPUl9kb20wX29wIF9fSFlQ
RVJWSVNPUl9wbGF0Zm9ybV9vcAotI2VuZGlmCi0KLS8qIAotICogVklSVFVBTCBJTlRFUlJVUFRT
Ci0gKiAKLSAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2VpdmUg
ZnJvbSBYZW4uCi0gKiAKLSAqIEluIHRoZSBzaWRlIGNvbW1lbnRzLCAnVi4nIGRlbm90ZXMgYSBw
ZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCi0gKiBnbG9iYWwgVklSUS4gVGhlIGZv
cm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fubm90IGJlIHJlLWJvdW5kLgot
ICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25jZSBwZXIgZ3Vlc3Q6IHRoZXkg
bXVzdCBpbml0aWFsbHkgYmUKLSAqIGFsbG9jYXRlZCB0byBWQ1BVMCBidXQgY2FuIHN1YnNlcXVl
bnRseSBiZSByZS1ib3VuZC4KLSAqLwotLyogYCBlbnVtIHZpcnEgeyAqLwotI2RlZmluZSBWSVJR
X1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRlLCBhbmQvb3IgcmVxdWVzdGVkIHRp
bWVvdXQuICAqLwotI2RlZmluZSBWSVJRX0RFQlVHICAgICAgMSAgLyogVi4gUmVxdWVzdCBndWVz
dCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0NPTlNPTEUg
ICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGVtZXJnZW5jeSBjb25zb2xlLiAq
LwotI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4gKERPTTApIEV4Y2VwdGlvbmFsIGV2
ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLwotI2RlZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyog
Ry4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFpbGFibGUuICAqLwotI2RlZmlu
ZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEgZG9tYWluIGhhcyBwYXVzZWQgZm9y
IGRlYnVnZ2luZy4gICAqLwotI2RlZmluZSBWSVJRX1hFTk9QUk9GICAgNyAgLyogVi4gWGVuT3By
b2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJsZSAqLwotI2RlZmluZSBWSVJRX0NP
Tl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGNvbnNvbGUgICAgICAg
ICAgICAqLwotI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyogRy4gKERPTTApIFBDUFUgc3Rh
dGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX01FTV9FVkVOVCAg
MTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1cmVkICAgICAgICAgICAqLwot
I2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJlc2VydmVkIGZvciBYZW5DbGllbnQg
ICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBWSVJRX0VOT01FTSAgICAgMTIgLyogRy4g
KERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLwotCi0vKiBBcmNoaXRlY3R1cmUtc3Bl
Y2lmaWMgVklSUSBkZWZpbml0aW9ucy4gKi8KLSNkZWZpbmUgVklSUV9BUkNIXzAgICAgMTYKLSNk
ZWZpbmUgVklSUV9BUkNIXzEgICAgMTcKLSNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKLSNkZWZp
bmUgVklSUV9BUkNIXzMgICAgMTkKLSNkZWZpbmUgVklSUV9BUkNIXzQgICAgMjAKLSNkZWZpbmUg
VklSUV9BUkNIXzUgICAgMjEKLSNkZWZpbmUgVklSUV9BUkNIXzYgICAgMjIKLSNkZWZpbmUgVklS
UV9BUkNIXzcgICAgMjMKLS8qIGAgfSAqLwotCi0jZGVmaW5lIE5SX1ZJUlFTICAgICAgIDI0Ci0K
LS8qCi0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11X3VwZGF0ZShj
b25zdCBzdHJ1Y3QgbW11X3VwZGF0ZSByZXFzW10sCi0gKiBgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQgKmRvbmVfb3V0LAotICogYCAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZm9yZWlnbmRvbSkKLSAqIGAKLSAqIEByZXFzIGlzIGFuIGFycmF5
IG9mIG1tdV91cGRhdGVfdCBzdHJ1Y3R1cmVzICgocHRyLCB2YWwpIHBhaXJzKS4KLSAqIEBjb3Vu
dCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhYm92ZSBhcnJheS4KLSAqIEBwZG9uZSBpcyBhbiBvdXRw
dXQgcGFyYW1ldGVyIGluZGljYXRpbmcgbnVtYmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCi0g
KiBAZm9yZWlnbmRvbVsxNTowXTogRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBkYXRhIHBhZ2Vz
IHJlZmVyZW5jZWQgaW4gdGhpcwotICogICAgICAgICAgICAgICAgICAgIGh5cGVyY2FsbCBpbnZv
Y2F0aW9uLiBDYW4gYmUgRE9NSURfU0VMRi4KLSAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0
aGUgZXhwZWN0ZWQgb3duZXIgb2YgcGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKLSAqICAgICAg
ICAgICAgICAgICAgICAgaW4gdGhpcyBoeXBlcmNhbGwgaW52b2NhdGlvbi4gVGhlIHZhbHVlIG9m
IHRoaXMgZmllbGQKLSAqICAgICAgICAgICAgICAgICAgICAgKHgpIGVuY29kZXMgdGhlIFBGRCBh
cyBmb2xsb3dzOgotICogICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlE
X1NFTEYKLSAqICAgICAgICAgICAgICAgICAgICAgeCAhPSAwID0+IFBGRCA9PSB4IC0gMQotICog
Ci0gKiBTdWItY29tbWFuZHM6IHB0clsxOjBdIHNwZWNpZmllcyB0aGUgYXBwcm9wcmlhdGUgTU1V
XyogY29tbWFuZC4KLSAqIC0tLS0tLS0tLS0tLS0KLSAqIHB0clsxOjBdID09IE1NVV9OT1JNQUxf
UFRfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiBhIHBhZ2UgdGFibGUgYmVsb25naW5n
IHRvIFBGRC4gSWYgdXBkYXRpbmcgYW4gTDEgdGFibGUsCi0gKiBhbmQgdGhlIG5ldyB0YWJsZSBl
bnRyeSBpcyB2YWxpZC9wcmVzZW50LCB0aGUgbWFwcGVkIGZyYW1lIG11c3QgYmVsb25nIHRvCi0g
KiBGRC4gSWYgYXR0ZW1wdGluZyB0byBtYXAgYW4gSS9PIHBhZ2UgdGhlbiB0aGUgY2FsbGVyIGFz
c3VtZXMgdGhlIHByaXZpbGVnZQotICogb2YgdGhlIEZELgotICogRkQgPT0gRE9NSURfSU86IFBl
cm1pdCAvb25seS8gSS9PIG1hcHBpbmdzLCBhdCB0aGUgcHJpdiBsZXZlbCBvZiB0aGUgY2FsbGVy
LgotICogRkQgPT0gRE9NSURfWEVOOiBNYXAgcmVzdHJpY3RlZCBhcmVhcyBvZiBYZW4ncyBoZWFw
IHNwYWNlLgotICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIG9mIHRoZSBwYWdlLXRhYmxl
IGVudHJ5IHRvIG1vZGlmeS4KLSAqIHZhbCAgICAgIC0tIFZhbHVlIHRvIHdyaXRlLgotICoKLSAq
IFRoZXJlIGFsc28gY2VydGFpbiBpbXBsaWNpdCByZXF1aXJlbWVudHMgd2hlbiB1c2luZyB0aGlz
IGh5cGVyY2FsbC4gVGhlCi0gKiBwYWdlcyB0aGF0IG1ha2UgdXAgYSBwYWdldGFibGUgbXVzdCBi
ZSBtYXBwZWQgcmVhZC1vbmx5IGluIHRoZSBndWVzdC4KLSAqIFRoaXMgcHJldmVudHMgdW5jb250
cm9sbGVkIGd1ZXN0IHVwZGF0ZXMgdG8gdGhlIHBhZ2V0YWJsZS4gWGVuIHN0cmljdGx5Ci0gKiBl
bmZvcmNlcyB0aGlzLCBhbmQgd2lsbCBkaXNhbGxvdyBhbnkgcGFnZXRhYmxlIHVwZGF0ZSB3aGlj
aCB3aWxsIGVuZCB1cAotICogbWFwcGluZyBwYWdldGFibGUgcGFnZSBSVywgYW5kIHdpbGwgZGlz
YWxsb3cgdXNpbmcgYW55IHdyaXRhYmxlIHBhZ2UgYXMgYQotICogcGFnZXRhYmxlLiBJbiBwcmFj
dGljZSBpdCBtZWFucyB0aGF0IHdoZW4gY29uc3RydWN0aW5nIGEgcGFnZSB0YWJsZSBmb3IgYQot
ICogcHJvY2VzcywgdGhyZWFkLCBldGMsIHdlIE1VU1QgYmUgdmVyeSBkaWxsaWdpZW50IGluIGZv
bGxvd2luZyB0aGVzZSBydWxlczoKLSAqICAxKS4gU3RhcnQgd2l0aCB0b3AtbGV2ZWwgcGFnZSAo
UEdEIG9yIGluIFhlbiBsYW5ndWFnZTogTDQpLiBGaWxsIG91dAotICogICAgICB0aGUgZW50cmll
cy4KLSAqICAyKS4gS2VlcCBvbiBnb2luZywgZmlsbGluZyBvdXQgdGhlIHVwcGVyIChQVUQgb3Ig
TDMpLCBhbmQgbWlkZGxlIChQTUQKLSAqICAgICAgb3IgTDIpLgotICogIDMpLiBTdGFydCBmaWxs
aW5nIG91dCB0aGUgUFRFIHRhYmxlIChMMSkgd2l0aCB0aGUgUFRFIGVudHJpZXMuIE9uY2UKLSAq
ICAJZG9uZSwgbWFrZSBzdXJlIHRvIHNldCBlYWNoIG9mIHRob3NlIGVudHJpZXMgdG8gUk8gKHNv
IHdyaXRlYWJsZSBiaXQKLSAqICAJaXMgdW5zZXQpLiBPbmNlIHRoYXQgaGFzIGJlZW4gY29tcGxl
dGVkLCBzZXQgdGhlIFBNRCAoTDIpIGZvciB0aGlzCi0gKiAgCVBURSB0YWJsZSBhcyBSTy4KLSAq
ICA0KS4gV2hlbiBjb21wbGV0ZWQgd2l0aCBhbGwgb2YgdGhlIFBNRCAoTDIpIGVudHJpZXMsIGFu
ZCBhbGwgb2YgdGhlbSBoYXZlCi0gKiAgCWJlZW4gc2V0IHRvIFJPLCBtYWtlIHN1cmUgdG8gc2V0
IFJPIHRoZSBQVUQgKEwzKS4gRG8gdGhlIHNhbWUKLSAqICAJb3BlcmF0aW9uIG9uIFBHRCAoTDQp
IHBhZ2V0YWJsZSBlbnRyaWVzIHRoYXQgaGF2ZSBhIFBVRCAoTDMpIGVudHJ5LgotICogIDUpLiBO
b3cgYmVmb3JlIHlvdSBjYW4gdXNlIHRob3NlIHBhZ2VzIChzbyBzZXR0aW5nIHRoZSBjcjMpLCB5
b3UgTVVTVCBhbHNvCi0gKiAgICAgIHBpbiB0aGVtIHNvIHRoYXQgdGhlIGh5cGVydmlzb3IgY2Fu
IHZlcmlmeSB0aGUgZW50cmllcy4gVGhpcyBpcyBkb25lCi0gKiAgICAgIHZpYSB0aGUgSFlQRVJW
SVNPUl9tbXVleHRfb3AoTU1VRVhUX1BJTl9MNF9UQUJMRSwgZ3Vlc3QgcGh5c2ljYWwgZnJhbWUK
LSAqICAgICAgbnVtYmVyIG9mIHRoZSBQR0QgKEw0KSkuIEFuZCB0aGlzIHBvaW50IHRoZSBIWVBF
UlZJU09SX21tdWV4dF9vcCgKLSAqICAgICAgTU1VRVhUX05FV19CQVNFUFRSLCBndWVzdCBwaHlz
aWNhbCBmcmFtZSBudW1iZXIgb2YgdGhlIFBHRCAoTDQpKSBjYW4gYmUKLSAqICAgICAgaXNzdWVk
LgotICogRm9yIDMyLWJpdCBndWVzdHMsIHRoZSBMNCBpcyBub3QgdXNlZCAoYXMgdGhlcmUgaXMg
bGVzcyBwYWdldGFibGVzKSwgc28KLSAqIGluc3RlYWQgdXNlIEwzLgotICogQXQgdGhpcyBwb2lu
dCB0aGUgcGFnZXRhYmxlcyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIE1NVV9OT1JNQUxfUFRf
VVBEQVRFCi0gKiBoeXBlcmNhbGwuIEFsc28gaWYgc28gZGVzaXJlZCB0aGUgT1MgY2FuIGFsc28g
dHJ5IHRvIHdyaXRlIHRvIHRoZSBQVEUKLSAqIGFuZCBiZSB0cmFwcGVkIGJ5IHRoZSBoeXBlcnZp
c29yIChhcyB0aGUgUFRFIGVudHJ5IGlzIFJPKS4KLSAqCi0gKiBUbyBkZWFsbG9jYXRlIHRoZSBw
YWdlcywgdGhlIG9wZXJhdGlvbnMgYXJlIHRoZSByZXZlcnNlIG9mIHRoZSBzdGVwcwotICogbWVu
dGlvbmVkIGFib3ZlLiBUaGUgYXJndW1lbnQgaXMgTU1VRVhUX1VOUElOX1RBQkxFIGZvciBhbGwg
bGV2ZWxzIGFuZCB0aGUKLSAqIHBhZ2V0YWJsZSBNVVNUIG5vdCBiZSBpbiB1c2UgKG1lYW5pbmcg
dGhhdCB0aGUgY3IzIGlzIG5vdCBzZXQgdG8gaXQpLgotICogCi0gKiBwdHJbMTowXSA9PSBNTVVf
TUFDSFBIWVNfVVBEQVRFOgotICogVXBkYXRlcyBhbiBlbnRyeSBpbiB0aGUgbWFjaGluZS0+cHNl
dWRvLXBoeXNpY2FsIG1hcHBpbmcgdGFibGUuCi0gKiBwdHJbOjJdICAtLSBNYWNoaW5lIGFkZHJl
c3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBtYXBwaW5nIHRvIG1vZGlmeS4KLSAqICAgICAgICAg
ICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9uZSBpcyBzcGVjaWZpZWQu
Ci0gKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZSBpbnRvIHRoZSBtYXBwaW5nIGVudHJ5Lgot
ICogCi0gKiBwdHJbMTowXSA9PSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEOgotICogQXMgTU1V
X05PUk1BTF9QVF9VUERBVEUgYWJvdmUsIGJ1dCBBL0QgYml0cyBjdXJyZW50bHkgaW4gdGhlIFBU
RSBhcmUgT1JlZAotICogd2l0aCB0aG9zZSBpbiBAdmFsLgotICoKLSAqIEB2YWwgaXMgdXN1YWxs
eSB0aGUgbWFjaGluZSBmcmFtZSBudW1iZXIgYWxvbmcgd2l0aCBzb21lIGF0dHJpYnV0ZXMuCi0g
KiBUaGUgYXR0cmlidXRlcyBieSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmlu
ZWQgYml0cy4gTWVhbmluZyB0aGF0Ci0gKiBpZiB0aGlzIGlzIGEgWDg2XzY0IG1hY2hpbmUgYW5k
IGZvdXIgcGFnZSB0YWJsZSBsYXlvdXQgaXMgdXNlZCwgdGhlIGxheW91dAotICogb2YgdmFsIGlz
OgotICogIC0gNjMgaWYgc2V0IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQotICogIC0gNDYtMTMgdGhl
IG1hY2hpbmUgZnJhbWUgbnVtYmVyCi0gKiAgLSAxMiBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAg
LSAxMSBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0gKiAgLSAxMCBhdmFpbGFibGUgZm9yIGd1ZXN0Ci0g
KiAgLSA5IGF2YWlsYWJsZSBmb3IgZ3Vlc3QKLSAqICAtIDggZ2xvYmFsCi0gKiAgLSA3IFBBVCAo
UFNFIGlzIGRpc2FibGVkLCBtdXN0IHVzZSBoeXBlcmNhbGwgdG8gbWFrZSA0TUIgb3IgMk1CIHBh
Z2VzKQotICogIC0gNiBkaXJ0eQotICogIC0gNSBhY2Nlc3NlZAotICogIC0gNCBwYWdlIGNhY2hl
ZCBkaXNhYmxlZAotICogIC0gMyBwYWdlIHdyaXRlIHRocm91Z2gKLSAqICAtIDIgdXNlcnNwYWNl
IGFjY2Vzc2libGUKLSAqICAtIDEgd3JpdGVhYmxlCi0gKiAgLSAwIHByZXNlbnQKLSAqCi0gKiAg
VGhlIG9uZSBiaXRzIHRoYXQgZG9lcyBub3QgZml0IHdpdGggdGhlIGRlZmF1bHQgbGF5b3V0IGlz
IHRoZSBQQUdFX1BTRQotICogIGFsc28gY2FsbGVkIFBBR0VfUEFUKS4gVGhlIE1NVUVYVF9bVU5d
TUFSS19TVVBFUiBhcmd1bWVudHMgdG8gdGhlCi0gKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2Vy
dmUgYXMgbWVjaGFuaXNtIHRvIHNldCBhIHBhZ2V0YWJsZSB0byBiZSA0TUIKLSAqICAob3IgMk1C
KSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBQQUdFX1BTRSBiaXQuCi0gKgotICogIFRoZSByZWFzb24g
dGhhdCB0aGUgUEFHRV9QU0UgKGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRv
IFhlbgotICogIHVzaW5nIGl0IGFzIHRoZSBQYWdlIEF0dHJpYnV0ZSBUYWJsZSAoUEFUKSBiaXQg
LSBmb3IgZGV0YWlscyBvbiBpdCBwbGVhc2UKLSAqICByZWZlciB0byBJbnRlbCBTRE0gMTAuMTIu
IFRoZSBQQVQgYWxsb3dzIHRvIHNldCB0aGUgY2FjaGluZyBhdHRyaWJ1dGVzIG9mCi0gKiAgcGFn
ZXMgaW5zdGVhZCBvZiB1c2luZyBNVFJScy4KLSAqCi0gKiAgVGhlIFBBVCBNU1IgaXMgYXMgZm9s
bG93cyAoaXQgaXMgYSA2NC1iaXQgdmFsdWUsIGVhY2ggZW50cnkgaXMgOCBiaXRzKToKLSAqICAg
ICAgICAgICAgICAgICAgICBQQVQ0ICAgICAgICAgICAgICAgICBQQVQwCi0gKiAgKy0tLS0tKy0t
LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLSsKLSAqICB8IFVDICB8IFVDLSB8IFdD
IHwgV0IgfCBVQyB8IFVDLSB8IFdDIHwgV0IgfCAgPD0gTGludXgKLSAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICogIHwgVUMgIHwgVUMtIHwgV1QgfCBX
QiB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBCSU9TIChkZWZhdWx0IHdoZW4gbWFjaGluZSBi
b290cykKLSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwot
ICogIHwgcnN2IHwgcnN2IHwgV1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBYZW4K
LSAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKwotICoKLSAq
ICBUaGUgbG9va3VwIG9mIHRoaXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0byBsb29raW5nIHVw
Ci0gKiAgQml0IDcsIEJpdCA0LCBhbmQgQml0IDMgb2YgdmFsIGVudHJ5OgotICoKLSAqICBQQVQv
UFNFIChiaXQgNykgLi4uIFBDRCAoYml0IDQpIC4uIFBXVCAoYml0IDMpLgotICoKLSAqICBJZiBh
bGwgYml0cyBhcmUgb2ZmLCB0aGVuIHdlIGFyZSB1c2luZyBQQVQwLiBJZiBiaXQgMyB0dXJuZWQg
b24sCi0gKiAgdGhlbiB3ZSBhcmUgdXNpbmcgUEFUMSwgaWYgYml0IDMgYW5kIGJpdCA0LCB0aGVu
IFBBVDIuLgotICoKLSAqICBBcyB5b3UgY2FuIHNlZSwgdGhlIExpbnV4IFBBVDEgdHJhbnNsYXRl
cyB0byBQQVQ0IHVuZGVyIFhlbi4gV2hpY2ggbWVhbnMKLSAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhh
dCBmb2xsb3dzIExpbnV4J3MgUEFUIHNldHVwIGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQot
ICogIENvbWJpbmVkIG9uIHBhZ2VzIGl0IE1VU1QgdXNlIFBBVDQgZW50cnkuIE1lYW5pbmcgdGhh
dCBCaXQgNyAoUEFHRV9QQVQpIGlzCi0gKiAgc2V0LiBGb3IgZXhhbXBsZSwgdW5kZXIgTGludXgg
aXQgb25seSB1c2VzIFBBVDAsIFBBVDEsIGFuZCBQQVQyIGZvciB0aGUKLSAqICBjYWNoaW5nIGFz
OgotICoKLSAqICAgV0IgPSBub25lIChzbyBQQVQwKQotICogICBXQyA9IFBXVCAoYml0IDMgb24p
Ci0gKiAgIFVDID0gUFdUIHwgUENEIChiaXQgMyBhbmQgNCBhcmUgb24pLgotICoKLSAqIFRvIG1h
a2UgaXQgd29yayB3aXRoIFhlbiwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMg
c286Ci0gKgotICogIFBXVCAoc28gYml0IDMgb24pIC0tPiBQQVQgKHNvIGJpdCA3IGlzIG9uKSBh
bmQgY2xlYXIgYml0IDMKLSAqCi0gKiBBbmQgdG8gdHJhbnNsYXRlIGJhY2sgaXQgd291bGQ6Ci0g
KgotICogUEFUIChiaXQgNyBvbikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQgNy4K
LSAqLwotI2RlZmluZSBNTVVfTk9STUFMX1BUX1VQREFURSAgICAgIDAgLyogY2hlY2tlZCAnKnB0
ciA9IHZhbCcuIHB0ciBpcyBNQS4gICAgICAqLwotI2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRF
ICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZvciAqLwotI2Rl
ZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZh
bCB8ICgqcHRyJihBfEQpKSAqLwotCi0vKgotICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMKLSAq
Ci0gKiBgIGVudW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4
dF9vcF90IHVvcHNbXSwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50LAotICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLAotICog
YCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkKLSAqLwotLyog
SFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVleHRfb3Agc3RydWN0
dXJlcy4KLSAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZpZWQgKG9yIERPTUlEX1NF
TEYgZm9yIG5vbmUpLgotICogV2hlcmUgdGhlIEZEIGhhcyBzb21lIGVmZmVjdCwgaXQgaXMgZGVz
Y3JpYmVkIGJlbG93LgotICoKLSAqIGNtZDogTU1VRVhUXyhVTilQSU5fKl9UQUJMRQotICogbWZu
OiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAodW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLgot
ICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lm
aWVkLgotICoKLSAqIGNtZDogTU1VRVhUX05FV19CQVNFUFRSCi0gKiBtZm46IE1hY2hpbmUgZnJh
bWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCi0gKgot
ICogY21kOiBNTVVFWFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldCi0gKiBtZm46IE1h
Y2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBN
TVUKLSAqICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLgotICoKLSAqIGNtZDogTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwgVExC
LgotICoKLSAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTAotICogbGluZWFyX2FkZHI6IExpbmVh
ciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9NVUxUSQotICogdmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9m
IFZDUFVzIHRvIGJlIGZsdXNoZWQuCi0gKgotICogY21kOiBNTVVFWFRfSU5WTFBHX01VTFRJCi0g
KiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZC4KLSAqIHZjcHVtYXNr
OiBQb2ludGVyIHRvIGJpdG1hcCBvZiBWQ1BVcyB0byBiZSBmbHVzaGVkLgotICoKLSAqIGNtZDog
TU1VRVhUX1RMQl9GTFVTSF9BTEwKLSAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVz
IGFsbCBWQ1BVcycgVExCcy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMCi0gKiBsaW5l
YXJfYWRkcjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExC
cy4KLSAqCi0gKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQotICogTm8gYWRkaXRpb25hbCBhcmd1
bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLgotICoKLSAqIGNt
ZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTAotICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMu
IFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzCi0gKiBvbiBhbGwgQ1BVcyBp
biB0aGUgc3lzdGVtLgotICoKLSAqIGNtZDogTU1VRVhUX1NFVF9MRFQKLSAqIGxpbmVhcl9hZGRy
OiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4K
LSAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVzIGluIExEVC4KLSAqCi0gKiBjbWQ6IE1NVUVY
VF9DTEVBUl9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQu
Ci0gKgotICogY21kOiBNTVVFWFRfQ09QWV9QQUdFCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVt
YmVyIG9mIHRoZSBkZXN0aW5hdGlvbiBwYWdlLgotICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBu
dW1iZXIgb2YgdGhlIHNvdXJjZSBwYWdlLgotICoKLSAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NV
UEVSCi0gKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRv
IGJlIFt1bl1tYXJrZWQuCi0gKi8KLS8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8KLSNkZWZpbmUg
TU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDAKLSNkZWZpbmUgTU1VRVhUX1BJTl9MMl9UQUJMRSAg
ICAgIDEKLSNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAgIDIKLSNkZWZpbmUgTU1VRVhU
X1BJTl9MNF9UQUJMRSAgICAgIDMKLSNkZWZpbmUgTU1VRVhUX1VOUElOX1RBQkxFICAgICAgIDQK
LSNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAgIDUKLSNkZWZpbmUgTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTCAgIDYKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19MT0NBTCAgICAgIDcKLSNkZWZp
bmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSSAgIDgKLSNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxU
SSAgICAgIDkKLSNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTAKLSNkZWZpbmUgTU1V
RVhUX0lOVkxQR19BTEwgICAgICAgMTEKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAg
MTIKLSNkZWZpbmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMKLSNkZWZpbmUgTU1VRVhUX05F
V19VU0VSX0JBU0VQVFIgMTUKLSNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYKLSNk
ZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcKLSNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NB
Q0hFX0dMT0JBTCAxOAotI2RlZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQotI2RlZmlu
ZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMAotLyogYCB9ICovCi0KLSNpZm5kZWYgX19BU1NF
TUJMWV9fCi1zdHJ1Y3QgbW11ZXh0X29wIHsKLSAgICB1bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBl
bnVtIG1tdWV4dF9jbWQgKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIC8qIFtVTl1QSU5fVEFCTEUs
IE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNFUFRSCi0gICAgICAgICAqIENMRUFSX1BBR0UsIENP
UFlfUEFHRSwgW1VOXU1BUktfU1VQRVIgKi8KLSAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47Ci0g
ICAgICAgIC8qIElOVkxQR19MT0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLwotICAgICAgICBV
TE9OR19QVFIgbGluZWFyX2FkZHI7Ci0gICAgfSBhcmcxOwotICAgIHVuaW9uIHsKLSAgICAgICAg
LyogU0VUX0xEVCAqLwotICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsKLSAgICAgICAgLyog
VExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8KLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVS
U0lPTl9fID49IDB4MDAwMzAyMDUKLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lk
KSB2Y3B1bWFzazsKLSNlbHNlCi0gICAgICAgIGNvbnN0IHZvaWQgKnZjcHVtYXNrOwotI2VuZGlm
Ci0gICAgICAgIC8qIENPUFlfUEFHRSAqLwotICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKLSAg
ICB9IGFyZzI7Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OwotREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUobW11ZXh0X29wX3QpOwotI2VuZGlmCi0KLS8qCi0gKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCi0gKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdf
UFRSIHZhLCB1NjQgdmFsLAotICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g
dXZtX2ZsYWdzIGZsYWdzKQotICogYAotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBIWVBF
UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0IHZh
bCwKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2
bV9mbGFncyBmbGFncywKLSAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb21pZF90IGRvbWlkKQotICogYAotICogYCBAdmE6IFRoZSB2aXJ0dWFsIGFkZHJlc3Mg
d2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQotICogYCBAdmFsOiBUaGUgbmV3IHBhZ2Ug
dGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUgYWRkcmVzcwotICogYCBAZmxhZ3M6
IENvbnRyb2wgVExCIGZsdXNoZXMKLSAqLwotLyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3Mn
IHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5IGNhbiBiZSBPUmVkLiAqLwotLyogV2hlbiBzcGVj
aWZ5aW5nIFVWTUZfTVVMVEksIGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4g
ICAqLwotLyogVVZNRl9MT0NBTCBpcyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRt
YXAgcG9pbnRlci4gICAgICAgICAqLwotLyogYCBlbnVtIHV2bV9mbGFncyB7ICovCi0jZGVmaW5l
IFVWTUZfTk9ORSAgICAgICAgICAgICAgICgwVUw8PDApIC8qIE5vIGZsdXNoaW5nIGF0IGFsbC4g
ICAqLwotI2RlZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICAgICAoMVVMPDwwKSAvKiBGbHVzaCBl
bnRpcmUgVExCKHMpLiAgKi8KLSNkZWZpbmUgVVZNRl9JTlZMUEcgICAgICAgICAgICAgKDJVTDw8
MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCi0jZGVmaW5lIFVWTUZfRkxVU0hUWVBFX01B
U0sgICAgICgzVUw8PDApCi0jZGVmaW5lIFVWTUZfTVVMVEkgICAgICAgICAgICAgICgwVUw8PDIp
IC8qIEZsdXNoIHN1YnNldCBvZiBUTEJzLiAqLwotI2RlZmluZSBVVk1GX0xPQ0FMICAgICAgICAg
ICAgICAoMFVMPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAgKi8KLSNkZWZpbmUgVVZNRl9B
TEwgICAgICAgICAgICAgICAgKDFVTDw8MikgLyogRmx1c2ggYWxsIFRMQnMuICAgICAgICovCi0v
KiBgIH0gKi8KLQotLyoKLSAqIENvbW1hbmRzIHRvIEhZUEVSVklTT1JfY29uc29sZV9pbygpLgot
ICovCi0jZGVmaW5lIENPTlNPTEVJT193cml0ZSAgICAgICAgIDAKLSNkZWZpbmUgQ09OU09MRUlP
X3JlYWQgICAgICAgICAgMQotCi0vKgotICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl92bV9hc3Np
c3QoKS4KLSAqLwotI2RlZmluZSBWTUFTU1RfQ01EX2VuYWJsZSAgICAgICAgICAgICAgICAwCi0j
ZGVmaW5lIFZNQVNTVF9DTURfZGlzYWJsZSAgICAgICAgICAgICAgIDEKLQotLyogeDg2LzMyIGd1
ZXN0czogc2ltdWxhdGUgZnVsbCA0R0Igc2VnbWVudCBsaW1pdHMuICovCi0jZGVmaW5lIFZNQVNT
VF9UWVBFXzRnYl9zZWdtZW50cyAgICAgICAgIDAKLQotLyogeDg2LzMyIGd1ZXN0czogdHJhcCAo
dmVjdG9yIDE1KSB3aGVuZXZlciBhYm92ZSB2bWFzc2lzdCBpcyB1c2VkLiAqLwotI2RlZmluZSBW
TUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5ICAxCi0KLS8qCi0gKiB4ODYgZ3Vlc3RzOiBz
dXBwb3J0IHdyaXRlcyB0byBib3R0b20tbGV2ZWwgUFRFcy4KLSAqIE5CMS4gUGFnZS1kaXJlY3Rv
cnkgZW50cmllcyBjYW5ub3QgYmUgd3JpdHRlbi4KLSAqIE5CMi4gR3Vlc3QgbXVzdCBjb250aW51
ZSB0byByZW1vdmUgYWxsIHdyaXRhYmxlIG1hcHBpbmdzIG9mIFBURXMuCi0gKi8KLSNkZWZpbmUg
Vk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcyAgMgotCi0vKiB4ODYvUEFFIGd1ZXN0czog
c3VwcG9ydCBQRFBUcyBhYm92ZSA0R0IuICovCi0jZGVmaW5lIFZNQVNTVF9UWVBFX3BhZV9leHRl
bmRlZF9jcjMgICAgIDMKLQotI2RlZmluZSBNQVhfVk1BU1NUX1RZUEUgICAgICAgICAgICAgICAg
ICAzCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLXR5cGVkZWYgdWludDE2X3QgZG9taWRfdDsK
LQotLyogRG9tYWluIGlkcyA+PSBET01JRF9GSVJTVF9SRVNFUlZFRCBjYW5ub3QgYmUgdXNlZCBm
b3Igb3JkaW5hcnkgZG9tYWlucy4gKi8KLSNkZWZpbmUgRE9NSURfRklSU1RfUkVTRVJWRUQgKDB4
N0ZGMFUpCi0KLS8qIERPTUlEX1NFTEYgaXMgdXNlZCBpbiBjZXJ0YWluIGNvbnRleHRzIHRvIHJl
ZmVyIHRvIG9uZXNlbGYuICovCi0jZGVmaW5lIERPTUlEX1NFTEYgKDB4N0ZGMFUpCi0KLS8qCi0g
KiBET01JRF9JTyBpcyB1c2VkIHRvIHJlc3RyaWN0IHBhZ2UtdGFibGUgdXBkYXRlcyB0byBtYXBw
aW5nIEkvTyBtZW1vcnkuCi0gKiBBbHRob3VnaCBubyBGb3JlaWduIERvbWFpbiBuZWVkIGJlIHNw
ZWNpZmllZCB0byBtYXAgSS9PIHBhZ2VzLCBET01JRF9JTwotICogaXMgdXNlZnVsIHRvIGVuc3Vy
ZSB0aGF0IG5vIG1hcHBpbmdzIHRvIHRoZSBPUydzIG93biBoZWFwIGFyZSBhY2NpZGVudGFsbHkK
LSAqIGluc3RhbGxlZC4gKGUuZy4sIGluIExpbnV4IHRoaXMgY291bGQgY2F1c2UgaGF2b2MgYXMg
cmVmZXJlbmNlIGNvdW50cwotICogYXJlbid0IGFkanVzdGVkIG9uIHRoZSBJL08tbWFwcGluZyBj
b2RlIHBhdGgpLgotICogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIE1NVUVYVF9TRVRfRk9SRUlH
TkRPTSwgYnV0IGluIHRoYXQgY29udGV4dCBjYW4KLSAqIGJlIHNwZWNpZmllZCBieSBhbnkgY2Fs
bGluZyBkb21haW4uCi0gKi8KLSNkZWZpbmUgRE9NSURfSU8gICAoMHg3RkYxVSkKLQotLyoKLSAq
IERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0byBtYXAgcmVz
dHJpY3RlZCBwYXJ0cyBvZgotICogWGVuJ3MgaGVhcCBzcGFjZSAoZS5nLiwgdGhlIG1hY2hpbmVf
dG9fcGh5cyB0YWJsZSkuCi0gKiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NFVF9G
T1JFSUdORE9NLCBhbmQgaXMgb25seSBwZXJtaXR0ZWQgaWYKLSAqIHRoZSBjYWxsZXIgaXMgcHJp
dmlsZWdlZC4KLSAqLwotI2RlZmluZSBET01JRF9YRU4gICgweDdGRjJVKQotCi0vKgotICogRE9N
SURfQ09XIGlzIHVzZWQgYXMgdGhlIG93bmVyIG9mIHNoYXJhYmxlIHBhZ2VzICovCi0jZGVmaW5l
IERPTUlEX0NPVyAgKDB4N0ZGM1UpCi0KLS8qIERPTUlEX0lOVkFMSUQgaXMgdXNlZCB0byBpZGVu
dGlmeSBwYWdlcyB3aXRoIHVua25vd24gb3duZXIuICovCi0jZGVmaW5lIERPTUlEX0lOVkFMSUQg
KDB4N0ZGNFUpCi0KLS8qIElkbGUgZG9tYWluLiAqLwotI2RlZmluZSBET01JRF9JRExFICgweDdG
RkZVKQotCi0vKgotICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX21tdV91
cGRhdGUoKS4KLSAqIE5CLiBUaGUgZmllbGRzIGFyZSBuYXR1cmFsIHBvaW50ZXIvYWRkcmVzcyBz
aXplIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KLSAqLwotc3RydWN0IG1tdV91cGRhdGUgewotICAg
IHVpbnQ2NF90IHB0cjsgICAgICAgLyogTWFjaGluZSBhZGRyZXNzIG9mIFBURS4gKi8KLSAgICB1
aW50NjRfdCB2YWw7ICAgICAgIC8qIE5ldyBjb250ZW50cyBvZiBQVEUuICAgICovCi19OwotdHlw
ZWRlZiBzdHJ1Y3QgbW11X3VwZGF0ZSBtbXVfdXBkYXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShtbXVfdXBkYXRlX3QpOwotCi0vKgotICogYCBlbnVtIG5lZ19lcnJub3ZhbAotICogYCBI
WVBFUlZJU09SX211bHRpY2FsbChtdWx0aWNhbGxfZW50cnlfdCBjYWxsX2xpc3RbXSwKLSAqIGAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2NhbGxzKTsKLSAqCi0gKiBOQi4g
VGhlIGZpZWxkcyBhcmUgbmF0dXJhbCByZWdpc3RlciBzaXplIGZvciB0aGlzIGFyY2hpdGVjdHVy
ZS4KLSAqLwotc3RydWN0IG11bHRpY2FsbF9lbnRyeSB7Ci0gICAgVUxPTkdfUFRSIG9wLCByZXN1
bHQ7Ci0gICAgVUxPTkdfUFRSIGFyZ3NbNl07Ci19OwotdHlwZWRlZiBzdHJ1Y3QgbXVsdGljYWxs
X2VudHJ5IG11bHRpY2FsbF9lbnRyeV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobXVsdGlj
YWxsX2VudHJ5X3QpOwotCi0vKgotICogRXZlbnQgY2hhbm5lbCBlbmRwb2ludHMgcGVyIGRvbWFp
bjoKLSAqICAxMDI0IGlmIGEgTE9OR19QVFIgaXMgMzIgYml0czsgNDA5NiBpZiBhIExPTkdfUFRS
IGlzIDY0IGJpdHMuCi0gKi8KLSNkZWZpbmUgTlJfRVZFTlRfQ0hBTk5FTFMgKHNpemVvZih4ZW5f
dWxvbmdfdCkgKiBzaXplb2YoeGVuX3Vsb25nX3QpICogNjQpCi0KLXN0cnVjdCB2Y3B1X3RpbWVf
aW5mbyB7Ci0gICAgLyoKLSAgICAgKiBVcGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFy
ZSBwcmVjZWRlZCBhbmQgZm9sbG93ZWQgYnkgYW4KLSAgICAgKiBpbmNyZW1lbnQgb2YgJ3ZlcnNp
b24nLiBUaGUgZ3Vlc3QgY2FuIHRoZXJlZm9yZSBkZXRlY3QgdXBkYXRlcyBieQotICAgICAqIGxv
b2tpbmcgZm9yIGNoYW5nZXMgdG8gJ3ZlcnNpb24nLiBJZiB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQg
Yml0IG9mCi0gICAgICogdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0ZSBp
cyBpbiBwcm9ncmVzcyBhbmQgdGhlIGd1ZXN0Ci0gICAgICogbXVzdCB3YWl0IHRvIHJlYWQgYSBj
b25zaXN0ZW50IHNldCBvZiB2YWx1ZXMuCi0gICAgICogVGhlIGNvcnJlY3Qgd2F5IHRvIGludGVy
YWN0IHdpdGggdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNpbWlsYXIgdG8KLSAgICAgKiBMaW51eCdz
IHNlcWxvY2s6IHNlZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHJlYWRfc2VxYmVnaW4vcmVhZF9z
ZXFyZXRyeS4KLSAgICAgKi8KLSAgICB1aW50MzJfdCB2ZXJzaW9uOwotICAgIHVpbnQzMl90IHBh
ZDA7Ci0gICAgdWludDY0X3QgdHNjX3RpbWVzdGFtcDsgICAvKiBUU0MgYXQgbGFzdCB1cGRhdGUg
b2YgdGltZSB2YWxzLiAgKi8KLSAgICB1aW50NjRfdCBzeXN0ZW1fdGltZTsgICAgIC8qIFRpbWUs
IGluIG5hbm9zZWNzLCBzaW5jZSBib290LiAgICAqLwotICAgIC8qCi0gICAgICogQ3VycmVudCBz
eXN0ZW0gdGltZToKLSAgICAgKiAgIHN5c3RlbV90aW1lICsKLSAgICAgKiAgICgoKCh0c2MgLSB0
c2NfdGltZXN0YW1wKSA8PCB0c2Nfc2hpZnQpICogdHNjX3RvX3N5c3RlbV9tdWwpID4+IDMyKQot
ICAgICAqIENQVSBmcmVxdWVuY3kgKEh6KToKLSAgICAgKiAgICgoMTBeOSA8PCAzMikgLyB0c2Nf
dG9fc3lzdGVtX211bCkgPj4gdHNjX3NoaWZ0Ci0gICAgICovCi0gICAgdWludDMyX3QgdHNjX3Rv
X3N5c3RlbV9tdWw7Ci0gICAgaW50OF90ICAgdHNjX3NoaWZ0OwotICAgIGludDhfdCAgIHBhZDFb
M107Ci19OyAvKiAzMiBieXRlcyAqLwotdHlwZWRlZiBzdHJ1Y3QgdmNwdV90aW1lX2luZm8gdmNw
dV90aW1lX2luZm9fdDsKLQotc3RydWN0IHZjcHVfaW5mbyB7Ci0gICAgLyoKLSAgICAgKiAnZXZ0
Y2huX3VwY2FsbF9wZW5kaW5nJyBpcyB3cml0dGVuIG5vbi16ZXJvIGJ5IFhlbiB0byBpbmRpY2F0
ZQotICAgICAqIGEgcGVuZGluZyBub3RpZmljYXRpb24gZm9yIGEgcGFydGljdWxhciBWQ1BVLiBJ
dCBpcyB0aGVuIGNsZWFyZWQgCi0gICAgICogYnkgdGhlIGd1ZXN0IE9TIC9iZWZvcmUvIGNoZWNr
aW5nIGZvciBwZW5kaW5nIHdvcmssIHRodXMgYXZvaWRpbmcKLSAgICAgKiBhIHNldC1hbmQtY2hl
Y2sgcmFjZS4gTm90ZSB0aGF0IHRoZSBtYXNrIGlzIG9ubHkgYWNjZXNzZWQgYnkgWGVuCi0gICAg
ICogb24gdGhlIENQVSB0aGF0IGlzIGN1cnJlbnRseSBob3N0aW5nIHRoZSBWQ1BVLiBUaGlzIG1l
YW5zIHRoYXQgdGhlCi0gICAgICogcGVuZGluZyBhbmQgbWFzayBmbGFncyBjYW4gYmUgdXBkYXRl
ZCBieSB0aGUgZ3Vlc3Qgd2l0aG91dCBzcGVjaWFsCi0gICAgICogc3luY2hyb25pc2F0aW9uIChp
LmUuLCBubyBuZWVkIGZvciB0aGUgeDg2IExPQ0sgcHJlZml4KS4KLSAgICAgKiBUaGlzIG1heSBz
ZWVtIHN1Ym9wdGltYWwgYmVjYXVzZSBpZiB0aGUgcGVuZGluZyBmbGFnIGlzIHNldCBieQotICAg
ICAqIGEgZGlmZmVyZW50IENQVSB0aGVuIGFuIElQSSBtYXkgYmUgc2NoZWR1bGVkIGV2ZW4gd2hl
biB0aGUgbWFzawotICAgICAqIGlzIHNldC4gSG93ZXZlciwgbm90ZToKLSAgICAgKiAgMS4gVGhl
IHRhc2sgb2YgJ2ludGVycnVwdCBob2xkb2ZmJyBpcyBjb3ZlcmVkIGJ5IHRoZSBwZXItZXZlbnQt
Ci0gICAgICogICAgIGNoYW5uZWwgbWFzayBiaXRzLiBBICdub2lzeScgZXZlbnQgdGhhdCBpcyBj
b250aW51YWxseSBiZWluZwotICAgICAqICAgICB0cmlnZ2VyZWQgY2FuIGJlIG1hc2tlZCBhdCBz
b3VyY2UgYXQgdGhpcyB2ZXJ5IHByZWNpc2UKLSAgICAgKiAgICAgZ3JhbnVsYXJpdHkuCi0gICAg
ICogIDIuIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIHBlci1WQ1BVIG1hc2sgaXMgdGhlcmVmb3Jl
IHRvIHJlc3RyaWN0Ci0gICAgICogICAgIHJlZW50cmFudCBleGVjdXRpb246IHdoZXRoZXIgZm9y
IGNvbmN1cnJlbmN5IGNvbnRyb2wsIG9yIHRvCi0gICAgICogICAgIHByZXZlbnQgdW5ib3VuZGVk
IHN0YWNrIHVzYWdlLiBXaGF0ZXZlciB0aGUgcHVycG9zZSwgd2UgZXhwZWN0Ci0gICAgICogICAg
IHRoYXQgdGhlIG1hc2sgd2lsbCBiZSBhc3NlcnRlZCBvbmx5IGZvciBzaG9ydCBwZXJpb2RzIGF0
IGEgdGltZSwKLSAgICAgKiAgICAgYW5kIHNvIHRoZSBsaWtlbGlob29kIG9mIGEgJ3NwdXJpb3Vz
JyBJUEkgaXMgc3VpdGFibHkgc21hbGwuCi0gICAgICogVGhlIG1hc2sgaXMgcmVhZCBiZWZvcmUg
bWFraW5nIGFuIGV2ZW50IHVwY2FsbCB0byB0aGUgZ3Vlc3Q6IGEKLSAgICAgKiBub24temVybyBt
YXNrIHRoZXJlZm9yZSBndWFyYW50ZWVzIHRoYXQgdGhlIFZDUFUgd2lsbCBub3QgcmVjZWl2ZQot
ICAgICAqIGFuIHVwY2FsbCBhY3RpdmF0aW9uLiBUaGUgbWFzayBpcyBjbGVhcmVkIHdoZW4gdGhl
IFZDUFUgcmVxdWVzdHMKLSAgICAgKiB0byBibG9jazogdGhpcyBhdm9pZHMgd2FrZXVwLXdhaXRp
bmcgcmFjZXMuCi0gICAgICovCi0gICAgdWludDhfdCBldnRjaG5fdXBjYWxsX3BlbmRpbmc7Ci0j
aWZkZWYgWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sKLSAgICB1aW50OF90IGV2dGNobl91cGNhbGxf
bWFzazsKLSNlbHNlIC8qIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLICovCi0gICAgdWludDhfdCBw
YWQwOwotI2VuZGlmIC8qIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLICovCi0gICAgeGVuX3Vsb25n
X3QgZXZ0Y2huX3BlbmRpbmdfc2VsOwotICAgIHN0cnVjdCBhcmNoX3ZjcHVfaW5mbyBhcmNoOwot
ICAgIHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB0aW1lOwotfTsgLyogNjQgYnl0ZXMgKHg4NikgKi8K
LSNpZm5kZWYgX19YRU5fXwotdHlwZWRlZiBzdHJ1Y3QgdmNwdV9pbmZvIHZjcHVfaW5mb190Owot
I2VuZGlmCi0KLS8qCi0gKiBgaW5jb250ZW50cyAyMDAgc3RhcnRvZmRheV9zaGFyZWQgU3RhcnQt
b2YtZGF5IHNoYXJlZCBkYXRhIHN0cnVjdHVyZQotICogWGVuL2tlcm5lbCBzaGFyZWQgZGF0YSAt
LSBwb2ludGVyIHByb3ZpZGVkIGluIHN0YXJ0X2luZm8uCi0gKgotICogVGhpcyBzdHJ1Y3R1cmUg
aXMgZGVmaW5lZCB0byBiZSBib3RoIHNtYWxsZXIgdGhhbiBhIHBhZ2UsIGFuZCB0aGUKLSAqIG9u
bHkgZGF0YSBvbiB0aGUgc2hhcmVkIHBhZ2UsIGJ1dCBtYXkgdmFyeSBpbiBhY3R1YWwgc2l6ZSBl
dmVuIHdpdGhpbgotICogY29tcGF0aWJsZSBYZW4gdmVyc2lvbnM7IGd1ZXN0cyBzaG91bGQgbm90
IHJlbHkgb24gdGhlIHNpemUKLSAqIG9mIHRoaXMgc3RydWN0dXJlIHJlbWFpbmluZyBjb25zdGFu
dC4KLSAqLwotc3RydWN0IHNoYXJlZF9pbmZvIHsKLSAgICBzdHJ1Y3QgdmNwdV9pbmZvIHZjcHVf
aW5mb1tYRU5fTEVHQUNZX01BWF9WQ1BVU107Ci0KLSAgICAvKgotICAgICAqIEEgZG9tYWluIGNh
biBjcmVhdGUgImV2ZW50IGNoYW5uZWxzIiBvbiB3aGljaCBpdCBjYW4gc2VuZCBhbmQgcmVjZWl2
ZQotICAgICAqIGFzeW5jaHJvbm91cyBldmVudCBub3RpZmljYXRpb25zLiBUaGVyZSBhcmUgdGhy
ZWUgY2xhc3NlcyBvZiBldmVudCB0aGF0Ci0gICAgICogYXJlIGRlbGl2ZXJlZCBieSB0aGlzIG1l
Y2hhbmlzbToKLSAgICAgKiAgMS4gQmktZGlyZWN0aW9uYWwgaW50ZXItIGFuZCBpbnRyYS1kb21h
aW4gY29ubmVjdGlvbnMuIERvbWFpbnMgbXVzdAotICAgICAqICAgICBhcnJhbmdlIG91dC1vZi1i
YW5kIHRvIHNldCB1cCBhIGNvbm5lY3Rpb24gKHVzdWFsbHkgYnkgYWxsb2NhdGluZwotICAgICAq
ICAgICBhbiB1bmJvdW5kICdsaXN0ZW5lcicgcG9ydCBhbmQgYXZlcnRpc2luZyB0aGF0IHZpYSBh
IHN0b3JhZ2Ugc2VydmljZQotICAgICAqICAgICBzdWNoIGFzIHhlbnN0b3JlKS4KLSAgICAgKiAg
Mi4gUGh5c2ljYWwgaW50ZXJydXB0cy4gQSBkb21haW4gd2l0aCBzdWl0YWJsZSBoYXJkd2FyZS1h
Y2Nlc3MKLSAgICAgKiAgICAgcHJpdmlsZWdlcyBjYW4gYmluZCBhbiBldmVudC1jaGFubmVsIHBv
cnQgdG8gYSBwaHlzaWNhbCBpbnRlcnJ1cHQKLSAgICAgKiAgICAgc291cmNlLgotICAgICAqICAz
LiBWaXJ0dWFsIGludGVycnVwdHMgKCdldmVudHMnKS4gQSBkb21haW4gY2FuIGJpbmQgYW4gZXZl
bnQtY2hhbm5lbAotICAgICAqICAgICBwb3J0IHRvIGEgdmlydHVhbCBpbnRlcnJ1cHQgc291cmNl
LCBzdWNoIGFzIHRoZSB2aXJ0dWFsLXRpbWVyCi0gICAgICogICAgIGRldmljZSBvciB0aGUgZW1l
cmdlbmN5IGNvbnNvbGUuCi0gICAgICogCi0gICAgICogRXZlbnQgY2hhbm5lbHMgYXJlIGFkZHJl
c3NlZCBieSBhICJwb3J0IGluZGV4Ii4gRWFjaCBjaGFubmVsIGlzCi0gICAgICogYXNzb2NpYXRl
ZCB3aXRoIHR3byBiaXRzIG9mIGluZm9ybWF0aW9uOgotICAgICAqICAxLiBQRU5ESU5HIC0tIG5v
dGlmaWVzIHRoZSBkb21haW4gdGhhdCB0aGVyZSBpcyBhIHBlbmRpbmcgbm90aWZpY2F0aW9uCi0g
ICAgICogICAgIHRvIGJlIHByb2Nlc3NlZC4gVGhpcyBiaXQgaXMgY2xlYXJlZCBieSB0aGUgZ3Vl
c3QuCi0gICAgICogIDIuIE1BU0sgLS0gaWYgdGhpcyBiaXQgaXMgY2xlYXIgdGhlbiBhIDAtPjEg
dHJhbnNpdGlvbiBvZiBQRU5ESU5HCi0gICAgICogICAgIHdpbGwgY2F1c2UgYW4gYXN5bmNocm9u
b3VzIHVwY2FsbCB0byBiZSBzY2hlZHVsZWQuIFRoaXMgYml0IGlzIG9ubHkKLSAgICAgKiAgICAg
dXBkYXRlZCBieSB0aGUgZ3Vlc3QuIEl0IGlzIHJlYWQtb25seSB3aXRoaW4gWGVuLiBJZiBhIGNo
YW5uZWwKLSAgICAgKiAgICAgYmVjb21lcyBwZW5kaW5nIHdoaWxlIHRoZSBjaGFubmVsIGlzIG1h
c2tlZCB0aGVuIHRoZSAnZWRnZScgaXMgbG9zdAotICAgICAqICAgICAoaS5lLiwgd2hlbiB0aGUg
Y2hhbm5lbCBpcyB1bm1hc2tlZCwgdGhlIGd1ZXN0IG11c3QgbWFudWFsbHkgaGFuZGxlCi0gICAg
ICogICAgIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBubyB1cGNhbGwgd2lsbCBiZSBzY2hlZHVs
ZWQgYnkgWGVuKS4KLSAgICAgKiAKLSAgICAgKiBUbyBleHBlZGl0ZSBzY2FubmluZyBvZiBwZW5k
aW5nIG5vdGlmaWNhdGlvbnMsIGFueSAwLT4xIHBlbmRpbmcKLSAgICAgKiB0cmFuc2l0aW9uIG9u
IGFuIHVubWFza2VkIGNoYW5uZWwgY2F1c2VzIGEgY29ycmVzcG9uZGluZyBiaXQgaW4gYQotICAg
ICAqIHBlci12Y3B1IHNlbGVjdG9yIHdvcmQgdG8gYmUgc2V0LiBFYWNoIGJpdCBpbiB0aGUgc2Vs
ZWN0b3IgY292ZXJzIGEKLSAgICAgKiAnQyBMT05HX1BUUicgaW4gdGhlIFBFTkRJTkcgYml0Zmll
bGQgYXJyYXkuCi0gICAgICovCi0gICAgeGVuX3Vsb25nX3QgZXZ0Y2huX3BlbmRpbmdbc2l6ZW9m
KHhlbl91bG9uZ190KSAqIDhdOwotICAgIHhlbl91bG9uZ190IGV2dGNobl9tYXNrW3NpemVvZih4
ZW5fdWxvbmdfdCkgKiA4XTsKLQotICAgIC8qCi0gICAgICogV2FsbGNsb2NrIHRpbWU6IHVwZGF0
ZWQgb25seSBieSBjb250cm9sIHNvZnR3YXJlLiBHdWVzdHMgc2hvdWxkIGJhc2UKLSAgICAgKiB0
aGVpciBnZXR0aW1lb2ZkYXkoKSBzeXNjYWxsIG9uIHRoaXMgd2FsbGNsb2NrLWJhc2UgdmFsdWUu
Ci0gICAgICovCi0gICAgdWludDMyX3Qgd2NfdmVyc2lvbjsgICAgICAvKiBWZXJzaW9uIGNvdW50
ZXI6IHNlZSB2Y3B1X3RpbWVfaW5mb190LiAqLwotICAgIHVpbnQzMl90IHdjX3NlYzsgICAgICAg
ICAgLyogU2VjcyAgMDA6MDA6MDAgVVRDLCBKYW4gMSwgMTk3MC4gICovCi0gICAgdWludDMyX3Qg
d2NfbnNlYzsgICAgICAgICAvKiBOc2VjcyAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8K
LQotICAgIHN0cnVjdCBhcmNoX3NoYXJlZF9pbmZvIGFyY2g7Ci0KLX07Ci0jaWZuZGVmIF9fWEVO
X18KLXR5cGVkZWYgc3RydWN0IHNoYXJlZF9pbmZvIHNoYXJlZF9pbmZvX3Q7Ci0jZW5kaWYKLQot
LyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5IFN0YXJ0LW9mLWRheSBtZW1vcnkgbGF5
b3V0Ci0gKgotICogIDEuIFRoZSBkb21haW4gaXMgc3RhcnRlZCB3aXRoaW4gY29udGlndW91cyB2
aXJ0dWFsLW1lbW9yeSByZWdpb24uCi0gKiAgMi4gVGhlIGNvbnRpZ3VvdXMgcmVnaW9uIGVuZHMg
b24gYW4gYWxpZ25lZCA0TUIgYm91bmRhcnkuCi0gKiAgMy4gVGhpcyB0aGUgb3JkZXIgb2YgYm9v
dHN0cmFwIGVsZW1lbnRzIGluIHRoZSBpbml0aWFsIHZpcnR1YWwgcmVnaW9uOgotICogICAgICBh
LiByZWxvY2F0ZWQga2VybmVsIGltYWdlCi0gKiAgICAgIGIuIGluaXRpYWwgcmFtIGRpc2sgICAg
ICAgICAgICAgIFttb2Rfc3RhcnQsIG1vZF9sZW5dCi0gKiAgICAgIGMuIGxpc3Qgb2YgYWxsb2Nh
dGVkIHBhZ2UgZnJhbWVzIFttZm5fbGlzdCwgbnJfcGFnZXNdCi0gKiAgICAgICAgICh1bmxlc3Mg
cmVsb2NhdGVkIGR1ZSB0byBYRU5fRUxGTk9URV9JTklUX1AyTSkKLSAqICAgICAgZC4gc3RhcnRf
aW5mb190IHN0cnVjdHVyZSAgICAgICAgW3JlZ2lzdGVyIEVTSSAoeDg2KV0KLSAqICAgICAgZS4g
Ym9vdHN0cmFwIHBhZ2UgdGFibGVzICAgICAgICAgW3B0X2Jhc2UgYW5kIENSMyAoeDg2KV0KLSAq
ICAgICAgZi4gYm9vdHN0cmFwIHN0YWNrICAgICAgICAgICAgICAgW3JlZ2lzdGVyIEVTUCAoeDg2
KV0KLSAqICA0LiBCb290c3RyYXAgZWxlbWVudHMgYXJlIHBhY2tlZCB0b2dldGhlciwgYnV0IGVh
Y2ggaXMgNGtCLWFsaWduZWQuCi0gKiAgNS4gVGhlIGluaXRpYWwgcmFtIGRpc2sgbWF5IGJlIG9t
aXR0ZWQuCi0gKiAgNi4gVGhlIGxpc3Qgb2YgcGFnZSBmcmFtZXMgZm9ybXMgYSBjb250aWd1b3Vz
ICdwc2V1ZG8tcGh5c2ljYWwnIG1lbW9yeQotICogICAgIGxheW91dCBmb3IgdGhlIGRvbWFpbi4g
SW4gcGFydGljdWxhciwgdGhlIGJvb3RzdHJhcCB2aXJ0dWFsLW1lbW9yeQotICogICAgIHJlZ2lv
biBpcyBhIDE6MSBtYXBwaW5nIHRvIHRoZSBmaXJzdCBzZWN0aW9uIG9mIHRoZSBwc2V1ZG8tcGh5
c2ljYWwgbWFwLgotICogIDcuIEFsbCBib290c3RyYXAgZWxlbWVudHMgYXJlIG1hcHBlZCByZWFk
LXdyaXRhYmxlIGZvciB0aGUgZ3Vlc3QgT1MuIFRoZQotICogICAgIG9ubHkgZXhjZXB0aW9uIGlz
IHRoZSBib290c3RyYXAgcGFnZSB0YWJsZSwgd2hpY2ggaXMgbWFwcGVkIHJlYWQtb25seS4KLSAq
ICA4LiBUaGVyZSBpcyBndWFyYW50ZWVkIHRvIGJlIGF0IGxlYXN0IDUxMmtCIHBhZGRpbmcgYWZ0
ZXIgdGhlIGZpbmFsCi0gKiAgICAgYm9vdHN0cmFwIGVsZW1lbnQuIElmIG5lY2Vzc2FyeSwgdGhl
IGJvb3RzdHJhcCB2aXJ0dWFsIHJlZ2lvbiBpcwotICogICAgIGV4dGVuZGVkIGJ5IGFuIGV4dHJh
IDRNQiB0byBlbnN1cmUgdGhpcy4KLSAqCi0gKiBOb3RlOiBQcmlvciB0byAyNTgzMzpiYjg1YmJj
Y2IxYzkuICgieDg2LzMyLW9uLTY0IGFkanVzdCBEb20wIGluaXRpYWwgcGFnZQotICogdGFibGUg
bGF5b3V0IikgYSBidWcgY2F1c2VkIHRoZSBwdF9iYXNlICgzLmUgYWJvdmUpIGFuZCBjcjMgdG8g
bm90IHBvaW50Ci0gKiB0byB0aGUgc3RhcnQgb2YgdGhlIGd1ZXN0IHBhZ2UgdGFibGVzIChpdCB3
YXMgb2Zmc2V0IGJ5IHR3byBwYWdlcykuCi0gKiBUaGlzIG9ubHkgbWFuaWZlc3RlZCBpdHNlbGYg
b24gMzItb24tNjQgZG9tMCBrZXJuZWxzIGFuZCBub3QgMzItb24tNjQgZG9tVQotICogb3IgNjQt
Yml0IGtlcm5lbHMgb2YgYW55IGNvbG91ci4gVGhlIHBhZ2UgdGFibGVzIGZvciBhIDMyLW9uLTY0
IGRvbTAgZ290Ci0gKiBhbGxvY2F0ZWQgaW4gdGhlIG9yZGVyOiAnZmlyc3QgTDEnLCdmaXJzdCBM
MicsICdmaXJzdCBMMycsIHNvIHRoZSBvZmZzZXQKLSAqIHRvIHRoZSBwYWdlIHRhYmxlIGJhc2Ug
aXMgYnkgdHdvIHBhZ2VzIGJhY2suIFRoZSBpbml0aWFsIGRvbWFpbiBpZiBpdCBpcwotICogMzIt
Yml0IGFuZCBydW5zIHVuZGVyIGEgNjQtYml0IGh5cGVydmlzb3Igc2hvdWxkIF9OT1RfIHVzZSB0
d28gb2YgdGhlCi0gKiBwYWdlcyBwcmVjZWRpbmcgcHRfYmFzZSBhbmQgbWFyayB0aGVtIGFzIHJl
c2VydmVkL3VudXNlZC4KLSAqLwotI2lmZGVmIFhFTl9IQVZFX1BWX0dVRVNUX0VOVFJZCi1zdHJ1
Y3Qgc3RhcnRfaW5mbyB7Ci0gICAgLyogVEhFIEZPTExPV0lORyBBUkUgRklMTEVEIElOIEJPVEgg
T04gSU5JVElBTCBCT09UIEFORCBPTiBSRVNVTUUuICAgICovCi0gICAgY2hhciBtYWdpY1szMl07
ICAgICAgICAgICAgIC8qICJ4ZW4tPHZlcnNpb24+LTxwbGF0Zm9ybT4iLiAgICAgICAgICAgICov
Ci0gICAgVUxPTkdfUFRSIG5yX3BhZ2VzOyAgICAgLyogVG90YWwgcGFnZXMgYWxsb2NhdGVkIHRv
IHRoaXMgZG9tYWluLiAgKi8KLSAgICBVTE9OR19QVFIgc2hhcmVkX2luZm87ICAvKiBNQUNISU5F
IGFkZHJlc3Mgb2Ygc2hhcmVkIGluZm8gc3RydWN0LiAqLwotICAgIHVpbnQzMl90IGZsYWdzOyAg
ICAgICAgICAgICAvKiBTSUZfeHh4IGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIHhlbl9wZm5fdCBzdG9yZV9tZm47ICAgICAgICAvKiBNQUNISU5FIHBhZ2UgbnVtYmVyIG9m
IHNoYXJlZCBwYWdlLiAgICAqLwotICAgIHVpbnQzMl90IHN0b3JlX2V2dGNobjsgICAgICAvKiBF
dmVudCBjaGFubmVsIGZvciBzdG9yZSBjb21tdW5pY2F0aW9uLiAqLwotICAgIHVuaW9uIHsKLSAg
ICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIHhlbl9wZm5fdCBtZm47ICAgICAgLyogTUFDSElO
RSBwYWdlIG51bWJlciBvZiBjb25zb2xlIHBhZ2UuICAgKi8KLSAgICAgICAgICAgIHVpbnQzMl90
ICBldnRjaG47ICAgLyogRXZlbnQgY2hhbm5lbCBmb3IgY29uc29sZSBwYWdlLiAgICAgICAgKi8K
LSAgICAgICAgfSBkb21VOwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdWludDMyX3Qg
aW5mb19vZmY7ICAvKiBPZmZzZXQgb2YgY29uc29sZV9pbmZvIHN0cnVjdC4gICAgICAgICAqLwot
ICAgICAgICAgICAgdWludDMyX3QgaW5mb19zaXplOyAvKiBTaXplIG9mIGNvbnNvbGVfaW5mbyBz
dHJ1Y3QgZnJvbSBzdGFydC4qLwotICAgICAgICB9IGRvbTA7Ci0gICAgfSBjb25zb2xlOwotICAg
IC8qIFRIRSBGT0xMT1dJTkcgQVJFIE9OTFkgRklMTEVEIElOIE9OIElOSVRJQUwgQk9PVCAoTk9U
IFJFU1VNRSkuICAgICAqLwotICAgIFVMT05HX1BUUiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwg
YWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAgICovCi0gICAgVUxPTkdfUFRSIG5yX3B0X2Zy
YW1lczsgLyogTnVtYmVyIG9mIGJvb3RzdHJhcCBwLnQuIGZyYW1lcy4gICAgICAgKi8KLSAgICBV
TE9OR19QVFIgbWZuX2xpc3Q7ICAgICAvKiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZS1mcmFtZSBs
aXN0LiAgICAqLwotICAgIFVMT05HX1BUUiBtb2Rfc3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVz
cyBvZiBwcmUtbG9hZGVkIG1vZHVsZSAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIChQRk4gb2YgcHJlLWxvYWRlZCBtb2R1bGUgaWYgICAgICAgICAgICovCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBTSUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxh
Z3MpLiAgICAgICovCi0gICAgVUxPTkdfUFRSIG1vZF9sZW47ICAgICAgLyogU2l6ZSAoYnl0ZXMp
IG9mIHByZS1sb2FkZWQgbW9kdWxlLiAgICAgKi8KLSNkZWZpbmUgTUFYX0dVRVNUX0NNRExJTkUg
MTAyNAotICAgIGludDhfdCBjbWRfbGluZVtNQVhfR1VFU1RfQ01ETElORV07Ci0gICAgLyogVGhl
IHBmbiByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBhZ2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJh
bWVzLiAgICovCi0gICAgVUxPTkdfUFRSIGZpcnN0X3AybV9wZm47LyogMXN0IHBmbiBmb3JtaW5n
IGluaXRpYWwgUC0+TSB0YWJsZS4gICAgKi8KLSAgICBVTE9OR19QVFIgbnJfcDJtX2ZyYW1lczsv
KiAjIG9mIHBmbnMgZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAqLwotfTsKLXR5cGVkZWYg
c3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190OwotCi0vKiBOZXcgY29uc29sZSB1bmlvbiBm
b3IgZG9tMCBpbnRyb2R1Y2VkIGluIDB4MDAwMzAyMDMuICovCi0jaWYgX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXyA8IDB4MDAwMzAyMDMKLSNkZWZpbmUgY29uc29sZV9tZm4gICAgY29uc29sZS5k
b21VLm1mbgotI2RlZmluZSBjb25zb2xlX2V2dGNobiBjb25zb2xlLmRvbVUuZXZ0Y2huCi0jZW5k
aWYKLSNlbmRpZiAvKiBYRU5fSEFWRV9QVl9HVUVTVF9FTlRSWSAqLwotCi0vKiBUaGVzZSBmbGFn
cyBhcmUgcGFzc2VkIGluIHRoZSAnZmxhZ3MnIGZpZWxkIG9mIHN0YXJ0X2luZm9fdC4gKi8KLSNk
ZWZpbmUgU0lGX1BSSVZJTEVHRUQgICAgKDE8PDApICAvKiBJcyB0aGUgZG9tYWluIHByaXZpbGVn
ZWQ/ICovCi0jZGVmaW5lIFNJRl9JTklURE9NQUlOICAgICgxPDwxKSAgLyogSXMgdGhpcyB0aGUg
aW5pdGlhbCBjb250cm9sIGRvbWFpbj8gKi8KLSNkZWZpbmUgU0lGX01VTFRJQk9PVF9NT0QgKDE8
PDIpICAvKiBJcyBtb2Rfc3RhcnQgYSBtdWx0aWJvb3QgbW9kdWxlPyAqLwotI2RlZmluZSBTSUZf
TU9EX1NUQVJUX1BGTiAoMTw8MykgIC8qIElzIG1vZF9zdGFydCBhIFBGTj8gKi8KLSNkZWZpbmUg
U0lGX1BNX01BU0sgICAgICAgKDB4RkY8PDgpIC8qIHJlc2VydmUgMSBieXRlIGZvciB4ZW4tcG0g
b3B0aW9ucyAqLwotCi0vKgotICogQSBtdWx0aWJvb3QgbW9kdWxlIGlzIGEgcGFja2FnZSBjb250
YWluaW5nIG1vZHVsZXMgdmVyeSBzaW1pbGFyIHRvIGEKLSAqIG11bHRpYm9vdCBtb2R1bGUgYXJy
YXkuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZToKLSAqIC0gdGhlIGFycmF5IG9mIG1vZHVsZSBk
ZXNjcmlwdG9ycyBpcyBieSBjb252ZW50aW9uIHNpbXBseSBhdCB0aGUgYmVnaW5uaW5nCi0gKiAg
IG9mIHRoZSBtdWx0aWJvb3QgbW9kdWxlLAotICogLSBhZGRyZXNzZXMgaW4gdGhlIG1vZHVsZSBk
ZXNjcmlwdG9ycyBhcmUgYmFzZWQgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAqICAgbXVsdGli
b290IG1vZHVsZSwKLSAqIC0gdGhlIG51bWJlciBvZiBtb2R1bGVzIGlzIGRldGVybWluZWQgYnkg
YSB0ZXJtaW5hdGlvbiBkZXNjcmlwdG9yIHRoYXQgaGFzCi0gKiAgIG1vZF9zdGFydCA9PSAwLgot
ICoKLSAqIFRoaXMgcGVybWl0cyB0byBib3RoIGJ1aWxkIGl0IHN0YXRpY2FsbHkgYW5kIHJlZmVy
ZW5jZSBpdCBpbiBhIGNvbmZpZ3VyYXRpb24KLSAqIGZpbGUsIGFuZCBsZXQgdGhlIFBWIGd1ZXN0
IGVhc2lseSByZWJhc2UgdGhlIGFkZHJlc3NlcyB0byB2aXJ0dWFsIGFkZHJlc3NlcwotICogYW5k
IGF0IHRoZSBzYW1lIHRpbWUgY291bnQgdGhlIG51bWJlciBvZiBtb2R1bGVzLgotICovCi1zdHJ1
Y3QgeGVuX211bHRpYm9vdF9tb2RfbGlzdAotewotICAgIC8qIEFkZHJlc3Mgb2YgZmlyc3QgYnl0
ZSBvZiB0aGUgbW9kdWxlICovCi0gICAgdWludDMyX3QgbW9kX3N0YXJ0OwotICAgIC8qIEFkZHJl
c3Mgb2YgbGFzdCBieXRlIG9mIHRoZSBtb2R1bGUgKGluY2x1c2l2ZSkgKi8KLSAgICB1aW50MzJf
dCBtb2RfZW5kOwotICAgIC8qIEFkZHJlc3Mgb2YgemVyby10ZXJtaW5hdGVkIGNvbW1hbmQgbGlu
ZSAqLwotICAgIHVpbnQzMl90IGNtZGxpbmU7Ci0gICAgLyogVW51c2VkLCBtdXN0IGJlIHplcm8g
Ki8KLSAgICB1aW50MzJfdCBwYWQ7Ci19OwotLyoKLSAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9m
ZGF5X2RvbTBfY29uc29sZSBEb20wX2NvbnNvbGUKLSAqCi0gKiBUaGUgY29uc29sZSBzdHJ1Y3R1
cmUgaW4gc3RhcnRfaW5mby5jb25zb2xlLmRvbTAKLSAqCi0gKiBUaGlzIHN0cnVjdHVyZSBpbmNs
dWRlcyBhIHZhcmlldHkgb2YgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8KLSAqIGhhdmUgYSB3b3Jr
aW5nIFZHQS9WRVNBIGNvbnNvbGUuCi0gKi8KLXR5cGVkZWYgc3RydWN0IGRvbTBfdmdhX2NvbnNv
bGVfaW5mbyB7Ci0gICAgdWludDhfdCB2aWRlb190eXBlOyAvKiBET00wX1ZHQV9DT05TT0xFXz8/
PyAqLwotI2RlZmluZSBYRU5fVkdBVFlQRV9URVhUX01PREVfMyAweDAzCi0jZGVmaW5lIFhFTl9W
R0FUWVBFX1ZFU0FfTEZCICAgIDB4MjMKLSNkZWZpbmUgWEVOX1ZHQVRZUEVfRUZJX0xGQiAgICAg
MHg3MAotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogRm9u
dCBoZWlnaHQsIGluIHBpeGVscy4gKi8KLSAgICAgICAgICAgIHVpbnQxNl90IGZvbnRfaGVpZ2h0
OwotICAgICAgICAgICAgLyogQ3Vyc29yIGxvY2F0aW9uIChjb2x1bW4sIHJvdykuICovCi0gICAg
ICAgICAgICB1aW50MTZfdCBjdXJzb3JfeCwgY3Vyc29yX3k7Ci0gICAgICAgICAgICAvKiBOdW1i
ZXIgb2Ygcm93cyBhbmQgY29sdW1ucyAoZGltZW5zaW9ucyBpbiBjaGFyYWN0ZXJzKS4gKi8KLSAg
ICAgICAgICAgIHVpbnQxNl90IHJvd3MsIGNvbHVtbnM7Ci0gICAgICAgIH0gdGV4dF9tb2RlXzM7
Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8qIFdpZHRoIGFuZCBoZWlnaHQsIGlu
IHBpeGVscy4gKi8KLSAgICAgICAgICAgIHVpbnQxNl90IHdpZHRoLCBoZWlnaHQ7Ci0gICAgICAg
ICAgICAvKiBCeXRlcyBwZXIgc2NhbiBsaW5lLiAqLwotICAgICAgICAgICAgdWludDE2X3QgYnl0
ZXNfcGVyX2xpbmU7Ci0gICAgICAgICAgICAvKiBCaXRzIHBlciBwaXhlbC4gKi8KLSAgICAgICAg
ICAgIHVpbnQxNl90IGJpdHNfcGVyX3BpeGVsOwotICAgICAgICAgICAgLyogTEZCIHBoeXNpY2Fs
IGFkZHJlc3MsIGFuZCBzaXplIChpbiB1bml0cyBvZiA2NGtCKS4gKi8KLSAgICAgICAgICAgIHVp
bnQzMl90IGxmYl9iYXNlOwotICAgICAgICAgICAgdWludDMyX3QgbGZiX3NpemU7Ci0gICAgICAg
ICAgICAvKiBSR0IgbWFzayBvZmZzZXRzIGFuZCBzaXplcywgYXMgZGVmaW5lZCBieSBWQkUgMS4y
KyAqLwotICAgICAgICAgICAgdWludDhfdCAgcmVkX3BvcywgcmVkX3NpemU7Ci0gICAgICAgICAg
ICB1aW50OF90ICBncmVlbl9wb3MsIGdyZWVuX3NpemU7Ci0gICAgICAgICAgICB1aW50OF90ICBi
bHVlX3BvcywgYmx1ZV9zaXplOwotICAgICAgICAgICAgdWludDhfdCAgcnN2ZF9wb3MsIHJzdmRf
c2l6ZTsKLSNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMDYKLSAgICAg
ICAgICAgIC8qIFZFU0EgY2FwYWJpbGl0aWVzIChvZmZzZXQgMHhhLCBWRVNBIGNvbW1hbmQgMHg0
ZjAwKS4gKi8KLSAgICAgICAgICAgIHVpbnQzMl90IGdibF9jYXBzOwotICAgICAgICAgICAgLyog
TW9kZSBhdHRyaWJ1dGVzIChvZmZzZXQgMHgwLCBWRVNBIGNvbW1hbmQgMHg0ZjAxKS4gKi8KLSAg
ICAgICAgICAgIHVpbnQxNl90IG1vZGVfYXR0cnM7Ci0jZW5kaWYKLSAgICAgICAgfSB2ZXNhX2xm
YjsKLSAgICB9IHU7Ci19IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190OwotI2RlZmluZSB4ZW5fdmdh
X2NvbnNvbGVfaW5mbyBkb20wX3ZnYV9jb25zb2xlX2luZm8KLSNkZWZpbmUgeGVuX3ZnYV9jb25z
b2xlX2luZm9fdCBkb20wX3ZnYV9jb25zb2xlX2luZm9fdAotCi10eXBlZGVmIHVpbnQ4X3QgeGVu
X2RvbWFpbl9oYW5kbGVfdFsxNl07Ci0KLS8qIFR1cm4gYSBwbGFpbiBudW1iZXIgaW50byBhIEMg
VUxPTkdfUFRSIGNvbnN0YW50LiAqLwotI2RlZmluZSBfX21rX3Vuc2lnbmVkX2xvbmcoeCkgeCAj
IyBVTAotI2RlZmluZSBta191bnNpZ25lZF9sb25nKHgpIF9fbWtfdW5zaWduZWRfbG9uZyh4KQot
Ci1fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ4LCAgdWludDhfdCk7Ci1fX0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHVpbnQxNiwgdWludDE2X3QpOwotX19ERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh1aW50MzIsIHVpbnQzMl90KTsKLV9fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0
LCB1aW50NjRfdCk7Ci0KLSNlbHNlIC8qIF9fQVNTRU1CTFlfXyAqLwotCi0vKiBJbiBhc3NlbWJs
eSBjb2RlIHdlIGNhbm5vdCB1c2UgQyBudW1lcmljIGNvbnN0YW50IHN1ZmZpeGVzLiAqLwotI2Rl
ZmluZSBta191bnNpZ25lZF9sb25nKHgpIHgKLQotI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8K
LQotLyogRGVmYXVsdCBkZWZpbml0aW9ucyBmb3IgbWFjcm9zIHVzZWQgYnkgZG9tY3RsL3N5c2N0
bC4gKi8KLSNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKLQot
I2lmbmRlZiB1aW50NjRfYWxpZ25lZF90Ci0jZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0
X3QKLSNlbmRpZgotI2lmbmRlZiBYRU5fR1VFU1RfSEFORExFXzY0Ci0jZGVmaW5lIFhFTl9HVUVT
VF9IQU5ETEVfNjQobmFtZSkgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQotI2VuZGlmCi0KLSNpZm5k
ZWYgX19BU1NFTUJMWV9fCi1zdHJ1Y3QgeGVuY3RsX2JpdG1hcCB7Ci0gICAgWEVOX0dVRVNUX0hB
TkRMRV82NCh1aW50OCkgYml0bWFwOwotICAgIHVpbnQzMl90IG5yX2JpdHM7Ci19OwotI2VuZGlm
Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykg
Ki8KLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5fSF9fICovCi0KLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2lj
LW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAq
IEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4veGVuL2Vycm5vLmggYi9pbmNsdWRl
L3hlbi94ZW4vZXJybm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTc4
NDY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4veGVuL2Vycm5vLmgKQEAgLTAsMCAr
MSwyMCBAQAorI2lmbmRlZiBfX1hFTl9FUlJOT19IX18KKyNkZWZpbmUgX19YRU5fRVJSTk9fSF9f
CisKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKwor
I2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIG5hbWUgPSBYRU5fIyNuYW1lLAorZW51bSB7
CisjaW5jbHVkZSA8cHVibGljL2Vycm5vLmg+Cit9OworCisjZWxzZSAvKiAhX19BU1NFTUJMWV9f
ICovCisKKyNkZWZpbmUgWEVOX0VSUk5PKG5hbWUsIHZhbHVlKSAuZXF1IG5hbWUsIFhFTl8jI25h
bWUKKyNpbmNsdWRlIDxwdWJsaWMvZXJybm8uaD4KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAq
LworCisjZW5kaWYgLyogIF9fWEVOX0VSUk5PX0hfXyAqLwpkaWZmIC0tZ2l0IGEvdnMyMDEyL3hl
bnZpZi94ZW52aWYudmN4cHJvaiBiL3ZzMjAxMi94ZW52aWYveGVudmlmLnZjeHByb2oKaW5kZXgg
NDEyMDAxOC4uZWUxOGZjNiAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbnZpZi94ZW52aWYudmN4cHJv
agorKysgYi92czIwMTIveGVudmlmL3hlbnZpZi52Y3hwcm9qCkBAIC0yOCw3ICsyOCw3IEBACiAJ
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
IAogCiAJPFByb3BlcnR5R3JvdXA+Ci0JCTxJbmNsdWRlUGF0aD4uLlwuLlxpbmNsdWRlOyQoSW5j
bHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7Li5c
Li5caW5jbHVkZVx4ZW47JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPgogCQk8UnVuQ29kZUFu
YWx5c2lzPnRydWU8L1J1bkNvZGVBbmFseXNpcz4KICAgICAgICAgPEVuYWJsZUluZjJjYXQ+ZmFs
c2U8L0VuYWJsZUluZjJjYXQ+CiAgICAgICAgIDxDdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+Q2xD
b21waWxlO1N0YW1wSW5mPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CmRpZmYgLS1naXQgYS92
czIwMTMveGVudmlmL3hlbnZpZi52Y3hwcm9qIGIvdnMyMDEzL3hlbnZpZi94ZW52aWYudmN4cHJv
agppbmRleCAwZTc3NGI3Li5lZjExN2U1IDEwMDY0NAotLS0gYS92czIwMTMveGVudmlmL3hlbnZp
Zi52Y3hwcm9qCisrKyBiL3ZzMjAxMy94ZW52aWYveGVudmlmLnZjeHByb2oKQEAgLTYxLDcgKzYx
LDYgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJnZXRzLnByb3BzIiAvPgogICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPFBy
b3BlcnR5R3JvdXA+Ci0gICAgPEluY2x1ZGVQYXRoPi4uXC4uXGluY2x1ZGU7JChJbmNsdWRlUGF0
aCk8L0luY2x1ZGVQYXRoPgogICAgIDxSdW5Db2RlQW5hbHlzaXM+dHJ1ZTwvUnVuQ29kZUFuYWx5
c2lzPgogICAgIDxFbmFibGVJbmYyY2F0PmZhbHNlPC9FbmFibGVJbmYyY2F0PgogICAgIDxDdXN0
b21CdWlsZEJlZm9yZVRhcmdldHM+Q2xDb21waWxlO1N0YW1wSW5mPC9DdXN0b21CdWlsZEJlZm9y
ZVRhcmdldHM+CkBAIC03OSwxMiArNzgsMTYgQEAKICAgICAgIDxJbnB1dHM+Li5cLi5cc3JjXHhl
bnZpZi5pbmY7Li5cLi5caW5jbHVkZVx2ZXJzaW9uLmh4PC9JbnB1dHM+CiAgICAgPC9DdXN0b21C
dWlsZFN0ZXA+CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoV2luZG93c1Nka0RpcilcaW5jbHVkZVxrbTsuLlwuLlxpbmNsdWRlOy4uXC4uXGlu
Y2x1ZGVceGVuOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X19NT0RVTEVf
Xz0iWEVOVklGIjtQT09MX05YX09QVElOPTE7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJu
aW5nczwvV2FybmluZ0xldmVsPgogICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ3MTE7
NDU0ODs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgogICAgICAgPE11bHRpUHJvY2Vzc29yQ29t
cGlsYXRpb24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj4KICAgICAgIDxFbmFibGVQ
UkVmYXN0PnRydWU8L0VuYWJsZVBSRWZhc3Q+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291
cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGlu
Y2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxJ
bWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9u
SGFuZGxlcnM+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKERES19MSUJfUEFUSCkv
bGliY250cHIubGliOyQoRERLX0xJQl9QQVRIKS9hdXhfa2xpYi5saWI7JChEREtfTElCX1BBVEgp
L2tzZWNkZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVu
Y2llcz4KLS0gCjIuMS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 13:21:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 13:21:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwry-00076p-PH; Fri, 20 Mar 2015 13:21:46 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwrw-00076k-Sz
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 13:21:45 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	95/4E-01069-8EE1C055; Fri, 20 Mar 2015 13:21:44 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1426857703!11836362!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 502 invoked from network); 20 Mar 2015 13:21:43 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 13:21:43 -0000
Received: by wibgn9 with SMTP id gn9so14172662wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 06:21:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=p4Bj3A94pc4zsfeyXmdhZUOzBqnNfwiVCOwuf+eHxBQ=;
	b=Ujpyt9dby24iMlI10xp+VPb5naUapECc7YA7m45krc+EbeLOZeJeWpdrRizQBK36uF
	/kDxnE44Fv1eJ2/MAeA9whvcGiPBnS009QwxdGNea4IN4YYlQqw2u0+dAGblAtI0usYo
	olTpFcY02pz15uvXnEQRvd04o/9NLCXplxgaELcYg67GAKRGeNzEgwyZzXKUWhnK7Z4L
	U22zyLwgfnmi6MOb2rXG0Ea/n0B05TRksgb4NbM73H8+XV1TuM60FaKoEQa2BsB7AGJ8
	/inRL7qtN1kxSQrK4hbjtjHwrlXovvCbQ0RG/kPVxKfz3TcYxT99CY5Uk8bSRJgltS/A
	DApQ==
X-Received: by 10.194.9.98 with SMTP id y2mr164861557wja.85.1426857702931;
	Fri, 20 Mar 2015 06:21:42 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6349933wjv.29.2015.03.20.06.21.41
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 06:21:42 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 13:21:45 +0000
Message-Id: <1426857705-17276-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Make XENNET processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCK multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/driver.c          |  2 ++
 src/xennet/receiver.c        | 53 ++++++++++++++++++++++++++++++++------------
 vs2012/xennet/xennet.vcxproj |  4 ++--
 vs2013/xennet/xennet.vcxproj |  4 ++--
 4 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index c6a4896..e77ae6e 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -32,6 +32,7 @@
 #define INITGUID 1
 
 #include <ndis.h>
+#include <procgrp.h>
 #include "adapter.h"
 #include <version.h>
 #include "dbg_print.h"
@@ -411,6 +412,7 @@ DriverEntry (
     ULONG FailDeviceControl;
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     Trace("====>\n");
 
diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index dcd88af..95285cd 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -29,6 +29,8 @@
  * SUCH DAMAGE.
  */
 
+#include <ndis.h>
+#include <procgrp.h>
 #include "receiver.h"
 #include "adapter.h"
 #include <util.h>
@@ -39,7 +41,8 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
+    PNET_BUFFER_LIST            *GetList;
+    ULONG                       GetListCount;
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -56,22 +59,23 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Cpu;
+    ULONG                   Index;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+    ASSERT3U(Index, <, Receiver->GetListCount);
 
-    NetBufferList = Receiver->GetList[Cpu];
+    NetBufferList = Receiver->GetList[Index];
 
-    if (NetBufferList == NULL)
-        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-
-    NetBufferList = Receiver->GetList[Cpu];
+    if (NetBufferList == NULL) {
+        Receiver->GetList[Index] = InterlockedExchangePointer(&Receiver->PutList, NULL);
+        NetBufferList = Receiver->GetList[Index];
+    }
 
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList[Index] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -285,6 +289,16 @@ ReceiverInitialize(
     RtlZeroMemory(*Receiver, sizeof(XENNET_RECEIVER));
     (*Receiver)->Adapter = Adapter;
 
+    (*Receiver)->GetListCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    (*Receiver)->GetList = ExAllocatePoolWithTag(NonPagedPool,
+                                                 sizeof(PNET_BUFFER_LIST) *
+                                                 (*Receiver)->GetListCount,
+                                                 RECEIVER_POOL_TAG);
+
+    status = NDIS_STATUS_RESOURCES;
+    if ((*Receiver)->GetList == NULL)
+        goto fail2;
+
     RtlZeroMemory(&Params, sizeof(NET_BUFFER_LIST_POOL_PARAMETERS));
     Params.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
     Params.Header.Revision = NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
@@ -299,11 +313,18 @@ ReceiverInitialize(
 
     status = NDIS_STATUS_RESOURCES;
     if ((*Receiver)->NetBufferListPool == NULL)
-        goto fail2;
+        goto fail3;
 
     return NDIS_STATUS_SUCCESS;
 
+fail3:
+    ExFreePoolWithTag((*Receiver)->GetList, RECEIVER_POOL_TAG);
+    (*Receiver)->GetListCount = 0;
+
 fail2:
+    ExFreePoolWithTag(*Receiver, RECEIVER_POOL_TAG);
+    *Receiver = NULL;
+
 fail1:
     return status;
 }
@@ -313,13 +334,14 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG               Cpu;
-    PNET_BUFFER_LIST    NetBufferList;
+    ULONG                   Index;
+    PNET_BUFFER_LIST        NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        NetBufferList = Receiver->GetList[Cpu];
+    for (Index = 0; Index < Receiver->GetListCount; Index++) {
+        NetBufferList = Receiver->GetList[Index];
+
         while (NetBufferList != NULL) {
             PNET_BUFFER_LIST    Next;
 
@@ -347,6 +369,9 @@ ReceiverTeardown(
     NdisFreeNetBufferListPool(Receiver->NetBufferListPool);
     Receiver->NetBufferListPool = NULL;
 
+    ExFreePoolWithTag(Receiver->GetList, RECEIVER_POOL_TAG);
+    Receiver->GetListCount = 0;
+
     Receiver->Adapter = NULL;
 
     ExFreePoolWithTag(Receiver, RECEIVER_POOL_TAG);
diff --git a/vs2012/xennet/xennet.vcxproj b/vs2012/xennet/xennet.vcxproj
index 03ddf91..0e2fc22 100644
--- a/vs2012/xennet/xennet.vcxproj
+++ b/vs2012/xennet/xennet.vcxproj
@@ -42,7 +42,7 @@
             <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
         </CustomBuildStep>
 		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<WarningLevel>EnableAllWarnings</WarningLevel>
 			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -50,7 +50,7 @@
 		</ClCompile>
 		<Link>
 			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
+			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
 			<EnableCOMDATFolding>false</EnableCOMDATFolding>
 		</Link>
 		<Inf>
diff --git a/vs2013/xennet/xennet.vcxproj b/vs2013/xennet/xennet.vcxproj
index 6cb09d2..2eaf191 100644
--- a/vs2013/xennet/xennet.vcxproj
+++ b/vs2013/xennet/xennet.vcxproj
@@ -74,7 +74,7 @@
       <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -82,7 +82,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 20 13:21:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 20 Mar 2015 13:21:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YYwry-00076p-PH; Fri, 20 Mar 2015 13:21:46 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YYwrw-00076k-Sz
	for win-pv-devel@lists.xenproject.org; Fri, 20 Mar 2015 13:21:45 +0000
Received: from [193.109.254.147] by server-14.bemta-14.messagelabs.com id
	95/4E-01069-8EE1C055; Fri, 20 Mar 2015 13:21:44 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1426857703!11836362!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 502 invoked from network); 20 Mar 2015 13:21:43 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Mar 2015 13:21:43 -0000
Received: by wibgn9 with SMTP id gn9so14172662wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 20 Mar 2015 06:21:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=p4Bj3A94pc4zsfeyXmdhZUOzBqnNfwiVCOwuf+eHxBQ=;
	b=Ujpyt9dby24iMlI10xp+VPb5naUapECc7YA7m45krc+EbeLOZeJeWpdrRizQBK36uF
	/kDxnE44Fv1eJ2/MAeA9whvcGiPBnS009QwxdGNea4IN4YYlQqw2u0+dAGblAtI0usYo
	olTpFcY02pz15uvXnEQRvd04o/9NLCXplxgaELcYg67GAKRGeNzEgwyZzXKUWhnK7Z4L
	U22zyLwgfnmi6MOb2rXG0Ea/n0B05TRksgb4NbM73H8+XV1TuM60FaKoEQa2BsB7AGJ8
	/inRL7qtN1kxSQrK4hbjtjHwrlXovvCbQ0RG/kPVxKfz3TcYxT99CY5Uk8bSRJgltS/A
	DApQ==
X-Received: by 10.194.9.98 with SMTP id y2mr164861557wja.85.1426857702931;
	Fri, 20 Mar 2015 06:21:42 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6349933wjv.29.2015.03.20.06.21.41
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 20 Mar 2015 06:21:42 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Fri, 20 Mar 2015 13:21:45 +0000
Message-Id: <1426857705-17276-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Make XENNET processor group aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Processor groups have been around for a long time in Windows and
contnuing to ignore them becomes ever more painful when trying to
pass the HCK multiple processor group device test. This patch, therefore,
modifies all the code that uses the non-group-aware kernel calls to use
the newer group aware calls.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/driver.c          |  2 ++
 src/xennet/receiver.c        | 53 ++++++++++++++++++++++++++++++++------------
 vs2012/xennet/xennet.vcxproj |  4 ++--
 vs2013/xennet/xennet.vcxproj |  4 ++--
 4 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index c6a4896..e77ae6e 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -32,6 +32,7 @@
 #define INITGUID 1
 
 #include <ndis.h>
+#include <procgrp.h>
 #include "adapter.h"
 #include <version.h>
 #include "dbg_print.h"
@@ -411,6 +412,7 @@ DriverEntry (
     ULONG FailDeviceControl;
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+    WdmlibProcgrpInitialize();
 
     Trace("====>\n");
 
diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index dcd88af..95285cd 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -29,6 +29,8 @@
  * SUCH DAMAGE.
  */
 
+#include <ndis.h>
+#include <procgrp.h>
 #include "receiver.h"
 #include "adapter.h"
 #include <util.h>
@@ -39,7 +41,8 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
+    PNET_BUFFER_LIST            *GetList;
+    ULONG                       GetListCount;
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -56,22 +59,23 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Cpu;
+    ULONG                   Index;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Cpu = KeGetCurrentProcessorNumber();
+    Index = KeGetCurrentProcessorNumberEx(NULL);
+    ASSERT3U(Index, <, Receiver->GetListCount);
 
-    NetBufferList = Receiver->GetList[Cpu];
+    NetBufferList = Receiver->GetList[Index];
 
-    if (NetBufferList == NULL)
-        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-
-    NetBufferList = Receiver->GetList[Cpu];
+    if (NetBufferList == NULL) {
+        Receiver->GetList[Index] = InterlockedExchangePointer(&Receiver->PutList, NULL);
+        NetBufferList = Receiver->GetList[Index];
+    }
 
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList[Index] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -285,6 +289,16 @@ ReceiverInitialize(
     RtlZeroMemory(*Receiver, sizeof(XENNET_RECEIVER));
     (*Receiver)->Adapter = Adapter;
 
+    (*Receiver)->GetListCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+    (*Receiver)->GetList = ExAllocatePoolWithTag(NonPagedPool,
+                                                 sizeof(PNET_BUFFER_LIST) *
+                                                 (*Receiver)->GetListCount,
+                                                 RECEIVER_POOL_TAG);
+
+    status = NDIS_STATUS_RESOURCES;
+    if ((*Receiver)->GetList == NULL)
+        goto fail2;
+
     RtlZeroMemory(&Params, sizeof(NET_BUFFER_LIST_POOL_PARAMETERS));
     Params.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
     Params.Header.Revision = NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
@@ -299,11 +313,18 @@ ReceiverInitialize(
 
     status = NDIS_STATUS_RESOURCES;
     if ((*Receiver)->NetBufferListPool == NULL)
-        goto fail2;
+        goto fail3;
 
     return NDIS_STATUS_SUCCESS;
 
+fail3:
+    ExFreePoolWithTag((*Receiver)->GetList, RECEIVER_POOL_TAG);
+    (*Receiver)->GetListCount = 0;
+
 fail2:
+    ExFreePoolWithTag(*Receiver, RECEIVER_POOL_TAG);
+    *Receiver = NULL;
+
 fail1:
     return status;
 }
@@ -313,13 +334,14 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG               Cpu;
-    PNET_BUFFER_LIST    NetBufferList;
+    ULONG                   Index;
+    PNET_BUFFER_LIST        NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        NetBufferList = Receiver->GetList[Cpu];
+    for (Index = 0; Index < Receiver->GetListCount; Index++) {
+        NetBufferList = Receiver->GetList[Index];
+
         while (NetBufferList != NULL) {
             PNET_BUFFER_LIST    Next;
 
@@ -347,6 +369,9 @@ ReceiverTeardown(
     NdisFreeNetBufferListPool(Receiver->NetBufferListPool);
     Receiver->NetBufferListPool = NULL;
 
+    ExFreePoolWithTag(Receiver->GetList, RECEIVER_POOL_TAG);
+    Receiver->GetListCount = 0;
+
     Receiver->Adapter = NULL;
 
     ExFreePoolWithTag(Receiver, RECEIVER_POOL_TAG);
diff --git a/vs2012/xennet/xennet.vcxproj b/vs2012/xennet/xennet.vcxproj
index 03ddf91..0e2fc22 100644
--- a/vs2012/xennet/xennet.vcxproj
+++ b/vs2012/xennet/xennet.vcxproj
@@ -42,7 +42,7 @@
             <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
         </CustomBuildStep>
 		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<WarningLevel>EnableAllWarnings</WarningLevel>
 			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -50,7 +50,7 @@
 		</ClCompile>
 		<Link>
 			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
+			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
 			<EnableCOMDATFolding>false</EnableCOMDATFolding>
 		</Link>
 		<Inf>
diff --git a/vs2013/xennet/xennet.vcxproj b/vs2013/xennet/xennet.vcxproj
index 6cb09d2..2eaf191 100644
--- a/vs2013/xennet/xennet.vcxproj
+++ b/vs2013/xennet/xennet.vcxproj
@@ -74,7 +74,7 @@
       <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -82,7 +82,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:05:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:05:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLhv-00083u-Ca; Tue, 24 Mar 2015 10:05:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaLht-00083n-Pu
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:05:10 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	33/EF-02712-4D631155; Tue, 24 Mar 2015 10:05:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1427191506!12540678!1
X-Originating-IP: [74.125.82.180]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4499 invoked from network); 24 Mar 2015 10:05:07 -0000
Received: from mail-we0-f180.google.com (HELO mail-we0-f180.google.com)
	(74.125.82.180)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:05:07 -0000
Received: by wegp1 with SMTP id p1so159014986weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:05:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=bHiojXmH4hQUixP4VgmVhYIzE5SlUfkAgi8BtCNBkb4=;
	b=fy2oRp1gIsfrgRHdNr5SBkOZXez4Z0yatCq//08X3EnIjGDZ9xMI2z5mXldMvQrQF+
	dos+7eMDC4gOa/5EMeUmmT8a8QB60+AlM/UYWdOBYpt7UIjN4Tz0Bm69DNhxRA9d9JQl
	PFIMPx74J3fJT5tJtVKHmf7BV/N/0ZI9hzs0+y4/au/yc4Uj8F3LTzYi/3nZNpzMvaSg
	TVECnCQ5cM22T/lFKhEBhZgzlg4MiXfXf4ePYBoPapliQaiBh0MLCdZrlcY2mQ++80Yv
	bxGZl/GASvGVLTiAjBzyhTJoZT6m/YHtYESVxL7gxIin+m0gnyjI3VVvSBvX1fUZKqJM
	Wvxw==
X-Received: by 10.194.201.2 with SMTP id jw2mr6299274wjc.158.1427191506655;
	Tue, 24 Mar 2015 03:05:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id yr10sm5380044wjc.0.2015.03.24.03.05.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:05:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 10:05:16 +0000
Message-Id: <1427191516-14776-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix typos and type problems in previous patch
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also add some extra trace statements that proved useful in debugging

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/receiver.c    |  7 +++++++
 src/xenvif/transmitter.c | 15 +++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index f09b71c..3400391 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2758,6 +2758,8 @@ ReceiverConnect(
     PCHAR                   Buffer;
     NTSTATUS                status;
 
+    Trace("====>\n");
+
     Frontend = Receiver->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Receiver->DebugInterface);
@@ -2815,6 +2817,7 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail6;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail6:
@@ -3091,6 +3094,8 @@ ReceiverDisconnect(
     PXENVIF_FRONTEND        Frontend;
     LONG                    Index;
 
+    Trace("=====>\n");
+
     Frontend = Receiver->Frontend;
 
     Receiver->Split = FALSE;
@@ -3116,6 +3121,8 @@ ReceiverDisconnect(
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index d6357f1..5e6752f 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3724,6 +3724,8 @@ TransmitterConnect(
     LONG                        Index;
     NTSTATUS                    status;
 
+    Trace("====>\n");
+
     Frontend = Transmitter->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Transmitter->DebugInterface);
@@ -3806,6 +3808,7 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail8;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail8:
@@ -3934,7 +3937,9 @@ TransmitterDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
+    LONG                    Index;
+
+    Trace("====>\n");
 
     Frontend = Transmitter->Frontend;
 
@@ -3946,7 +3951,7 @@ TransmitterDisconnect(
     Transmitter->DebugCallback = NULL;
 
     Index = Transmitter->NumQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
@@ -3966,6 +3971,8 @@ TransmitterDisconnect(
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3973,7 +3980,7 @@ TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3982,7 +3989,7 @@ TransmitterTeardown(
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
     Index = Transmitter->MaxQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         Transmitter->Ring[Index] = NULL;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:05:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:05:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLhv-00083u-Ca; Tue, 24 Mar 2015 10:05:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaLht-00083n-Pu
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:05:10 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	33/EF-02712-4D631155; Tue, 24 Mar 2015 10:05:08 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1427191506!12540678!1
X-Originating-IP: [74.125.82.180]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4499 invoked from network); 24 Mar 2015 10:05:07 -0000
Received: from mail-we0-f180.google.com (HELO mail-we0-f180.google.com)
	(74.125.82.180)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:05:07 -0000
Received: by wegp1 with SMTP id p1so159014986weg.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:05:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=bHiojXmH4hQUixP4VgmVhYIzE5SlUfkAgi8BtCNBkb4=;
	b=fy2oRp1gIsfrgRHdNr5SBkOZXez4Z0yatCq//08X3EnIjGDZ9xMI2z5mXldMvQrQF+
	dos+7eMDC4gOa/5EMeUmmT8a8QB60+AlM/UYWdOBYpt7UIjN4Tz0Bm69DNhxRA9d9JQl
	PFIMPx74J3fJT5tJtVKHmf7BV/N/0ZI9hzs0+y4/au/yc4Uj8F3LTzYi/3nZNpzMvaSg
	TVECnCQ5cM22T/lFKhEBhZgzlg4MiXfXf4ePYBoPapliQaiBh0MLCdZrlcY2mQ++80Yv
	bxGZl/GASvGVLTiAjBzyhTJoZT6m/YHtYESVxL7gxIin+m0gnyjI3VVvSBvX1fUZKqJM
	Wvxw==
X-Received: by 10.194.201.2 with SMTP id jw2mr6299274wjc.158.1427191506655;
	Tue, 24 Mar 2015 03:05:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id yr10sm5380044wjc.0.2015.03.24.03.05.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:05:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 10:05:16 +0000
Message-Id: <1427191516-14776-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix typos and type problems in previous patch
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also add some extra trace statements that proved useful in debugging

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/receiver.c    |  7 +++++++
 src/xenvif/transmitter.c | 15 +++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index f09b71c..3400391 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2758,6 +2758,8 @@ ReceiverConnect(
     PCHAR                   Buffer;
     NTSTATUS                status;
 
+    Trace("====>\n");
+
     Frontend = Receiver->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Receiver->DebugInterface);
@@ -2815,6 +2817,7 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail6;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail6:
@@ -3091,6 +3094,8 @@ ReceiverDisconnect(
     PXENVIF_FRONTEND        Frontend;
     LONG                    Index;
 
+    Trace("=====>\n");
+
     Frontend = Receiver->Frontend;
 
     Receiver->Split = FALSE;
@@ -3116,6 +3121,8 @@ ReceiverDisconnect(
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index d6357f1..5e6752f 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3724,6 +3724,8 @@ TransmitterConnect(
     LONG                        Index;
     NTSTATUS                    status;
 
+    Trace("====>\n");
+
     Frontend = Transmitter->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Transmitter->DebugInterface);
@@ -3806,6 +3808,7 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail8;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail8:
@@ -3934,7 +3937,9 @@ TransmitterDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
+    LONG                    Index;
+
+    Trace("====>\n");
 
     Frontend = Transmitter->Frontend;
 
@@ -3946,7 +3951,7 @@ TransmitterDisconnect(
     Transmitter->DebugCallback = NULL;
 
     Index = Transmitter->NumQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
@@ -3966,6 +3971,8 @@ TransmitterDisconnect(
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3973,7 +3980,7 @@ TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3982,7 +3989,7 @@ TransmitterTeardown(
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
     Index = Transmitter->MaxQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         Transmitter->Ring[Index] = NULL;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:15:18 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLri-00011B-2T; Tue, 24 Mar 2015 10:15:18 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaLrg-000113-B3
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:15:16 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	F8/95-01116-33931155; Tue, 24 Mar 2015 10:15:15 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1427192113!11136608!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17618 invoked from network); 24 Mar 2015 10:15:13 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:15:13 -0000
Received: by wibg7 with SMTP id g7so70375289wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:15:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=RQAUbE5MuKd2gx3u6ph3HGWpZQtQozFyx4N+boPz0yI=;
	b=aTK+PaeXvUZiHD15mbvXWdG/bbG+E5L8EskEGvwuvwiEXUwtDsbucw5JtT9nADE0S7
	hS7u4qYo/Hnaxo+a6eTsW1L+9/9/YJQ0shSJLikreXXU9Jb74ARdZ4pc+/5+vDdEfAjM
	XYlpeCL4TRKLZ3Sx1io64yTs+yOa0Bayu5xNWcK0c+8vh1kElQjHUVl8EPMf4XzzAGL5
	s/YhYVA46mUvjoIH634agD70/dN+ZZlARL7R/T2uu2J/AA4NtETp7tnadQmAszEIt4fs
	FBVDb3Wcjg/tbpiUOnUhfytoehdCx7DAONyuebCtM7w1xFn/tsk5hfsdhSAGKq3J+c1C
	f+5g==
X-Received: by 10.194.2.145 with SMTP id 17mr6218179wju.79.1427192113264;
	Tue, 24 Mar 2015 03:15:13 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fs8sm15206437wib.8.2015.03.24.03.15.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:15:12 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 10:15:20 +0000
Message-Id: <1427192120-11368-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Improve auditing in CACHE and GNTTAB
	interfaces
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Add 'Get' and 'Put' counters to CACHEs which can then be checked for
equality at destruction time to make sure all objects have been returned.
Also add a list of GNTTAB caches so that the code can BUG on any
outstanding caches at Release.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/cache.c  | 31 ++++++++++++++++++++++---------
 src/xenbus/gnttab.c | 21 ++++++++++++++++++++-
 2 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index ba7dcdf..83993ca 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -79,8 +79,10 @@ struct _XENBUS_CACHE {
     VOID                    (*ReleaseLock)(PVOID);
     PVOID                   Argument;
     LIST_ENTRY              GetList;
+    LONG                    GetCount;
     PLIST_ENTRY             PutList;
-    LONG                    ObjectCount;
+    LONG                    PutCount;
+    LONG                    ListCount;
     PXENBUS_CACHE_MAGAZINE  Magazine;
     ULONG                   MagazineCount;
     XENBUS_CACHE_FIST       FIST;
@@ -225,7 +227,7 @@ CacheGetObjectFromList(
     KIRQL                       Irql = PASSIVE_LEVEL;
     NTSTATUS                    status;
 
-    Count = InterlockedDecrement(&Cache->ObjectCount);
+    Count = InterlockedDecrement(&Cache->ListCount);
 
     status = STATUS_NO_MEMORY;
     if (Count < 0)
@@ -255,7 +257,7 @@ CacheGetObjectFromList(
     return Object;
 
 fail1:
-    (VOID) InterlockedIncrement(&Cache->ObjectCount);
+    (VOID) InterlockedIncrement(&Cache->ListCount);
 
     return NULL;    
 }
@@ -294,7 +296,7 @@ CachePutObjectToList(
 
     KeMemoryBarrier();
 
-    (VOID) InterlockedIncrement(&Cache->ObjectCount);
+    (VOID) InterlockedIncrement(&Cache->ListCount);
 }
 
 static PVOID
@@ -305,6 +307,7 @@ CacheGetObjectFromMagazine(
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
 
+    ASSERT3U(Index, <, Cache->MagazineCount);
     Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
@@ -330,6 +333,7 @@ CachePutObjectToMagazine(
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
 
+    ASSERT3U(Index, <, Cache->MagazineCount);
     Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
@@ -385,6 +389,8 @@ CacheGet(
 done:
     KeLowerIrql(Irql);
 
+    (VOID) InterlockedIncrement(&Cache->GetCount);
+
     return Object;
 }
 
@@ -401,6 +407,8 @@ CachePut(
 
     UNREFERENCED_PARAMETER(Interface);
 
+    (VOID) InterlockedIncrement(&Cache->PutCount);
+
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
     Index = KeGetCurrentProcessorNumberEx(NULL);
 
@@ -679,17 +687,22 @@ CacheDestroy(
 
     RtlZeroMemory(&Cache->ListEntry, sizeof (LIST_ENTRY));
 
+    ASSERT3U(Cache->PutCount, ==, Cache->GetCount);
+    Cache->PutCount = 0;
+    Cache->GetCount = 0;
+
     Cache->Reservation = 0;
     CacheFlushMagazines(Cache);
-    CacheSpill(Cache, Cache->ObjectCount);
-
-    ASSERT3U(Cache->ObjectCount, ==, 0);
 
     ASSERT(IsZeroMemory(Cache->Magazine, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
     __CacheFree(Cache->Magazine);
     Cache->Magazine = NULL;
     Cache->MagazineCount = 0;
 
+    CacheSpill(Cache, Cache->ListCount);
+    ASSERT3U(Cache->ListCount, ==, 0);
+
+    ASSERT(IsListEmpty(&Cache->GetList));
     RtlZeroMemory(&Cache->GetList, sizeof (LIST_ENTRY));
 
     RtlZeroMemory(&Cache->FIST, sizeof (XENBUS_CACHE_FIST));
@@ -737,7 +750,7 @@ CacheDebugCallback(
                          &Context->DebugInterface,
                          "- %s: Count = %d (Reservation = %d)\n",
                          Cache->Name,
-                         Cache->ObjectCount,
+                         Cache->ListCount,
                          Cache->Reservation);
         }
     }
@@ -793,7 +806,7 @@ CacheMonitor(
 
             Cache = CONTAINING_RECORD(ListEntry, XENBUS_CACHE, ListEntry);
 
-            Count = Cache->ObjectCount;
+            Count = Cache->ListCount;
 
             if (Count < Cache->Reservation)
                 CacheFill(Cache, Cache->Reservation - Count);
diff --git a/src/xenbus/gnttab.c b/src/xenbus/gnttab.c
index 3912028..165e38f 100644
--- a/src/xenbus/gnttab.c
+++ b/src/xenbus/gnttab.c
@@ -53,8 +53,9 @@
 #define MAXNAMELEN  128
 
 struct _XENBUS_GNTTAB_CACHE {
-    PXENBUS_GNTTAB_CONTEXT  Context;
+    LIST_ENTRY              ListEntry;
     CHAR                    Name[MAXNAMELEN];
+    PXENBUS_GNTTAB_CONTEXT  Context;
     VOID                    (*AcquireLock)(PVOID);
     VOID                    (*ReleaseLock)(PVOID);
     PVOID                   Argument;
@@ -81,6 +82,7 @@ struct _XENBUS_GNTTAB_CONTEXT {
     PXENBUS_SUSPEND_CALLBACK    SuspendCallbackEarly;
     XENBUS_DEBUG_INTERFACE      DebugInterface;
     PXENBUS_DEBUG_CALLBACK      DebugCallback;
+    LIST_ENTRY                  List;
 };
 
 #define XENBUS_GNTTAB_TAG   'TTNG'
@@ -321,6 +323,7 @@ GnttabCreateCache(
     )
 {
     PXENBUS_GNTTAB_CONTEXT      Context = Interface->Context;
+    KIRQL                       Irql;
     NTSTATUS                    status;
 
     *Cache = __GnttabAllocate(sizeof (XENBUS_GNTTAB_CACHE));
@@ -356,6 +359,10 @@ GnttabCreateCache(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    KeAcquireSpinLock(&Context->Lock, &Irql);
+    InsertTailList(&Context->List, &(*Cache)->ListEntry);
+    KeReleaseSpinLock(&Context->Lock, Irql);
+
     return STATUS_SUCCESS;
 
 fail3:
@@ -388,6 +395,13 @@ GnttabDestroyCache(
     )
 {
     PXENBUS_GNTTAB_CONTEXT      Context = Interface->Context;
+    KIRQL                       Irql;
+
+    KeAcquireSpinLock(&Context->Lock, &Irql);
+    RemoveEntryList(&Cache->ListEntry);
+    KeReleaseSpinLock(&Context->Lock, Irql);
+
+    RtlZeroMemory(&Cache->ListEntry, sizeof (LIST_ENTRY));
 
     XENBUS_CACHE(Destroy,
                  &Context->CacheInterface,
@@ -717,6 +731,9 @@ GnttabRelease(
 
     Trace("====>\n");
 
+    if (!IsListEmpty(&Context->List))
+        BUG("OUTSTANDING CACHES");
+
     XENBUS_DEBUG(Deregister,
                  &Context->DebugInterface,
                  Context->DebugCallback);
@@ -816,6 +833,7 @@ GnttabInitialize(
     ASSERT(NT_SUCCESS(status));
     ASSERT((*Context)->DebugInterface.Interface.Context != NULL);
 
+    InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
     (*Context)->Fdo = Fdo;
@@ -878,6 +896,7 @@ GnttabTeardown(
     Context->Fdo = NULL;
 
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
+    RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
 
     RtlZeroMemory(&Context->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:15:18 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLri-00011B-2T; Tue, 24 Mar 2015 10:15:18 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaLrg-000113-B3
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:15:16 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
	F8/95-01116-33931155; Tue, 24 Mar 2015 10:15:15 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1427192113!11136608!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17618 invoked from network); 24 Mar 2015 10:15:13 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:15:13 -0000
Received: by wibg7 with SMTP id g7so70375289wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:15:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=RQAUbE5MuKd2gx3u6ph3HGWpZQtQozFyx4N+boPz0yI=;
	b=aTK+PaeXvUZiHD15mbvXWdG/bbG+E5L8EskEGvwuvwiEXUwtDsbucw5JtT9nADE0S7
	hS7u4qYo/Hnaxo+a6eTsW1L+9/9/YJQ0shSJLikreXXU9Jb74ARdZ4pc+/5+vDdEfAjM
	XYlpeCL4TRKLZ3Sx1io64yTs+yOa0Bayu5xNWcK0c+8vh1kElQjHUVl8EPMf4XzzAGL5
	s/YhYVA46mUvjoIH634agD70/dN+ZZlARL7R/T2uu2J/AA4NtETp7tnadQmAszEIt4fs
	FBVDb3Wcjg/tbpiUOnUhfytoehdCx7DAONyuebCtM7w1xFn/tsk5hfsdhSAGKq3J+c1C
	f+5g==
X-Received: by 10.194.2.145 with SMTP id 17mr6218179wju.79.1427192113264;
	Tue, 24 Mar 2015 03:15:13 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id fs8sm15206437wib.8.2015.03.24.03.15.12
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:15:12 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 10:15:20 +0000
Message-Id: <1427192120-11368-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Improve auditing in CACHE and GNTTAB
	interfaces
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Add 'Get' and 'Put' counters to CACHEs which can then be checked for
equality at destruction time to make sure all objects have been returned.
Also add a list of GNTTAB caches so that the code can BUG on any
outstanding caches at Release.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/cache.c  | 31 ++++++++++++++++++++++---------
 src/xenbus/gnttab.c | 21 ++++++++++++++++++++-
 2 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index ba7dcdf..83993ca 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -79,8 +79,10 @@ struct _XENBUS_CACHE {
     VOID                    (*ReleaseLock)(PVOID);
     PVOID                   Argument;
     LIST_ENTRY              GetList;
+    LONG                    GetCount;
     PLIST_ENTRY             PutList;
-    LONG                    ObjectCount;
+    LONG                    PutCount;
+    LONG                    ListCount;
     PXENBUS_CACHE_MAGAZINE  Magazine;
     ULONG                   MagazineCount;
     XENBUS_CACHE_FIST       FIST;
@@ -225,7 +227,7 @@ CacheGetObjectFromList(
     KIRQL                       Irql = PASSIVE_LEVEL;
     NTSTATUS                    status;
 
-    Count = InterlockedDecrement(&Cache->ObjectCount);
+    Count = InterlockedDecrement(&Cache->ListCount);
 
     status = STATUS_NO_MEMORY;
     if (Count < 0)
@@ -255,7 +257,7 @@ CacheGetObjectFromList(
     return Object;
 
 fail1:
-    (VOID) InterlockedIncrement(&Cache->ObjectCount);
+    (VOID) InterlockedIncrement(&Cache->ListCount);
 
     return NULL;    
 }
@@ -294,7 +296,7 @@ CachePutObjectToList(
 
     KeMemoryBarrier();
 
-    (VOID) InterlockedIncrement(&Cache->ObjectCount);
+    (VOID) InterlockedIncrement(&Cache->ListCount);
 }
 
 static PVOID
@@ -305,6 +307,7 @@ CacheGetObjectFromMagazine(
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
 
+    ASSERT3U(Index, <, Cache->MagazineCount);
     Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
@@ -330,6 +333,7 @@ CachePutObjectToMagazine(
 {
     PXENBUS_CACHE_MAGAZINE  Magazine;
 
+    ASSERT3U(Index, <, Cache->MagazineCount);
     Magazine = &Cache->Magazine[Index];
 
     for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
@@ -385,6 +389,8 @@ CacheGet(
 done:
     KeLowerIrql(Irql);
 
+    (VOID) InterlockedIncrement(&Cache->GetCount);
+
     return Object;
 }
 
@@ -401,6 +407,8 @@ CachePut(
 
     UNREFERENCED_PARAMETER(Interface);
 
+    (VOID) InterlockedIncrement(&Cache->PutCount);
+
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
     Index = KeGetCurrentProcessorNumberEx(NULL);
 
@@ -679,17 +687,22 @@ CacheDestroy(
 
     RtlZeroMemory(&Cache->ListEntry, sizeof (LIST_ENTRY));
 
+    ASSERT3U(Cache->PutCount, ==, Cache->GetCount);
+    Cache->PutCount = 0;
+    Cache->GetCount = 0;
+
     Cache->Reservation = 0;
     CacheFlushMagazines(Cache);
-    CacheSpill(Cache, Cache->ObjectCount);
-
-    ASSERT3U(Cache->ObjectCount, ==, 0);
 
     ASSERT(IsZeroMemory(Cache->Magazine, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
     __CacheFree(Cache->Magazine);
     Cache->Magazine = NULL;
     Cache->MagazineCount = 0;
 
+    CacheSpill(Cache, Cache->ListCount);
+    ASSERT3U(Cache->ListCount, ==, 0);
+
+    ASSERT(IsListEmpty(&Cache->GetList));
     RtlZeroMemory(&Cache->GetList, sizeof (LIST_ENTRY));
 
     RtlZeroMemory(&Cache->FIST, sizeof (XENBUS_CACHE_FIST));
@@ -737,7 +750,7 @@ CacheDebugCallback(
                          &Context->DebugInterface,
                          "- %s: Count = %d (Reservation = %d)\n",
                          Cache->Name,
-                         Cache->ObjectCount,
+                         Cache->ListCount,
                          Cache->Reservation);
         }
     }
@@ -793,7 +806,7 @@ CacheMonitor(
 
             Cache = CONTAINING_RECORD(ListEntry, XENBUS_CACHE, ListEntry);
 
-            Count = Cache->ObjectCount;
+            Count = Cache->ListCount;
 
             if (Count < Cache->Reservation)
                 CacheFill(Cache, Cache->Reservation - Count);
diff --git a/src/xenbus/gnttab.c b/src/xenbus/gnttab.c
index 3912028..165e38f 100644
--- a/src/xenbus/gnttab.c
+++ b/src/xenbus/gnttab.c
@@ -53,8 +53,9 @@
 #define MAXNAMELEN  128
 
 struct _XENBUS_GNTTAB_CACHE {
-    PXENBUS_GNTTAB_CONTEXT  Context;
+    LIST_ENTRY              ListEntry;
     CHAR                    Name[MAXNAMELEN];
+    PXENBUS_GNTTAB_CONTEXT  Context;
     VOID                    (*AcquireLock)(PVOID);
     VOID                    (*ReleaseLock)(PVOID);
     PVOID                   Argument;
@@ -81,6 +82,7 @@ struct _XENBUS_GNTTAB_CONTEXT {
     PXENBUS_SUSPEND_CALLBACK    SuspendCallbackEarly;
     XENBUS_DEBUG_INTERFACE      DebugInterface;
     PXENBUS_DEBUG_CALLBACK      DebugCallback;
+    LIST_ENTRY                  List;
 };
 
 #define XENBUS_GNTTAB_TAG   'TTNG'
@@ -321,6 +323,7 @@ GnttabCreateCache(
     )
 {
     PXENBUS_GNTTAB_CONTEXT      Context = Interface->Context;
+    KIRQL                       Irql;
     NTSTATUS                    status;
 
     *Cache = __GnttabAllocate(sizeof (XENBUS_GNTTAB_CACHE));
@@ -356,6 +359,10 @@ GnttabCreateCache(
     if (!NT_SUCCESS(status))
         goto fail3;
 
+    KeAcquireSpinLock(&Context->Lock, &Irql);
+    InsertTailList(&Context->List, &(*Cache)->ListEntry);
+    KeReleaseSpinLock(&Context->Lock, Irql);
+
     return STATUS_SUCCESS;
 
 fail3:
@@ -388,6 +395,13 @@ GnttabDestroyCache(
     )
 {
     PXENBUS_GNTTAB_CONTEXT      Context = Interface->Context;
+    KIRQL                       Irql;
+
+    KeAcquireSpinLock(&Context->Lock, &Irql);
+    RemoveEntryList(&Cache->ListEntry);
+    KeReleaseSpinLock(&Context->Lock, Irql);
+
+    RtlZeroMemory(&Cache->ListEntry, sizeof (LIST_ENTRY));
 
     XENBUS_CACHE(Destroy,
                  &Context->CacheInterface,
@@ -717,6 +731,9 @@ GnttabRelease(
 
     Trace("====>\n");
 
+    if (!IsListEmpty(&Context->List))
+        BUG("OUTSTANDING CACHES");
+
     XENBUS_DEBUG(Deregister,
                  &Context->DebugInterface,
                  Context->DebugCallback);
@@ -816,6 +833,7 @@ GnttabInitialize(
     ASSERT(NT_SUCCESS(status));
     ASSERT((*Context)->DebugInterface.Interface.Context != NULL);
 
+    InitializeListHead(&(*Context)->List);
     KeInitializeSpinLock(&(*Context)->Lock);
 
     (*Context)->Fdo = Fdo;
@@ -878,6 +896,7 @@ GnttabTeardown(
     Context->Fdo = NULL;
 
     RtlZeroMemory(&Context->Lock, sizeof (KSPIN_LOCK));
+    RtlZeroMemory(&Context->List, sizeof (LIST_ENTRY));
 
     RtlZeroMemory(&Context->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:23:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLzF-0002BK-F8; Tue, 24 Mar 2015 10:23:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaLzC-0002BD-8h
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:23:03 +0000
Received: from [193.109.254.147] by server-1.bemta-14.messagelabs.com id
	39/88-01386-40B31155; Tue, 24 Mar 2015 10:23:00 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427192576!12648325!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24922 invoked from network); 24 Mar 2015 10:22:56 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:22:56 -0000
Received: by wixw10 with SMTP id w10so50238511wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:22:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=erhpD6qOLR76hhzzbzP5qso+U+dPsVSZIKwsB/eGEkA=;
	b=mSHVIOYocE6FcRnN7YkOQAnX+MNyz8SlPQp7NWCmprQM2Q/U7rT0hQIIz5gWh/gX1M
	c7pdXeSUcwFlreVqaIs0R/WORs4H+lzekmWdyTdQTBfUdeIE+DoBzYvFgBJ3SynlmxaE
	yN7J+dxxbigrXkfiyg+F3zqaiZNi6TrBPuLqIGwU2I1jxHlPC3Wxmda7tRtXLha9xsSI
	E8TSi/66fD3yDJV/nW6PROoqx8iKwfpyA6Vkw4X/G3k8HDWQHEUiIzl6jIIRVumtc3h3
	WAd/A1zd2BbJZJxp2lNEW/tjx3IK3pRvcHIGwjSlv50ZPPT7A7r5zrQQMnbuNJUy+dgM
	auOg==
X-Gm-Message-State: ALoCoQk7WmuSNb6Qzw4MEzwLBIW9vZWdwwV0GdXd7Iwqs8CXUAaT9sd1870vVX6Mb3Thm0KGOCoW
X-Received: by 10.180.12.194 with SMTP id a2mr27738601wic.55.1427192576217;
	Tue, 24 Mar 2015 03:22:56 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id dc9sm15237275wib.9.2015.03.24.03.22.43
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:22:54 -0700 (PDT)
Message-ID: <55113AF4.4010808@m2r.biz>
Date: Tue, 24 Mar 2015 11:22:44 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------080008050502080400090006"
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------080008050502080400090006
Content-Type: multipart/alternative;
 boundary="------------050602040400090900050104"


--------------050602040400090900050104
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 8884
Content-Transfer-Encoding: quoted-printable

Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
> Sorry for the delay, I missed this=85
>
> It=92s fairly easy=85 The service keys are named the same as the driver, 
> so go look in HKLM/CurrentControlSet/Services and find all the things 
> starting with XEN and then either get rid of them or set the StartType 
> value to 4 (disabled).
>
> Paul
>

Thanks for reply, I'll try to do a bat script for remove all files and 
registry keys of pv drivers and I'll post it for help also other people 
having problems about.

Today after updating pv drivers to latest build I had blue screen after 
reboot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------050602040400090900050104
Content-Type: text/html; charset=windows-1252
Content-Length: 57639
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 20/03/2015 11:22, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D062F7.D59CEDA0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Sorry for the delay, I
              missed this=85<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">It=92s fairly easy=85 The
              service keys are named the same as the driver, so go look
              in HKLM/<span class=3D"SpellE">CurrentControlSet</span>/Services
              and find all the things starting with XEN and then either
              get rid of them or set the
              <span class=3D"SpellE">StartType</span> value to 4
              (disabled).<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Thanks for reply, I'll try to do a bat script for remove all files
    and registry keys of pv drivers and I'll post it for help also other
    people having problems about.<br>
    <br>
    Today after updating pv drivers to latest build I had blue screen
    after reboot windows, seems about xenvif.<br>
    In attachments qemu log and crash minidump.<br>
    <br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    17 March 2015 09:00<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Windows driver removal is a black art and is
                  broken in different ways on different versions of
                  Windows. As you correctly observe, using the pnputil
                  tool does not actually remove the drivers, and hence
                  you=92ll see DllInitialize() and DriverEntry() functions
                  called *<b><span style=3D"font-weight:bold">but</span></b>*
                  there should be no AddDevice() called i.e. the drivers
                  are unbound from the devices but the modules are still
                  present.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>If you also want to stop the driver modules
                  from loading then you need to remove the service keys
                  from the registry, which you should be able to safely
                  do after the reboot. If you just remove the binaries
                  from system32 then you may well end up in a situation
                  where the registry is telling the system to load a
                  driver but, when it looks, the binary has gone.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Can you tell me which ones registry keys I must delete
                with the manually remove of remaining pv drivers in
                system32 without cause problems please=3F<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      16 March 2015 15:25<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                    a look in
                    C:\Windows\System32\DriverStore\FileRepository. If
                    you still have packages for old drivers in here then
                    Windows can find them and re-install them even if
                    you think you=92ve uninstalled. The correct way to
                    remove packages is using =91pnputil =96d=92 but it=92s a bit
                    clunky.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I removed all pv drivers visible in windows control
                  panel, after I removed with "pnputil -f -d" all
                  remaining drivers found with "pnputil /e" and
                  rebooted.<br>
                  Now still load latest xenbus (visible from qemu log)
                  and network is not available even if
                  .../FileRepository folder don't have other xen's
                  drivers.<br>
                  I tried a search and I found there are still all pv
                  drivers files in C:\windows\system32 and
                  C:\windows\system32\drivers<br>
                  I removed also these files and rebooted and now didn't
                  load pv drivers, emulated network is working and seems
                  ok.<br>
                  Previous week tests instead gave me windows blue
                  screen "registry error" 1 minute after windows boot.<br>
                  <br>
                  Is there another way to clean uninstall all drivers
                  without risk of problems=3F<br>
                  <br>
                  Thanks for any reply and sorry for my bad english.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        11 March 2015 15:39<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 11/03/2015
                      16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                      you tried uninstalling all versions of XENVIF and
                      XENNET and then re-installing the latest=3F Windows
                      should always prefer the newest driver by date but
                      maybe something has gone wrong and for some reason
                      is favouring a really old version you have lying
                      around in DriverStore.</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Yes, I already uninstalled all old drivers build of
                    all component 3 tests ago, rebooted windows and
                    after installed the new build but seems olders
                    xenvif and xennet still remained even if not visible
                    in control center and always on new xenvif and
                    xennet install give me "ready to use" instead of
                    "device updated" message at end.<br>
                    The only other way I know to delete the drivers is
                    search the files in c:/windows/... but I tried time
                    ago with other things gave me always blue screen on
                    next boot, so I not tried with pv.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                    RangeSetPop error is not anything to worry about. It
                    is expected. It simply means the grant table has run
                    out of space and needs to be expanded, which is why
                    you see the error immediately followed by a map and
                    populate of the next grant table page.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          11 March 2015 15:17<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Cc:</span></b>
                          Paul Durrant<br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          [win-pv-devel] xenvif xennet don't update or
                          load correctly and another error saw in qemu
                          log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">As I
                      reported time ago there was strange thing when
                      update network components: give "ready to use"
                      instead of "device updated" message at end of
                      driver component install.<br>
                      Today I saw in qemu log of one W7 pro 64 bit domU
                      this:<br>
                      xen_platform_log xen platform: XENVIF|DriverEntry:
                      XENVIF 8.0.0 (0) (24.09.2014)<br>
                      xen_platform_log xen platform: XENNET|DriverEntry:
                      XENNET 8.0.0 (0) (24.09.2014)<br>
                      <br>
                      Is probably the first build I installed in this
                      domU and that I already uninstall from control
                      center time ago.<br>
                      <br>
                      other components instead seems loaded correctly
                      the latest build installed:<br>
                      xen_platform_log xen platform: XEN|DllInitialize:
                      XEN 8.0.0 (41) (05.03.2015)<br>
                      xen_platform_log xen platform:
                      XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                      (05.03.2015)<br>
                      xen_platform_log xen platform:
                      XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                      (03.03.2015)<br>
                      xen_platform_log xen platform:
                      XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                      <br>
                      ----------<br>
                      <br>
                      I saw also these errors in qemu log:<br>
                      ...<br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">xen_platform_log
                      xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000200 -
                      000003ff]<br>
                      <b><span style=3D"font-weight:bold">xen_platform_log
                          xen platform: XENBUS|RangeSetPop: fail1
                          (c000009a)</span></b><br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000400 -
                      000005ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000600 -
                      000007ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000800 -
                      000009ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000a00 -
                      00000bff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000c00 -
                      00000dff]</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                    color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                      style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                      New Roman&quot;">...<br>
                      Can someone tell me something about=3F<br>
                      Can they be related to some failed memory
                      balloning error in dom0's kern.log and syslog=3F<br>
                      <br>
                      Full qemu log in attachment is needed.<br>
                      <br>
                      If you need more informations and/or tests tell me
                      and I'll post them.<br>
                      Thanks for any reply and sorry for my bad english.<br
                        style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span><o:p></o:p></font></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------050602040400090900050104--

--------------080008050502080400090006
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7.log.1"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7.log.1"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.934000 ms, bitrate 686557157 bps (654.751927 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XEN|AcpiFindRsdp: 0x00000000000F0D90
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|AcpiGetXsdt: 0x00000000FC00A010
xen_platform_log xen platform: XEN|SystemProcessorInformation: ====> (0:0)
xen_platform_log xen platform: XEN|SystemProcessorInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemProcessorInformation: APIC ID: 00
xen_platform_log xen platform: XEN|SystemProcessorInformation: PROCESSOR ID: 00
xen_platform_log xen platform: XEN|SystemProcessorInformation: <==== (0:0)
xen_platform_log xen platform: XEN|SystemProcessorInformation: ====> (0:1)
xen_platform_log xen platform: XEN|SystemProcessorInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemProcessorInformation: APIC ID: 02
xen_platform_log xen platform: XEN|SystemProcessorInformation: PROCESSOR ID: 01
xen_platform_log xen platform: XEN|SystemProcessorInformation: <==== (0:1)
xen_platform_log xen platform: XEN: HYPERCALL PAGE 0 @ 00000000.036aa000
xen_platform_log xen platform: XENFILT|DriverEntry: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XEN: 4.6-unstable (__XEN_INTERFACE_VERSION__ = 00040600)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800255F040 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80025605D0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DD040 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DD5D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DE5D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DF5D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E05D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E15D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E25D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E35D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E45D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E55D0 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E65D0 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E8040 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: ACTIVE DEVICE PRESENT
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENFILT|DriverSetFilterState: PENDING
xen_platform_log xen platform: XENFILT|PdoDestroy: FFFFFA80024E25D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30) (device disappeared)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: DISABLED
xen_platform_log xen platform: XENBUS|DriverEntry: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80024F7040 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024F8998: Shared LevelSensitive CPU 0:0 VECTOR 51
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024F8748: DeviceExclusive Latched CPU 0:0 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016BAF58: DeviceExclusive Latched CPU 0:1 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: XENBUS|FdoCreateIoSpace: 00000000.f8000000 - 00000000.f8ffffff
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[0] @ 00000000.2c0fc000
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[1] @ 00000000.2bbfd000
xen_platform_log xen platform: XENBUS|EvtchnAbiAcquire: FIFO
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0:0
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0:1
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: STORE: EVTCHN 1
xen_platform_log xen platform: EVTCHN_FIFO: EVENTARRAY[0] @ 00000000.2b57e000
xen_platform_log xen platform: XENBUS|EvtchnFifoExpand: added ports [00000000 - 000003ff]
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000008)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000008)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000008)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002576040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800257A040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002580040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.0.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.19 (12/3/2015)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (19) (12.03.2015)
xen_platform_log xen platform: XENDISK|FdoCreate:FFFFFA800258AB40
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 3)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/vbd/2/768)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000020 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/1000
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT INDIRECT 
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : INDIRECT 100
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA800258E800 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENDISK|PdoCreate:FFFFFA800258CA10
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA800258C060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA800258C060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 4)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.14 (12/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4CE8C FFFFFA8002D928A0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4BDD4 FFFFFA8002D928B0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4C968 FFFFFA8002D92AC0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA8002D92B50 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 00000000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 00000000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 00000000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 00000000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 00000000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000c00 - 00000dff]
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|__FrontendSetMaxQueues: 2
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8003101200 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF880017DB850
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8003101200 (0 00000002)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF880017DB900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF880017D0D30
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
main_channel_handle_parsed: agent start
main_channel_handle_parsed: agent start
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Guest agent lite main loop starting
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to XenTime
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: hosttimeIsUTC: Open Registry Key
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Time is now  2015.3.24 10:47:49.300
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to 2015.3.24 10:47:49.263
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to add feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Establish watch control/shutdown
xen_platform_log xen platform: XENIFACE|StartWatch: Start Watch FFFFFA8003678970
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to advertise features
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:MethodExec Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SessionStart Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVValue Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVPath Failed 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Failed to advertise shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to kick xapi 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent woke up for 3
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Fire 000000000040DA60
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fire feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Check if we need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: No need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fired feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
main_channel_handle_parsed: agent start
xen_platform_log xen platform: XENVIF|PdoDestroy: FFFFFA8003101200 (0) (FDO removed)
xen_platform_log xen platform: XENVIF|FdoDestroy: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENVIF|DriverUnload: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 4)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|__FrontendSetMaxQueues: 2
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA80037F6D40 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF880017DB850
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA80037F6D40 (0 00000002)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF880017DB900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF880017D0D30
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENIFACE|WmiFinalise: DRV: XenIface WMI Finalisation
xen_platform_log xen platform: XENIFACE|FdoDestroy: FFFFFA8002D92B50 (IFACE)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.14 (12/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003574E8C FFFFFA80037A2780
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003573DD4 FFFFFA80037A2790
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003574968 FFFFFA80037A29A0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA80037A69E0 (IFACE)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (17) (20.03.2015)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF880017D7270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|__FrontendSetNumQueues: 2
xen_platform_log xen platform: XENBUS|EvtchnBind: [9]: CPU 0:1
xen_platform_log xen platform: XENBUS|EvtchnBind: [11]: CPU 0:1
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 2)
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterSetInformation: UNSUPPORTED OID 00010118
xen_platform_log xen platform: XENCRSH|CRASH|XencrshEntryPoint:8.0.0.19 (12/3/2015)
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: XENBUS|SUSPEND: Count = 0
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 0000000000007D10 (FFFFFA80024F7380)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 0000000000010DF8 (FFFFFA80024F7560)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 00000000000134AC (FFFFFA80024F9000)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 000000000000E658 (FFFFFA80024F8E70)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000007D60 (FFFFFA80024F7380)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 00000000000134EC (FFFFFA80024F9000)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 000000000000D538 (FFFFFA80024F7B40)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA800250CE30)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvbd.sys + 0000000000007D04 (FFFFFA8002590538)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvbd.sys + 000000000000B990 (FFFFFA800258EDA0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA80024F8C30)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 0000000000006630 (FFFFFA80037E6AB0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000000AEB4 (FFFFFA800317F360)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA8002510600)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xeniface.sys + 000000000000216C (FFFFFA80037A2710)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000000E5C4 (FFFFFA800365E1F0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000001D630 (FFFFFA8003729020)
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000013CE4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000014D70)
xen_platform_log xen platform: XENBUS|RANGE_SET: RANGE SETS:
xen_platform_log xen platform: XENBUS|RANGE_SET:  - io_space:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {f8021000 - f8ffffff}*
xen_platform_log xen platform: XENBUS|RANGE_SET:  - balloon:
xen_platform_log xen platform: XENBUS|RANGE_SET:    EMPTY
xen_platform_log xen platform: XENBUS|RANGE_SET:  - gnttab:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {27 - 27}*
xen_platform_log xen platform: XENBUS|RANGE_SET:    {65 - 65}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {cd - cd}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {124 - 124}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {153 - 153}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {159 - 159}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {16f - 16f}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {172 - 172}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {174 - 174}
xen_platform_log xen platform: XENBUS|RANGE_SET:    ...
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-0_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {1 - 3ff}*
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-0_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {8 - 8}*
xen_platform_log xen platform: XENBUS|RANGE_SET:    {a - 3ff}
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-1_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {9 - 3ff}*
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000014D70)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000007304)
xen_platform_log xen platform: XENBUS|EVTCHN: EVENT CHANNELS:
xen_platform_log xen platform: XENBUS|EVTCHN: - (0001) BY xenbus.sys + 00000000000129F1 ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: FIXED
xen_platform_log xen platform: XENBUS|EVTCHN: - (0006) BY xenbus.sys + 000000000000A528 ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: VIRQ: Index = 1
xen_platform_log xen platform: XENBUS|EVTCHN: - (0007) BY xenvbd.sys + 0000000000017CFD AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (0008) BY xenvif.sys + 000000000000F06B AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (0009) BY xenvif.sys + 000000000000F06B AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (000a) BY xenvif.sys + 0000000000014E69 AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (000b) BY xenvif.sys + 0000000000014E69 AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000007304)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000010A58)
xen_platform_log xen platform: XENBUS|SHARED_INFO: Address = 00000000.f8000000
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000010A58)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000012700)
xen_platform_log xen platform: XENBUS|STORE: Address = 00000000.feffc000
xen_platform_log xen platform: XENBUS|STORE: BUFFERS:
xen_platform_log xen platform: XENBUS|STORE: - (FFFFFA80036AB100) xenvif.sys + 000000000000A338
xen_platform_log xen platform: XENBUS|STORE: WATCHES:
xen_platform_log xen platform: XENBUS|STORE: - (BF59) ON device BY xenbus.sys + 000000000000A579 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5A) ON control/shutdown BY xenbus.sys + 000000000000A5B5 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5B) ON memory/target BY xenbus.sys + 000000000000A628 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5C) ON device/vbd BY xenvbd.sys + 0000000000008686 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF60) ON /local/domain/0/backend/vbd/2/768/state BY xenvbd.sys + 000000000000B424 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF61) ON /local/domain/0/backend/vbd/2/768/info BY xenvbd.sys + 000000000000B456 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF62) ON /local/domain/0/backend/vbd/2/768/sector-size BY xenvbd.sys + 000000000000B488 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF63) ON /local/domain/0/backend/vbd/2/768/sectors BY xenvbd.sys + 000000000000B4BA [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF6F) ON device/vif BY xenvif.sys + 0000000000004622 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF78) ON /local/domain/0/backend/vif/2/0/online BY xenvif.sys + 000000000000AD33 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF7B) ON device/vif/0/disconnect BY xenvif.sys + 000000000000BB82 [ACTIVE]
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000012700)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000016778)
xen_platform_log xen platform: XENBUS|CACHE: CACHES:
xen_platform_log xen platform: XENBUS|CACHE: - disk_0_gnttab: Count = 55 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_buffer: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_packet: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_packet: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_buffer: Count = 1 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_fragment: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_buffer: Count = 1 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_fragment: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_gnttab: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_gnttab: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_transmitter_packet: Count = 32 (Reservation = 32)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_gnttab: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_gnttab: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - packet_cache: Count = 33 (Reservation = 32)
xen_platform_log xen platform: XENBUS|CACHE: - buffer_cache: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000016778)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 000000000000E2D0)
xen_platform_log xen platform: XENBUS|GNTTAB: Address = 00000000.f8001000
xen_platform_log xen platform: XENBUS|GNTTAB: FrameIndex = 6
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 000000000000E2D0)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvbd.sys + 00000000000054DC)
xen_platform_log xen platform: XENVBD: FDO: Version: 8.0.0.19 (12/3/2015)
xen_platform_log xen platform: XENVBD: FDO: Fdo: 0xFFFFFA8002590538 (ref-count 1) CRASHING
xen_platform_log xen platform: XENVBD: FDO: DevObj 0xFFFFFA8002583060 LowerDevObj 0xFFFFFA80024FA580 PhysDevObj 0xFFFFFA80024FA580
xen_platform_log xen platform: XENVBD: FDO: DevicePowerState: D0
xen_platform_log xen platform: XENVBD: FDO: Enumerator      : vbd (0x0000000000000000)
xen_platform_log xen platform: XENVBD: FDO: Srbs            : 0 / 20 (11681 Total)
xen_platform_log xen platform: XENVBD: BUFFER: Allocated/Freed : 32 / 0
xen_platform_log xen platform: XENVBD: BUFFER: Free (Cur/Max)  : 32 / 32
xen_platform_log xen platform: XENVBD: BUFFER: Used (Cur/Max)  : 0 / 1
xen_platform_log xen platform: XENVBD: BUFFER: Reaped          : 0 / 0
xen_platform_log xen platform: XENVBD: FDO: ====> Target[0  ]    : 0xFFFFFA800258E800
xen_platform_log xen platform: XENVBD: PDO: Fdo 0xFFFFFA8002590538 DeviceObject 0xFFFFFA800258C060
xen_platform_log xen platform: XENVBD: PDO: ReferenceCount 1
xen_platform_log xen platform: XENVBD: PDO: DevicePnpState Started (Present)
xen_platform_log xen platform: XENVBD: PDO: DevicePowerState D0
xen_platform_log xen platform: XENVBD: PDO: PV Not Missing
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: READ=5893 WRITE=1539
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: INDIRECT_READ=2617 INDIRECT_WRITE=89
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: BARRIER=0 DISCARD=43
xen_platform_log xen platform: XENVBD: PDO: Failed: Maps=0 Bounces=0 Grants=0
xen_platform_log xen platform: XENVBD: PDO: Segments Granted=83425 Bounced=19
xen_platform_log xen platform: XENVBD: LOOKASIDE: REQUESTs: 0 / 21 (0 failed)
xen_platform_log xen platform: XENVBD: LOOKASIDE: SEGMENTs: 0 / 3500 (0 failed)
xen_platform_log xen platform: XENVBD: LOOKASIDE: INDIRECTs: 0 / 20 (0 failed)
xen_platform_log xen platform: XENVBD: QUEUE: Fresh     : 0 / 13
xen_platform_log xen platform: XENVBD: QUEUE: Prepared  : 0 / 21
xen_platform_log xen platform: XENVBD: QUEUE: Submitted : 0 / 21
xen_platform_log xen platform: XENVBD: QUEUE: Shutdown  : 0 / 0
xen_platform_log xen platform: XENVBD: FRONTEND: TargetId=0 DeviceId=768 BackendId=0
xen_platform_log xen platform: XENVBD: FRONTEND: FrontendPath device/vbd/768
xen_platform_log xen platform: XENVBD: FRONTEND: BackendPath  /local/domain/0/backend/vbd/2/768
xen_platform_log xen platform: XENVBD: FRONTEND: TargetPath   data/scsi/target/0
xen_platform_log xen platform: XENVBD: FRONTEND: State   : ENABLED
xen_platform_log xen platform: XENVBD: FRONTEND: Caps    : CONNECTED PAGING DUMP 
xen_platform_log xen platform: XENVBD: FRONTEND: Features: PERSISTENT INDIRECT BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD: FRONTEND: INDIRECT 100
xen_platform_log xen platform: XENVBD: FRONTEND: DISCARD 0/1000
xen_platform_log xen platform: XENVBD: FRONTEND: DiskInfo: 102400000 @ 512 (512) 00000000
xen_platform_log xen platform: XENVBD: GRANTER: CONNECTED ENABLED
xen_platform_log xen platform: XENVBD: GRANTER: 1 / 3521
xen_platform_log xen platform: XENVBD: BLOCKRING: Requests  : 0 / 10181 / 10181
xen_platform_log xen platform: XENVBD: BLOCKRING: SharedRing : 0xFFFFF880063E9000
xen_platform_log xen platform: XENVBD: BLOCKRING: SharedRing : 10181 / 10182 - 10181 / 10182
xen_platform_log xen platform: XENVBD: BLOCKRING: FrontRing  : 10181 / 10181 (32)
xen_platform_log xen platform: XENVBD: BLOCKRING: Order      : 0
xen_platform_log xen platform: XENVBD: BLOCKRING: Grants[0 ] : 0xFFFFFA8002577AF8 (32)
xen_platform_log xen platform: XENVBD: NOTIFIER: Int / DPC : 17844 / 17843
xen_platform_log xen platform: XENVBD: NOTIFIER: Channel : FFFFFA800258D920 (7)
xen_platform_log xen platform: XENVBD: FDO: <==== Target[0  ]    : 0xFFFFFA800258E800
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvbd.sys + 00000000000054DC)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000006BD4)
xen_platform_log xen platform: XENVIF|FRONTEND: PATH: device/vif/0
xen_platform_log xen platform: XENVIF|FRONTEND: STATISTICS:
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_PACKETS_DROPPED              0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BACKEND_ERRORS               0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_FRONTEND_ERRORS              0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_UNICAST_PACKETS              5
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_UNICAST_OCTETS               480
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_MULTICAST_PACKETS            58
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_MULTICAST_OCTETS             12206
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BROADCAST_PACKETS            33
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BROADCAST_OCTETS             3977
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_PACKETS_DROPPED                 10
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BACKEND_ERRORS                  0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_FRONTEND_ERRORS                 0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_UNICAST_PACKETS                 16
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_UNICAST_OCTETS                  2069
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_MULTICAST_PACKETS               0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_MULTICAST_OCTETS                0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BROADCAST_PACKETS               2
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BROADCAST_OCTETS                513
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000006BD4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000000B94C)
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_UNICAST] = Matching
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_MULTICAST] = Matching
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_BROADCAST] = All
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000000B94C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XENVIF|RECEIVER[0]: 0xFFFFFA800380F700 [0] [ENABLED][RUNNING]
xen_platform_log xen platform: XENVIF|RECEIVER[0]: FRONT: req_prod_pvt = 284 rsp_cons = 28 nr_ents = 256 sring = FFFFF880062F2000
xen_platform_log xen platform: XENVIF|RECEIVER[0]: SHARED: req_prod = 284 req_event = 1 rsp_prod = 92 rsp_event = 29
xen_platform_log xen platform: XENVIF|RECEIVER[0]: RequestsPosted = 284 RequestsPushed = 284 ResponsesProcessed = 28
xen_platform_log xen platform: XENVIF|RECEIVER[0]: [RX]: Events = 26 Dpcs = 28
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XENVIF|RECEIVER[1]: 0xFFFFFA800317B020 [1] [ENABLED][RUNNING]
xen_platform_log xen platform: XENVIF|RECEIVER[1]: FRONT: req_prod_pvt = 256 rsp_cons = 0 nr_ents = 256 sring = FFFFF880062F3000
xen_platform_log xen platform: XENVIF|RECEIVER[1]: SHARED: req_prod = 256 req_event = 1 rsp_prod = 25 rsp_event = 1
xen_platform_log xen platform: XENVIF|RECEIVER[1]: RequestsPosted = 256 RequestsPushed = 256 ResponsesProcessed = 0
xen_platform_log xen platform: XENVIF|RECEIVER[1]: [RX]: Events = 0 Dpcs = 2
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000000F5D4)
xen_platform_log xen platform: XENVIF|RECEIVER: Loaned = 18 Returned = 18
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000000F5D4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: 0xFFFFFA8003838010 [ENABLED]
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: FRONT: req_prod_pvt = 128 rsp_cons = 128 nr_ents = 256 sring = FFFFF880062F4000
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: SHARED: req_prod = 128 req_event = 129 rsp_prod = 128 rsp_event = 129
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: RequestsPosted = 128 RequestsPushed = 128 ResponsesProcessed = 128
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: State:
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: - Packet = 0000000000000000
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: - Count = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: PacketsGranted = 39 PacketsCopied = 24 PacketsFaked = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: PacketsQueued = 63 PacketsPrepared = 63 PacketsUnprepared = 0 PacketsSent = 63 PacketsCompleted = 63
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: 0xFFFFFA800175C010 [ENABLED]
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: FRONT: req_prod_pvt = 66 rsp_cons = 66 nr_ents = 256 sring = FFFFF880062F5000
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: SHARED: req_prod = 66 req_event = 67 rsp_prod = 66 rsp_event = 67
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: RequestsPosted = 66 RequestsPushed = 66 ResponsesProcessed = 66
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: State:
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: - Packet = 0000000000000000
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: - Count = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: PacketsGranted = 33 PacketsCopied = 0 PacketsFaked = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: PacketsQueued = 33 PacketsPrepared = 33 PacketsUnprepared = 0 PacketsSent = 33 PacketsCompleted = 33
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 00000000000152D4)
xen_platform_log xen platform: XENVIF|TRANSMITTER: OFFSETS: Offset @ 0 Length @ 0 Mdl @ 0
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 00000000000152D4)
xen_platform_log xen platform: XEN|BUGCHECK: ====>
xen_platform_log xen platform: XEN|BUGCHECK: 000000CE: FFFFF88003C35EDD 0000000000000008 FFFFF88003C35EDD 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: CONTEXT (FFFFF88002D9AD10):
xen_platform_log xen platform: XEN|BUGCHECK: - GS = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - FS = 0053
xen_platform_log xen platform: XEN|BUGCHECK: - ES = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - DS = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - SS = 0018
xen_platform_log xen platform: XEN|BUGCHECK: - CS = 0010
xen_platform_log xen platform: XEN|BUGCHECK: - EFLAGS = 00000082
xen_platform_log xen platform: XEN|BUGCHECK: - RDI = 0000000003C35EDD
xen_platform_log xen platform: XEN|BUGCHECK: - RSI = 0000000000000008
xen_platform_log xen platform: XEN|BUGCHECK: - RBX = 0000000000E0FA78
xen_platform_log xen platform: XEN|BUGCHECK: - RDX = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - RCX = 0000000002D9AD10
xen_platform_log xen platform: XEN|BUGCHECK: - RAX = 000000002F060EC2
xen_platform_log xen platform: XEN|BUGCHECK: - RBP = 0000000003C35EDD
xen_platform_log xen platform: XEN|BUGCHECK: - RIP = 0000000000E0559B
xen_platform_log xen platform: XEN|BUGCHECK: - RSP = 0000000002D9ACF0
xen_platform_log xen platform: XEN|BUGCHECK: - R8 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R9 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R10 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R11 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R12 = 0000000000000050
xen_platform_log xen platform: XEN|BUGCHECK: - R13 = 0000000000000001
xen_platform_log xen platform: XEN|BUGCHECK: - R14 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R15 = 0000000002CFAC40
xen_platform_log xen platform: XEN|BUGCHECK: STACK:
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B200: (0000000000000003 0000000000E086B0 0000000000E07E20 00000000000000CE) xen.sys + 0000000000005504
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B250: (0000000000E10360 0000000000000000 0000000000000004 0000000002CC3500) ntoskrnl.exe + 0000000000128835
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B280: (0000000000E10360 0000000002CC3500 000000000000000F 000000000317FB50) ntoskrnl.exe + 0000000000167EBD
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B950: (0000000000000000 0000000000000000 0000000000000000 0000000000000000) ntoskrnl.exe + 0000000000074FC4
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B990: (0000000000000050 0000000003C35EDD 0000000000000008 0000000002D9BAF0) ntoskrnl.exe + 00000000000F3EB0
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BAF0: (0000000000000008 0000000003C35EDD 0000000000000000 000000000317C570) ntoskrnl.exe + 0000000000072FEE
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BC80: (0000000000000000 0000000000000000 0000000000000000 0000000000B94000) xenvif.sys + 0000000000019EDD
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BC88: (0000000000000000 0000000000000000 0000000000B94000 0000000002C3DE80) 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: <====
Issued domain 2 reboot
qemu: terminating on signal 1 from pid 3886
red_channel_client_disconnect_dummy: rcc=0x7f7c605d4930 (channel=0x7f7c60142d20 type=5 id=0)
snd_channel_put: SndChannel=0x7f7c6034a240 freed
red_channel_client_disconnect_dummy: rcc=0x7f7c605e5970 (channel=0x7f7c6015f6f0 type=6 id=0)
snd_channel_put: SndChannel=0x7f7c60452530 freed
red_channel_client_disconnect: rcc=0x7f7c5e72d010 (channel=0x7f7c600ef520 type=2 id=0)
red_channel_client_disconnect: rcc=0x7f7c60390fd0 (channel=0x7f7c600f0880 type=4 id=0)

--------------080008050502080400090006
Content-Type: application/octet-stream;
 name="032415-31496-01.dmp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="032415-31496-01.dmp"

UEFHRURVNjQPAAAAsR0AAABwGAAAAAAAeKLPAgD4//+QCMkCAPj//5AlxwIA+P//ZIYAAAIA
AADOAAAAUEFHRd1ewwOA+P//CAAAAAAAAADdXsMDgPj//wAAAAAAAAAAUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0WgwMMCAPj//1BBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAQAIAfAAAQACsAKwBTACsAGACXAgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAA
AAAAAN1ewwOA+P//AAAAAAAAAACIudkCgPj//wC62QKA+P//CAAAAAAAAAAAAAAAAAAAAAgA
AAAAAAAA8LrZAoD4//8AAAAAAAAAAAgAAAAAAAAAUPsXA4D6///dXsMDgPj//0DVzwIA+P//
8QEAAAAAAADADqwCAPj//wAAAAAAAAAAAAAAAAAAAAAcAAEQBAAaACAAAAAAAACAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAwAAgAEAAAAAAAAAAAAAAMAOrAIA+P//AAAAAFBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0UEAAAA
UEFHRfAaBAAAAAAAQPVKoxdm0AFQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRbBGZx8AAAAA/wwAAFBB
R0UBAAAAEAEAAAAAAABQAEdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0UAAQAAAAAEAPz/AwBIAwAA
AA8AAIAgAADQIAAAYCIAAGBvAAAwdAAA2HgAACgEAABAgAAAjQAAAJDPAAA4LwAAAAAAAP//
//+IudkCgPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAEADAADI/gAA
DAAAAAEAAABQAAAAAAAAAAAAAAAAAAAAAAAAAHh5BQAAAAAAfCIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAADICAAAAAAAmPQIAAAAAAHT+HQAAAAAABwAAAAAAAAAYABgAAAAAAAAAAAAAAAAA
eABlAG4AaQBmAGEAYwBlAC4AcwB5AHMAAFDEA4D4//8AgMUDgPj//xQAFAAAAAAAAAAAAAAA
AAB4AGUAbgB2AGkAZgAuAHMAeQBzAAAAAAAAwMEDgPj//wBQxAOA+P//GAAYAAAAAAAAAAAA
AAAAAGMAcgBhAHMAaABkAG0AcAAuAHMAeQBzAAAASAGA+P//AOBIAYD4//8YABgAAAAAAAAA
AAAAAAAAZAB1AG0AcABfAHMAdABvAHIAcABvAHIAAOBIAYD4//8AgEkBgPj//xgAGAAAAAAA
AAAAAAAAAABkAHUAbQBwAF8AeABlAG4AYwByAHMAaAAAABwBgPj//wCAHwGA+P//GAAYAAAA
AAAAAAAAAAAAAGQAdQBtAHAAXwB4AGUAbgB2AGIAZAAuAACASQGA+P//AABMAYD4//8YABgA
AAAAAAAAAAAAAAAAZAB1AG0AcABfAGQAdQBtAHAAZgB2AGUAAABMAYD4//8AME0BgPj//4Af
AAAAAAAAUPsXA4D6//8AAAAAAAAAAMC8xAIA+P//AAAAAAAAAACwvdkCgPj//wAAAAAAAAAA
AAAAAAAAAAAxAAWAAAAAAN1ewwOA+P//AHAYAAAAAAD4BgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA8A///wAAAAAABAAAAAAAAAAAAAAAAH8AADC5AAD4//8AAAAA
AAD/D4AwuQAA+P//QAAAAIAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAA8AEACAHwAAEAArACsAUwArABgAlwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAADdXsMDgPj//wAA
AAAAAAAAiLnZAoD4//8AutkCgPj//wgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAPC62QKA+P//
AAAAAAAAAAAIAAAAAAAAAFD7FwOA+v//3V7DA4D4//9A1c8CAPj///EBAAAAAAAAwA6sAgD4
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAABwAARAEABoAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABgEFHmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANgqfwGA+v//AQABAAACEALg////QAAAAMLZfQGA+v//AAAAAAIA
AAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA188C
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDXzwIA+P//AAAAAAAAAAAA2s8CAPj//wAA
AAAAAAAAgNrPAgD4//8AAAAAAAAAAIDZzwIA+P//AAAAAAAAAAAA2c8CAPj//wAAAAAAAAAA
QNrPAgD4//8AAAAAAAAAAMDYzwIA+P//AAAAAAAAAACA2M8CAPj//wAAAAAAAAAAQNnPAgD4
//8AAAAAAAAAAADXzwIA+P//AAAAAAAAAADA1s8CAPj//wAAAAAAAAAAwNnPAgD4//8AAAAA
AAAAAEDXzwIA+P//AAAAAAAAAAAAAAAAAAAAAJBBdwGA+v//AHjEAgD4//8QQXcBgPr//4B4
xAIA+P//kEB3AYD6//8AecQCAPj//xBCdwGA+v//gHfEAgD4///Q93wBgPr//wD9xAIA+P//
wMp6AYD6//+A/MQCAPj//4APdwGA+v//gG3EAgD4//8QQHcBgPr//4B5xAIA+P//8Pt8AYD6
///ANsUCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTBAAAADwYL8CAPj//+BgvwIA+P//QPPDAgD4//8AhMYCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAGoAAAAAAAEAAAAAAAAAtgAAAVVwAABqAAAAagAAAGoAAAAAAAAAUG9vTCAAAADwYL8C
APj//+BgvwIA+P//oPPDAgD4//9A88MCAPj//ztwAABqAAAAAAAAAAAAAAAAADAAAAAAAAEA
AAAAAAAAtgAAAcdfAAAwAAAAMAAAADAAAAAAAAAAUG9vTDAAAADwYL8CAPj//+BgvwIA+P//
APTDAgD4//+g88MCAPj//6lfAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAAX96
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTEAAAADwYL8CAPj//+BgvwIA+P//YPTDAgD4//8A9MMC
APj//3J6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAdQRAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTFAAAADwYL8CAPj//+BgvwIA+P//wPTDAgD4//9g9MMCAPj//8MRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAfcmAAAAAAAAAAAAAAAAAAAAAAAAUG9vTGAA
AADwYL8CAPj//+BgvwIA+P//IPXDAgD4///A9MMCAPj//+gmAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAmgAAAY4cAAAAAAAAAAAAAAAAAAAAAAAAUG9vTHAAAADwYL8CAPj//+Bg
vwIA+P//gPXDAgD4//8g9cMCAPj//34cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
tgAAAZCEAAAAAAAAAAAAAAAAAAAAAAAAUG9vTIAAAADwYL8CAPj//+BgvwIA+P//4PXDAgD4
//+A9cMCAPj//0ODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAAaQmAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTJAAAADwYL8CAPj//+BgvwIA+P//QPbDAgD4///g9cMCAPj//58m
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAATIPAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTKAAAADwYL8CAPj//+BgvwIA+P//oPbDAgD4//9A9sMCAPj//xsPAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALAAAAaoFAAAAAAAAAAAAAAAAAAAAAAAAUG9vTLAAAADwYL8C
APj//+BgvwIA+P//APfDAgD4//+g9sMCAPj//5kFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAfAAAAe4MAAAAAAAAAAAAAAAAAAAAAAAAUG9vTMAAAADwYL8CAPj//+BgvwIA+P//
YPfDAgD4//8A98MCAPj//+cMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAXYF
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTNAAAADwYL8CAPj//+BgvwIA+P//wPfDAgD4//9g98MC
APj//14FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAZ0JAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTOAAAADwYL8CAPj//+BgvwIA+P//IPjDAgD4///A98MCAPj//5wJAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAY8AAAAAAAAAAAAAAAAAAAAAAAAAUG9vTPAA
AADwYL8CAPj//+BgvwIA+P//gPjDAgD4//8g+MMCAPj//48AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAfAAAAVcGAAAAAAAAAAAAAAAAAAAAAAAAUG9vTAABAADwYL8CAPj//+Bg
vwIA+P//4PjDAgD4//+A+MMCAPj//1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAZ8AAAAAAAAAAAAAAAAAAAAAAAAAUG9vTBABAADwYL8CAPj//+BgvwIA+P//QPnDAgD4
///g+MMCAPj//54AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAakAAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTCABAADwYL8CAPj//+BgvwIA+P//oPnDAgD4//9A+cMCAPj//6UA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAYMLAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTDABAADwYL8CAPj//+BgvwIA+P//APrDAgD4//+g+cMCAPj//4ELAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAASgAAAVIGAAAAAAAAAAAAAAAAAAAAAAAAUG9vTEABAADwYL8C
APj//+BgvwIA+P//YPrDAgD4//8A+sMCAPj//1EGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAXgAAATIwAAAAAAAAAAAAAAAAAAAAAAAAUG9vTFABAADwYL8CAPj//+BgvwIA+P//
wPrDAgD4//9g+sMCAPj//yYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAARQQ
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTGABAADwYL8CAPj//+BgvwIA+P//IPvDAgD4///A+sMC
APj//5APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAZIAAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTHABAADwYL8CAPj//+BgvwIA+P//gPvDAgD4//8g+8MCAPj//5IAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUUAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTIAB
AADwYL8CAPj//+BgvwIA+P//4PvDAgD4//+A+8MCAPj//0IAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAATwAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTJABAADwYL8CAPj//+Bg
vwIA+P//QPzDAgD4///g+8MCAPj//zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAWEAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTKABAADwYL8CAPj//+BgvwIA+P//oPzDAgD4
//9A/MMCAPj//2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAXsAAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTLABAADwYL8CAPj//+BgvwIA+P//AP3DAgD4//+g/MMCAPj//3sA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAcoBAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTMABAADwYL8CAPj//+BgvwIA+P//YP3DAgD4//8A/cMCAPj//8cBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANgAAAS4EAAAAAAAAAAAAAAAAAAAAAAAAUG9vTNABAADwYL8C
APj//+BgvwIA+P//wP3DAgD4//9g/cMCAPj//y4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAaMAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTOABAADwYL8CAPj//+BgvwIA+P//
IP7DAgD4///A/cMCAPj//6MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAVcA
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTPABAADwYL8CAPj//+BgvwIA+P//gP7DAgD4//8g/sMC
APj//1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQABAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTAACAADwYL8CAPj//+BgvwIA+P//4P7DAgD4//+A/sMCAPj//wABAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTBAA
AADwYL8CAPj//+BgvwIA+P//oOfDAgD4//9A58MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTCAAAADwYL8CAPj//+Bg
vwIA+P//AOjDAgD4//+g58MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTDAAAADwYL8CAPj//+BgvwIA+P//YOjDAgD4
//8A6MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTEAAAADwYL8CAPj//+BgvwIA+P//wOjDAgD4//9g6MMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTFAAAADwYL8CAPj//+BgvwIA+P//IOnDAgD4///A6MMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTGAAAADwYL8C
APj//+BgvwIA+P//gOnDAgD4//8g6cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTHAAAADwYL8CAPj//+BgvwIA+P//
4OnDAgD4//+A6cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTIAAAADwYL8CAPj//+BgvwIA+P//QOrDAgD4///g6cMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTJAAAADwYL8CAPj//+BgvwIA+P//oOrDAgD4//9A6sMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTKAA
AADwYL8CAPj//+BgvwIA+P//AOvDAgD4//+g6sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTLAAAADwYL8CAPj//+Bg
vwIA+P//YOvDAgD4//8A68MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTMAAAADwYL8CAPj//+BgvwIA+P//wOvDAgD4
//9g68MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTNAAAADwYL8CAPj//+BgvwIA+P//IOzDAgD4///A68MCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTOAAAADwYL8CAPj//+BgvwIA+P//gOzDAgD4//8g7MMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTPAAAADwYL8C
APj//+BgvwIA+P//4OzDAgD4//+A7MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTAABAADwYL8CAPj//+BgvwIA+P//
QO3DAgD4///g7MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTBABAADwYL8CAPj//+BgvwIA+P//oO3DAgD4//9A7cMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTCABAADwYL8CAPj//+BgvwIA+P//AO7DAgD4//+g7cMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTDAB
AADwYL8CAPj//+BgvwIA+P//YO7DAgD4//8A7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTEABAADwYL8CAPj//+Bg
vwIA+P//wO7DAgD4//9g7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTFABAADwYL8CAPj//+BgvwIA+P//IO/DAgD4
///A7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTGABAADwYL8CAPj//+BgvwIA+P//gO/DAgD4//8g78MCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTHABAADwYL8CAPj//+BgvwIA+P//4O/DAgD4//+A78MCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTIABAADwYL8C
APj//+BgvwIA+P//QPDDAgD4///g78MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTJABAADwYL8CAPj//+BgvwIA+P//
oPDDAgD4//9A8MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTKABAADwYL8CAPj//+BgvwIA+P//APHDAgD4//+g8MMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTLABAADwYL8CAPj//+BgvwIA+P//YPHDAgD4//8A8cMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTMAB
AADwYL8CAPj//+BgvwIA+P//wPHDAgD4//9g8cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTNABAADwYL8CAPj//+Bg
vwIA+P//IPLDAgD4///A8cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTOABAADwYL8CAPj//+BgvwIA+P//gPLDAgD4
//8g8sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTPABAADwYL8CAPj//+BgvwIA+P//4PLDAgD4//+A8sMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTAACAADwYL8CAPj//+BgvwIA+P//QArkAoD4///g8sMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAApdQBAOMIAACvtgAAxPQAAAtSAAApGQAAAAAAAAAAAAAAAAAA
AAAAAIQABwAVSgEAAAAAAFIDAAAAAAAAAAAAAN0IAAAAAAAA////f5IFAADBBAAAvqoAAAkf
dgAAAAAAVUC9AAAAAADQdh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAgD4//8AAMQC
APj//wAAAAAAAAAAAAAAAJiSAAAgAMQCAPj//yAAxAIA+P//AAAAAAAAAAAAAAAAAAAAALAP
ugAA+P//AwAAAAAAAAADAAAAmJIAAAEAAAAAAAAAMQ0AAEKrAQAxDQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiALEAgD4//+IAsQC
APj//8C9bBX/////AAAAAAAAAACoAsQCAPj//6gCxAIA+P//sBuVHP////8AAAAAAAAAAMgC
xAIA+P//yALEAgD4///wt6tC/////wAAAAAAAAAA6ALEAgD4///oAsQCAPj//1AZrkL/////
AAAAAAAAAAAIA8QCAPj//wgDxAIA+P//ADicHP////8AAAAAAAAAACgDxAIA+P//KAPEAgD4
//8Akv4e/////wAAAAAAAAAAADo4A4D6//9AnToDgPr//yAXwyMAAAAAAAAAAAAAAABoA8QC
APj//2gDxAIA+P//8ANCGv////8AAAAAAAAAAPD1PAOA+v//8PU8A4D6///g2ccjAAAAAAAA
AAAAAAAAqAPEAgD4//+oA8QCAPj//1C/phz/////AAAAAAAAAABA4TgDgPr//0DhOAOA+v//
8MK+QgAAAAAAAAAAAAAAAOgDxAIA+P//6APEAgD4//9Aeqsc/////wAAAAAAAAAAcCk9A4D6
//8QH2MDgPr//2Bf0SMAAAAAAAAAAAAAAAAoBMQCAPj//ygExAIA+P//MLKwHP////8AAAAA
AAAAAEgExAIA+P//SATEAgD4//8g1o8V/////wAAAAAAAAAAgKAuA4D6//+AoC4DgPr//xAL
63MIAAAAAAAAAAAAAACwmmcDgPr//7CaZwOA+v//0FF7IQAAAAAAAAAAAAAAAKgExAIA+P//
qATEAgD4//+AvLoc/////wAAAAAAAAAAyATEAgD4///IBMQCAPj//4AWHR//////AAAAAAAA
AADoBMQCAPj//+gExAIA+P//sJy+HP////8AAAAAAAAAAAgFxAIA+P//CAXEAgD4///wqcEc
/////wAAAAAAAAAAKAXEAgD4//8oBcQCAPj//6C3JB//////AAAAAAAAAABwlUQDgPr//3CV
RAOA+v//IC3pIwAAAAAAAAAAAAAAAGgFxAIA+P//aAXEAgD4///wuQYY/////wAAAAAAAAAA
iAXEAgD4//+IBcQCAPj//9DiBxj/////AAAAAAAAAACoBcQCAPj//6gFxAIA+P//UDUuH///
//8AAAAAAAAAAMgFxAIA+P//yAXEAgD4//+oRDAf/////wAAAAAAAAAA6AXEAgD4///oBcQC
APj//7AHMx//////AAAAAAAAAAAIBsQCAPj//wgGxAIA+P//8BQ2H/////8AAAAAAAAAACgG
xAIA+P//KAbEAgD4//9Q/zYf/////wAAAAAAAAAASAbEAgD4//9IBsQCAPj//wCbOx//////
AAAAAAAAAABoBsQCAPj//2gGxAIA+P//QLo7H/////8AAAAAAAAAAIgGxAIA+P//iAbEAgD4
///Qrd0c/////wAAAAAAAAAAEFZHA4D6//8Q+IYDgPr//5CC9UIAAAAAAAAAAAAAAADIBsQC
APj//8gGxAIA+P//8GDiHP////8AAAAAAAAAAOgGxAIA+P//6AbEAgD4//9wakcf/////wAA
AAAAAAAAMDzYAoD6//8wPNgCgPr//8DEeDkAAAAAAAAAAAAAAAAoB8QCAPj//ygHxAIA+P//
QN1KH/////8AAAAAAAAAACDndwOA+v//IOd3A4D6//8wZBAkAAAAAAAAAAAAAAAAaAfEAgD4
//9oB8QCAPj//9DKA0P/////AAAAAAAAAAAwGD4DgPr//zAYPgOA+v//MCwGQwAAAAAAAAAA
AAAAAKgHxAIA+P//qAfEAgD4//+wUvQc/////wAAAAAAAAAAyAfEAgD4///IB8QCAPj//4Br
lRr/////AAAAAAAAAADoB8QCAPj//+gHxAIA+P//gB9aH/////8AAAAAAAAAADDcYgOA+v//
MNxiA4D6//+Q98VmAAAAAAAAAAAAAAAAKAjEAgD4//8oCMQCAPj//zA4Xx//////AAAAAAAA
AAAg7i4DgPr//yDuLgOA+v//oOaEJgAAAAAAAAAAAAAAABAckAOA+v//EByQA4D6//9wH2tk
AAAAAAAAAAAAAAAAiAjEAgD4//+ICMQCAPj//wAT9zv/////AAAAAAAAAACoCMQCAPj//6gI
xAIA+P//QLJmH/////8AAAAAAAAAAEBBegOA+v//QEF6A4D6///w+R1DAAAAAAAAAAAAAAAA
6AjEAgD4///oCMQCAPj//xC5Ch3/////AAAAAAAAAAAICcQCAPj//wgJxAIA+P//ECoNHf//
//8AAAAAAAAAAKgB4AKA+v//qBHeAoD6//+ANSVDAAAAAAAAAAAAAAAAIF6MA4D6//+o0eAC
gPr//zDAch8AAAAAAAAAAAAAAADQyXYCgPr//9DJdgKA+v//8AV3HwAAAAAAAAAAAAAAAFgc
FwOA+P//WBwXA4D4//8ApHgfAAAAAAAAAAAAAAAAmMLgAoD6//+ghkoCgPj//7DOeh8AAAAA
AAAAAAAAAACA1GwBgPr//4D6bgGA+v//6I98HwAAAAAAAAAAAAAAAICEbAGA+v//QLFEA4D6
//9I8X4fAAAAAAAAAAAAAAAAIO5wAoD6//8g7nACgPr//xCVgR8AAAAAAAAAAAAAAAAoCsQC
APj//ygKxAIA+P//EImZRf////8AAAAAAAAAAEgKxAIA+P//SArEAgD4//+91iUd/////wAA
AAAAAAAAgJmYAYD4//+Qd8wCAPj//70wiB8AAAAAAAAAAAAAAACwmH4BgPr//7CYfgGA+v//
wFVNJAAAAAAAAAAAAAAAACChWAKA+v//IKFYAoD6//8wm40fAAAAAAAAAAAAAAAAyArEAgD4
///ICsQCAPj//4CSzRr/////AAAAAAAAAADoCsQCAPj//+gKxAIA+P//sN4wHf////8AAAAA
AAAAAAgLxAIA+P//CAvEAgD4//+Q3pQf/////wAAAAAAAAAA2PzbA4D4//8wJ14EgPj//4Ao
lx8AAAAAAAAAAAAAAABIC8QCAPj//0gLxAIA+P//kADXGv////8AAAAAAAAAADCMOgOA+v//
MIw6A4D6///gFMw5AAAAAAAAAAAAAAAAiAvEAgD4//+IC8QCAPj//zB15i3/////AAAAAAAA
AAAw/DoDgPr//zD8OgOA+v//oNfQOQAAAAAAAAAAAAAAANDVSwOA+v//0NVLA4D6//+QSmUk
AAAAAAAAAAAAAAAAMLjpAoD6//8wuOkCgPr//2Ca1TkAAAAAAAAAAAAAAABAkTgDgPr//zC1
UwOA+v//sD29RQAAAAAAAAAAAAAAACgMxAIA+P//KAzEAgD4///QnEgd/////wAAAAAAAAAA
SAzEAgD4//9IDMQCAPj//7BZ6hr/////AAAAAAAAAABoDMQCAPj//2gMxAIA+P//MA/sGv//
//8AAAAAAAAAAIgMxAIA+P//iAzEAgD4//8w4E8d/////wAAAAAAAAAAqAzEAgD4//+oDMQC
APj//wBTUx3/////AAAAAAAAAADIDMQCAPj//8gMxAIA+P//sP3PE/////8AAAAAAAAAAOgM
xAIA+P//6AzEAgD4//9Qh2xD/////wAAAAAAAAAAcH9EA4D4//9wf0QDgPj//3BmfSQAAAAA
AAAAAAAAAAAoDcQCAPj//ygNxAIA+P//cLdbHf////8AAAAAAAAAAFDEaQOA+v//UMRpA4D6
//9Q+oEkAAAAAAAAAAAAAAAAIInGAgD4//8gicYCAPj//3B5iiqkAwAAAAAAAAAAAACIDcQC
APj//4gNxAIA+P//MG54Q/////8AAAAAAAAAAEDxYQOA+v//QPFhA4D6//8QsYgkAAAAAAAA
AAAAAAAAyA3EAgD4///IDcQCAPj//5C9Zx3/////AAAAAAAAAACY0oIDgPr//5jSggOA+v//
cL3LHwAAAAAAAAAAAAAAAAgOxAIA+P//CA7EAgD4///QO20d/////wAAAAAAAAAAQMlNA4D6
//+A4EMDgPr//9CVzx8AAAAAAAAAAAAAAAAwQHsCgPr//zBAewKA+v//QC8V8QIAAAAAAAAA
AAAAAEDDWAKA+v//QMNYAoD6///AUNQfAAAAAAAAAAAAAAAAiA7EAgD4//+IDsQCAPj///AW
sxj/////AAAAAAAAAAAgxnsCgPr//yDGewKA+v//YFMc8QIAAAAAAAAAAAAAAMgOxAIA+P//
yA7EAgD4//+QKNwf/////wAAAAAAAAAA6A7EAgD4///oDsQCAPj///ApfR3/////AAAAAAAA
AAAID8QCAPj//wgPxAIA+P//sF72Rf////8AAAAAAAAAABB9FAOA+P//4EaLA4D6//+wTOMf
AAAAAAAAAAAAAAAAQAFNA4D6//8wXG0DgPr//4DfFToAAAAAAAAAAAAAAABoD8QCAPj//2gP
xAIA+P//0CKcQ/////8AAAAAAAAAAIgPxAIA+P//iA/EAgD4//+QkScb/////wAAAAAAAAAA
qA/EAgD4//+oD8QCAPj//2CHKhv/////AAAAAAAAAABAgUEDgPr//0CBQQOA+v//AGUfOgAA
AAAAAAAAAAAAAOgPxAIA+P//6A/EAgD4//8AXJAd/////wAAAAAAAAAACBDEAgD4//8IEMQC
APj//yD7hDz/////AAAAAAAAAABgSjoDgPr//2BKOgOA+v//4OYmOgAAAAAAAAAAAAAAAEgQ
xAIA+P//SBDEAgD4///Q2TUb/////wAAAAAAAAAAaBDEAgD4//9oEMQCAPj//5CLmR3/////
AAAAAAAAAACIEMQCAPj//4gQxAIA+P//ELUXFP////8AAAAAAAAAAKgQxAIA+P//qBDEAgD4
///w/Twb/////wAAAAAAAAAAgG92AYD6//9wAMUCAPj//+DkHmYBAAAAAAAAAAAAAADoEMQC
APj//+gQxAIA+P//cJtCG/////8AAAAAAAAAAAgRxAIA+P//CBHEAgD4//+wFLtD/////wAA
AAAAAAAAKBHEAgD4//8oEcQCAPj//3CDRhv/////AAAAAAAAAABIEcQCAPj//0gRxAIA+P//
0ESqHf////8AAAAAAAAAAGgRxAIA+P//aBHEAgD4//8QUq0d/////wAAAAAAAAAAiBHEAgD4
//+IEcQCAPj//4Dgrh3/////AAAAAAAAAAAwTD8DgPr//5jC3gKA+v//oCVBOgAAAAAAAAAA
AAAAAJgS4AKA+v//mBLgAoD6///ggFE5MQEAAAAAAAAAAAAA6BHEAgD4///oEcQCAPj//xC8
VBv/////AAAAAAAAAAAIEsQCAPj//wgSxAIA+P//EC1XG/////8AAAAAAAAAACgSxAIA+P//
KBLEAgD4//9wjlkb/////wAAAAAAAAAASBLEAgD4//9IEsQCAPj//z1tvh3/////AAAAAAAA
AACAUEADgPr//4BQQAOA+v//wA11qAUAAAAAAAAAAAAAAIgSxAIA+P//iBLEAgD4//+QsmAb
/////wAAAAAAAAAAqBLEAgD4//+oEsQCAPj//5CDxB3/////AAAAAAAAAADIEsQCAPj//8gS
xAIA+P//QKtBFP////8AAAAAAAAAAOgSxAIA+P//6BLEAgD4//9wjsod/////wAAAAAAAAAA
CBPEAgD4//8IE8QCAPj//wALaxv/////AAAAAAAAAADQx3wBgPr//4CJyQOA+P//AL8vIAAA
AAAAAAAAAAAAAEgTxAIA+P//SBPEAgD4//+gWUwU/////wAAAAAAAAAAaBPEAgD4//9oE8QC
APj//zD8Dxn/////AAAAAAAAAACQUdMCgPr//5BR0wKA+v//ADXgMAAAAAAAAAAAAAAAAKgT
xAIA+P//qBPEAgD4//+wdncb/////wAAAAAAAAAAyBPEAgD4///IE8QCAPj//xB+Fxn/////
AAAAAAAAAADoE8QCAPj//+gTxAIA+P//sOF6G/////8AAAAAAAAAAHBaNwOA+v//cFo3A4D6
//+giG86AAAAAAAAAAAAAAAAMLw5A4D6//8wvDkDgPr//xCX9kMAAAAAAAAAAAAAAAAwfD4D
gPr//zB8PgOA+v//AKGwNQAAAAAAAAAAAAAAAGgUxAIA+P//aBTEAgD4//8wZ4Qb/////wAA
AAAAAAAAmPKrAoD6//8AemQDgPr//1DmSSAAAAAAAAAAAAAAAABA4UsDgPr//0DhSwOA+v//
EKClfggAAAAAAAAAAAAAAMgUxAIA+P//yBTEAgD4//+we4sb/////wAAAAAAAAAA6BTEAgD4
///oFMQCAPj//3BEjxv/////AAAAAAAAAAAIFcQCAPj//wgVxAIA+P//wL7OFv////8AAAAA
AAAAACgVxAIA+P//KBXEAgD4//+givMd/////wAAAAAAAAAAKGGPAoD6//8oYY8CgPr//zA+
WCAAAAAAAAAAAAAAAABoFcQCAPj//2gVxAIA+P//MNL4Hf////8AAAAAAAAAAIgVxAIA+P//
iBXEAgD4//9w3/sd/////wAAAAAAAAAAqBXEAgD4//+oFcQCAPj///AR/h3/////AAAAAAAA
AADIFcQCAPj//8gVxAIA+P//CHkBHv////8AAAAAAAAAAOgVxAIA+P//6BXEAgD4///w8H0U
/////wAAAAAAAAAAQKFFA4D6//9AoUUDgPr//0D00TUAAAAAAAAAAAAAAAAwrG4DgPr//zCc
YQOA+v//wOaWOgAAAAAAAAAAAAAAADCoRQOA+v//MPxkA4D6///wzJk6AAAAAAAAAAAAAAAA
aBbEAgD4//9oFsQCAPj///A6DB7/////AAAAAAAAAAA489QCgPr//zjz1AKA+v//wK0aMQAA
AAAAAAAAAAAAAKgWxAIA+P//qBbEAgD4//+w9xEe/////wAAAAAAAAAA0ARKA4D6///QBEoD
gPr//4A84DUAAAAAAAAAAAAAAABAIU4DgPr//0AhTgOA+v//8F6rNQIAAAAAAAAAAAAAAECH
xgIA+P//QIfGAgD4//9wdNoiAAAAAAAAAAAAAAAAKBfEAgD4//8oF8QCAPj//0CwGR7/////
AAAAAAAAAAAQo0kDgPr//8A8yAKA+v//AMLpNQAAAAAAAAAAAAAAAGgXxAIA+P//aBfEAgD4
///w374b/////wAAAAAAAAAAiBfEAgD4//+IF8QCAPj//5CJXhn/////AAAAAAAAAACoF8QC
APj//6gXxAIA+P//0GFvE/////8AAAAAAAAAAMgXxAIA+P//yBfEAgD4//+APmQZ/////wAA
AAAAAAAAMIxFA4D6//8wjEUDgPr//1Bgn0YAAAAAAAAAAAAAAAAwKGcDgPr//zAoZwOA+v//
sMGhRgAAAAAAAAAAAAAAACgYxAIA+P//KBjEAgD4///QHb46/////wAAAAAAAAAASBjEAgD4
//9IGMQCAPj//3Dhdyz/////AAAAAAAAAACYAt4CgPr//4CIxgIA+P//kLqUIAAAAAAAAAAA
AAAAAIgYxAIA+P//iBjEAgD4//8w50lE/////wAAAAAAAAAAqBjEAgD4//+oGMQCAPj//9AB
1hv/////AAAAAAAAAADIGMQCAPj//8gYxAIA+P//8CY5Hv////8AAAAAAAAAAJBnCQOA+v//
8ARPA4D6///g80UxAAAAAAAAAAAAAAAACBnEAgD4//8IGcQCAPj//3Bq3Bv/////AAAAAAAA
AABAZd4CgPr//0Bl3gKA+v//EA6TPwAAAAAAAAAAAAAAAEgZxAIA+P//SBnEAgD4//+QmuEb
/////wAAAAAAAAAAaBnEAgD4//9oGcQCAPj//wAd5Rv/////AAAAAAAAAACIGcQCAPj//4gZ
xAIA+P//kF9HHv////8AAAAAAAAAAGAxxwIA+P//QIXMAgD4//9g1c8nAAAAAAAAAAAAAAAA
yBnEAgD4///IGcQCAPj//+hiSx7/////AAAAAAAAAADoGcQCAPj//+gZxAIA+P//SMRNHv//
//8AAAAAAAAAAKB1SgKA+P//4AlLAoD4///gLx42AAAAAAAAAAAAAAAAKBrEAgD4//8oGsQC
APj//xBWUx7/////AAAAAAAAAAAAnUoDgPr//wCdSgOA+v//ANr2xAAAAAAAAAAAAAAAAGga
xAIA+P//aBrEAgD4//9wKFge/////wAAAAAAAAAAQBFJA4D6//9AEUkDgPr//wCF6joAAAAA
AAAAAAAAAAAwXD4DgPr//zBcPgOA+v//4KSTfQAAAAAAAAAAAAAAAIASSwKA+P//gBJLAoD4
///gdeFZAAAAAAAAAAAAAAAA6BrEAgD4///oGsQCAPj//4DtPhf/////AAAAAAAAAAAw/FAD
gPr//zD8UAOA+v//EG2bfQAAAAAAAAAAAAAAAJCFewGA+v//YJjGAgD4//+AVcggAAAAAAAA
AAAAAAAASBvEAgD4//9IG8QCAPj//3ACsSz/////AAAAAAAAAABoG8QCAPj//2gbxAIA+P//
0IZcPf////8AAAAAAAAAAOgOYQOA+v//EOR9AYD6//+QVVQqAAAAAAAAAAAAAAAAqBvEAgD4
//+oG8QCAPj//7AucR7/////AAAAAAAAAADgEz8DgPr//5ADPwOA+v//gA3UIAAAAAAAAAAA
AAAAAOgbxAIA+P//6BvEAgD4//8wGMg//////wAAAAAAAAAAQNFZA4D6//9A0VkDgPr//0BK
XyoAAAAAAAAAAAAAAABAMWIDgPr//0AxYgOA+v//cJ9GNgAAAAAAAAAAAAAAAEgcxAIA+P//
SBzEAgD4//+gP/cU/////wAAAAAAAAAAwJ1TA4D6//8g61MDgPr//1AzSzYAAAAAAAAAAAAA
AABgEMcCAPj//2AQxwIA+P//4HpuJQIAAAAAAAAAAAAAADAIOwOA+v//MAg7A4D6//9gWQVa
AAAAAAAAAAAAAAAAyBzEAgD4///IHMQCAPj//7AzhR7/////AAAAAAAAAADoHMQCAPj//+gc
xAIA+P//cPyIHv////8AAAAAAAAAAAgdxAIA+P//CB3EAgD4///wNwQV/////wAAAAAAAAAA
KB3EAgD4//8oHcQCAPj//xC31Cz/////AAAAAAAAAAAgt0QDgPr//yC3RAOA+v//IM1SFQAA
AIAAAAAAAAAAAGgdxAIA+P//aB3EAgD4///Qedks/////wAAAAAAAAAAiB3EAgD4//+IHcQC
APj//0DCkx7/////AAAAAAAAAACoHcQCAPj//6gdxAIA+P//8OyVHv////8AAAAAAAAAAMgd
xAIA+P//yB3EAgD4//8QrJge/////wAAAAAAAAAA6B3EAgD4///oHcQCAPj//4gPmh7/////
AAAAAAAAAABgqjcDgPr//2CqNwOA+v//YLcfWgAAAAAAAAAAAAAAAFCJiQOA+v//MCxtA4D6
//8QwucsAAAAAAAAAAAAAAAAQJFhA4D6//+g1NcDgPj//wDDMzsAAAAAAAAAAAAAAABoHsQC
APj//2gexAIA+P//cPRCHP////8AAAAAAAAAAIgexAIA+P//iB7EAgD4///QMqce/////wAA
AAAAAAAAqOGCA4D6//+o4YIDgPr//5CKvkQAAAAAAAAAAAAAAAAgVz8DgPr//yDRbgKA+v//
sKkMIQAAAAAAAAAAAAAAAKDUAQGA+P//QKFvA4D6//+QA9MlAAAAAAAAAAAAAAAAEAhVAYD4
///Aum8DgPr//4CTESEAAAAAAAAAAAAAAAAgokMDgPr//yCiQwOA+v//0MqvUAAAAAAAAAAA
AAAAAECxSAOA+v//QJFOA4D6//9wccpEAAAAAAAAAAAAAAAAMAhWA4D6//8gt04DgPr//9DS
zEQAAAAAAAAAAAAAAABAkUkDgPr//0CRSQOA+v//QLkhKg2PAAAAAAAAAAAAACAqQAOA+v//
MLxJA4D6//+Q9TJHAAAAAAAAAAAAAAAAyB/EAgD4///IH8QCAPj///D200T/////AAAAAAAA
AACQymoDgPr//zBohgOA+v//UFjWRAAAAAAAAAAAAAAAAAggxAIA+P//CCDEAgD4//+wudhE
/////wAAAAAAAAAAAKltA4D6//8AqW0DgPr//yDZ6iUAAAAAAAAAAAAAAABIIMQCAPj//0gg
xAIA+P//YJUEGv////8AAAAAAAAAAGggxAIA+P//aCDEAgD4///wgqcX/////wAAAAAAAAAA
iCDEAgD4//+IIMQCAPj//yBMCxr/////AAAAAAAAAACoIMQCAPj//6ggxAIA+P//sGXQHv//
//8AAAAAAAAAAMggxAIA+P//yCDEAgD4//9QD3Ac/////wAAAAAAAAAA6CDEAgD4///oIMQC
APj//5Accxz/////AAAAAAAAAAAIIcQCAPj//wghxAIA+P//cH/TUP////8AAAAAAAAAACgh
xAIA+P//KCHEAgD4//8Af1IV/////wAAAAAAAAAASCHEAgD4//9IIcQCAPj//3CH8ET/////
AAAAAAAAAABoIcQCAPj//2ghxAIA+P//kEbdHv////8AAAAAAAAAAAhRKgGA+P//CFEqAYD4
//+AZ0IhAAAAAAAAAAAAAAAAqCHEAgD4//+oIcQCAPj//zAy4x7/////AAAAAAAAAADAC0sC
gPj//0ByXgGA+P//kPNGIQAAAAAAAAAAAAAAADCaVwOA+v//MJpXA4D6//9wHA54AQAAAAAA
AAAAAAAACCLEAgD4//8IIsQCAPj//6AcZRX/////AAAAAAAAAAAQ38kCgPr//+CHxgIA+P//
wKqtIwAAAAAAAAAAAAAAALC9iwKA+v//sL2LAoD6///gSaJCAAAAAAAAAAAAAAAAaCLEAgD4
//9oIsQCAPj//z2a7x7/////BwEGAAAAAADIFXwBgPr//8gVfAGA+v//AAAAAAAAAAATAgAB
AAAAAAAAAAAAAAAAAAAAAAAAAABku6cCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAVAAAAAAAAAAAAAB+2AAAAAAAAAAAAAAAAAACwM3sBgPr//wCxRAOA+v//
AAAAAAAAAAAAAAAAAQAAABMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAPDgvgIA+P//AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIAjxAIA+P//gCPEAgD4//+QI8QCAPj//5AjxAIA+P//oCPEAgD4//+gI8QCAPj//7Aj
xAIA+P//sCPEAgD4///AI8QCAPj//8AjxAIA+P//0CPEAgD4///QI8QCAPj//+AjxAIA+P//
4CPEAgD4///wI8QCAPj///AjxAIA+P//ACTEAgD4//8AJMQCAPj//xAkxAIA+P//ECTEAgD4
//8gJMQCAPj//yAkxAIA+P//MCTEAgD4//8wJMQCAPj//0AkxAIA+P//QCTEAgD4//9QJMQC
APj//1AkxAIA+P//YCTEAgD4//9gJMQCAPj//3AkxAIA+P//cCTEAgD4//+AJMQCAPj//4Ak
xAIA+P//kCTEAgD4//+QJMQCAPj//6AkxAIA+P//oCTEAgD4//+wJMQCAPj//7AkxAIA+P//
wCTEAgD4///AJMQCAPj//9AkxAIA+P//0CTEAgD4///gJMQCAPj//+AkxAIA+P//8CTEAgD4
///wJMQCAPj//wAlxAIA+P//ACXEAgD4//8QJcQCAPj//xAlxAIA+P//ICXEAgD4//8gJcQC
APj//zAlxAIA+P//MCXEAgD4//9AJcQCAPj//0AlxAIA+P//UCXEAgD4//9QJcQCAPj//2Al
xAIA+P//YCXEAgD4//9wJcQCAPj//3AlxAIA+P//8psAAPwMAAA1AAAAJgAAAAkAAAAFAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAJgBAAAAvMQCAPj///W7/tggAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAH8AAAAAAAAAvg19wAAAAAAAAAAA
AAAAAAAAAAAAAAAAFNYAABhPAAAAAAAAEg4AAAAAAAABAAAAAgAAAJQAAAAKAQAAkAEAAN0G
AAAAAAAAAAAAAK8CAAAAAAAAAAAAAD4IAAAAAAAASwAAAAAAAAAAAAAAUwMAAAAAAAAAAAAA
AAAAAAAAAACwRmcfAAAAAGC4DwOA+v//eRl5AgAAAAC32XCmDwAAAAAAAAAAAAAAQD3pAoD6
//8BAAAAAAAAAGQBAAAJCwAAQDLlAgD4//8BAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEwMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAQC2+AgD4//+A3sMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmQM1CAAAAB/p/ejDwAAADnoisISAAAA
VdQYXQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIQAAAgAAA
AgAAAAEEQAAAgAAAAQAAAAIIQAAAAAQAAAAAAAMQQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAQA
AAC4AAAAjwAAACdAgACA+P//ACV4AYD6//8QsHkBgPr//wAAAAAAAAAABQAWAAAAAAAB44EB
gPr//wQAAQAAAAAAAQCbAID4//8A8JoAgPj//wDgmgCA+P//AAAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAQAAAAAAAMAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAYKcQCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOhJMQASBQAA3vnXBFhaAAABAwAApUsAAJUi
AAC2DQAAcRcAAGY0CwDACAAAwHYCADe4CACQAgAAXVsCAG07AgDVHgAAlAcAABsBAABmfAgA
9iUAAKxBCAC/FAAALQEAAAUAAADDXQAAAQAAAChdAACaAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAnAEAANwAAAAAAAAAAAAAAAcAAAABAAAAAAAAAAAAAABHZW51
aW5lSW50ZWwAAAAA/j0ZIQAAAAAAAAAABwAAAKDfwwIA+P//CwAQAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUB
eCn/AoD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC6rAgD4//8AAAAAAAAAAAAAAAAAAAAA
AwBYAAAAAACYqGwBgPr//5iobAGA+v//qKhsAYD6//+oqGwBgPr//wBwGAAAAAAASK5yAYD6
//9IjkEDgPr//wAAAAAAAAAAAQAEAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACpbAGA+v//AKlsAYD6//8AAAAAAAAAAAQABAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAJAAAACAYAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAGgEAAAQ/IYCgPr//3A0zAIA+P//OfTJNwEAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwEGAAAAAADQqWwB
gPr//9CpbAGA+v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYL7nkBdm0AEAAAAAAAAAAAAA
AAAAAAAABAAAAAAAAAC4/IYCgPr//5AlxwIA+P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAcAAAAAAAAAEAJxQIA+P//AAAAAAAAAAAAQIsAAAAAAADQNAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwFwAAoPj//09LAACg+P//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClewGA+v//AAAAAAAAAAAHAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCLAACg+P//AAAAAAAA
AAAAAP7//wcAAACQg3cAAAAAAAAAAAAAAAAAAAAAAAAAAFN5c3RlbQAAAAAAAAAAAAIAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB4r3IBgPr//3iPQQOA+v//AAAAAAAAAAAAAAAAAAAAAI0A
AAAAAAAABQAAAAAAAAAAAAAAAAAAAGtgjwKA+v//DQAAAAAAAAAAAAAAAAAAAJMDAAAAAAAA
qFv7AwAAAAAAAAAAAAAAAMMhAAAAAAAAAAAAAAAAAABDAAAAAAAAAAAAAAAAAAAAgEUAAKD4
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgjkQDgPr//xBEPwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAQAAAAAAAABJAAAADQAAAAAAAAAAAAAAAwAAAAMAAACXBQAA7w0AAAAA
CAEA9///0k8yAHegAAACEQAAAAAAAAAAAAAAAAAAUP+GAoD6//+gxcQCAPj//wAAAAAAAAAA
YRsAAADYAgAACAQUAwEAANisbAGA+v//AAAAAAAAAABggYoCgPr//wAAAAAAAAAAAAAAAAAA
AAADBQAAAAAAAGCBigKA+v//AAAAAAAAAAAAAAAAAAAAAFCOZgKg+P//UI5mAqD4//8gAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAFj7
FwOA+v//WPsXA4D6//+ycwAAAAAAAELR8gQAAAAAsL3ZAoD4//8AYNkCgPj//9C52QKA+P//
AAAAAAAAAAABAQAAASAAAKD7FwOA+v//oPsXA4D6//+w+xcDgPr//7D7FwOA+v//kKhsAYD6
//8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAQAAAAAAAFj8FwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAIADEAAQAAAOj8FwOA+v//6PwXA4D6//9AsmYfAAAAAKgI
xAIA+P//qAjEAgD4//8LHyBtjVmjygAAAAAAAAAAYQAAAAAAAAB4xRcDgPr//3jFFwOA+v//
UPsXA4D6//9wxRcDgPr//1j8FwOA+v//AAABAgIAAAAAAAAAAAAAAAAAAAAAAAAAUPsXA4D6
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAUPsXA4D6//8AAAAA
AAAAAAAAAAAAAAAAAAAAAK0FAAAY/BcDgPr//xj8FwOA+v//UPsXA4D6//8AAAAAAAAAAAAA
AAAAAAAAAgEBAgAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAgAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAACQqGwBgPr//wMAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAKD7FwOA+v//kP0XA4D6//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA2QKA+P//EgBYBgAAAABQ+xcDgPr//wAA
AAAAAAAAAAAAAAAAAAAQLqsCAPj//+zvsAIA+P//YDmrAgD4//8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAUACAAAAAAAMP4XA4D6//8w/hcDgPr//wIAAAAAAAAA6BMbA4D6
//9IbgkDgPr//1j+FwOA+v//WP4XA4D6//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7ZAoD4//8AAAAAAAAAAMBs
b5EXZtABwP4XA4D6///A/hcDgPr//wAAAAAAAAAAAAAAAAAAAACkAcMDgPj//wAAAAAAAAAA
AAAAAAAAAAD4/hcDgPr///j+FwOA+v//BAAAAAAAAAAcAgAAAAAAAAUACAAAAAAAIP8XA4D6
//8g/xcDgPr//wEAAAAAAAAAAAAAAAAAAABA/xcDgPr//0D/FwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAApAHDA4D4//8AAAAAAAAAAHh/hgKA+v//eO8XA4D6//8AAAAAAAAAAAAA
AAAAAAAABwAAAAAAAAACqAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAsP6zAgD4
//9QAAAAAAAAAN1ewwOA+P//CAAAAAAAAADwutkCgPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAqOEBQPz2//+aNqwCAAAAABEAAAAACP//AAAAAAAAAAAAEL99+/b///C62QKA+P//
AAAAAAAAAADdXsMDgPj//wAAAAAAAAAAAAAAAAAAAADxAQAAAAAAAAAAAAAAAAAA8AAgfvv2
//8AAAAAAAAAAAAAAAAAAAAA/////38AAAAAAAAAAAAAAAAAAACACQAA+P///38AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgxRcDgPr//wAAAAAAAAAAAAAAAAAAAABgxRcDgPr//xBQ
hgKA+v//kKhsAYD6//9wu9kCgPj//+7vqwIA+P//CAAAAAAAAADdXsMDgPj//wAAAAAAAAAA
cMUXA4D6//9Q+xcDgPr//4DeCAGAHwAAAgEAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA
AABEDwAAAAAAAADApAIA+P//AAAAAAAAAABQ+xcDgPr//wAAAAAAAAAAAAAAAAAAAAAcAAEQ
BAAaACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN1ewwOA+P//AAAAAAAAAABAsmYfAAAAAA+JrAIA+P//
AAAAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAAAAAAAxAAAAAAAAAAAAAAAAAAAAGL3ZAoD4
//8UyrwCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDFFwOA+v//AAAAAAAAAADIvNkC
gPj//xAAAAAAAAAA3V7DA4D4//8QAAAAAAAAAIICAQAAAAAAgLzZAoD4//8YAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAuQAA+P//gN7DAgD4///AvMQCAPj//1D7FwOA+v//
AgAAAAAAAAACAAAAAAAAAIBAuQAA+P//AAAAAAAAAACkAcMDgPj//2DFFwOA+v//AQAAAAAA
AACQqGwBgPr//2DFFwOA+v//gAAAAAAAAAC3AcMDgPj//2DFFwOA+v//AF0e7v////8AAAAA
AAAAAAAAAAAAAAAAAQAAAAAAAACK+9UCAPj//1D7FwOA+v//gN7DAgD4//+wvdkCgPj//1D7
FwOA+v//kKhsAYD6//8AAAAAAAAAAAAAAAAAAAAA5iirAgD4//+A3sMCAPj//1D7FwOA+v//
wLzEAgD4//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADogMUCAPj//+iAxQIA+P//S0RCR0AD
AAAAwKQCAPj///CMqwIA+P//AAAAAAAAAADoAdgAAAABABCFqwIA+P//AAAAAAAAAACQCMkC
APj//5AlxwIA+P//yCXHAgD4//9QhMYCAPj//zCqzwIA+P//eKDPAgD4//+UoM8CAPj//wA1
zAIA+P//gNPLAgD4///weswCAPj//9AxxwIA+P//6DHHAgD4//8AAAAAAAAAAAAAAAAAAAAA
ANvPAgD4//94os8CAPj//wAAAAAAAAAAAAAAAAAAAAD4qc8CAPj//ySfxwIA+P//+KLPAgD4
//8Ioc8CAPj//2CgzwIA+P//4KLPAgD4//8AAAAAAAAAALigzwIA+P//AAAAAAAAAAAAAAAA
AAAAAKChzwIA+P//0KjPAgD4//8AEAAAAAAAAJCkzwIA+P//GI/HAgD4//8gj8cCAPj//8BC
xgIA+P//KAnJAgD4///wjscCAPj//2CPxwIA+P//AAAAAAAAAAAA1c8CAPj//8DazwIA+P//
wNvPAgD4///A0s8CAPj//2C8wwIA+P//wGvEAgD4//8AbMQCAPj//2iKxgIA+P//gCXFAgD4
//8QoM8CAPj//wChzwIA+P//AKDPAgD4//9wP8UCAPj//3BPxQIA+P//uL/DAgD4//9kP8UC
APj///AQyQIA+P//oBvAAgD4//8AAAAAAAAAAECszwIA+P//6KHPAgD4//+ICMkCAPj//8gM
xwIA+P//1KDPAgD4///MbcYCAPj//+AMyQIA+P//EKTHAgD4//9Qj8cCAPj//yiPxwIA+P//
nJ3MAgD4//84oM8CAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAC4ADgA
KABwAGQBAAAAANAEOAOQAigAAE3aIQgA9AXwBbhLIAEkAKgEAAAAAAAAkMDDAgD4//+YwMMC
APj//0BFzAIA+P//gE4YACAAgAEAAAAAAAAAAAAAQAAQABgAAAAzACsAAAAAAEAAIwBTAAB2
zAIA+P//AHLMAgD4//8AAAAAAAAAAEiLxwIA+P//RIvHAgD4//+A178CAPj//9hLAAAAAAAA
kM8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwKQCAPj//wAAAAAAAAAAAHBeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD+alUAAAAAAH0x0FQAAAAA2M8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKACAPj//wAAAAAAAAAA
AJAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADDBAQAAAAAAGnG50wAAAAAGNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0LwAAPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACb9QAAAAAAAGGATU0AAAAA
YNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQMMAgPj//wAAAAAAAAAAAPAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB++QQAAAAAADfH50wAAAAAyNAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMgAgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABi9wAAAAAAACfgW0oAAAAAENEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcMkAgPj//wAAAAAAAAAAAOAFAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGXAYAAAAAAB3BW0oAAAAA
UNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUM8AgPj//wAAAAAAAAAAAFAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACVZQcAAAAAACXRrFMAAAAAkNEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwOYAgPj//wAAAAAAAAAA
ACAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADKyQwAAAAAAEEWxVEAAAAA6NEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4PIAgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfagEAAAAAAHCrEFAAAAAA
QNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4PMAgPj//wAAAAAAAAAAAHAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD2rAUAAAAAAJSS50wAAAAAkNIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUPkAgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAHUAAAAAAAABfBW0oAAAAA6NIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4PkAgPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMgEAAAAAAP7AW0oAAAAA
QNMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgPoAgPj//wAAAAAAAAAAADADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQMQMAAAAAAI+S50wAAAAAkNMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsP0AgPj//wAAAAAAAAAA
ANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABLwAAAAAAAANvKW0oAAAAA6NMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgP4AgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8VwEAAAAAAE0FDFUAAAAA
QNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOAAgPj//wAAAAAAAAAAAHABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACCrAEAAAAAAD4FDFUAAAAAkNQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOEAgPj//wAAAAAAAAAA
AIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADyZgIAAAAAAHYFDFUAAAAA6NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8OMAgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI3wEAAAAAAMEbZE8AAAAA
QNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQOUAgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABynwEAAAAAAKCS50wAAAAAmNUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoNYAgPj//wAAAAAAAAAA
AMAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABtXwYAAAAAAOuS50wAAAAA8NUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYNwAgPj//wAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpEAEAAAAAABTBW0oAAAAA
SNYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4NwAgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADFnAEAAAAAABTBW0oAAAAAoNYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4N0AgPj//wAAAAAAAAAA
AKABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACzWwIAAAAAAAsv0FQAAAAA+NYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ZQAAAAAAABPBW0oAAAAA
UNcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAkMAAgPj//wAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABWCwMAAAAAALX5/lEAAAAAqNcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA4BgPj//wAAAAAAAAAA
AIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACsYQIAAAAAAHWEAVUAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkBABgPj//wAAAAAAAAAAAEAGAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVvgMAAAAAADJE8FIAAAAA
WNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0BYBgPj//wAAAAAAAAAAAIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQ0gMAAAAAAESEAVUAAAAAsNgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUBoBgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAPWwEAAAAAAFWEAVUAAAAACNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUBsBgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3kgAAAAAAAMqjo0sAAAAA
YNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABgPj//wAAAAAAAAAAAMAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAtRQUAAAAAAJyS50wAAAAAuNkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAQBgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABEVgEAAAAAAIHEW0oAAAAAENoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYCQBgPj//wAAAAAAAAAAAJAaAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABd8hkAAAAAAIq+4VIAAAAA
YNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAYBgPj//wAAAAAAAAAAAOAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADn6QUAAAAAADST50wAAAAAuNoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABgPj//wAAAAAAAAAA
ALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACTIAIAAAAAAGMr+VQAAAAAENsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgE4BgPj//wAAAAAAAAAAACAHAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACroAcAAAAAALT3ylQAAAAA
YNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAoFUBgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABeSwEAAAAAAP/AW0oAAAAAsNsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsFYBgPj//wAAAAAAAAAA
AKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACSLwEAAAAAANLvTk8AAAAACNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4GoBgPj//wAAAAAAAAAAACAPAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARiw4AAAAAALL2NFAAAAAA
WNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHoBgPj//wAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA+QwYAAAAAAA12lFIAAAAAsNwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGABgPj//wAAAAAAAAAA
AMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAdzwIAAAAAADUv+VQAAAAACN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABgPj//wAAAAAAAAAAAPAfAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFXx0AAAAAANRbP1MAAAAA
YN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwGIBgPj//wAAAAAAAAAAAJAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACyOAUAAAAAAAlbP1MAAAAAuN0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGcBgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAh7QAAAAAAAIqb50wAAAAAEN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUFcBgPj//wAAAAAAAAAAAMAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtJwUAAAAAAMiS50wAAAAA
aN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUGgBgPj//wAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADp4AAAAAAAALtYCEoAAAAAwN4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFwBgPj//wAAAAAAAAAA
AKADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABWcwMAAAAAAC6Y50wAAAAAGN8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0GgBgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9XQEAAAAAAAHCW0oAAAAA
aN8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8GkBgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD02QAAAAAAAH6S50wAAAAAwN8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABgPj//wAAAAAAAAAA
AKADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABBIQQAAAAAAFymAFEAAAAAGOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAoEMBgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd/wEAAAAAAB3BW0oAAAAA
aOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEUBgPj//wAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAC+GAMAAAAAAJuS50wAAAAAwOAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCEBgPj//wAAAAAAAAAA
AKACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABCtwIAAAAAAJiS50wAAAAAGOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAME0BgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADb6QAAAAAAAAnBW0oAAAAA
aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwE0BgPj//wAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADrNgAAAAAAAI3KW0oAAAAAuOEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D4BgPj//wAAAAAAAAAA
AOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABvPgEAAAAAAIfFW0oAAAAACOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEOwDgPj//wAAAAAAAAAAAFACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHjwIAAAAAAIvFW0oAAAAA
YOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYO4DgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAC+nAEAAAAAAD/FW0oAAAAAuOIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYO8DgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACs/wAAAAAAAGLOW0oAAAAAEOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8O8DgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVdAAAAAAAAGLOW0oAAAAA
aOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgPADgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADNqwAAAAAAAGPOW0oAAAAAwOMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPEDgPj//wAAAAAAAAAA
ALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAmcQAAAAAAABPBW0oAAAAAEOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwPEDgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtmgEAAAAAABTBW0oAAAAA
YOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0PIDgPj//wAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADPAAIAAAAAAHJqYVQAAAAAsOQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PQDgPj//wAAAAAAAAAA
ANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABVYgEAAAAAAD6T50wAAAAAAOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwPUDgPj//wAAAAAAAAAAAJAIAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADi6QcAAAAAABwpiFMAAAAA
UOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOADgPj//wAAAAAAAAAAAFAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA0EQQAAAAAAIaT50wAAAAAqOUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUOQDgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAB7sQAAAAAAALbMW0oAAAAAAOYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4OQDgPj//wAAAAAAAAAAAGACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPDQIAAAAAAGKo50wAAAAA
WOYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQOcDgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABoFgEAAAAAALbMW0oAAAAAsOYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOgDgPj//wAAAAAAAAAA
ALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADMfAEAAAAAAHSo50wAAAAACOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4OkDgPj//wAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVngEAAAAAAAyr50wAAAAA
YOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwMcDgPj//wAAAAAAAAAAABAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABv1wQAAAAAAJeU50wAAAAAuOcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0MwDgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADVPgEAAAAAAF7BW0oAAAAAEOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkM0DgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB09AAAAAAAAL7DW0oAAAAA
aOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQM4DgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA/XwEAAAAAAC7FW0oAAAAAwOgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMM8DgPj//wAAAAAAAAAA
ADAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACdUQgAAAAAAHCU50wAAAAAEOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYNcDgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH1gEAAAAAAEeU50wAAAAA
YOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQNkDgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABnlQEAAAAAAN/EW0oAAAAAuOkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUNoDgPj//wAAAAAAAAAA
AGACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACWzQIAAAAAAEao50wAAAAAEOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsNwDgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApXgIAAAAAAB3BW0oAAAAA
aOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAkN4DgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADe5QAAAAAAABbBW0oAAAAAwOoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMADgPj//wAAAAAAAAAA
APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADFtAEAAAAAABbBW0oAAAAAGOsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8MADgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7lgAAAAAAALbKW0oAAAAA
aOsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgMUDgPj//wAAAAAAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACrvwIAAAAAAF6m50wAAAAAwOsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUP4DgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAB4xQEAAAAAAEqpblEAAAAAGOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIOsDgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4kgAAAAAAANgO51EAAAAA
aOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4AsBgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABRKwEAAAAAALFNlVIAAAAAwOwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0C4EgPj//wAAAAAAAAAA
AGAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAqQAUAAAAAALdNlVIAAAAAGO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDQEgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORgEAAAAAALdNlVIAAAAA
cO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUDUEgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADs9AAAAAAAAP3AW0oAAAAAyO0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsDYEgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA7mAAAAAAAAO2j50wAAAAAKO4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsDcEgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+kgEAAAAAAPDMW0oAAAAA
gO4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAEDkEgPj//wAAAAAAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACjzAIAAAAAAHKo50wAAAAA2O4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUDsEgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADqYwAAAAAAANjMW0oAAAAAMO8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEDwEgPj//wAAAAAAAAAAAPACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBuwIAAAAAAHCo50wAAAAA
iO8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAACAEgPj//wAAAAAAAAAAALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAmgEAAAAAAOnMW0oAAAAA4O8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCEEgPj//wAAAAAAAAAA
ABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADLUQIAAAAAAG+o50wAAAAAOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwCMEgPj//wAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLJwIAAAAAAPHMW0oAAAAA
kPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYCUEgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACtwwAAAAAAAKrOW0oAAAAA6PAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECYEgPj//wAAAAAAAAAA
gBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABOkwAAAAAAAJLKW0oAAAAAQPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAMCYEgPj//wAAAAAAAAAAADAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQQAAAAAAPOj50wAAAAA
kPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYCoEgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABYrwEAAAAAAJWm50wAAAAA6PEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEkEgPj//wAAAAAAAAAA
AKAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAr9QUAAAAAANBNlVIAAAAAQPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0E4EgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAolAEAAAAAAGSo50wAAAAA
mPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIFAEgPj//wAAAAAAAAAAAMAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADamAUAAAAAAIem50wAAAAA8PIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4FUEgPj//wAAAAAAAAAA
ANADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADGtwMAAAAAAIIbTlIAAAAASPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsFkEgPj//wAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPZwIAAAAAAP4kTlIAAAAA
mPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0FsEgPj//wAAAAAAAAAAAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACSrwAAAAAAAJPKW0oAAAAA8PMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMFwEgPj//wAAAAAAAAAA
AOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADHeAEAAAAAAL3KW0oAAAAASPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEF0EgPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNAEAAAAAABlE8FIAAAAA
sPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEAEgPj//wAAAAAAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACsYQIAAAAAAHWEAVUAAAAAEPUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEIEgPj//wAAAAAAAAAA
AIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABQ0gMAAAAAAESEAVUAAAAAcPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYEgPj//wAAAAAAAAAAADABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqDQEAAAAAAI/BW0oAAAAA
0PUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAgAYPn//wAAAAAAAAAAADAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEcEgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACOQQEAAAAAAHTFW0oAAAAAcPYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAYPn//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
wPYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHMAYPn//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4AYPn//wAAAAAAAAAA
AHACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAUPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsF0EgPj//wAAAAAAAAAAADACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxewIAAAAAAJXCW0oAAAAA
qPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgCsEgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACdEAEAAAAAAJLMW0oAAAAAAPgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0CwEgPj//wAAAAAAAAAA
AIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABrZQEAAAAAAJLMW0oAAAAAWPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkEYCgPj//wAAAAAAAAAAAJAMAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuVgwAAAAAAM6T50wAAAAA
qPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIFMCgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA4LQIAAAAAACiTZE0AAAAAAPkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUCgPj//wAAAAAAAAAA
AIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABuxwEAAAAAAHnMW0oAAAAAWPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgFYCgPj//wAAAAAAAAAAANACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAgMAAAAAACaCt00AAAAA
sPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUFkCgPj//wAAAAAAAAAAAOAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADEAwUAAAAAAATBF04AAAAACPoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACgPj//wAAAAAAAAAA
AEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAC92AIAAAAAAOmBt00AAAAAYPoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcI0CgPj//wAAAAAAAAAAAKAKAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOtgoAAAAAADA+0FQAAAAA
uPoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAEJgCgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABACwEAAAAAAC4FCEUAAAAAEPsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJgCgPj//wAAAAAAAAAA
ABADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACfQAMAAAAAAP8quk0AAAAAaPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0JsCgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCQEAAAAAAL5ibFAAAAAA
wPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIACgPj//wAAAAAAAAAAAJAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAeygYAAAAAAAoruk0AAAAAEPwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEIDgPj//wAAAAAAAAAA
AIAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA5yAcAAAAAAB4ruk0AAAAAYPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIEwDgPj//wAAAAAAAAAAAOACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADanwIAAAAAAMGr50wAAAAA
uPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAE8DgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD3yAAAAAAAADzePU8AAAAAEP0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsE8DgPj//wAAAAAAAAAA
APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAF1AAAAAAAABYlx1MAAAAAaP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAoFADgPj//wAAAAAAAAAAAKADAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClHwQAAAAAADElx1MAAAAA
wP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQFQDgPj//wAAAAAAAAAAAJACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAzEAMAAAAAALMgDFUAAAAAGP4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0FYDgPj//wAAAAAAAAAA
ADABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAaUQEAAAAAAGicAVUAAAAAcP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgDgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC6gAAAAAAAG0wDFUAAAAA
IQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAG4AdABvAHMA
awByAG4AbAAuAGUAeABlAAAAHAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGgAYQBsAC4AZABsAGwAAAAAAB4AAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABrAGQAYwBvAG0ALgBkAGwAbAAAAAAAAAAAAC4AAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABtAGMAdQBwAGQAYQB0AGUA
XwBHAGUAbgB1AGkAbgBlAEkAbgB0AGUAbAAuAGQAbABsAAAAAAAAAAAAHgAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAFAAUwBIAEUARAAuAGQAbABsAAAA
AAAAAAAAHQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEMA
TABGAFMALgBTAFkAUwAAABsAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUA
bQAzADIAXABDAEkALgBkAGwAbAAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAFcAZABmADAAMQAwADAAMAAuAHMA
eQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABXAEQARgBMAEQAUgAuAFMAWQBTAAAAAAAAACUAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAQQBDAFAA
SQAuAHMAeQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAGQAcgBpAHYAZQByAHMAXABXAE0ASQBMAEkAQgAuAFMAWQBTAAAAAAAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
bQBzAGkAcwBhAGQAcgB2AC4AcwB5AHMAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHAAYwBpAC4AcwB5AHMAAAAAACkA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAdgBkAHIAdgByAG8AbwB0AC4AcwB5AHMAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGYAaQBsAHQA
LgBzAHkAcwAAAAAAJAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXAB4AGUAbgAuAHMAeQBzAAAAAAAnAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGIA
dQBzAC4AcwB5AHMAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABwAGEAcgB0AG0AZwByAC4AcwB5AHMAAAAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAdgBvAGwAbQBnAHIALgBzAHkAcwAAAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHYAbwBsAG0AZwByAHgA
LgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAGQAcgBpAHYAZQByAHMAXABpAG4AdABlAGwAaQBkAGUALgBzAHkAcwAAACgAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
UABDAEkASQBEAEUAWAAuAFMAWQBTAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAG0AbwB1AG4AdABtAGcAcgAuAHMA
eQBzAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABhAHQAYQBwAGkALgBzAHkAcwAAAAAAAAAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYQB0AGEA
cABvAHIAdAAuAFMAWQBTAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAHYAYgBkAC4AcwB5AHMAAAAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABzAHQAbwByAHAAbwByAHQALgBzAHkAcwAAACgAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAeABlAG4AYwByAHMA
aAAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGQAaQBzAGsALgBzAHkAcwAAAAAAKAAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMA
XABhAG0AZAB4AGEAdABhAC4AcwB5AHMAAAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAZgBsAHQAbQBnAHIALgBzAHkA
cwAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
ZAByAGkAdgBlAHIAcwBcAGYAaQBsAGUAaQBuAGYAbwAuAHMAeQBzAAAAJQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABOAHQA
ZgBzAC4AcwB5AHMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMAdABlAG0A
MwAyAFwARAByAGkAdgBlAHIAcwBcAG0AcwByAHAAYwAuAHMAeQBzAAAAAAAAAAAAJwAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMA
XABrAHMAZQBjAGQAZAAuAHMAeQBzAAAAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABTAHkAcwB0AGUAbQAzADIAXABEAHIAaQB2AGUAcgBzAFwAYwBuAGcALgBzAHkAcwAAAAAA
JAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYA
ZQByAHMAXABwAGMAdwAuAHMAeQBzAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAEYAcwBfAFIAZQBjAC4AcwB5AHMA
AAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABuAGQAaQBzAC4AcwB5AHMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAE4ARQBUAEkATwAuAFMA
WQBTAAAAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMA
MgBcAEQAcgBpAHYAZQByAHMAXABrAHMAZQBjAHAAawBnAC4AcwB5AHMAAAAAACYAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
dABjAHAAaQBwAC4AcwB5AHMAAAAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGYAdwBwAGsAYwBsAG4AdAAuAHMA
eQBzAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXAB2AG0AcwB0AG8AcgBmAGwALgBzAHkAcwAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAdgBvAGwA
cwBuAGEAcAAuAHMAeQBzAAAAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMA
dABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAHMAcABsAGQAcgAuAHMAeQBzAAAAAAAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYA
ZQByAHMAXAByAGQAeQBiAG8AbwBzAHQALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAHIAaQB2AGUAcgBzAFwAbQB1AHAALgBzAHkA
cwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABoAHcAcABvAGwAaQBjAHkALgBzAHkAcwAAACcAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAZgB2AGUA
dgBvAGwALgBzAHkAcwAAAAAAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGQAaQBzAGsALgBzAHkAcwAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
QwBMAEEAUwBTAFAATgBQAC4AUwBZAFMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGMAZAByAG8AbQAuAHMAeQBzAAAA
AAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQA
cgBpAHYAZQByAHMAXABOAHUAbABsAC4AUwBZAFMAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAEIAZQBlAHAALgBTAFkA
UwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAdgBnAGEALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABWAEkARABFAE8AUABSAFQA
LgBTAFkAUwAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIA
XABkAHIAaQB2AGUAcgBzAFwAdwBhAHQAYwBoAGQAbwBnAC4AcwB5AHMAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAFIA
RABQAEMARABEAC4AcwB5AHMAAAAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXAByAGQAcABlAG4AYwBkAGQALgBzAHkA
cwAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAcgBkAHAAcgBlAGYAbQBwAC4AcwB5AHMAAAAlAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAE0AcwBmAHMA
LgBTAFkAUwAAACUAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIA
XABEAHIAaQB2AGUAcgBzAFwATgBwAGYAcwAuAFMAWQBTAAAAJAAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAB0AGQAeAAuAHMA
eQBzAAAAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
RABSAEkAVgBFAFIAUwBcAFQARABJAC4AUwBZAFMAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYQBmAGQALgBzAHkA
cwAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQA
UgBJAFYARQBSAFMAXABuAGUAdABiAHQALgBzAHkAcwAAAAAAAAAAACcAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdwBmAHAA
bAB3AGYALgBzAHkAcwAAAAAAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHAAYQBjAGUAcgAuAHMAeQBzAAAAAAAAAAAA
KAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABuAGUAdABiAGkAbwBzAC4AcwB5AHMAAAAAACcAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdwBhAG4AYQByAHAA
LgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHQAZQByAG0AZABkAC4AcwB5AHMAAAAAAAAAJgAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMA
XAByAGQAYgBzAHMALgBzAHkAcwAAAAAAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAbgBzAGkAcAByAG8AeAB5AC4A
cwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
RABSAEkAVgBFAFIAUwBcAG0AcwBzAG0AYgBpAG8AcwAuAHMAeQBzAAAAKQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABkAGkA
cwBjAGEAYwBoAGUALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkA
cwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYwBzAGMALgBzAHkAcwAAAAAAJQAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMA
XABkAGYAcwBjAC4AcwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGIAbABiAGQAcgBpAHYAZQAuAHMAeQBzAAAA
JwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXAB0AHUAbgBuAGUAbAAuAHMAeQBzAAAAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAaQA4ADAANAAyAHAA
cgB0AC4AcwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAG0AbwB1AGMAbABhAHMAcwAuAHMAeQBzAAAAKQAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMA
XABrAGIAZABjAGwAYQBzAHMALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAZgBkAGMALgBzAHkAcwAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABIAEQAQQB1AGQAQgB1AHMALgBzAHkAcwAAACcAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdgBpAG8AcwBlAHIA
LgBzAHkAcwAAAAAAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHEAeABsAC4AcwB5AHMAAAAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdQBzAGIA
dQBoAGMAaQAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAFUAUwBCAFAATwBSAFQALgBTAFkAUwAAAAAA
KAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXAB1AHMAYgBlAGgAYwBpAC4AcwB5AHMAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAaQBuAHQAZQBsAHAA
cABtAC4AcwB5AHMAAAAtAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAEMAbwBtAHAAbwBzAGkAdABlAEIAdQBzAC4AcwB5AHMA
AAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkA
VgBFAFIAUwBcAEEAZwBpAGwAZQBWAHAAbgAuAHMAeQBzAAAAKAAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGEAcwBsADIA
dABwAC4AcwB5AHMAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUA
bQAzADIAXABEAFIASQBWAEUAUgBTAFwAbgBkAGkAcwB0AGEAcABpAC4AcwB5AHMAAAAoAAAA
XABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIA
UwBcAG4AZABpAHMAdwBhAG4ALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGEAcwBwAHAAcABvAGUA
LgBzAHkAcwAAACgAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIA
XABEAFIASQBWAEUAUgBTAFwAcgBhAHMAcABwAHQAcAAuAHMAeQBzAAAAAAAoAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHIA
YQBzAHMAcwB0AHAALgBzAHkAcwAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGQAcABiAHUAcwAuAHMAeQBzAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAcwB3AGUAbgB1AG0ALgBzAHkAcwAAAAAAAAAjAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGsAcwAuAHMA
eQBzAAAAAAAAACYAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIA
XABEAFIASQBWAEUAUgBTAFwAdQBtAGIAdQBzAC4AcwB5AHMAAAAAAAAAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHUA
cwBiAGgAdQBiAC4AcwB5AHMAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABOAEQAUAByAG8AeAB5AC4AUwBZAFMA
AAAAACgAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwASABkAEEAdQBkAGkAbwAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHAAbwByAHQA
YwBsAHMALgBzAHkAcwAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABkAHIAbQBrAC4AcwB5AHMAAAAoAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGsA
cwB0AGgAdQBuAGsALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABjAHIAYQBzAGgAZABtAHAALgBzAHkA
cwAAAC4AAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAHIA
aQB2AGUAcgBzAFwAZAB1AG0AcABfAGQAaQBzAGsAZAB1AG0AcAAuAHMAeQBzAAAAAAAAAAAA
LAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYA
ZQByAHMAXABkAHUAbQBwAF8AeABlAG4AdgBiAGQALgBzAHkAcwAAAAAALQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABkAHUA
bQBwAF8AeABlAG4AYwByAHMAaAAuAHMAeQBzAAAALQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABkAHUAbQBwAF8AZAB1AG0A
cABmAHYAZQAuAHMAeQBzAAAAHwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAHcAaQBuADMAMgBrAC4AcwB5AHMAAAAAAAAAJgAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABEAHgAYQBwAGkA
LgBzAHkAcwAAAAAAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUA
bQAzADIAXABkAHIAaQB2AGUAcgBzAFwAZAB4AGcALgBzAHkAcwAAAAAAHgAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAFQAUwBEAEQARAAuAGQAbABsAAAA
AAAAAAAAHgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAHEA
eABsAGQAZAAuAGQAbABsAAAAAAAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABsAHUAYQBmAHYALgBzAHkAcwAAAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAbABsAHQAZABpAG8ALgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHIAcwBwAG4A
ZAByAC4AcwB5AHMAAAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABIAFQAVABQAC4AcwB5AHMAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGIA
bwB3AHMAZQByAC4AcwB5AHMAAAAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABtAHAAcwBkAHIAdgAuAHMAeQBzAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAbQByAHgAcwBtAGIALgBzAHkAcwAAAAAAAAApAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAG0AcgB4AHMA
bQBiADEAMAAuAHMAeQBzAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXABtAHIAeABzAG0AYgAyADAALgBzAHkAcwAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAcABlAGEAdQB0AGgALgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAHMAZQBjAGQAcgB2AC4A
UwBZAFMAAAAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXABzAHIAdgBuAGUAdAAuAHMAeQBzAAAAAAAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
dABjAHAAaQBwAHIAZQBnAC4AcwB5AHMAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHMAcgB2ADIALgBzAHkAcwAAACQA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUA
UgBTAFwAcwByAHYALgBzAHkAcwAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXAByAGQAcABkAHIALgBzAHkAcwAAAAAA
AAAAACYAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAdABkAHQAYwBwAC4AcwB5AHMAAAAAAAAAAAApAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHQAcwBzAGUA
YwBzAHIAdgAuAHMAeQBzAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABSAEQAUABXAEQALgBTAFkAUwAAAAAAAAAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUA
UgBTAFwAeABlAG4AdgBpAGYALgBzAHkAcwAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGkAZgBhAGMA
ZQAuAHMAeQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXAB4AGUAbgBuAGUAdAAuAHMAeQBzAAAAAAAAAOAMyQIA+P//
iP8AAJwAAABIi8cCAPj//yQAAQAEAAAARIvHAgD4//8oAAEABAAAAKAbwAIA+P//LAABAAAB
AAAAdswCAPj//ywBAQAEAAAAAHLMAgD4//8wAQEAUAAAAHygzwIA+P//gAEBAAQAAABooM8C
APj//4QBAQAEAAAAkEk9AoD6//+IAQEAACAAAIBCxgIA+P//iCEBAAgAAACIQsYCAPj//5Ah
AQAIAAAAAACsAgD4//+YIQEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzYwMS4xODc0MS5hbWQ2NGZyZS53aW43c3AxX2dk
ci4xNTAyMDItMTUyNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmOTc0ZjE2Yi0zZTYyLTQxMzYtYTZm
Yi02NGZjY2RkZQUAAAB8oM8CAPj//4CgzwIA+P//aKDPAgD4//9soM8CAPj//5BJPQKA+v//
kGk9AoD6//+AQsYCAPj//4hCxgIA+P//iELGAgD4//+QQsYCAPj//0cAAAAAAAAAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAaQBuAGYAXABoAGQAYQB1AGQAaQBvAC4AUABOAEYAAAACABHA
mAAkBKhLPnMAAAAAcIx+AqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAaQB0AC0A
SQBUAFwATQBNAEQAZQB2AEEAUABJAC4AZABsAGwALgBtAHUAaQAAAAIAEcCEACQEBk4+cwAA
AACgh34CoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABBAHUAZABpAG8AUwBlAHMA
LgBkAGwAbAAAAMLCwsICABHAhAAkBB1RPnMAAAAAQJF+AqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAdABhAHMAawBzAGMAaABkAC4AZABsAGwAAADCwsLCAgARwIIAJAQ6Uz5z
AAAAAIDSfgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHAAcgBvAGYAcwB2AGMA
LgBkAGwAbAAAAMLCwsLCwgIAEcCAACQEGFU+cwAAAABg2H4CoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABtAHMAdABhAHMAawAuAGQAbABsAAAAAgARwIIAJAQDVz5zAAAAAHAs
bQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAG0AcwBhAGMAbQAzADIALgBkAHIA
dgAAAMLCwsLCwgIAEcCCACQEDFo+cwAAAABwTG0CoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUA
bQAzADIAXABtAHMAYQBjAG0AMwAyAC4AZABsAGwAAADCwsLCwsICABHAggAkBG9cPnMAAAAA
QGFtAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAbQBpAGQAaQBtAGEAcAAuAGQA
bABsAAAAwsLCwsLCAgARwIAAJARZXj5zAAAAAKAnbQKg+P//XABEAGUAdgBpAGMAZQBcAEgA
YQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQA
ZQBtADMAMgBcAGQAcwByAG8AbABlAC4AZABsAGwAAAACABHAegAkBC1hPnMAAAAAcGxtAqD4
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkA
bgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAYQB0AGwALgBkAGwAbAAAAMLCwsLCwgIA
EcCMACQEA2Q+cwAAAACgZ20CoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXAB0AGgA
ZQBtAGUAcwBlAHIAdgBpAGMAZQAuAGQAbABsAAAAwsLCwgIAEcBkACQE+mU+cwAAAABA4X4C
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAAADCwsLCAgARwHoAJATQZz5zAAAAAECBbQKg+P//
XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4A
ZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHMAbABjAC4AZABsAGwAAADCwsLCwsICABHA
eAAkBExqPnMAAAAAcIxtAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZQBzAC4A
ZABsAGwAAAACABHAhAAkBD1tPnMAAAAAUGtZAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIA
ZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0A
MwAyAFwAQQB1AGQAaQBvAEUAbgBnAC4AZABsAGwAAADCwsLCAgARwIAAJARJbz5zAAAAAJCC
VgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGMAbwBtAHIAZQBzAC4AZABsAGwA
AAACABHAfAAkBCtxPnMAAAAAAFVWAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkA
cwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwA
UwBlAG4AcwAuAGQAbABsAAAAwsLCwgIAEcCEACQEvHM+cwAAAABga1YCoPj//1wARABlAHYA
aQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMA
XABTAHkAcwB0AGUAbQAzADIAXABBAFUARABJAE8ASwBTAEUALgBkAGwAbAAAAMLCwsICABHA
fgAkBKp2PnMAAAAA4FpWAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAdQB4AHMA
bQBzAC4AZABsAGwAAADCwgIAEcCQACQEt3g+cwAAAABwTFYCoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAbABsAHQAZABpAG8ALgBzAHkAcwAAAAIA
EcCQACQEsHo+cwAAAABAQVYCoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAcgBzAHAAbgBkAHIALgBzAHkAcwAAAAIAEcCAACQEy30+cwAAAABAMVYC
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABsAG0AaABzAHYAYwAuAGQAbABsAAAA
AgARwIQAJAQxgD5zAAAAAEBRnAKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMA
awBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEkA
UABIAEwAUABBAFAASQAuAEQATABMAAAAwsLCwgIAEcCAACQEDoI+cwAAAABw/JwCoPj//1wA
RABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQA
bwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXAB3AGkAbgBuAHMAaQAuAGQAbABsAAAAAgARwIAA
JATohD5zAAAAAHAccQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAG4AcwBpAHMA
dgBjAC4AZABsAGwAAAACABHAgAAkBMCHPnMAAAAAYBZxAqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAbgByAHAAcwByAHYALgBkAGwAbAAAAAIAEcCMACQEuYk+cwAAAABAAXEC
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABXAE0AQQBMAEYAWABHAEYAWABEAFMA
UAAuAGQAbABsAAAAwsLCwgIAEcCAACQEkYs+cwAAAACgi1kCoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABtAGYAcABsAGEAdAAuAGQAbABsAAAAAgARwIQAJATFjT5zAAAAAHB2
WQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGQAaABjAHAAYwBvAHIAZQAuAGQA
bABsAAAAwsLCwgIAEcC8ACQE8pA+cwAAAABAYaICoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAGUAcgB2AGkA
YwBlAFAAcgBvAGYAaQBsAGUAcwBcAE4AZQB0AHcAbwByAGsAUwBlAHIAdgBpAGMAZQBcAEEA
cABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAAAAwsLCwgIAEcCEACQEDJM+cwAA
AACgl1kCoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABkAG4AcwByAHMAbAB2AHIA
LgBkAGwAbAAAAMLCwsICABHAhgAkBFmVPnMAAAAAoLpZAqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAZABoAGMAcABjAG8AcgBlADYALgBkAGwAbAAAAMLCAgARwIQAJASqmD5z
AAAAAEAhWgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEYAVwBQAFUAQwBMAE4A
VAAuAEQATABMAAAAwsLCwgIAEcCAACQExJo+cwAAAABgJl8CoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABkAG4AcwBlAHgAdAAuAGQAbABsAAAAAgARwIIAJAStnD5zAAAAAMCL
owKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABlAHQA
YwAAAMLCwsLCwgIAEcCGACQEmp4+cwAAAABAwUAFoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUA
bQAzADIAXABkAGgAYwBwAGMAcwB2AGMANgAuAGQAbABsAAAAwsICABHAhAAkBPmhPnMAAAAA
QNFABaD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZABoAGMAcABjAHMAdgBjAC4A
ZABsAGwAAADCwsLCAgARwIAAJARlpD5zAAAAAKCrVgWg+P//XABEAGUAdgBpAGMAZQBcAEgA
YQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQA
ZQBtADMAMgBcAFUAWABJAG4AaQB0AC4AZABsAGwAAAACABHAgAAkBE2mPnMAAAAAQOgfCqD4
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkA
bgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAcwBoAHMAdgBjAHMALgBkAGwAbAAAAAIA
EcCSACQEMag+cwAAAABA8R8KoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABpAHQA
LQBJAFQAXABnAHAAcwB2AGMALgBkAGwAbAAuAG0AdQBpAAAAwsLCwsLCAgARwIIAJAT4qj5z
AAAAAMC7pAKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEcAcgBvAHUAcABQAG8A
bABpAGMAeQAAAMLCwsLCwgIAEcCEACQE2a0+cwAAAABAAWACoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABzAGMAaABlAGQAcwB2AGMALgBkAGwAbAAAAMLCwsICABHAgAAkBM2v
PnMAAAAAQBFhAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUA
bQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAawB0AG0AdwAzADIA
LgBkAGwAbAAAAAIAEcB6ACQEqrE+cwAAAABAgaUCoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABSAGUAcwBvAHUA
cgBjAGUAcwBcAFQAaABlAG0AZQBzAAAAwsLCwsLCAgARwKAAJATusz5zAAAAAEAhYQKg+P//
XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4A
ZABvAHcAcwBcAFIAZQBzAG8AdQByAGMAZQBzAFwAVABoAGUAbQBlAHMAXABBAGUAcgBvAFwA
YQBlAHIAbwAuAG0AcwBzAHQAeQBsAGUAcwAAAAIAEcB2ACQEA7c+cwAAAADQ9aUCoPj//1wA
RABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQA
bwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABUAGEAcwBrAHMAAADCwgIAEcCAACQEHLk+cwAA
AABwHGECoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABmAHYAZQBhAHAAaQAuAGQA
bABsAAAAAgARwHoAJAQ4uz5zAAAAAEB1dwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQA
ZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMA
MgBcAHQAYgBzAC4AZABsAGwAAADCwsLCwsICABHAhAAkBHy+PnMAAAAA8Kl3AqD4//9cAEQA
ZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8A
dwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZgB2AGUAYwBlAHIAdABzAC4AZABsAGwAAADCwsLC
AgARwIAAJATMwD5zAAAAAEDBdwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMA
awBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHcA
aQBhAHIAcABjAC4AZABsAGwAAAACABHAhAAkBLLCPnMAAAAAcMx3AqD4//9cAEQAZQB2AGkA
YwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwA
UwB5AHMAdABlAG0AMwAyAFwAdABhAHMAawBjAG8AbQBwAC4AZABsAGwAAADCwsLCAgARwJgA
JASVxD5zAAAAAKDHdwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGkAdAAtAEkA
VABcAHQAYQBzAGsAYwBvAG0AcAAuAGQAbABsAC4AbQB1AGkAAAACABHAfgAkBGTHPnMAAAAA
QOF3AqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAVABhAHMAawBzAFwAUwBDAEgARQBEAEwARwBVAC4AVABYAFQA
AADCwgIAEcAwACQE+sk+cwAAAADgfMkDgPj//1wARgBJAF8AVQBOAEsATgBPAFcATgAAAAIA
EcA6ACQE3ss+cwAAAAAgW34CoPj//1wARABlAHYAaQBjAGUAXABNAHUAcABcAC4AXAAuAFwA
AADCwsLCwsICABHAMAAkBKjOPnMAAAAAwEtBAaD4//9cAEYASQBfAFUATgBLAE4ATwBXAE4A
AAACABHAUgAkBIjRPnMAAAAAwPjYAoD6//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkA
cwBrAFYAbwBsAHUAbQBlADEAXAAkAE0AZgB0AAAAwsLCwsLCAgARwGIAJAR60z5zAAAAAECR
QgGg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAxAFwA
JABTAGUAYwB1AHIAZQA6ACQAUwBEAFMAAADCwsLCwsICABHAWgAkBF3VPnMAAAAAEPLYAoD6
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADEAXAAkAEwA
bwBnAEYAaQBsAGUAAADCwsLCwsICABHASgAkBD7XPnMAAAAAgIZCAaD4//9cAEQAZQB2AGkA
YwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADEAXAAAAMLCwsLCwgIAEcBIACQE
8Nk+cwAAAAAQ8NgCgPr//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwA
dQBtAGUAMQAAAAIAEcBSACQEtdw+cwAAAABApksBoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMQBcAEIAbwBvAHQAAADCwsLCwsICABHAagAkBKfe
PnMAAAAAwPtCAaD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUA
bQBlADEAXAAkAEUAeAB0AGUAbgBkAFwAJABSAGUAcABhAHIAcwBlAAAAwsLCwsLCAgARwFoA
JASQ4D5zAAAAAHB8TAGg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAxAFwAQgBvAG8AdABcAEIAQwBEAAAAwsLCwsLCAgARwGIAJASU4z5zAAAAAHA8
DwCg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAxAFwA
QgBvAG8AdABcAEIAQwBEAC4ATABPAEcAAADCwsLCwsIAoDwCgPr//5BpPQKA+v//94MAAQAA
gAAAAE0PRdNCO0QXEA+D6QIAAE6LFBdNYxyCSYvDScH7BE0D04P/IHVQTIubuAAAAEGDu0AX
AAAAdD9IiUWwSIlNuEiJVcBJi9hJi/lJi/L/FYynIwBIi0WwSItNuEiLVcBMi8NMi89Mi9Zm
ZmZmZmZmDx+EAAAAAACD4A8PhLcAAADB4ANIjWQkkEiNfCQYSIu1AAEAAEiNdiD2hfAAAAAB
dBZIOzVPnyMASA9DNUefIwAPH4AAAAAATI0deQAAAEwr2EH/4w8fAEiLRnBIiUdwSItGaEiJ
R2hIi0ZgSIlHYEiLRlhIiUdYSItGUEiJR1BIi0ZISIlHSEiLRkBIiUdASItGOEiJRzhIi0Yw
SIlHMEiLRihIiUcoSItGIEiJRyBIi0YYSIlHGEiLRhBIiUcQSItGCEiJRwj3Bf4hGQBAAAAA
D4VQAgAAQf/SZf8EJTgiAABIi53AAAAASIu9yAAAAEiLtdAAAABlTIscJYgBAAD2hfAAAAAB
D4RPAQAARA8gwUEKi/ABAABBC4vEAQAAD4XOAQAA+mVIiwwliAEAAIB5egB0V0iJRbAzwEiJ
RbhIiUXASIlFyEiJRdBIiUXYSIlF4GYP78APKUXwDylFAA8pRRAPKUUgDylFMA8pRUC5AQAA
AEQPIsH76NlH///6uQAAAABEDyLBSItFsGVIiwwliAEAAPcBAAACQHQuSIlFsPZBAgJ0Dui7
QwoAZUiLDCWIAQAA9kEDQHQMSI1lgEgzyegACwAASItFsA+uVaxNM9Jmg72AAAAAAHQ+SIlF
sOiiEAAAZUiLBCWIAQAASItAcEiLgAABAABIC8B0GGaDvfAAAAAzdQ5Mi5XoAAAASImF6AAA
AEiLRbBMi4UAAQAATIuN2AAAADPSZg/vwGYP78lmD+/SZg/v22YP7+RmD+/tSIuN6AAAAEyL
nfgAAABJi+lJi+APAfhIDwdIi5W4AAAASYmT2AEAAIpVqEGIk/YBAAD6SIvlSIut2AAAAEiL
pCQAAQAA+8OD/yB1W4lFgEiJTYhIiVWQTIlFmEyJTaDokYT//wvAi0WASItNiEiLVZBMi0WY
TItNoEiJo9gBAAAPhLH8//9IjT1YpiMAi3cQSIs/O8ZzEEiNPLcPvgQ4C8APjvn9//+4HAAA
wOnv/f//uUoAAABFM8lFDyDARQvAdRS5AQAAAEUPtoPwAQAARYuLxAEAAEiLlegAAABMi9Xo
YAAAAEiD7FBIiUwkIEiJVCQoTIlEJDBMiUwkOEyJVCRASYvK6BvYDgBIi0wkIEiLVCQoTItE
JDBMi0wkOEyLVCRASIPEUEH/0kiJRbBIi8joj9cOAEiLRbDpWf3//2YPH0QAAEiB7DgBAABI
jYQkAAEAAA8pdCQwDyl8JEBEDylEJFBEDylMJGBEDylUJHBEDylYgEQPKWCQRA8paKBEDylw
sEQPKXjASIkYSIl4CEiJcBBMiWAYTIloIEyJcChMiXgwTIlUJCDoVwoAAJBmZmZmZmZmDx+E
AAAAAAAPH4AAAAAASIHs2AEAAEiNhCQAAQAADyl0JDAPKXwkQEQPKUQkUEQPKUwkYEQPKVQk
cEQPKViARA8pYJBEDylooEQPKXCwRA8peMBIiRhIiXgISIlwEEyJYBhMiWggTIlwKEyJeDBl
SIsEJYgBAAAPumBMC3MO9oXwAAAAAXQF6IMHAABIjYQkOAEAAIkIM8mJSARIiUgITIlAEIlQ
GEyJSCBMiVAoTIlYMESKjfAAAABBgOEBxkQkIAFMjUWASIvUSIvI6Lq9AwBIjYwkAAEAAA8o
dCQwDyh8JEBEDyhEJFBEDyhMJGBEDyhUJHBEDyhZgEQPKGGQRA8oaaBEDyhxsEQPKHnASIsZ
SIt5CEiLcRBMi2EYTItpIEyLcShMi3kw+vaF8AAAAAEPhLsAAABlSIsMJYgBAACAeXoAdBm5
AQAAAEQPIsH76ApE///6uQAAAABEDyLBZUiLDCWIAQAA9wEAAAJAdCX2QQICdA7o9D8KAGVI
iwwliAEAAPZBA0B0C0iNZYCxAeg6BwAAD65VrGaDvYAAAAAAdAXo5wwAAA8oRfAPKE0ADyhV
EA8oXSAPKGUwDyhtQEyLXeBMi1XYTItN0EyLRchIi1XASItNuEiLRbBIi+VIi63YAAAASIHE
6AAAAA8B+EjPD65VrA8oRfAPKE0ADyhVEA8oXSAPKGUwDyhtQEyLXeBMi1XYTItN0EyLRchI
i1XASItNuEiLRbBIi+VIi63YAAAASIHE6AAAAEjPZmZmZmZmZg8fhAAAAAAADx8ASIPsKGVI
ixwliAEAAEiLi9gBAABIjamAAAAARA8gwAqD8AEAAAuDxAEAAHQ0uUoAAABFM8lFDyDARQvA
dRS5AQAAAEQPtoPwAQAARIuLxAEAAEiLlegAAABMi9Xo3/z///plSIsMJYgBAACAeXoAdFdI
iUWwM8BIiUW4SIlFwEiJRchIiUXQSIlF2EiJReBmD+/ADylF8A8pRQAPKUUQDylFIA8pRTAP
KUVAuQEAAABEDyLB++hWQv//+rkAAAAARA8iwUiLRbBlSIsMJYgBAAD3AQAAAkB0LkiJRbD2
QQICdA7oOD4KAGVIiwwliAEAAPZBA0B0DEiNZYBIM8nofQUAAEiLRbAPrlWsTTPSZoO9gAAA
AAB0PkiJRbDoHwsAAGVIiwQliAEAAEiLQHBIi4AAAQAASAvAdBhmg73wAAAAM3UOTIuV6AAA
AEiJhegAAABIi0WwTIuFAAEAAEyLjdgAAAAz0mYP78BmD+/JZg/v0mYP79tmD+/kZg/v7UiL
jegAAABMi534AAAASYvpSYvgDwH4SA8HZmZmZmZmZg8fhAAAAAAAZmZmZmZmZg8fhAAAAAAA
ZmYPH4QAAAAAAPplSIsUJYgBAABIi3ooSI2v8P7//0iD7whIi3EgSIPuCEiL0UiLSTBIwekD
/fNIpfxIjWcISIvKSItROP/iZpBIiU2ASIlFiEiB7KgBAAAPKbQkoAAAAA8pvCSwAAAARA8p
hCTAAAAARA8pjCTQAAAARA8plCTgAAAARA8pnCTwAAAARA8ppCQAAQAARA8prCQQAQAARA8p
tCQgAQAARA8pvCQwAQAATImkJIgBAABMiawkkAEAAEyJtCSYAQAATIm8JKABAABIibwkeAEA
AEiJtCSAAQAASImcJHABAABIjYUQAQAASIlEJCBIK8RIiUQkKEgtqAEAAEiJRCQwSI0FewAA
AEiJRCQ4SI1UJHBIiVQkWEiNVYBIiVQkUEgPumwkSABIi8zolBwSAEyLpCSIAQAATIusJJAB
AABMi7QkmAEAAEiBxKgBAADp8Pz//2ZmZmZmZmYPH4QAAAAAAGZmZmZmZmYPH4QAAAAAAGZm
ZmZmZmYPH4QAAAAAAA8fAEiD7ChIi0FYZg9vcDBmD294QGZED29AUGZED29IYGZED29QcGZE
D2+YgAAAAGZED2+gkAAAAGZED2+ooAAAAGZED2+wsAAAAGZED2+4wAAAAEyLoBgBAABMi6gg
AQAATIuwKAEAAEyLuDABAABIi7gIAQAASIuwEAEAAEiLmAABAAD7ZQ+uFCWAAQAA6H8EDABI
i02ASItFiEiDxCjDZmZmZmZmZg8fhAAAAAAAZmZmZmZmZg8fhAAAAAAADx9AAEiB7KgBAAAP
KbQkoAAAAA8pvCSwAAAARA8phCTAAAAARA8pjCTQAAAARA8plCTgAAAARA8pnCTwAAAARA8p
pCQAAQAARA8prCQQAQAARA8ptCQgAQAARA8pvCQwAQAATImkJIgBAABMiawkkAEAAEyJtCSY
AQAATIm8JKABAABIjYUQAQAASIlEJCBIK8RIiUQkKEgtqAEAAEiJRCQwSI0FWwAAAEiJRCQ4
SI1UJHBIiVQkWEiNVYBIiVQkUEgPunQkSABIi8zotBoSAEyLpCSIAQAATIusJJABAABMi7Qk
mAEAAEiBxKgBAADpEPv//2ZmZmZmZmYPH4QAAAAAAJBIg+woSItBWGYPb3AwZg9veEBmRA9v
QFBmRA9vSGBmRA9vUHBmRA9vmIAAAABmRA9voJAAAABmRA9vqKAAAABmRA9vsLAAAABmRA9v
uMAAAABMi6AYAQAATIuoIAEAAEyLsCgBAABMi7gwAQAA+2VIixwliAEAAGUPrhQlgAEAAOjL
AgwASIPEKMNmZmZmZmZmDx+EAAAAAABmZmZmZmZmDx+EAAAAAABmZmZmZmZmDx+EAAAAAABm
Dx+EAAAAAABIg+xoTIlFgEyJTYhMiVWQTIldmEyNRCRwSYkISYlQCEiNhRABAABIiUQkIEgr
xEiJRCQoSIlEJDBIjQVDAAAASIlEJDhMiUQkWEiNVYBIiVQkUEgPumwkSABIi8zoXhkSAEyL
pCSIAQAATIusJJABAABMi7QkmAEAAEiDxGjpvfn///voBwIMAGUPrhQlgAEAAEyNRCRwSYsI
SYtQCEyLRYBMi02ITItVkEyLXZhIg8Row2ZmZmZmDx+EAAAAAABIgeyoAQAADym0JKAAAAAP
KbwksAAAAEQPKYQkwAAAAEQPKYwk0AAAAEQPKZQk4AAAAEQPKZwk8AAAAEQPKaQkAAEAAEQP
KawkEAEAAEQPKbQkIAEAAEQPKbwkMAEAAEyJpCSIAQAATImsJJABAABMibQkmAEAAEyJvCSg
AQAASIm8JHgBAABIibQkgAEAAEiJnCRwAQAA+4hMJEhIjVQkcEiJVCRYSI1VgEiJVCRQSIvM
6JkLEgBIjUQkcGYPb3AwZg9veEBmRA9vQFBmRA9vSGBmRA9vUHBmRA9vmIAAAABmRA9voJAA
AABmRA9vqKAAAABmRA9vsLAAAABmRA9vuMAAAABMi6AYAQAATIuoIAEAAEyLsCgBAABMi7gw
AQAASIu4CAEAAEiLsBABAABIi5gAAQAASIHEqAEAAMOQkMzMzMzMzGZmDx+EAAAAAABIg+wo
6CcAAACQzMzMzMzMSIPsKEjHRCQgAAAAAOgOAAAAkMzMzMzMzA8fgAAAAABIiUwkCEiJVCQQ
TIlEJBhMiUwkIJxIg+ww+mVIiwwlIAAAAEiLidhLAADoYQYAAGVIiwwlIAAAAEiDwUDo7wIA
AGVMixQlIAAAAE2LkthLAABIi0QkQEmJgoAAAABIi0QkMEmJQkRIjQVs////SDtEJDh1DkyN
RCRoTI0NUP///+sMTI1EJDhMjQ1y////TYmCmAAAAE2JivgAAABEDyDAZYgEJZhIAAA8An0J
uQIAAABEDyLBSItEJDBIJQACAAB0Afvw/wXmMhoASItMJEBIx0QkKAAAAABIjQX6/v//SDtE
JDh0H0iLRCRgSIlEJCBMi0wkWEyLRCRQSItUJEjozCMPAJBIx0QkIAAAAABFM8lFM8Az0ui1
Iw8AkMzMzMzMzGZmZmZmZg8fhAAAAAAASIHs2AAAAA8pdCQwDyl8JAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFJHRER1bXBCbG9iEAAAALEdAPAgAAAAjwBcvDoe
10SYjYb2iExnWGkBAAAAAAAABwAAAAACBCRhAQAAABgAAAECAOgDAIAACAAAAAAAAAQEBv//
WGVuADQuNi11bnN0YWJsZQAwMi8xNy8yMDE1AAABGwABAQIDBAAAAAAAAAAAAAAAAAAAAAAG
AABYZW4ASFZNIGRvbVUANC42LXVuc3RhYmxlACAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAAAAw0AAwEBAAAAAwMDAlhlbgAABBoBBAEDAQLlBgEA//uJFwAAAABkCmQK
QQFDUFUgMQBJbnRlbAAABBoCBAEDAQLlBgEA//uJFwAAAABkCmQKQQFDUFUgMgBJbnRlbAAA
CwUACwFYZW4AABAPABABAwYAAB4A/v8BAAAAERUAEQAQAABAAEAAgAcJAAEABwAARElNTSAw
AAATDwATAAAAAP//HQAAEAEAABQTABQAAAAA//8dAAARABMBAAAAACALACAAAAAAAAAAAAB/
BAB/AAAAAAAAAAAAIAAAAInDemwTQ9xHnzSogAoPtWxuAgAAAAAAAAIAAAAKAAAAfgBNAEgA
egAAAAQAAAAEAAAAZAoAACwAAABDAG8AbQBwAG8AbgBlAG4AdAAgAEkAbgBmAG8AcgBtAGEA
dABpAG8AbgAAAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACYAAABDAG8AbgBmAGkAZwB1AHIA
YQB0AGkAbwBuACAARABhAHQAYQAAAAkAAAAQAAAA//////////8AAAAAAAAAABYAAABJAGQA
ZQBuAHQAaQBmAGkAZQByAAAAAQAAAEoAAABJAG4AdABlAGwANgA0ACAARgBhAG0AaQBsAHkA
IAA2ACAATQBvAGQAZQBsACAAMwAwACAAUwB0AGUAcABwAGkAbgBnACAANQAAACgAAABQAHIA
bwBjAGUAcwBzAG8AcgBOAGEAbQBlAFMAdAByAGkAbgBnAAAAAQAAAGAAAABJAG4AdABlAGwA
KABSACkAIABYAGUAbwBuACgAUgApACAAQwBQAFUAIAAgACAAIAAgACAAIAAgACAAIAAgAFgA
MwA0ADUAMAAgACAAQAAgADIALgA2ADcARwBIAHoAAAAiAAAAVQBwAGQAYQB0AGUAIABTAGkA
ZwBuAGEAdAB1AHIAZQAAAAMAAAAIAAAAAAAAAAcAAAAcAAAAVQBwAGQAYQB0AGUAIABTAHQA
YQB0AHUAcwAAAAQAAAAEAAAABwAAACIAAABWAGUAbgBkAG8AcgBJAGQAZQBuAHQAaQBmAGkA
ZQByAAAAAQAAABoAAABHAGUAbgB1AGkAbgBlAEkAbgB0AGUAbAAAAAwAAABNAFMAUgA4AEIA
AAALAAAACAAAAAAAAAAHAAAAAAAgAAAAb8A90I7YxUS6KvrgNRctGZgDAAAAAAAAAAAAAAAA
AAAAAAAACwAAAEdlbnVudGVsaW5lSQsAAABHZW51bnRlbGluZUkAAAAAAQAAAOUGAQAACCAC
ASK4gf/7ixflBgEAAAggAAEiuIH/+4sXAAAAAAIAAAABWgNV5LLwAAAAAAAsIcoJAVoDVeSy
8AAAAAAALCHKCQAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA
BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAB0QAAAAAAAAA
AAAAAAAAAAdEAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA
AAAAAAAAAQAAABcAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAEAAACLAAAA
AAAAAAcAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAABAAAAgAAAwAENAAAAAAAAAAAAAAAA
AAABDQAAAAAAAAAAAAAAAAAAAAAAAAAAAIAIAACAAAAAAAAAAAAAAAAACAAAgAAAAAAAAAAA
AAAAAAAAAAABAACAAAAAAAAAAAABAAAAAAgQKAAAAAAAAAAAAQAAAAAIECgAAAAAAgAAgElu
dGVsKFIpIFhlb24oUilJbnRlbChSKSBYZW9uKFIpAAAAAAMAAIAgQ1BVICAgICAgICAgICBY
IENQVSAgICAgICAgICAgWAAAAAAEAACAMzQ1MCAgQCAyLjY3R0h6ADM0NTAgIEAgMi42N0dI
egAAAAAABQAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAIAAAAAA
AAAAAEBgAAEAAAAAAAAAAAAAAABAYAABAAAAAAAAAAAHAACAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAACAAAgCQwAAAAAAAAAAAAAAAAAAAkMAAAAAAAAAAAAAAAAAAA
IAAAANJAO+igsEJIq+pxyeNGPdFAAAAAAAAAAAAAAABBUElDYAQAAAKwWGVuAAAARkFDUPQA
AAAEAFhlbgAAAFdBRVQoAAAAAVZYZW4AAABIUEVUOAAAAAHSWGVuAAAAIAAAAIhIyFTRAR5M
vtYoLJgkEwMAEAAAAAAAAAAAAACdTE1ULJTVRr9Q31zZUkpQSKDTAoD6//+4DwAArAhwCDEA
AABjZHJvbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMUhwAAQAAAAAACgBmH9LR
Vu4oOXc/YDfSI4V9TFIgAAIAAAAAAAsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUjQAAwAAABwA
DgBjTFCffVNJZYVAvXB3dgEA2I8n/X8FAABggNgCgPr//wUBAAAAAQAATFI8AAQAAAA8AA8A
d/p5j+/a3gVZfKRoubDwn9iPJ/1/BQAAYIDYAoD6//8HBAAAABCOewKA+v//AAAATFIoAAUA
AABwABsAIvZYR9ZK2gW5dPl6rRrhn5h7J/1/BQAANAAAwExSOAAGAAAArAAOAHf6eY/v2t4F
WXykaLmw8J/Yjyf9fwUAAGCA2AKA+v//AHB4mQKA+v//AAAATFI0AAcAAADUAA4AY0xQn31T
SWWFQL1wd3YBANiPJ/1/BQAAYIDYAoD6//8GAQAABQEAAExSNAAIAAAADAEOAGNMUJ99U0ll
hUC9cHd2AQDYjyf9fwUAAGCA2AKA+v//CAEAAAYBAABMUjQACQAAAEABCgDsSaK9xv18jIRT
Q0EKMoFI2I8n/X8FAABggNgCgPr//wEFAAAABQAATFI0AAoAAAB0AQ8A+FJLNRS6fKjM5O7U
pp4L5NiPJ/1/BQAAYIDYAoD6//8WAwAAAAMAAExSNAALAAAAqAEPAPhSSzUUunyozOTu1Kae
C+TYjyf9fwUAAGCA2AKA+v//DwMAABYDAABMUjQADAAAANwBDwD4Uks1FLp8qMzk7tSmngvk
2I8n/X8FAABggNgCgPr//xADAAAPAwAATFI0AA0AAAAQAg8A+FJLNRS6fKjM5O7Upp4L5NiP
J/1/BQAAYIDYAoD6//8RAwAAEAMAAExSNAAOAAAARAIPAPhSSzUUunyozOTu1KaeC+TYjyf9
fwUAAGCA2AKA+v//EgMAABEDAABMUiQADwAAAHgCHwD3GObi8t2KFaTU0OfXhtnK2I8n/X8F
AABMUjQAEAAAAKwCDAAJ2QuVn04AjF2DlIEg+6dt2I8n/X8FAABggNgCgPr//wIAAAABAAAA
TFIgABEAAADQAgsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAEgAAAAQDCwAi9lhH1kraBbl0
+XqtGuGfNAAAwExSIAATAAAAJAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABQAAABEAwsA
IvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAFQAAAGQDCwAi9lhH1kraBbl0+XqtGuGfNAAAwExS
IAAWAAAAhAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIoABcAAACkAxsAIvZYR9ZK2gW5dPl6
rRrhn4jmCv1/BQAANAAAwExSIAAYAAAAxAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABkA
AADsAwsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAGgAAAAwECwAi9lhH1kraBbl0+XqtGuGf
NAAAwExSIAAbAAAALAQLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABwAAABMBAsAIvZYR9ZK
2gW5dPl6rRrhnzQAAMBMUiAAHQAAAGwECwAi9lhH1kraBbl0+XqtGuGfNAAAwExSIAAeAAAA
jAQLACL2WEfWStoFuXT5eq0a4Z80AADATFIgAB8AAACsBAsAIvZYR9ZK2gW5dPl6rRrhnzQA
AMBMUiAAIAAAAMwECwAi9lhH1kraBbl0+XqtGuGfNAAAwExSIAAhAAAA7AQLACL2WEfWStoF
uXT5eq0a4Z80AADATFI0ACIAAAAMBQwACdkLlZ9OAIxdg5SBIPunbdiPJ/1/BQAAYIDYAoD6
//8EAAAAAgAAAExSNAAjAAAALAUPAPhSSzUUunyozOTu1KaeC+TYjyf9fwUAAGCA2AKA+v//
EwMAABIDAABMUjQAJAAAAGAFDwD4Uks1FLp8qMzk7tSmngvk2I8n/X8FAABggNgCgPr//wcD
AAATAwAATFI0ACUAAACUBQoA7Emivcb9fIyEU0NBCjKBSNiPJ/1/BQAAYIDYAoD6//9lBQAA
AQUAAExSNAAmAAAAyAUKAOxJor3G/XyMhFNDQQoygUjYjyf9fwUAAGCA2AKA+v//AgUAAGUF
AABMUjQAJwAAAPwFDgBjTFCffVNJZYVAvXB3dgEA2I8n/X8FAABggNgCgPr//wkBAAAIAQAA
TFI0ACgAAAAwBg4AY0xQn31TSWWFQL1wd3YBANiPJ/1/BQAAYIDYAoD6//8ZAQAACQEAAExS
OAApAAAAZAYOAHf6eY/v2t4FWXykaLmw8J/Yjyf9fwUAAGCA2AKA+v//FHB4mQKA+v//AAAA
TFI4ACoAAACYBhQApvlp4Qzm8oQysXrRxp1PeNiPJ/1/BQAAYIDYAoD6//8AAAAAcHiZAoD6
//9MUjwAKwAAANAGDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcAAAAAcHiZ
AoD6//8AAABMUjwALAAAAAgHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcE
AAAAkFn1AoD6//8AAABMUjwALQAAAEQHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgC
gPr//wcEAAAAcFzLAoD6//8AAABMUjwALgAAAIAHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8F
AABggNgCgPr//wcEAAAAEIZJA4D6//8AAABMUjwALwAAALwHDwB3+nmP79reBVl8pGi5sPCf
2I8n/X8FAABggNgCgPr//wcEAAAAEIZJA4D6//8AAABMUjwAMAAAAPgHDwB3+nmP79reBVl8
pGi5sPCf2I8n/X8FAABggNgCgPr//wcEAAAAgIxJA4D6//8AAABMUjwAMQAAADQIDwB3+nmP
79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcEAAAAgIxJA4D6//8AAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAIAAAAExKfvihxS9Nv/DV3mOl5MNoAgAAAAAAAAAAAAAAAAAAAAAAAAEA
AAALAAAAAAAAAFdkZjAxMDAwAAAAAA0AAAAbAAAAXABXAEkATgBEAE8AVwBTABDQUAKA+v//
AQAAAAkAAACwHQAAbXNpc2FkcnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAQDlPAoD6
//8BAAAACQAAALAdAAB2ZHJ2cm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABAHnYC
gPr//wEAAAAFAAAAcBcAAHN0b3JmbHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtZcAALBi
0wKA+v//AQAAAAkAAACwHQAAY2Ryb20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAhYA
ELDZAoD6//8BAAAABwAAAHEXAABIREF1ZEJ1cwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AACwy9oCgPr//wEAAAAJAAAAsB0AAFZpcnRpb1NlcmlhbAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgAAAEAu2wKA+v//AQAAAAkAAACwHQAAaW50ZWxwcG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAACAAAAgFjdAoD6//8BAAAACQAAALAdAABDb21wb3NpdGVCdXMAAAAAAAAAAAAAAAAAAAAA
AAAAALWXAABAXt8CgPr//wEAAAAJAAAAsB0AAHVtYnVzAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAD4AAGBYXQOA+v//AQAAAAcAAABxFwAAUEVBVVRIAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABJEEyN
--------------080008050502080400090006
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------080008050502080400090006--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:23:05 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaLzF-0002BK-F8; Tue, 24 Mar 2015 10:23:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaLzC-0002BD-8h
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 10:23:03 +0000
Received: from [193.109.254.147] by server-1.bemta-14.messagelabs.com id
	39/88-01386-40B31155; Tue, 24 Mar 2015 10:23:00 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427192576!12648325!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24922 invoked from network); 24 Mar 2015 10:22:56 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:22:56 -0000
Received: by wixw10 with SMTP id w10so50238511wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 03:22:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=erhpD6qOLR76hhzzbzP5qso+U+dPsVSZIKwsB/eGEkA=;
	b=mSHVIOYocE6FcRnN7YkOQAnX+MNyz8SlPQp7NWCmprQM2Q/U7rT0hQIIz5gWh/gX1M
	c7pdXeSUcwFlreVqaIs0R/WORs4H+lzekmWdyTdQTBfUdeIE+DoBzYvFgBJ3SynlmxaE
	yN7J+dxxbigrXkfiyg+F3zqaiZNi6TrBPuLqIGwU2I1jxHlPC3Wxmda7tRtXLha9xsSI
	E8TSi/66fD3yDJV/nW6PROoqx8iKwfpyA6Vkw4X/G3k8HDWQHEUiIzl6jIIRVumtc3h3
	WAd/A1zd2BbJZJxp2lNEW/tjx3IK3pRvcHIGwjSlv50ZPPT7A7r5zrQQMnbuNJUy+dgM
	auOg==
X-Gm-Message-State: ALoCoQk7WmuSNb6Qzw4MEzwLBIW9vZWdwwV0GdXd7Iwqs8CXUAaT9sd1870vVX6Mb3Thm0KGOCoW
X-Received: by 10.180.12.194 with SMTP id a2mr27738601wic.55.1427192576217;
	Tue, 24 Mar 2015 03:22:56 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id dc9sm15237275wib.9.2015.03.24.03.22.43
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 03:22:54 -0700 (PDT)
Message-ID: <55113AF4.4010808@m2r.biz>
Date: Tue, 24 Mar 2015 11:22:44 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------080008050502080400090006"
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------080008050502080400090006
Content-Type: multipart/alternative;
 boundary="------------050602040400090900050104"


--------------050602040400090900050104
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 8884
Content-Transfer-Encoding: quoted-printable

Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
> Sorry for the delay, I missed this=85
>
> It=92s fairly easy=85 The service keys are named the same as the driver, 
> so go look in HKLM/CurrentControlSet/Services and find all the things 
> starting with XEN and then either get rid of them or set the StartType 
> value to 4 (disabled).
>
> Paul
>

Thanks for reply, I'll try to do a bat script for remove all files and 
registry keys of pv drivers and I'll post it for help also other people 
having problems about.

Today after updating pv drivers to latest build I had blue screen after 
reboot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.

> *From:*win-pv-devel-bounces@lists.xenproject.org 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------050602040400090900050104
Content-Type: text/html; charset=windows-1252
Content-Length: 57639
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 20/03/2015 11:22, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D062F7.D59CEDA0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Sorry for the delay, I
              missed this=85<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">It=92s fairly easy=85 The
              service keys are named the same as the driver, so go look
              in HKLM/<span class=3D"SpellE">CurrentControlSet</span>/Services
              and find all the things starting with XEN and then either
              get rid of them or set the
              <span class=3D"SpellE">StartType</span> value to 4
              (disabled).<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Thanks for reply, I'll try to do a bat script for remove all files
    and registry keys of pv drivers and I'll post it for help also other
    people having problems about.<br>
    <br>
    Today after updating pv drivers to latest build I had blue screen
    after reboot windows, seems about xenvif.<br>
    In attachments qemu log and crash minidump.<br>
    <br>
    Thanks for any reply and sorry for my bad english.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US">
                    <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                    <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                    Fantoni<br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    17 March 2015 09:00<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Windows driver removal is a black art and is
                  broken in different ways on different versions of
                  Windows. As you correctly observe, using the pnputil
                  tool does not actually remove the drivers, and hence
                  you=92ll see DllInitialize() and DriverEntry() functions
                  called *<b><span style=3D"font-weight:bold">but</span></b>*
                  there should be no AddDevice() called i.e. the drivers
                  are unbound from the devices but the modules are still
                  present.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>If you also want to stop the driver modules
                  from loading then you need to remove the service keys
                  from the registry, which you should be able to safely
                  do after the reboot. If you just remove the binaries
                  from system32 then you may well end up in a situation
                  where the registry is telling the system to load a
                  driver but, when it looks, the binary has gone.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Can you tell me which ones registry keys I must delete
                with the manually remove of remaining pv drivers in
                system32 without cause problems please=3F<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      16 March 2015 15:25<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 11/03/2015 16:47, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                    a look in
                    C:\Windows\System32\DriverStore\FileRepository. If
                    you still have packages for old drivers in here then
                    Windows can find them and re-install them even if
                    you think you=92ve uninstalled. The correct way to
                    remove packages is using =91pnputil =96d=92 but it=92s a bit
                    clunky.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I removed all pv drivers visible in windows control
                  panel, after I removed with "pnputil -f -d" all
                  remaining drivers found with "pnputil /e" and
                  rebooted.<br>
                  Now still load latest xenbus (visible from qemu log)
                  and network is not available even if
                  .../FileRepository folder don't have other xen's
                  drivers.<br>
                  I tried a search and I found there are still all pv
                  drivers files in C:\windows\system32 and
                  C:\windows\system32\drivers<br>
                  I removed also these files and rebooted and now didn't
                  load pv drivers, emulated network is working and seems
                  ok.<br>
                  Previous week tests instead gave me windows blue
                  screen "registry error" 1 minute after windows boot.<br>
                  <br>
                  Is there another way to clean uninstall all drivers
                  without risk of problems=3F<br>
                  <br>
                  Thanks for any reply and sorry for my bad english.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        11 March 2015 15:39<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 11/03/2015
                      16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                      you tried uninstalling all versions of XENVIF and
                      XENNET and then re-installing the latest=3F Windows
                      should always prefer the newest driver by date but
                      maybe something has gone wrong and for some reason
                      is favouring a really old version you have lying
                      around in DriverStore.</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Yes, I already uninstalled all old drivers build of
                    all component 3 tests ago, rebooted windows and
                    after installed the new build but seems olders
                    xenvif and xennet still remained even if not visible
                    in control center and always on new xenvif and
                    xennet install give me "ready to use" instead of
                    "device updated" message at end.<br>
                    The only other way I know to delete the drivers is
                    search the files in c:/windows/... but I tried time
                    ago with other things gave me always blue screen on
                    next boot, so I not tried with pv.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                    RangeSetPop error is not anything to worry about. It
                    is expected. It simply means the grant table has run
                    out of space and needs to be expanded, which is why
                    you see the error immediately followed by a map and
                    populate of the next grant table page.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          11 March 2015 15:17<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Cc:</span></b>
                          Paul Durrant<br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          [win-pv-devel] xenvif xennet don't update or
                          load correctly and another error saw in qemu
                          log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">As I
                      reported time ago there was strange thing when
                      update network components: give "ready to use"
                      instead of "device updated" message at end of
                      driver component install.<br>
                      Today I saw in qemu log of one W7 pro 64 bit domU
                      this:<br>
                      xen_platform_log xen platform: XENVIF|DriverEntry:
                      XENVIF 8.0.0 (0) (24.09.2014)<br>
                      xen_platform_log xen platform: XENNET|DriverEntry:
                      XENNET 8.0.0 (0) (24.09.2014)<br>
                      <br>
                      Is probably the first build I installed in this
                      domU and that I already uninstall from control
                      center time ago.<br>
                      <br>
                      other components instead seems loaded correctly
                      the latest build installed:<br>
                      xen_platform_log xen platform: XEN|DllInitialize:
                      XEN 8.0.0 (41) (05.03.2015)<br>
                      xen_platform_log xen platform:
                      XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                      (05.03.2015)<br>
                      xen_platform_log xen platform:
                      XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                      (03.03.2015)<br>
                      xen_platform_log xen platform:
                      XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                      <br>
                      ----------<br>
                      <br>
                      I saw also these errors in qemu log:<br>
                      ...<br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">xen_platform_log
                      xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000200 -
                      000003ff]<br>
                      <b><span style=3D"font-weight:bold">xen_platform_log
                          xen platform: XENBUS|RangeSetPop: fail1
                          (c000009a)</span></b><br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000400 -
                      000005ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000600 -
                      000007ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000800 -
                      000009ff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000a00 -
                      00000bff]<br>
                      xen_platform_log xen platform: XENBUS|RangeSetPop:
                      fail1 (c000009a)<br>
                      xen_platform_log xen platform: GNTTAB: MAP
                      XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                      xen_platform_log xen platform:
                      XENBUS|GnttabExpand: added references [00000c00 -
                      00000dff]</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                    color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                      style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                      New Roman&quot;">...<br>
                      Can someone tell me something about=3F<br>
                      Can they be related to some failed memory
                      balloning error in dom0's kern.log and syslog=3F<br>
                      <br>
                      Full qemu log in attachment is needed.<br>
                      <br>
                      If you need more informations and/or tests tell me
                      and I'll post them.<br>
                      Thanks for any reply and sorry for my bad english.<br
                        style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span><o:p></o:p></font></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------050602040400090900050104--

--------------080008050502080400090006
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7.log.1"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7.log.1"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.934000 ms, bitrate 686557157 bps (654.751927 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XEN|AcpiFindRsdp: 0x00000000000F0D90
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|AcpiGetXsdt: 0x00000000FC00A010
xen_platform_log xen platform: XEN|SystemProcessorInformation: ====> (0:0)
xen_platform_log xen platform: XEN|SystemProcessorInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemProcessorInformation: APIC ID: 00
xen_platform_log xen platform: XEN|SystemProcessorInformation: PROCESSOR ID: 00
xen_platform_log xen platform: XEN|SystemProcessorInformation: <==== (0:0)
xen_platform_log xen platform: XEN|SystemProcessorInformation: ====> (0:1)
xen_platform_log xen platform: XEN|SystemProcessorInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemProcessorInformation: APIC ID: 02
xen_platform_log xen platform: XEN|SystemProcessorInformation: PROCESSOR ID: 01
xen_platform_log xen platform: XEN|SystemProcessorInformation: <==== (0:1)
xen_platform_log xen platform: XEN: HYPERCALL PAGE 0 @ 00000000.036aa000
xen_platform_log xen platform: XENFILT|DriverEntry: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XEN: 4.6-unstable (__XEN_INTERFACE_VERSION__ = 00040600)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800255F040 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80025605D0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DD040 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DD5D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DE5D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024DF5D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E05D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E15D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E25D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E35D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E45D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E55D0 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E65D0 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80024E8040 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: ACTIVE DEVICE PRESENT
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENFILT|DriverSetFilterState: PENDING
xen_platform_log xen platform: XENFILT|PdoDestroy: FFFFFA80024E25D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30) (device disappeared)
xen_platform_log xen platform: XENFILT|DriverSetFilterState: DISABLED
xen_platform_log xen platform: XENBUS|DriverEntry: 8.0.0 (46) (20.03.2015)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80024F7040 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024F8998: Shared LevelSensitive CPU 0:0 VECTOR 51
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80024F8748: DeviceExclusive Latched CPU 0:0 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoConnectInterrupt: FFFFFA80016BAF58: DeviceExclusive Latched CPU 0:1 VECTOR b0
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: XENBUS|FdoCreateIoSpace: 00000000.f8000000 - 00000000.f8ffffff
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[0] @ 00000000.2c0fc000
xen_platform_log xen platform: EVTCHN_FIFO: CONTROLBLOCK[1] @ 00000000.2bbfd000
xen_platform_log xen platform: XENBUS|EvtchnAbiAcquire: FIFO
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0:0
xen_platform_log xen platform: XENBUS|EvtchnInterruptEnable: CPU 0:1
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: STORE: EVTCHN 1
xen_platform_log xen platform: EVTCHN_FIFO: EVENTARRAY[0] @ 00000000.2b57e000
xen_platform_log xen platform: XENBUS|EvtchnFifoExpand: added ports [00000000 - 000003ff]
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80024FA580 (VBD 00000008)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250C5A0 (VIF 00000008)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000002)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000003)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000004)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000005)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000006)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000007)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA800250F530 (IFACE 00000008)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002576040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800257A040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002580040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.0.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.19 (12/3/2015)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (19) (12.03.2015)
xen_platform_log xen platform: XENDISK|FdoCreate:FFFFFA800258AB40
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA8002583060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 3)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/vbd/2/768)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000020 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/1000
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT INDIRECT 
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : INDIRECT 100
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA800258E800 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENDISK|PdoCreate:FFFFFA800258CA10
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA800258C060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA800258C060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 4)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.14 (12/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4CE8C FFFFFA8002D928A0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4BDD4 FFFFFA8002D928B0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003C4C968 FFFFFA8002D92AC0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA8002D92B50 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 00000000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 00000000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 00000000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 00000000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 00000000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000c00 - 00000dff]
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|__FrontendSetMaxQueues: 2
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8003101200 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF880017DB850
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8003101200 (0 00000002)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF880017DB900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF880017D0D30
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
main_channel_handle_parsed: agent start
main_channel_handle_parsed: agent start
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Guest agent lite main loop starting
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to XenTime
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: hosttimeIsUTC: Open Registry Key
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Time is now  2015.3.24 10:47:49.300
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Set time to 2015.3.24 10:47:49.263
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to add feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Establish watch control/shutdown
xen_platform_log xen platform: XENIFACE|StartWatch: Start Watch FFFFFA8003678970
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to advertise features
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:MethodExec Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SessionStart Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVValue Failed
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: WmiSessionSetEntry:SetVPath Failed 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Failed to advertise shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: About to kick xapi 
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent woke up for 3
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Fire 000000000040DA60
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fire feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: Check if we need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: No need to shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: fired feature shutdown
xen_platform_log xen platform: XENIFACE|SessionExecuteLog: USER: win agent going to sleep
main_channel_handle_parsed: agent start
xen_platform_log xen platform: XENVIF|PdoDestroy: FFFFFA8003101200 (0) (FDO removed)
xen_platform_log xen platform: XENVIF|FdoDestroy: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENVIF|DriverUnload: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (24) (20.03.2015)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 4)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002DA55D0 (XS0001 XENVIF)
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:AE:8F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {0d010f73-670a-5e99-bea4-ac0bf3dc289b}
xen_platform_log xen platform: XENVIF|__FrontendSetMaxQueues: 2
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA80037F6D40 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF880017DB850
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA80037F6D40 (0 00000002)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF880017DB900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF880017D0D30
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENIFACE|WmiFinalise: DRV: XenIface WMI Finalisation
xen_platform_log xen platform: XENIFACE|FdoDestroy: FFFFFA8002D92B50 (IFACE)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.14 (12/3/2015)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003574E8C FFFFFA80037A2780
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003573DD4 FFFFFA80037A2790
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88003574968 FFFFFA80037A29A0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA80037A69E0 (IFACE)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (17) (20.03.2015)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF880017D7270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF880017C3FD0
xen_platform_log xen platform: XENVIF|__FrontendSetNumQueues: 2
xen_platform_log xen platform: XENBUS|EvtchnBind: [9]: CPU 0:1
xen_platform_log xen platform: XENBUS|EvtchnBind: [11]: CPU 0:1
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 2)
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterSetInformation: UNSUPPORTED OID 00010118
xen_platform_log xen platform: XENCRSH|CRASH|XencrshEntryPoint:8.0.0.19 (12/3/2015)
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: 
xen_platform_log xen platform: XENBUS|SUSPEND: Count = 0
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 0000000000007D10 (FFFFFA80024F7380)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 0000000000010DF8 (FFFFFA80024F7560)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 00000000000134AC (FFFFFA80024F9000)
xen_platform_log xen platform: XENBUS|SUSPEND: EARLY: xenbus.sys + 000000000000E658 (FFFFFA80024F8E70)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000007D60 (FFFFFA80024F7380)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 00000000000134EC (FFFFFA80024F9000)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 000000000000D538 (FFFFFA80024F7B40)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA800250CE30)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvbd.sys + 0000000000007D04 (FFFFFA8002590538)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvbd.sys + 000000000000B990 (FFFFFA800258EDA0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA80024F8C30)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 0000000000006630 (FFFFFA80037E6AB0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000000AEB4 (FFFFFA800317F360)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenbus.sys + 0000000000010164 (FFFFFA8002510600)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xeniface.sys + 000000000000216C (FFFFFA80037A2710)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000000E5C4 (FFFFFA800365E1F0)
xen_platform_log xen platform: XENBUS|SUSPEND: LATE: xenvif.sys + 000000000001D630 (FFFFFA8003729020)
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000013CE4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000014D70)
xen_platform_log xen platform: XENBUS|RANGE_SET: RANGE SETS:
xen_platform_log xen platform: XENBUS|RANGE_SET:  - io_space:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {f8021000 - f8ffffff}*
xen_platform_log xen platform: XENBUS|RANGE_SET:  - balloon:
xen_platform_log xen platform: XENBUS|RANGE_SET:    EMPTY
xen_platform_log xen platform: XENBUS|RANGE_SET:  - gnttab:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {27 - 27}*
xen_platform_log xen platform: XENBUS|RANGE_SET:    {65 - 65}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {cd - cd}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {124 - 124}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {153 - 153}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {159 - 159}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {16f - 16f}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {172 - 172}
xen_platform_log xen platform: XENBUS|RANGE_SET:    {174 - 174}
xen_platform_log xen platform: XENBUS|RANGE_SET:    ...
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-0_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {1 - 3ff}*
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-0_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {8 - 8}*
xen_platform_log xen platform: XENBUS|RANGE_SET:    {a - 3ff}
xen_platform_log xen platform: XENBUS|RANGE_SET:  - device_vif_0_queue-1_transmitter_req_id:
xen_platform_log xen platform: XENBUS|RANGE_SET:    {9 - 3ff}*
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000014D70)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000007304)
xen_platform_log xen platform: XENBUS|EVTCHN: EVENT CHANNELS:
xen_platform_log xen platform: XENBUS|EVTCHN: - (0001) BY xenbus.sys + 00000000000129F1 ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: FIXED
xen_platform_log xen platform: XENBUS|EVTCHN: - (0006) BY xenbus.sys + 000000000000A528 ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: VIRQ: Index = 1
xen_platform_log xen platform: XENBUS|EVTCHN: - (0007) BY xenvbd.sys + 0000000000017CFD AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (0008) BY xenvif.sys + 000000000000F06B AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (0009) BY xenvif.sys + 000000000000F06B AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (000a) BY xenvif.sys + 0000000000014E69 AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XENBUS|EVTCHN: - (000b) BY xenvif.sys + 0000000000014E69 AUTO-MASK ACTIVE
xen_platform_log xen platform: XENBUS|EVTCHN: UNBOUND: RemoteDomain = 0
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000007304)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000010A58)
xen_platform_log xen platform: XENBUS|SHARED_INFO: Address = 00000000.f8000000
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000010A58)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000012700)
xen_platform_log xen platform: XENBUS|STORE: Address = 00000000.feffc000
xen_platform_log xen platform: XENBUS|STORE: BUFFERS:
xen_platform_log xen platform: XENBUS|STORE: - (FFFFFA80036AB100) xenvif.sys + 000000000000A338
xen_platform_log xen platform: XENBUS|STORE: WATCHES:
xen_platform_log xen platform: XENBUS|STORE: - (BF59) ON device BY xenbus.sys + 000000000000A579 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5A) ON control/shutdown BY xenbus.sys + 000000000000A5B5 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5B) ON memory/target BY xenbus.sys + 000000000000A628 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF5C) ON device/vbd BY xenvbd.sys + 0000000000008686 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF60) ON /local/domain/0/backend/vbd/2/768/state BY xenvbd.sys + 000000000000B424 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF61) ON /local/domain/0/backend/vbd/2/768/info BY xenvbd.sys + 000000000000B456 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF62) ON /local/domain/0/backend/vbd/2/768/sector-size BY xenvbd.sys + 000000000000B488 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF63) ON /local/domain/0/backend/vbd/2/768/sectors BY xenvbd.sys + 000000000000B4BA [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF6F) ON device/vif BY xenvif.sys + 0000000000004622 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF78) ON /local/domain/0/backend/vif/2/0/online BY xenvif.sys + 000000000000AD33 [ACTIVE]
xen_platform_log xen platform: XENBUS|STORE: - (BF7B) ON device/vif/0/disconnect BY xenvif.sys + 000000000000BB82 [ACTIVE]
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000012700)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 0000000000016778)
xen_platform_log xen platform: XENBUS|CACHE: CACHES:
xen_platform_log xen platform: XENBUS|CACHE: - disk_0_gnttab: Count = 55 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_buffer: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_packet: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_packet: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_fragment: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_buffer: Count = 1 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_fragment: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_buffer: Count = 1 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_fragment: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_receiver_gnttab: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_receiver_gnttab: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_transmitter_packet: Count = 32 (Reservation = 32)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-0_transmitter_gnttab: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - device_vif_0_queue-1_transmitter_gnttab: Count = 2 (Reservation = 0)
xen_platform_log xen platform: XENBUS|CACHE: - packet_cache: Count = 33 (Reservation = 32)
xen_platform_log xen platform: XENBUS|CACHE: - buffer_cache: Count = 0 (Reservation = 0)
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 0000000000016778)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenbus.sys + 000000000000E2D0)
xen_platform_log xen platform: XENBUS|GNTTAB: Address = 00000000.f8001000
xen_platform_log xen platform: XENBUS|GNTTAB: FrameIndex = 6
xen_platform_log xen platform: XEN|DEBUG: <==== (xenbus.sys + 000000000000E2D0)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvbd.sys + 00000000000054DC)
xen_platform_log xen platform: XENVBD: FDO: Version: 8.0.0.19 (12/3/2015)
xen_platform_log xen platform: XENVBD: FDO: Fdo: 0xFFFFFA8002590538 (ref-count 1) CRASHING
xen_platform_log xen platform: XENVBD: FDO: DevObj 0xFFFFFA8002583060 LowerDevObj 0xFFFFFA80024FA580 PhysDevObj 0xFFFFFA80024FA580
xen_platform_log xen platform: XENVBD: FDO: DevicePowerState: D0
xen_platform_log xen platform: XENVBD: FDO: Enumerator      : vbd (0x0000000000000000)
xen_platform_log xen platform: XENVBD: FDO: Srbs            : 0 / 20 (11681 Total)
xen_platform_log xen platform: XENVBD: BUFFER: Allocated/Freed : 32 / 0
xen_platform_log xen platform: XENVBD: BUFFER: Free (Cur/Max)  : 32 / 32
xen_platform_log xen platform: XENVBD: BUFFER: Used (Cur/Max)  : 0 / 1
xen_platform_log xen platform: XENVBD: BUFFER: Reaped          : 0 / 0
xen_platform_log xen platform: XENVBD: FDO: ====> Target[0  ]    : 0xFFFFFA800258E800
xen_platform_log xen platform: XENVBD: PDO: Fdo 0xFFFFFA8002590538 DeviceObject 0xFFFFFA800258C060
xen_platform_log xen platform: XENVBD: PDO: ReferenceCount 1
xen_platform_log xen platform: XENVBD: PDO: DevicePnpState Started (Present)
xen_platform_log xen platform: XENVBD: PDO: DevicePowerState D0
xen_platform_log xen platform: XENVBD: PDO: PV Not Missing
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: READ=5893 WRITE=1539
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: INDIRECT_READ=2617 INDIRECT_WRITE=89
xen_platform_log xen platform: XENVBD: PDO: BLKIF_OPs: BARRIER=0 DISCARD=43
xen_platform_log xen platform: XENVBD: PDO: Failed: Maps=0 Bounces=0 Grants=0
xen_platform_log xen platform: XENVBD: PDO: Segments Granted=83425 Bounced=19
xen_platform_log xen platform: XENVBD: LOOKASIDE: REQUESTs: 0 / 21 (0 failed)
xen_platform_log xen platform: XENVBD: LOOKASIDE: SEGMENTs: 0 / 3500 (0 failed)
xen_platform_log xen platform: XENVBD: LOOKASIDE: INDIRECTs: 0 / 20 (0 failed)
xen_platform_log xen platform: XENVBD: QUEUE: Fresh     : 0 / 13
xen_platform_log xen platform: XENVBD: QUEUE: Prepared  : 0 / 21
xen_platform_log xen platform: XENVBD: QUEUE: Submitted : 0 / 21
xen_platform_log xen platform: XENVBD: QUEUE: Shutdown  : 0 / 0
xen_platform_log xen platform: XENVBD: FRONTEND: TargetId=0 DeviceId=768 BackendId=0
xen_platform_log xen platform: XENVBD: FRONTEND: FrontendPath device/vbd/768
xen_platform_log xen platform: XENVBD: FRONTEND: BackendPath  /local/domain/0/backend/vbd/2/768
xen_platform_log xen platform: XENVBD: FRONTEND: TargetPath   data/scsi/target/0
xen_platform_log xen platform: XENVBD: FRONTEND: State   : ENABLED
xen_platform_log xen platform: XENVBD: FRONTEND: Caps    : CONNECTED PAGING DUMP 
xen_platform_log xen platform: XENVBD: FRONTEND: Features: PERSISTENT INDIRECT BARRIER FLUSH DISCARD 
xen_platform_log xen platform: XENVBD: FRONTEND: INDIRECT 100
xen_platform_log xen platform: XENVBD: FRONTEND: DISCARD 0/1000
xen_platform_log xen platform: XENVBD: FRONTEND: DiskInfo: 102400000 @ 512 (512) 00000000
xen_platform_log xen platform: XENVBD: GRANTER: CONNECTED ENABLED
xen_platform_log xen platform: XENVBD: GRANTER: 1 / 3521
xen_platform_log xen platform: XENVBD: BLOCKRING: Requests  : 0 / 10181 / 10181
xen_platform_log xen platform: XENVBD: BLOCKRING: SharedRing : 0xFFFFF880063E9000
xen_platform_log xen platform: XENVBD: BLOCKRING: SharedRing : 10181 / 10182 - 10181 / 10182
xen_platform_log xen platform: XENVBD: BLOCKRING: FrontRing  : 10181 / 10181 (32)
xen_platform_log xen platform: XENVBD: BLOCKRING: Order      : 0
xen_platform_log xen platform: XENVBD: BLOCKRING: Grants[0 ] : 0xFFFFFA8002577AF8 (32)
xen_platform_log xen platform: XENVBD: NOTIFIER: Int / DPC : 17844 / 17843
xen_platform_log xen platform: XENVBD: NOTIFIER: Channel : FFFFFA800258D920 (7)
xen_platform_log xen platform: XENVBD: FDO: <==== Target[0  ]    : 0xFFFFFA800258E800
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvbd.sys + 00000000000054DC)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000006BD4)
xen_platform_log xen platform: XENVIF|FRONTEND: PATH: device/vif/0
xen_platform_log xen platform: XENVIF|FRONTEND: STATISTICS:
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_PACKETS_DROPPED              0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BACKEND_ERRORS               0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_FRONTEND_ERRORS              0
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_UNICAST_PACKETS              5
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_UNICAST_OCTETS               480
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_MULTICAST_PACKETS            58
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_MULTICAST_OCTETS             12206
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BROADCAST_PACKETS            33
xen_platform_log xen platform: XENVIF|FRONTEND:  - TRANSMITTER_BROADCAST_OCTETS             3977
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_PACKETS_DROPPED                 10
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BACKEND_ERRORS                  0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_FRONTEND_ERRORS                 0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_UNICAST_PACKETS                 16
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_UNICAST_OCTETS                  2069
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_MULTICAST_PACKETS               0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_MULTICAST_OCTETS                0
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BROADCAST_PACKETS               2
xen_platform_log xen platform: XENVIF|FRONTEND:  - RECEIVER_BROADCAST_OCTETS                513
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000006BD4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000000B94C)
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_UNICAST] = Matching
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_MULTICAST] = Matching
xen_platform_log xen platform: XENVIF|MAC: FilterLevel[ETHERNET_ADDRESS_BROADCAST] = All
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000000B94C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XENVIF|RECEIVER[0]: 0xFFFFFA800380F700 [0] [ENABLED][RUNNING]
xen_platform_log xen platform: XENVIF|RECEIVER[0]: FRONT: req_prod_pvt = 284 rsp_cons = 28 nr_ents = 256 sring = FFFFF880062F2000
xen_platform_log xen platform: XENVIF|RECEIVER[0]: SHARED: req_prod = 284 req_event = 1 rsp_prod = 92 rsp_event = 29
xen_platform_log xen platform: XENVIF|RECEIVER[0]: RequestsPosted = 284 RequestsPushed = 284 ResponsesProcessed = 28
xen_platform_log xen platform: XENVIF|RECEIVER[0]: [RX]: Events = 26 Dpcs = 28
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XENVIF|RECEIVER[1]: 0xFFFFFA800317B020 [1] [ENABLED][RUNNING]
xen_platform_log xen platform: XENVIF|RECEIVER[1]: FRONT: req_prod_pvt = 256 rsp_cons = 0 nr_ents = 256 sring = FFFFF880062F3000
xen_platform_log xen platform: XENVIF|RECEIVER[1]: SHARED: req_prod = 256 req_event = 1 rsp_prod = 25 rsp_event = 1
xen_platform_log xen platform: XENVIF|RECEIVER[1]: RequestsPosted = 256 RequestsPushed = 256 ResponsesProcessed = 0
xen_platform_log xen platform: XENVIF|RECEIVER[1]: [RX]: Events = 0 Dpcs = 2
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 0000000000010C64)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000000F5D4)
xen_platform_log xen platform: XENVIF|RECEIVER: Loaned = 18 Returned = 18
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000000F5D4)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: 0xFFFFFA8003838010 [ENABLED]
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: FRONT: req_prod_pvt = 128 rsp_cons = 128 nr_ents = 256 sring = FFFFF880062F4000
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: SHARED: req_prod = 128 req_event = 129 rsp_prod = 128 rsp_event = 129
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: RequestsPosted = 128 RequestsPushed = 128 ResponsesProcessed = 128
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: State:
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: - Packet = 0000000000000000
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: - Count = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: PacketsGranted = 39 PacketsCopied = 24 PacketsFaked = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[0]: PacketsQueued = 63 PacketsPrepared = 63 PacketsUnprepared = 0 PacketsSent = 63 PacketsCompleted = 63
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: 0xFFFFFA800175C010 [ENABLED]
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: FRONT: req_prod_pvt = 66 rsp_cons = 66 nr_ents = 256 sring = FFFFF880062F5000
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: SHARED: req_prod = 66 req_event = 67 rsp_prod = 66 rsp_event = 67
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: RequestsPosted = 66 RequestsPushed = 66 ResponsesProcessed = 66
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: State:
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: - Packet = 0000000000000000
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: - Count = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: PacketsGranted = 33 PacketsCopied = 0 PacketsFaked = 0
xen_platform_log xen platform: XENVIF|TRANSMITTER[1]: PacketsQueued = 33 PacketsPrepared = 33 PacketsUnprepared = 0 PacketsSent = 33 PacketsCompleted = 33
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 000000000001784C)
xen_platform_log xen platform: XEN|DEBUG: ====> (xenvif.sys + 00000000000152D4)
xen_platform_log xen platform: XENVIF|TRANSMITTER: OFFSETS: Offset @ 0 Length @ 0 Mdl @ 0
xen_platform_log xen platform: XEN|DEBUG: <==== (xenvif.sys + 00000000000152D4)
xen_platform_log xen platform: XEN|BUGCHECK: ====>
xen_platform_log xen platform: XEN|BUGCHECK: 000000CE: FFFFF88003C35EDD 0000000000000008 FFFFF88003C35EDD 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: CONTEXT (FFFFF88002D9AD10):
xen_platform_log xen platform: XEN|BUGCHECK: - GS = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - FS = 0053
xen_platform_log xen platform: XEN|BUGCHECK: - ES = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - DS = 002B
xen_platform_log xen platform: XEN|BUGCHECK: - SS = 0018
xen_platform_log xen platform: XEN|BUGCHECK: - CS = 0010
xen_platform_log xen platform: XEN|BUGCHECK: - EFLAGS = 00000082
xen_platform_log xen platform: XEN|BUGCHECK: - RDI = 0000000003C35EDD
xen_platform_log xen platform: XEN|BUGCHECK: - RSI = 0000000000000008
xen_platform_log xen platform: XEN|BUGCHECK: - RBX = 0000000000E0FA78
xen_platform_log xen platform: XEN|BUGCHECK: - RDX = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - RCX = 0000000002D9AD10
xen_platform_log xen platform: XEN|BUGCHECK: - RAX = 000000002F060EC2
xen_platform_log xen platform: XEN|BUGCHECK: - RBP = 0000000003C35EDD
xen_platform_log xen platform: XEN|BUGCHECK: - RIP = 0000000000E0559B
xen_platform_log xen platform: XEN|BUGCHECK: - RSP = 0000000002D9ACF0
xen_platform_log xen platform: XEN|BUGCHECK: - R8 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R9 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R10 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R11 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R12 = 0000000000000050
xen_platform_log xen platform: XEN|BUGCHECK: - R13 = 0000000000000001
xen_platform_log xen platform: XEN|BUGCHECK: - R14 = 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: - R15 = 0000000002CFAC40
xen_platform_log xen platform: XEN|BUGCHECK: STACK:
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B200: (0000000000000003 0000000000E086B0 0000000000E07E20 00000000000000CE) xen.sys + 0000000000005504
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B250: (0000000000E10360 0000000000000000 0000000000000004 0000000002CC3500) ntoskrnl.exe + 0000000000128835
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B280: (0000000000E10360 0000000002CC3500 000000000000000F 000000000317FB50) ntoskrnl.exe + 0000000000167EBD
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B950: (0000000000000000 0000000000000000 0000000000000000 0000000000000000) ntoskrnl.exe + 0000000000074FC4
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9B990: (0000000000000050 0000000003C35EDD 0000000000000008 0000000002D9BAF0) ntoskrnl.exe + 00000000000F3EB0
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BAF0: (0000000000000008 0000000003C35EDD 0000000000000000 000000000317C570) ntoskrnl.exe + 0000000000072FEE
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BC80: (0000000000000000 0000000000000000 0000000000000000 0000000000B94000) xenvif.sys + 0000000000019EDD
xen_platform_log xen platform: XEN|BUGCHECK: 0000000002D9BC88: (0000000000000000 0000000000000000 0000000000B94000 0000000002C3DE80) 0000000000000000
xen_platform_log xen platform: XEN|BUGCHECK: <====
Issued domain 2 reboot
qemu: terminating on signal 1 from pid 3886
red_channel_client_disconnect_dummy: rcc=0x7f7c605d4930 (channel=0x7f7c60142d20 type=5 id=0)
snd_channel_put: SndChannel=0x7f7c6034a240 freed
red_channel_client_disconnect_dummy: rcc=0x7f7c605e5970 (channel=0x7f7c6015f6f0 type=6 id=0)
snd_channel_put: SndChannel=0x7f7c60452530 freed
red_channel_client_disconnect: rcc=0x7f7c5e72d010 (channel=0x7f7c600ef520 type=2 id=0)
red_channel_client_disconnect: rcc=0x7f7c60390fd0 (channel=0x7f7c600f0880 type=4 id=0)

--------------080008050502080400090006
Content-Type: application/octet-stream;
 name="032415-31496-01.dmp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="032415-31496-01.dmp"

UEFHRURVNjQPAAAAsR0AAABwGAAAAAAAeKLPAgD4//+QCMkCAPj//5AlxwIA+P//ZIYAAAIA
AADOAAAAUEFHRd1ewwOA+P//CAAAAAAAAADdXsMDgPj//wAAAAAAAAAAUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0WgwMMCAPj//1BBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAQAIAfAAAQACsAKwBTACsAGACXAgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAA
AAAAAN1ewwOA+P//AAAAAAAAAACIudkCgPj//wC62QKA+P//CAAAAAAAAAAAAAAAAAAAAAgA
AAAAAAAA8LrZAoD4//8AAAAAAAAAAAgAAAAAAAAAUPsXA4D6///dXsMDgPj//0DVzwIA+P//
8QEAAAAAAADADqwCAPj//wAAAAAAAAAAAAAAAAAAAAAcAAEQBAAaACAAAAAAAACAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAwAAgAEAAAAAAAAAAAAAAMAOrAIA+P//AAAAAFBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0UEAAAA
UEFHRfAaBAAAAAAAQPVKoxdm0AFQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRbBGZx8AAAAA/wwAAFBB
R0UBAAAAEAEAAAAAAABQAEdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdF
UEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBB
R0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0VQQUdFUEFHRVBBR0UAAQAAAAAEAPz/AwBIAwAA
AA8AAIAgAADQIAAAYCIAAGBvAAAwdAAA2HgAACgEAABAgAAAjQAAAJDPAAA4LwAAAAAAAP//
//+IudkCgPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAEADAADI/gAA
DAAAAAEAAABQAAAAAAAAAAAAAAAAAAAAAAAAAHh5BQAAAAAAfCIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAADICAAAAAAAmPQIAAAAAAHT+HQAAAAAABwAAAAAAAAAYABgAAAAAAAAAAAAAAAAA
eABlAG4AaQBmAGEAYwBlAC4AcwB5AHMAAFDEA4D4//8AgMUDgPj//xQAFAAAAAAAAAAAAAAA
AAB4AGUAbgB2AGkAZgAuAHMAeQBzAAAAAAAAwMEDgPj//wBQxAOA+P//GAAYAAAAAAAAAAAA
AAAAAGMAcgBhAHMAaABkAG0AcAAuAHMAeQBzAAAASAGA+P//AOBIAYD4//8YABgAAAAAAAAA
AAAAAAAAZAB1AG0AcABfAHMAdABvAHIAcABvAHIAAOBIAYD4//8AgEkBgPj//xgAGAAAAAAA
AAAAAAAAAABkAHUAbQBwAF8AeABlAG4AYwByAHMAaAAAABwBgPj//wCAHwGA+P//GAAYAAAA
AAAAAAAAAAAAAGQAdQBtAHAAXwB4AGUAbgB2AGIAZAAuAACASQGA+P//AABMAYD4//8YABgA
AAAAAAAAAAAAAAAAZAB1AG0AcABfAGQAdQBtAHAAZgB2AGUAAABMAYD4//8AME0BgPj//4Af
AAAAAAAAUPsXA4D6//8AAAAAAAAAAMC8xAIA+P//AAAAAAAAAACwvdkCgPj//wAAAAAAAAAA
AAAAAAAAAAAxAAWAAAAAAN1ewwOA+P//AHAYAAAAAAD4BgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA8A///wAAAAAABAAAAAAAAAAAAAAAAH8AADC5AAD4//8AAAAA
AAD/D4AwuQAA+P//QAAAAIAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAA8AEACAHwAAEAArACsAUwArABgAlwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAADdXsMDgPj//wAA
AAAAAAAAiLnZAoD4//8AutkCgPj//wgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAPC62QKA+P//
AAAAAAAAAAAIAAAAAAAAAFD7FwOA+v//3V7DA4D4//9A1c8CAPj///EBAAAAAAAAwA6sAgD4
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAABwAARAEABoAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABgEFHmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANgqfwGA+v//AQABAAACEALg////QAAAAMLZfQGA+v//AAAAAAIA
AAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA188C
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDXzwIA+P//AAAAAAAAAAAA2s8CAPj//wAA
AAAAAAAAgNrPAgD4//8AAAAAAAAAAIDZzwIA+P//AAAAAAAAAAAA2c8CAPj//wAAAAAAAAAA
QNrPAgD4//8AAAAAAAAAAMDYzwIA+P//AAAAAAAAAACA2M8CAPj//wAAAAAAAAAAQNnPAgD4
//8AAAAAAAAAAADXzwIA+P//AAAAAAAAAADA1s8CAPj//wAAAAAAAAAAwNnPAgD4//8AAAAA
AAAAAEDXzwIA+P//AAAAAAAAAAAAAAAAAAAAAJBBdwGA+v//AHjEAgD4//8QQXcBgPr//4B4
xAIA+P//kEB3AYD6//8AecQCAPj//xBCdwGA+v//gHfEAgD4///Q93wBgPr//wD9xAIA+P//
wMp6AYD6//+A/MQCAPj//4APdwGA+v//gG3EAgD4//8QQHcBgPr//4B5xAIA+P//8Pt8AYD6
///ANsUCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTBAAAADwYL8CAPj//+BgvwIA+P//QPPDAgD4//8AhMYCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAGoAAAAAAAEAAAAAAAAAtgAAAVVwAABqAAAAagAAAGoAAAAAAAAAUG9vTCAAAADwYL8C
APj//+BgvwIA+P//oPPDAgD4//9A88MCAPj//ztwAABqAAAAAAAAAAAAAAAAADAAAAAAAAEA
AAAAAAAAtgAAAcdfAAAwAAAAMAAAADAAAAAAAAAAUG9vTDAAAADwYL8CAPj//+BgvwIA+P//
APTDAgD4//+g88MCAPj//6lfAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAAX96
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTEAAAADwYL8CAPj//+BgvwIA+P//YPTDAgD4//8A9MMC
APj//3J6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAdQRAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTFAAAADwYL8CAPj//+BgvwIA+P//wPTDAgD4//9g9MMCAPj//8MRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAfcmAAAAAAAAAAAAAAAAAAAAAAAAUG9vTGAA
AADwYL8CAPj//+BgvwIA+P//IPXDAgD4///A9MMCAPj//+gmAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAmgAAAY4cAAAAAAAAAAAAAAAAAAAAAAAAUG9vTHAAAADwYL8CAPj//+Bg
vwIA+P//gPXDAgD4//8g9cMCAPj//34cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
tgAAAZCEAAAAAAAAAAAAAAAAAAAAAAAAUG9vTIAAAADwYL8CAPj//+BgvwIA+P//4PXDAgD4
//+A9cMCAPj//0ODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAAaQmAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTJAAAADwYL8CAPj//+BgvwIA+P//QPbDAgD4///g9cMCAPj//58m
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAAATIPAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTKAAAADwYL8CAPj//+BgvwIA+P//oPbDAgD4//9A9sMCAPj//xsPAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALAAAAaoFAAAAAAAAAAAAAAAAAAAAAAAAUG9vTLAAAADwYL8C
APj//+BgvwIA+P//APfDAgD4//+g9sMCAPj//5kFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAfAAAAe4MAAAAAAAAAAAAAAAAAAAAAAAAUG9vTMAAAADwYL8CAPj//+BgvwIA+P//
YPfDAgD4//8A98MCAPj//+cMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAXYF
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTNAAAADwYL8CAPj//+BgvwIA+P//wPfDAgD4//9g98MC
APj//14FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAZ0JAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTOAAAADwYL8CAPj//+BgvwIA+P//IPjDAgD4///A98MCAPj//5wJAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAY8AAAAAAAAAAAAAAAAAAAAAAAAAUG9vTPAA
AADwYL8CAPj//+BgvwIA+P//gPjDAgD4//8g+MMCAPj//48AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAfAAAAVcGAAAAAAAAAAAAAAAAAAAAAAAAUG9vTAABAADwYL8CAPj//+Bg
vwIA+P//4PjDAgD4//+A+MMCAPj//1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAZ8AAAAAAAAAAAAAAAAAAAAAAAAAUG9vTBABAADwYL8CAPj//+BgvwIA+P//QPnDAgD4
///g+MMCAPj//54AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAakAAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTCABAADwYL8CAPj//+BgvwIA+P//oPnDAgD4//9A+cMCAPj//6UA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAYMLAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTDABAADwYL8CAPj//+BgvwIA+P//APrDAgD4//+g+cMCAPj//4ELAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAASgAAAVIGAAAAAAAAAAAAAAAAAAAAAAAAUG9vTEABAADwYL8C
APj//+BgvwIA+P//YPrDAgD4//8A+sMCAPj//1EGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAXgAAATIwAAAAAAAAAAAAAAAAAAAAAAAAUG9vTFABAADwYL8CAPj//+BgvwIA+P//
wPrDAgD4//9g+sMCAPj//yYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAARQQ
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTGABAADwYL8CAPj//+BgvwIA+P//IPvDAgD4///A+sMC
APj//5APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAZIAAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTHABAADwYL8CAPj//+BgvwIA+P//gPvDAgD4//8g+8MCAPj//5IAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUUAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTIAB
AADwYL8CAPj//+BgvwIA+P//4PvDAgD4//+A+8MCAPj//0IAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAATwAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTJABAADwYL8CAPj//+Bg
vwIA+P//QPzDAgD4///g+8MCAPj//zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAWEAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTKABAADwYL8CAPj//+BgvwIA+P//oPzDAgD4
//9A/MMCAPj//2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAXsAAAAAAAAA
AAAAAAAAAAAAAAAAUG9vTLABAADwYL8CAPj//+BgvwIA+P//AP3DAgD4//+g/MMCAPj//3sA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAcoBAAAAAAAAAAAAAAAAAAAAAAAA
UG9vTMABAADwYL8CAPj//+BgvwIA+P//YP3DAgD4//8A/cMCAPj//8cBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANgAAAS4EAAAAAAAAAAAAAAAAAAAAAAAAUG9vTNABAADwYL8C
APj//+BgvwIA+P//wP3DAgD4//9g/cMCAPj//y4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAaMAAAAAAAAAAAAAAAAAAAAAAAAAUG9vTOABAADwYL8CAPj//+BgvwIA+P//
IP7DAgD4///A/cMCAPj//6MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAVcA
AAAAAAAAAAAAAAAAAAAAAAAAUG9vTPABAADwYL8CAPj//+BgvwIA+P//gP7DAgD4//8g/sMC
APj//1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQABAAAAAAAAAAAAAAAA
AAAAAAAAUG9vTAACAADwYL8CAPj//+BgvwIA+P//4P7DAgD4//+A/sMCAPj//wABAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTBAA
AADwYL8CAPj//+BgvwIA+P//oOfDAgD4//9A58MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTCAAAADwYL8CAPj//+Bg
vwIA+P//AOjDAgD4//+g58MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTDAAAADwYL8CAPj//+BgvwIA+P//YOjDAgD4
//8A6MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTEAAAADwYL8CAPj//+BgvwIA+P//wOjDAgD4//9g6MMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTFAAAADwYL8CAPj//+BgvwIA+P//IOnDAgD4///A6MMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTGAAAADwYL8C
APj//+BgvwIA+P//gOnDAgD4//8g6cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTHAAAADwYL8CAPj//+BgvwIA+P//
4OnDAgD4//+A6cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTIAAAADwYL8CAPj//+BgvwIA+P//QOrDAgD4///g6cMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTJAAAADwYL8CAPj//+BgvwIA+P//oOrDAgD4//9A6sMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTKAA
AADwYL8CAPj//+BgvwIA+P//AOvDAgD4//+g6sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTLAAAADwYL8CAPj//+Bg
vwIA+P//YOvDAgD4//8A68MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTMAAAADwYL8CAPj//+BgvwIA+P//wOvDAgD4
//9g68MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTNAAAADwYL8CAPj//+BgvwIA+P//IOzDAgD4///A68MCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTOAAAADwYL8CAPj//+BgvwIA+P//gOzDAgD4//8g7MMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTPAAAADwYL8C
APj//+BgvwIA+P//4OzDAgD4//+A7MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTAABAADwYL8CAPj//+BgvwIA+P//
QO3DAgD4///g7MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTBABAADwYL8CAPj//+BgvwIA+P//oO3DAgD4//9A7cMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTCABAADwYL8CAPj//+BgvwIA+P//AO7DAgD4//+g7cMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTDAB
AADwYL8CAPj//+BgvwIA+P//YO7DAgD4//8A7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTEABAADwYL8CAPj//+Bg
vwIA+P//wO7DAgD4//9g7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTFABAADwYL8CAPj//+BgvwIA+P//IO/DAgD4
///A7sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTGABAADwYL8CAPj//+BgvwIA+P//gO/DAgD4//8g78MCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTHABAADwYL8CAPj//+BgvwIA+P//4O/DAgD4//+A78MCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTIABAADwYL8C
APj//+BgvwIA+P//QPDDAgD4///g78MCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTJABAADwYL8CAPj//+BgvwIA+P//
oPDDAgD4//9A8MMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAA
AAAAAAAAAAAAAAAAAAABAAAAUG9vTKABAADwYL8CAPj//+BgvwIA+P//APHDAgD4//+g8MMC
APj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAA
AAABAAAAUG9vTLABAADwYL8CAPj//+BgvwIA+P//YPHDAgD4//8A8cMCAPj//wAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTMAB
AADwYL8CAPj//+BgvwIA+P//wPHDAgD4//9g8cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTNABAADwYL8CAPj//+Bg
vwIA+P//IPLDAgD4///A8cMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAUG9vTOABAADwYL8CAPj//+BgvwIA+P//gPLDAgD4
//8g8sMCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAA
AAAAAAAAAAABAAAAUG9vTPABAADwYL8CAPj//+BgvwIA+P//4PLDAgD4//+A8sMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAABAAAA
UG9vTAACAADwYL8CAPj//+BgvwIA+P//QArkAoD4///g8sMCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAApdQBAOMIAACvtgAAxPQAAAtSAAApGQAAAAAAAAAAAAAAAAAA
AAAAAIQABwAVSgEAAAAAAFIDAAAAAAAAAAAAAN0IAAAAAAAA////f5IFAADBBAAAvqoAAAkf
dgAAAAAAVUC9AAAAAADQdh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAgD4//8AAMQC
APj//wAAAAAAAAAAAAAAAJiSAAAgAMQCAPj//yAAxAIA+P//AAAAAAAAAAAAAAAAAAAAALAP
ugAA+P//AwAAAAAAAAADAAAAmJIAAAEAAAAAAAAAMQ0AAEKrAQAxDQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiALEAgD4//+IAsQC
APj//8C9bBX/////AAAAAAAAAACoAsQCAPj//6gCxAIA+P//sBuVHP////8AAAAAAAAAAMgC
xAIA+P//yALEAgD4///wt6tC/////wAAAAAAAAAA6ALEAgD4///oAsQCAPj//1AZrkL/////
AAAAAAAAAAAIA8QCAPj//wgDxAIA+P//ADicHP////8AAAAAAAAAACgDxAIA+P//KAPEAgD4
//8Akv4e/////wAAAAAAAAAAADo4A4D6//9AnToDgPr//yAXwyMAAAAAAAAAAAAAAABoA8QC
APj//2gDxAIA+P//8ANCGv////8AAAAAAAAAAPD1PAOA+v//8PU8A4D6///g2ccjAAAAAAAA
AAAAAAAAqAPEAgD4//+oA8QCAPj//1C/phz/////AAAAAAAAAABA4TgDgPr//0DhOAOA+v//
8MK+QgAAAAAAAAAAAAAAAOgDxAIA+P//6APEAgD4//9Aeqsc/////wAAAAAAAAAAcCk9A4D6
//8QH2MDgPr//2Bf0SMAAAAAAAAAAAAAAAAoBMQCAPj//ygExAIA+P//MLKwHP////8AAAAA
AAAAAEgExAIA+P//SATEAgD4//8g1o8V/////wAAAAAAAAAAgKAuA4D6//+AoC4DgPr//xAL
63MIAAAAAAAAAAAAAACwmmcDgPr//7CaZwOA+v//0FF7IQAAAAAAAAAAAAAAAKgExAIA+P//
qATEAgD4//+AvLoc/////wAAAAAAAAAAyATEAgD4///IBMQCAPj//4AWHR//////AAAAAAAA
AADoBMQCAPj//+gExAIA+P//sJy+HP////8AAAAAAAAAAAgFxAIA+P//CAXEAgD4///wqcEc
/////wAAAAAAAAAAKAXEAgD4//8oBcQCAPj//6C3JB//////AAAAAAAAAABwlUQDgPr//3CV
RAOA+v//IC3pIwAAAAAAAAAAAAAAAGgFxAIA+P//aAXEAgD4///wuQYY/////wAAAAAAAAAA
iAXEAgD4//+IBcQCAPj//9DiBxj/////AAAAAAAAAACoBcQCAPj//6gFxAIA+P//UDUuH///
//8AAAAAAAAAAMgFxAIA+P//yAXEAgD4//+oRDAf/////wAAAAAAAAAA6AXEAgD4///oBcQC
APj//7AHMx//////AAAAAAAAAAAIBsQCAPj//wgGxAIA+P//8BQ2H/////8AAAAAAAAAACgG
xAIA+P//KAbEAgD4//9Q/zYf/////wAAAAAAAAAASAbEAgD4//9IBsQCAPj//wCbOx//////
AAAAAAAAAABoBsQCAPj//2gGxAIA+P//QLo7H/////8AAAAAAAAAAIgGxAIA+P//iAbEAgD4
///Qrd0c/////wAAAAAAAAAAEFZHA4D6//8Q+IYDgPr//5CC9UIAAAAAAAAAAAAAAADIBsQC
APj//8gGxAIA+P//8GDiHP////8AAAAAAAAAAOgGxAIA+P//6AbEAgD4//9wakcf/////wAA
AAAAAAAAMDzYAoD6//8wPNgCgPr//8DEeDkAAAAAAAAAAAAAAAAoB8QCAPj//ygHxAIA+P//
QN1KH/////8AAAAAAAAAACDndwOA+v//IOd3A4D6//8wZBAkAAAAAAAAAAAAAAAAaAfEAgD4
//9oB8QCAPj//9DKA0P/////AAAAAAAAAAAwGD4DgPr//zAYPgOA+v//MCwGQwAAAAAAAAAA
AAAAAKgHxAIA+P//qAfEAgD4//+wUvQc/////wAAAAAAAAAAyAfEAgD4///IB8QCAPj//4Br
lRr/////AAAAAAAAAADoB8QCAPj//+gHxAIA+P//gB9aH/////8AAAAAAAAAADDcYgOA+v//
MNxiA4D6//+Q98VmAAAAAAAAAAAAAAAAKAjEAgD4//8oCMQCAPj//zA4Xx//////AAAAAAAA
AAAg7i4DgPr//yDuLgOA+v//oOaEJgAAAAAAAAAAAAAAABAckAOA+v//EByQA4D6//9wH2tk
AAAAAAAAAAAAAAAAiAjEAgD4//+ICMQCAPj//wAT9zv/////AAAAAAAAAACoCMQCAPj//6gI
xAIA+P//QLJmH/////8AAAAAAAAAAEBBegOA+v//QEF6A4D6///w+R1DAAAAAAAAAAAAAAAA
6AjEAgD4///oCMQCAPj//xC5Ch3/////AAAAAAAAAAAICcQCAPj//wgJxAIA+P//ECoNHf//
//8AAAAAAAAAAKgB4AKA+v//qBHeAoD6//+ANSVDAAAAAAAAAAAAAAAAIF6MA4D6//+o0eAC
gPr//zDAch8AAAAAAAAAAAAAAADQyXYCgPr//9DJdgKA+v//8AV3HwAAAAAAAAAAAAAAAFgc
FwOA+P//WBwXA4D4//8ApHgfAAAAAAAAAAAAAAAAmMLgAoD6//+ghkoCgPj//7DOeh8AAAAA
AAAAAAAAAACA1GwBgPr//4D6bgGA+v//6I98HwAAAAAAAAAAAAAAAICEbAGA+v//QLFEA4D6
//9I8X4fAAAAAAAAAAAAAAAAIO5wAoD6//8g7nACgPr//xCVgR8AAAAAAAAAAAAAAAAoCsQC
APj//ygKxAIA+P//EImZRf////8AAAAAAAAAAEgKxAIA+P//SArEAgD4//+91iUd/////wAA
AAAAAAAAgJmYAYD4//+Qd8wCAPj//70wiB8AAAAAAAAAAAAAAACwmH4BgPr//7CYfgGA+v//
wFVNJAAAAAAAAAAAAAAAACChWAKA+v//IKFYAoD6//8wm40fAAAAAAAAAAAAAAAAyArEAgD4
///ICsQCAPj//4CSzRr/////AAAAAAAAAADoCsQCAPj//+gKxAIA+P//sN4wHf////8AAAAA
AAAAAAgLxAIA+P//CAvEAgD4//+Q3pQf/////wAAAAAAAAAA2PzbA4D4//8wJ14EgPj//4Ao
lx8AAAAAAAAAAAAAAABIC8QCAPj//0gLxAIA+P//kADXGv////8AAAAAAAAAADCMOgOA+v//
MIw6A4D6///gFMw5AAAAAAAAAAAAAAAAiAvEAgD4//+IC8QCAPj//zB15i3/////AAAAAAAA
AAAw/DoDgPr//zD8OgOA+v//oNfQOQAAAAAAAAAAAAAAANDVSwOA+v//0NVLA4D6//+QSmUk
AAAAAAAAAAAAAAAAMLjpAoD6//8wuOkCgPr//2Ca1TkAAAAAAAAAAAAAAABAkTgDgPr//zC1
UwOA+v//sD29RQAAAAAAAAAAAAAAACgMxAIA+P//KAzEAgD4///QnEgd/////wAAAAAAAAAA
SAzEAgD4//9IDMQCAPj//7BZ6hr/////AAAAAAAAAABoDMQCAPj//2gMxAIA+P//MA/sGv//
//8AAAAAAAAAAIgMxAIA+P//iAzEAgD4//8w4E8d/////wAAAAAAAAAAqAzEAgD4//+oDMQC
APj//wBTUx3/////AAAAAAAAAADIDMQCAPj//8gMxAIA+P//sP3PE/////8AAAAAAAAAAOgM
xAIA+P//6AzEAgD4//9Qh2xD/////wAAAAAAAAAAcH9EA4D4//9wf0QDgPj//3BmfSQAAAAA
AAAAAAAAAAAoDcQCAPj//ygNxAIA+P//cLdbHf////8AAAAAAAAAAFDEaQOA+v//UMRpA4D6
//9Q+oEkAAAAAAAAAAAAAAAAIInGAgD4//8gicYCAPj//3B5iiqkAwAAAAAAAAAAAACIDcQC
APj//4gNxAIA+P//MG54Q/////8AAAAAAAAAAEDxYQOA+v//QPFhA4D6//8QsYgkAAAAAAAA
AAAAAAAAyA3EAgD4///IDcQCAPj//5C9Zx3/////AAAAAAAAAACY0oIDgPr//5jSggOA+v//
cL3LHwAAAAAAAAAAAAAAAAgOxAIA+P//CA7EAgD4///QO20d/////wAAAAAAAAAAQMlNA4D6
//+A4EMDgPr//9CVzx8AAAAAAAAAAAAAAAAwQHsCgPr//zBAewKA+v//QC8V8QIAAAAAAAAA
AAAAAEDDWAKA+v//QMNYAoD6///AUNQfAAAAAAAAAAAAAAAAiA7EAgD4//+IDsQCAPj///AW
sxj/////AAAAAAAAAAAgxnsCgPr//yDGewKA+v//YFMc8QIAAAAAAAAAAAAAAMgOxAIA+P//
yA7EAgD4//+QKNwf/////wAAAAAAAAAA6A7EAgD4///oDsQCAPj///ApfR3/////AAAAAAAA
AAAID8QCAPj//wgPxAIA+P//sF72Rf////8AAAAAAAAAABB9FAOA+P//4EaLA4D6//+wTOMf
AAAAAAAAAAAAAAAAQAFNA4D6//8wXG0DgPr//4DfFToAAAAAAAAAAAAAAABoD8QCAPj//2gP
xAIA+P//0CKcQ/////8AAAAAAAAAAIgPxAIA+P//iA/EAgD4//+QkScb/////wAAAAAAAAAA
qA/EAgD4//+oD8QCAPj//2CHKhv/////AAAAAAAAAABAgUEDgPr//0CBQQOA+v//AGUfOgAA
AAAAAAAAAAAAAOgPxAIA+P//6A/EAgD4//8AXJAd/////wAAAAAAAAAACBDEAgD4//8IEMQC
APj//yD7hDz/////AAAAAAAAAABgSjoDgPr//2BKOgOA+v//4OYmOgAAAAAAAAAAAAAAAEgQ
xAIA+P//SBDEAgD4///Q2TUb/////wAAAAAAAAAAaBDEAgD4//9oEMQCAPj//5CLmR3/////
AAAAAAAAAACIEMQCAPj//4gQxAIA+P//ELUXFP////8AAAAAAAAAAKgQxAIA+P//qBDEAgD4
///w/Twb/////wAAAAAAAAAAgG92AYD6//9wAMUCAPj//+DkHmYBAAAAAAAAAAAAAADoEMQC
APj//+gQxAIA+P//cJtCG/////8AAAAAAAAAAAgRxAIA+P//CBHEAgD4//+wFLtD/////wAA
AAAAAAAAKBHEAgD4//8oEcQCAPj//3CDRhv/////AAAAAAAAAABIEcQCAPj//0gRxAIA+P//
0ESqHf////8AAAAAAAAAAGgRxAIA+P//aBHEAgD4//8QUq0d/////wAAAAAAAAAAiBHEAgD4
//+IEcQCAPj//4Dgrh3/////AAAAAAAAAAAwTD8DgPr//5jC3gKA+v//oCVBOgAAAAAAAAAA
AAAAAJgS4AKA+v//mBLgAoD6///ggFE5MQEAAAAAAAAAAAAA6BHEAgD4///oEcQCAPj//xC8
VBv/////AAAAAAAAAAAIEsQCAPj//wgSxAIA+P//EC1XG/////8AAAAAAAAAACgSxAIA+P//
KBLEAgD4//9wjlkb/////wAAAAAAAAAASBLEAgD4//9IEsQCAPj//z1tvh3/////AAAAAAAA
AACAUEADgPr//4BQQAOA+v//wA11qAUAAAAAAAAAAAAAAIgSxAIA+P//iBLEAgD4//+QsmAb
/////wAAAAAAAAAAqBLEAgD4//+oEsQCAPj//5CDxB3/////AAAAAAAAAADIEsQCAPj//8gS
xAIA+P//QKtBFP////8AAAAAAAAAAOgSxAIA+P//6BLEAgD4//9wjsod/////wAAAAAAAAAA
CBPEAgD4//8IE8QCAPj//wALaxv/////AAAAAAAAAADQx3wBgPr//4CJyQOA+P//AL8vIAAA
AAAAAAAAAAAAAEgTxAIA+P//SBPEAgD4//+gWUwU/////wAAAAAAAAAAaBPEAgD4//9oE8QC
APj//zD8Dxn/////AAAAAAAAAACQUdMCgPr//5BR0wKA+v//ADXgMAAAAAAAAAAAAAAAAKgT
xAIA+P//qBPEAgD4//+wdncb/////wAAAAAAAAAAyBPEAgD4///IE8QCAPj//xB+Fxn/////
AAAAAAAAAADoE8QCAPj//+gTxAIA+P//sOF6G/////8AAAAAAAAAAHBaNwOA+v//cFo3A4D6
//+giG86AAAAAAAAAAAAAAAAMLw5A4D6//8wvDkDgPr//xCX9kMAAAAAAAAAAAAAAAAwfD4D
gPr//zB8PgOA+v//AKGwNQAAAAAAAAAAAAAAAGgUxAIA+P//aBTEAgD4//8wZ4Qb/////wAA
AAAAAAAAmPKrAoD6//8AemQDgPr//1DmSSAAAAAAAAAAAAAAAABA4UsDgPr//0DhSwOA+v//
EKClfggAAAAAAAAAAAAAAMgUxAIA+P//yBTEAgD4//+we4sb/////wAAAAAAAAAA6BTEAgD4
///oFMQCAPj//3BEjxv/////AAAAAAAAAAAIFcQCAPj//wgVxAIA+P//wL7OFv////8AAAAA
AAAAACgVxAIA+P//KBXEAgD4//+givMd/////wAAAAAAAAAAKGGPAoD6//8oYY8CgPr//zA+
WCAAAAAAAAAAAAAAAABoFcQCAPj//2gVxAIA+P//MNL4Hf////8AAAAAAAAAAIgVxAIA+P//
iBXEAgD4//9w3/sd/////wAAAAAAAAAAqBXEAgD4//+oFcQCAPj///AR/h3/////AAAAAAAA
AADIFcQCAPj//8gVxAIA+P//CHkBHv////8AAAAAAAAAAOgVxAIA+P//6BXEAgD4///w8H0U
/////wAAAAAAAAAAQKFFA4D6//9AoUUDgPr//0D00TUAAAAAAAAAAAAAAAAwrG4DgPr//zCc
YQOA+v//wOaWOgAAAAAAAAAAAAAAADCoRQOA+v//MPxkA4D6///wzJk6AAAAAAAAAAAAAAAA
aBbEAgD4//9oFsQCAPj///A6DB7/////AAAAAAAAAAA489QCgPr//zjz1AKA+v//wK0aMQAA
AAAAAAAAAAAAAKgWxAIA+P//qBbEAgD4//+w9xEe/////wAAAAAAAAAA0ARKA4D6///QBEoD
gPr//4A84DUAAAAAAAAAAAAAAABAIU4DgPr//0AhTgOA+v//8F6rNQIAAAAAAAAAAAAAAECH
xgIA+P//QIfGAgD4//9wdNoiAAAAAAAAAAAAAAAAKBfEAgD4//8oF8QCAPj//0CwGR7/////
AAAAAAAAAAAQo0kDgPr//8A8yAKA+v//AMLpNQAAAAAAAAAAAAAAAGgXxAIA+P//aBfEAgD4
///w374b/////wAAAAAAAAAAiBfEAgD4//+IF8QCAPj//5CJXhn/////AAAAAAAAAACoF8QC
APj//6gXxAIA+P//0GFvE/////8AAAAAAAAAAMgXxAIA+P//yBfEAgD4//+APmQZ/////wAA
AAAAAAAAMIxFA4D6//8wjEUDgPr//1Bgn0YAAAAAAAAAAAAAAAAwKGcDgPr//zAoZwOA+v//
sMGhRgAAAAAAAAAAAAAAACgYxAIA+P//KBjEAgD4///QHb46/////wAAAAAAAAAASBjEAgD4
//9IGMQCAPj//3Dhdyz/////AAAAAAAAAACYAt4CgPr//4CIxgIA+P//kLqUIAAAAAAAAAAA
AAAAAIgYxAIA+P//iBjEAgD4//8w50lE/////wAAAAAAAAAAqBjEAgD4//+oGMQCAPj//9AB
1hv/////AAAAAAAAAADIGMQCAPj//8gYxAIA+P//8CY5Hv////8AAAAAAAAAAJBnCQOA+v//
8ARPA4D6///g80UxAAAAAAAAAAAAAAAACBnEAgD4//8IGcQCAPj//3Bq3Bv/////AAAAAAAA
AABAZd4CgPr//0Bl3gKA+v//EA6TPwAAAAAAAAAAAAAAAEgZxAIA+P//SBnEAgD4//+QmuEb
/////wAAAAAAAAAAaBnEAgD4//9oGcQCAPj//wAd5Rv/////AAAAAAAAAACIGcQCAPj//4gZ
xAIA+P//kF9HHv////8AAAAAAAAAAGAxxwIA+P//QIXMAgD4//9g1c8nAAAAAAAAAAAAAAAA
yBnEAgD4///IGcQCAPj//+hiSx7/////AAAAAAAAAADoGcQCAPj//+gZxAIA+P//SMRNHv//
//8AAAAAAAAAAKB1SgKA+P//4AlLAoD4///gLx42AAAAAAAAAAAAAAAAKBrEAgD4//8oGsQC
APj//xBWUx7/////AAAAAAAAAAAAnUoDgPr//wCdSgOA+v//ANr2xAAAAAAAAAAAAAAAAGga
xAIA+P//aBrEAgD4//9wKFge/////wAAAAAAAAAAQBFJA4D6//9AEUkDgPr//wCF6joAAAAA
AAAAAAAAAAAwXD4DgPr//zBcPgOA+v//4KSTfQAAAAAAAAAAAAAAAIASSwKA+P//gBJLAoD4
///gdeFZAAAAAAAAAAAAAAAA6BrEAgD4///oGsQCAPj//4DtPhf/////AAAAAAAAAAAw/FAD
gPr//zD8UAOA+v//EG2bfQAAAAAAAAAAAAAAAJCFewGA+v//YJjGAgD4//+AVcggAAAAAAAA
AAAAAAAASBvEAgD4//9IG8QCAPj//3ACsSz/////AAAAAAAAAABoG8QCAPj//2gbxAIA+P//
0IZcPf////8AAAAAAAAAAOgOYQOA+v//EOR9AYD6//+QVVQqAAAAAAAAAAAAAAAAqBvEAgD4
//+oG8QCAPj//7AucR7/////AAAAAAAAAADgEz8DgPr//5ADPwOA+v//gA3UIAAAAAAAAAAA
AAAAAOgbxAIA+P//6BvEAgD4//8wGMg//////wAAAAAAAAAAQNFZA4D6//9A0VkDgPr//0BK
XyoAAAAAAAAAAAAAAABAMWIDgPr//0AxYgOA+v//cJ9GNgAAAAAAAAAAAAAAAEgcxAIA+P//
SBzEAgD4//+gP/cU/////wAAAAAAAAAAwJ1TA4D6//8g61MDgPr//1AzSzYAAAAAAAAAAAAA
AABgEMcCAPj//2AQxwIA+P//4HpuJQIAAAAAAAAAAAAAADAIOwOA+v//MAg7A4D6//9gWQVa
AAAAAAAAAAAAAAAAyBzEAgD4///IHMQCAPj//7AzhR7/////AAAAAAAAAADoHMQCAPj//+gc
xAIA+P//cPyIHv////8AAAAAAAAAAAgdxAIA+P//CB3EAgD4///wNwQV/////wAAAAAAAAAA
KB3EAgD4//8oHcQCAPj//xC31Cz/////AAAAAAAAAAAgt0QDgPr//yC3RAOA+v//IM1SFQAA
AIAAAAAAAAAAAGgdxAIA+P//aB3EAgD4///Qedks/////wAAAAAAAAAAiB3EAgD4//+IHcQC
APj//0DCkx7/////AAAAAAAAAACoHcQCAPj//6gdxAIA+P//8OyVHv////8AAAAAAAAAAMgd
xAIA+P//yB3EAgD4//8QrJge/////wAAAAAAAAAA6B3EAgD4///oHcQCAPj//4gPmh7/////
AAAAAAAAAABgqjcDgPr//2CqNwOA+v//YLcfWgAAAAAAAAAAAAAAAFCJiQOA+v//MCxtA4D6
//8QwucsAAAAAAAAAAAAAAAAQJFhA4D6//+g1NcDgPj//wDDMzsAAAAAAAAAAAAAAABoHsQC
APj//2gexAIA+P//cPRCHP////8AAAAAAAAAAIgexAIA+P//iB7EAgD4///QMqce/////wAA
AAAAAAAAqOGCA4D6//+o4YIDgPr//5CKvkQAAAAAAAAAAAAAAAAgVz8DgPr//yDRbgKA+v//
sKkMIQAAAAAAAAAAAAAAAKDUAQGA+P//QKFvA4D6//+QA9MlAAAAAAAAAAAAAAAAEAhVAYD4
///Aum8DgPr//4CTESEAAAAAAAAAAAAAAAAgokMDgPr//yCiQwOA+v//0MqvUAAAAAAAAAAA
AAAAAECxSAOA+v//QJFOA4D6//9wccpEAAAAAAAAAAAAAAAAMAhWA4D6//8gt04DgPr//9DS
zEQAAAAAAAAAAAAAAABAkUkDgPr//0CRSQOA+v//QLkhKg2PAAAAAAAAAAAAACAqQAOA+v//
MLxJA4D6//+Q9TJHAAAAAAAAAAAAAAAAyB/EAgD4///IH8QCAPj///D200T/////AAAAAAAA
AACQymoDgPr//zBohgOA+v//UFjWRAAAAAAAAAAAAAAAAAggxAIA+P//CCDEAgD4//+wudhE
/////wAAAAAAAAAAAKltA4D6//8AqW0DgPr//yDZ6iUAAAAAAAAAAAAAAABIIMQCAPj//0gg
xAIA+P//YJUEGv////8AAAAAAAAAAGggxAIA+P//aCDEAgD4///wgqcX/////wAAAAAAAAAA
iCDEAgD4//+IIMQCAPj//yBMCxr/////AAAAAAAAAACoIMQCAPj//6ggxAIA+P//sGXQHv//
//8AAAAAAAAAAMggxAIA+P//yCDEAgD4//9QD3Ac/////wAAAAAAAAAA6CDEAgD4///oIMQC
APj//5Accxz/////AAAAAAAAAAAIIcQCAPj//wghxAIA+P//cH/TUP////8AAAAAAAAAACgh
xAIA+P//KCHEAgD4//8Af1IV/////wAAAAAAAAAASCHEAgD4//9IIcQCAPj//3CH8ET/////
AAAAAAAAAABoIcQCAPj//2ghxAIA+P//kEbdHv////8AAAAAAAAAAAhRKgGA+P//CFEqAYD4
//+AZ0IhAAAAAAAAAAAAAAAAqCHEAgD4//+oIcQCAPj//zAy4x7/////AAAAAAAAAADAC0sC
gPj//0ByXgGA+P//kPNGIQAAAAAAAAAAAAAAADCaVwOA+v//MJpXA4D6//9wHA54AQAAAAAA
AAAAAAAACCLEAgD4//8IIsQCAPj//6AcZRX/////AAAAAAAAAAAQ38kCgPr//+CHxgIA+P//
wKqtIwAAAAAAAAAAAAAAALC9iwKA+v//sL2LAoD6///gSaJCAAAAAAAAAAAAAAAAaCLEAgD4
//9oIsQCAPj//z2a7x7/////BwEGAAAAAADIFXwBgPr//8gVfAGA+v//AAAAAAAAAAATAgAB
AAAAAAAAAAAAAAAAAAAAAAAAAABku6cCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAVAAAAAAAAAAAAAB+2AAAAAAAAAAAAAAAAAACwM3sBgPr//wCxRAOA+v//
AAAAAAAAAAAAAAAAAQAAABMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAPDgvgIA+P//AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIAjxAIA+P//gCPEAgD4//+QI8QCAPj//5AjxAIA+P//oCPEAgD4//+gI8QCAPj//7Aj
xAIA+P//sCPEAgD4///AI8QCAPj//8AjxAIA+P//0CPEAgD4///QI8QCAPj//+AjxAIA+P//
4CPEAgD4///wI8QCAPj///AjxAIA+P//ACTEAgD4//8AJMQCAPj//xAkxAIA+P//ECTEAgD4
//8gJMQCAPj//yAkxAIA+P//MCTEAgD4//8wJMQCAPj//0AkxAIA+P//QCTEAgD4//9QJMQC
APj//1AkxAIA+P//YCTEAgD4//9gJMQCAPj//3AkxAIA+P//cCTEAgD4//+AJMQCAPj//4Ak
xAIA+P//kCTEAgD4//+QJMQCAPj//6AkxAIA+P//oCTEAgD4//+wJMQCAPj//7AkxAIA+P//
wCTEAgD4///AJMQCAPj//9AkxAIA+P//0CTEAgD4///gJMQCAPj//+AkxAIA+P//8CTEAgD4
///wJMQCAPj//wAlxAIA+P//ACXEAgD4//8QJcQCAPj//xAlxAIA+P//ICXEAgD4//8gJcQC
APj//zAlxAIA+P//MCXEAgD4//9AJcQCAPj//0AlxAIA+P//UCXEAgD4//9QJcQCAPj//2Al
xAIA+P//YCXEAgD4//9wJcQCAPj//3AlxAIA+P//8psAAPwMAAA1AAAAJgAAAAkAAAAFAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAJgBAAAAvMQCAPj///W7/tggAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAH8AAAAAAAAAvg19wAAAAAAAAAAA
AAAAAAAAAAAAAAAAFNYAABhPAAAAAAAAEg4AAAAAAAABAAAAAgAAAJQAAAAKAQAAkAEAAN0G
AAAAAAAAAAAAAK8CAAAAAAAAAAAAAD4IAAAAAAAASwAAAAAAAAAAAAAAUwMAAAAAAAAAAAAA
AAAAAAAAAACwRmcfAAAAAGC4DwOA+v//eRl5AgAAAAC32XCmDwAAAAAAAAAAAAAAQD3pAoD6
//8BAAAAAAAAAGQBAAAJCwAAQDLlAgD4//8BAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEwMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAQC2+AgD4//+A3sMCAPj//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmmQM1CAAAAB/p/ejDwAAADnoisISAAAA
VdQYXQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIQAAAgAAA
AgAAAAEEQAAAgAAAAQAAAAIIQAAAAAQAAAAAAAMQQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAQA
AAC4AAAAjwAAACdAgACA+P//ACV4AYD6//8QsHkBgPr//wAAAAAAAAAABQAWAAAAAAAB44EB
gPr//wQAAQAAAAAAAQCbAID4//8A8JoAgPj//wDgmgCA+P//AAAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAQAAAAAAAMAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAYKcQCAPj//wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOhJMQASBQAA3vnXBFhaAAABAwAApUsAAJUi
AAC2DQAAcRcAAGY0CwDACAAAwHYCADe4CACQAgAAXVsCAG07AgDVHgAAlAcAABsBAABmfAgA
9iUAAKxBCAC/FAAALQEAAAUAAADDXQAAAQAAAChdAACaAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAnAEAANwAAAAAAAAAAAAAAAcAAAABAAAAAAAAAAAAAABHZW51
aW5lSW50ZWwAAAAA/j0ZIQAAAAAAAAAABwAAAKDfwwIA+P//CwAQAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUB
eCn/AoD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC6rAgD4//8AAAAAAAAAAAAAAAAAAAAA
AwBYAAAAAACYqGwBgPr//5iobAGA+v//qKhsAYD6//+oqGwBgPr//wBwGAAAAAAASK5yAYD6
//9IjkEDgPr//wAAAAAAAAAAAQAEAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACpbAGA+v//AKlsAYD6//8AAAAAAAAAAAQABAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAJAAAACAYAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAGgEAAAQ/IYCgPr//3A0zAIA+P//OfTJNwEAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwEGAAAAAADQqWwB
gPr//9CpbAGA+v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYL7nkBdm0AEAAAAAAAAAAAAA
AAAAAAAABAAAAAAAAAC4/IYCgPr//5AlxwIA+P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAcAAAAAAAAAEAJxQIA+P//AAAAAAAAAAAAQIsAAAAAAADQNAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwFwAAoPj//09LAACg+P//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClewGA+v//AAAAAAAAAAAHAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCLAACg+P//AAAAAAAA
AAAAAP7//wcAAACQg3cAAAAAAAAAAAAAAAAAAAAAAAAAAFN5c3RlbQAAAAAAAAAAAAIAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB4r3IBgPr//3iPQQOA+v//AAAAAAAAAAAAAAAAAAAAAI0A
AAAAAAAABQAAAAAAAAAAAAAAAAAAAGtgjwKA+v//DQAAAAAAAAAAAAAAAAAAAJMDAAAAAAAA
qFv7AwAAAAAAAAAAAAAAAMMhAAAAAAAAAAAAAAAAAABDAAAAAAAAAAAAAAAAAAAAgEUAAKD4
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgjkQDgPr//xBEPwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAQAAAAAAAABJAAAADQAAAAAAAAAAAAAAAwAAAAMAAACXBQAA7w0AAAAA
CAEA9///0k8yAHegAAACEQAAAAAAAAAAAAAAAAAAUP+GAoD6//+gxcQCAPj//wAAAAAAAAAA
YRsAAADYAgAACAQUAwEAANisbAGA+v//AAAAAAAAAABggYoCgPr//wAAAAAAAAAAAAAAAAAA
AAADBQAAAAAAAGCBigKA+v//AAAAAAAAAAAAAAAAAAAAAFCOZgKg+P//UI5mAqD4//8gAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAFj7
FwOA+v//WPsXA4D6//+ycwAAAAAAAELR8gQAAAAAsL3ZAoD4//8AYNkCgPj//9C52QKA+P//
AAAAAAAAAAABAQAAASAAAKD7FwOA+v//oPsXA4D6//+w+xcDgPr//7D7FwOA+v//kKhsAYD6
//8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAQAAAAAAAFj8FwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAIADEAAQAAAOj8FwOA+v//6PwXA4D6//9AsmYfAAAAAKgI
xAIA+P//qAjEAgD4//8LHyBtjVmjygAAAAAAAAAAYQAAAAAAAAB4xRcDgPr//3jFFwOA+v//
UPsXA4D6//9wxRcDgPr//1j8FwOA+v//AAABAgIAAAAAAAAAAAAAAAAAAAAAAAAAUPsXA4D6
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAUPsXA4D6//8AAAAA
AAAAAAAAAAAAAAAAAAAAAK0FAAAY/BcDgPr//xj8FwOA+v//UPsXA4D6//8AAAAAAAAAAAAA
AAAAAAAAAgEBAgAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAgAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAACQqGwBgPr//wMAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAKD7FwOA+v//kP0XA4D6//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA2QKA+P//EgBYBgAAAABQ+xcDgPr//wAA
AAAAAAAAAAAAAAAAAAAQLqsCAPj//+zvsAIA+P//YDmrAgD4//8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAUACAAAAAAAMP4XA4D6//8w/hcDgPr//wIAAAAAAAAA6BMbA4D6
//9IbgkDgPr//1j+FwOA+v//WP4XA4D6//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7ZAoD4//8AAAAAAAAAAMBs
b5EXZtABwP4XA4D6///A/hcDgPr//wAAAAAAAAAAAAAAAAAAAACkAcMDgPj//wAAAAAAAAAA
AAAAAAAAAAD4/hcDgPr///j+FwOA+v//BAAAAAAAAAAcAgAAAAAAAAUACAAAAAAAIP8XA4D6
//8g/xcDgPr//wEAAAAAAAAAAAAAAAAAAABA/xcDgPr//0D/FwOA+v//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAApAHDA4D4//8AAAAAAAAAAHh/hgKA+v//eO8XA4D6//8AAAAAAAAAAAAA
AAAAAAAABwAAAAAAAAACqAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAsP6zAgD4
//9QAAAAAAAAAN1ewwOA+P//CAAAAAAAAADwutkCgPj//wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAqOEBQPz2//+aNqwCAAAAABEAAAAACP//AAAAAAAAAAAAEL99+/b///C62QKA+P//
AAAAAAAAAADdXsMDgPj//wAAAAAAAAAAAAAAAAAAAADxAQAAAAAAAAAAAAAAAAAA8AAgfvv2
//8AAAAAAAAAAAAAAAAAAAAA/////38AAAAAAAAAAAAAAAAAAACACQAA+P///38AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgxRcDgPr//wAAAAAAAAAAAAAAAAAAAABgxRcDgPr//xBQ
hgKA+v//kKhsAYD6//9wu9kCgPj//+7vqwIA+P//CAAAAAAAAADdXsMDgPj//wAAAAAAAAAA
cMUXA4D6//9Q+xcDgPr//4DeCAGAHwAAAgEAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA
AABEDwAAAAAAAADApAIA+P//AAAAAAAAAABQ+xcDgPr//wAAAAAAAAAAAAAAAAAAAAAcAAEQ
BAAaACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN1ewwOA+P//AAAAAAAAAABAsmYfAAAAAA+JrAIA+P//
AAAAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAAAAAAAxAAAAAAAAAAAAAAAAAAAAGL3ZAoD4
//8UyrwCAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDFFwOA+v//AAAAAAAAAADIvNkC
gPj//xAAAAAAAAAA3V7DA4D4//8QAAAAAAAAAIICAQAAAAAAgLzZAoD4//8YAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAuQAA+P//gN7DAgD4///AvMQCAPj//1D7FwOA+v//
AgAAAAAAAAACAAAAAAAAAIBAuQAA+P//AAAAAAAAAACkAcMDgPj//2DFFwOA+v//AQAAAAAA
AACQqGwBgPr//2DFFwOA+v//gAAAAAAAAAC3AcMDgPj//2DFFwOA+v//AF0e7v////8AAAAA
AAAAAAAAAAAAAAAAAQAAAAAAAACK+9UCAPj//1D7FwOA+v//gN7DAgD4//+wvdkCgPj//1D7
FwOA+v//kKhsAYD6//8AAAAAAAAAAAAAAAAAAAAA5iirAgD4//+A3sMCAPj//1D7FwOA+v//
wLzEAgD4//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADogMUCAPj//+iAxQIA+P//S0RCR0AD
AAAAwKQCAPj///CMqwIA+P//AAAAAAAAAADoAdgAAAABABCFqwIA+P//AAAAAAAAAACQCMkC
APj//5AlxwIA+P//yCXHAgD4//9QhMYCAPj//zCqzwIA+P//eKDPAgD4//+UoM8CAPj//wA1
zAIA+P//gNPLAgD4///weswCAPj//9AxxwIA+P//6DHHAgD4//8AAAAAAAAAAAAAAAAAAAAA
ANvPAgD4//94os8CAPj//wAAAAAAAAAAAAAAAAAAAAD4qc8CAPj//ySfxwIA+P//+KLPAgD4
//8Ioc8CAPj//2CgzwIA+P//4KLPAgD4//8AAAAAAAAAALigzwIA+P//AAAAAAAAAAAAAAAA
AAAAAKChzwIA+P//0KjPAgD4//8AEAAAAAAAAJCkzwIA+P//GI/HAgD4//8gj8cCAPj//8BC
xgIA+P//KAnJAgD4///wjscCAPj//2CPxwIA+P//AAAAAAAAAAAA1c8CAPj//8DazwIA+P//
wNvPAgD4///A0s8CAPj//2C8wwIA+P//wGvEAgD4//8AbMQCAPj//2iKxgIA+P//gCXFAgD4
//8QoM8CAPj//wChzwIA+P//AKDPAgD4//9wP8UCAPj//3BPxQIA+P//uL/DAgD4//9kP8UC
APj///AQyQIA+P//oBvAAgD4//8AAAAAAAAAAECszwIA+P//6KHPAgD4//+ICMkCAPj//8gM
xwIA+P//1KDPAgD4///MbcYCAPj//+AMyQIA+P//EKTHAgD4//9Qj8cCAPj//yiPxwIA+P//
nJ3MAgD4//84oM8CAPj//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAC4ADgA
KABwAGQBAAAAANAEOAOQAigAAE3aIQgA9AXwBbhLIAEkAKgEAAAAAAAAkMDDAgD4//+YwMMC
APj//0BFzAIA+P//gE4YACAAgAEAAAAAAAAAAAAAQAAQABgAAAAzACsAAAAAAEAAIwBTAAB2
zAIA+P//AHLMAgD4//8AAAAAAAAAAEiLxwIA+P//RIvHAgD4//+A178CAPj//9hLAAAAAAAA
kM8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwKQCAPj//wAAAAAAAAAAAHBeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD+alUAAAAAAH0x0FQAAAAA2M8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKACAPj//wAAAAAAAAAA
AJAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADDBAQAAAAAAGnG50wAAAAAGNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0LwAAPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACb9QAAAAAAAGGATU0AAAAA
YNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQMMAgPj//wAAAAAAAAAAAPAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB++QQAAAAAADfH50wAAAAAyNAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMgAgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABi9wAAAAAAACfgW0oAAAAAENEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcMkAgPj//wAAAAAAAAAAAOAFAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGXAYAAAAAAB3BW0oAAAAA
UNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUM8AgPj//wAAAAAAAAAAAFAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACVZQcAAAAAACXRrFMAAAAAkNEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwOYAgPj//wAAAAAAAAAA
ACAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADKyQwAAAAAAEEWxVEAAAAA6NEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4PIAgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfagEAAAAAAHCrEFAAAAAA
QNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4PMAgPj//wAAAAAAAAAAAHAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD2rAUAAAAAAJSS50wAAAAAkNIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUPkAgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAHUAAAAAAAABfBW0oAAAAA6NIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4PkAgPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMgEAAAAAAP7AW0oAAAAA
QNMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgPoAgPj//wAAAAAAAAAAADADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQMQMAAAAAAI+S50wAAAAAkNMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsP0AgPj//wAAAAAAAAAA
ANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABLwAAAAAAAANvKW0oAAAAA6NMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgP4AgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8VwEAAAAAAE0FDFUAAAAA
QNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOAAgPj//wAAAAAAAAAAAHABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACCrAEAAAAAAD4FDFUAAAAAkNQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOEAgPj//wAAAAAAAAAA
AIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADyZgIAAAAAAHYFDFUAAAAA6NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8OMAgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI3wEAAAAAAMEbZE8AAAAA
QNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQOUAgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABynwEAAAAAAKCS50wAAAAAmNUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoNYAgPj//wAAAAAAAAAA
AMAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABtXwYAAAAAAOuS50wAAAAA8NUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYNwAgPj//wAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpEAEAAAAAABTBW0oAAAAA
SNYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4NwAgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADFnAEAAAAAABTBW0oAAAAAoNYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4N0AgPj//wAAAAAAAAAA
AKABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACzWwIAAAAAAAsv0FQAAAAA+NYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ZQAAAAAAABPBW0oAAAAA
UNcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAkMAAgPj//wAAAAAAAAAAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABWCwMAAAAAALX5/lEAAAAAqNcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA4BgPj//wAAAAAAAAAA
AIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACsYQIAAAAAAHWEAVUAAAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkBABgPj//wAAAAAAAAAAAEAGAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVvgMAAAAAADJE8FIAAAAA
WNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0BYBgPj//wAAAAAAAAAAAIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQ0gMAAAAAAESEAVUAAAAAsNgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUBoBgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAPWwEAAAAAAFWEAVUAAAAACNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUBsBgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3kgAAAAAAAMqjo0sAAAAA
YNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABgPj//wAAAAAAAAAAAMAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAtRQUAAAAAAJyS50wAAAAAuNkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAQBgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABEVgEAAAAAAIHEW0oAAAAAENoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYCQBgPj//wAAAAAAAAAAAJAaAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABd8hkAAAAAAIq+4VIAAAAA
YNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAYBgPj//wAAAAAAAAAAAOAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADn6QUAAAAAADST50wAAAAAuNoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABgPj//wAAAAAAAAAA
ALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACTIAIAAAAAAGMr+VQAAAAAENsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgE4BgPj//wAAAAAAAAAAACAHAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACroAcAAAAAALT3ylQAAAAA
YNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAoFUBgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABeSwEAAAAAAP/AW0oAAAAAsNsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsFYBgPj//wAAAAAAAAAA
AKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACSLwEAAAAAANLvTk8AAAAACNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4GoBgPj//wAAAAAAAAAAACAPAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARiw4AAAAAALL2NFAAAAAA
WNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHoBgPj//wAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA+QwYAAAAAAA12lFIAAAAAsNwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGABgPj//wAAAAAAAAAA
AMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAdzwIAAAAAADUv+VQAAAAACN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABgPj//wAAAAAAAAAAAPAfAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFXx0AAAAAANRbP1MAAAAA
YN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwGIBgPj//wAAAAAAAAAAAJAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACyOAUAAAAAAAlbP1MAAAAAuN0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGcBgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAh7QAAAAAAAIqb50wAAAAAEN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUFcBgPj//wAAAAAAAAAAAMAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtJwUAAAAAAMiS50wAAAAA
aN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUGgBgPj//wAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADp4AAAAAAAALtYCEoAAAAAwN4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFwBgPj//wAAAAAAAAAA
AKADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABWcwMAAAAAAC6Y50wAAAAAGN8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0GgBgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9XQEAAAAAAAHCW0oAAAAA
aN8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8GkBgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD02QAAAAAAAH6S50wAAAAAwN8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABgPj//wAAAAAAAAAA
AKADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABBIQQAAAAAAFymAFEAAAAAGOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAoEMBgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd/wEAAAAAAB3BW0oAAAAA
aOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEUBgPj//wAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAC+GAMAAAAAAJuS50wAAAAAwOAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCEBgPj//wAAAAAAAAAA
AKACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABCtwIAAAAAAJiS50wAAAAAGOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAME0BgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADb6QAAAAAAAAnBW0oAAAAA
aOEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwE0BgPj//wAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADrNgAAAAAAAI3KW0oAAAAAuOEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D4BgPj//wAAAAAAAAAA
AOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABvPgEAAAAAAIfFW0oAAAAACOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEOwDgPj//wAAAAAAAAAAAFACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHjwIAAAAAAIvFW0oAAAAA
YOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYO4DgPj//wAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAC+nAEAAAAAAD/FW0oAAAAAuOIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYO8DgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACs/wAAAAAAAGLOW0oAAAAAEOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8O8DgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVdAAAAAAAAGLOW0oAAAAA
aOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgPADgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADNqwAAAAAAAGPOW0oAAAAAwOMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPEDgPj//wAAAAAAAAAA
ALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAmcQAAAAAAABPBW0oAAAAAEOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwPEDgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtmgEAAAAAABTBW0oAAAAA
YOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0PIDgPj//wAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADPAAIAAAAAAHJqYVQAAAAAsOQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PQDgPj//wAAAAAAAAAA
ANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABVYgEAAAAAAD6T50wAAAAAAOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwPUDgPj//wAAAAAAAAAAAJAIAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADi6QcAAAAAABwpiFMAAAAA
UOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOADgPj//wAAAAAAAAAAAFAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA0EQQAAAAAAIaT50wAAAAAqOUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUOQDgPj//wAAAAAAAAAA
AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAB7sQAAAAAAALbMW0oAAAAAAOYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4OQDgPj//wAAAAAAAAAAAGACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPDQIAAAAAAGKo50wAAAAA
WOYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQOcDgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABoFgEAAAAAALbMW0oAAAAAsOYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOgDgPj//wAAAAAAAAAA
ALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADMfAEAAAAAAHSo50wAAAAACOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4OkDgPj//wAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVngEAAAAAAAyr50wAAAAA
YOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwMcDgPj//wAAAAAAAAAAABAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABv1wQAAAAAAJeU50wAAAAAuOcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0MwDgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADVPgEAAAAAAF7BW0oAAAAAEOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkM0DgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB09AAAAAAAAL7DW0oAAAAA
aOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQM4DgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA/XwEAAAAAAC7FW0oAAAAAwOgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMM8DgPj//wAAAAAAAAAA
ADAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACdUQgAAAAAAHCU50wAAAAAEOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAYNcDgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH1gEAAAAAAEeU50wAAAAA
YOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQNkDgPj//wAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABnlQEAAAAAAN/EW0oAAAAAuOkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUNoDgPj//wAAAAAAAAAA
AGACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACWzQIAAAAAAEao50wAAAAAEOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsNwDgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApXgIAAAAAAB3BW0oAAAAA
aOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAkN4DgPj//wAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADe5QAAAAAAABbBW0oAAAAAwOoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMADgPj//wAAAAAAAAAA
APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADFtAEAAAAAABbBW0oAAAAAGOsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA8MADgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7lgAAAAAAALbKW0oAAAAA
aOsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgMUDgPj//wAAAAAAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACrvwIAAAAAAF6m50wAAAAAwOsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUP4DgPj//wAAAAAAAAAA
AEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAB4xQEAAAAAAEqpblEAAAAAGOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIOsDgPj//wAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4kgAAAAAAANgO51EAAAAA
aOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4AsBgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABRKwEAAAAAALFNlVIAAAAAwOwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0C4EgPj//wAAAAAAAAAA
AGAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAqQAUAAAAAALdNlVIAAAAAGO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDQEgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORgEAAAAAALdNlVIAAAAA
cO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUDUEgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADs9AAAAAAAAP3AW0oAAAAAyO0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsDYEgPj//wAAAAAAAAAA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA7mAAAAAAAAO2j50wAAAAAKO4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsDcEgPj//wAAAAAAAAAAAGABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+kgEAAAAAAPDMW0oAAAAA
gO4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAEDkEgPj//wAAAAAAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACjzAIAAAAAAHKo50wAAAAA2O4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUDsEgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADqYwAAAAAAANjMW0oAAAAAMO8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEDwEgPj//wAAAAAAAAAAAPACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBuwIAAAAAAHCo50wAAAAA
iO8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAACAEgPj//wAAAAAAAAAAALABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAmgEAAAAAAOnMW0oAAAAA4O8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCEEgPj//wAAAAAAAAAA
ABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADLUQIAAAAAAG+o50wAAAAAOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwCMEgPj//wAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLJwIAAAAAAPHMW0oAAAAA
kPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYCUEgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACtwwAAAAAAAKrOW0oAAAAA6PAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECYEgPj//wAAAAAAAAAA
gBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABOkwAAAAAAAJLKW0oAAAAAQPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAMCYEgPj//wAAAAAAAAAAADAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQQAAAAAAPOj50wAAAAA
kPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAYCoEgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABYrwEAAAAAAJWm50wAAAAA6PEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEkEgPj//wAAAAAAAAAA
AKAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAr9QUAAAAAANBNlVIAAAAAQPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0E4EgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAolAEAAAAAAGSo50wAAAAA
mPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIFAEgPj//wAAAAAAAAAAAMAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADamAUAAAAAAIem50wAAAAA8PIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4FUEgPj//wAAAAAAAAAA
ANADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADGtwMAAAAAAIIbTlIAAAAASPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsFkEgPj//wAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPZwIAAAAAAP4kTlIAAAAA
mPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA0FsEgPj//wAAAAAAAAAAAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACSrwAAAAAAAJPKW0oAAAAA8PMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMFwEgPj//wAAAAAAAAAA
AOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADHeAEAAAAAAL3KW0oAAAAASPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEF0EgPj//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNAEAAAAAABlE8FIAAAAA
sPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEAEgPj//wAAAAAAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACsYQIAAAAAAHWEAVUAAAAAEPUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEIEgPj//wAAAAAAAAAA
AIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABQ0gMAAAAAAESEAVUAAAAAcPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYEgPj//wAAAAAAAAAAADABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqDQEAAAAAAI/BW0oAAAAA
0PUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAgAYPn//wAAAAAAAAAAADAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPYAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEcEgPj//wAAAAAAAAAA
AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACOQQEAAAAAAHTFW0oAAAAAcPYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAYPn//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
wPYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHMAYPn//wAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4AYPn//wAAAAAAAAAA
AHACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAUPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsF0EgPj//wAAAAAAAAAAADACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxewIAAAAAAJXCW0oAAAAA
qPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgCsEgPj//wAAAAAAAAAAAFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACdEAEAAAAAAJLMW0oAAAAAAPgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0CwEgPj//wAAAAAAAAAA
AIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABrZQEAAAAAAJLMW0oAAAAAWPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkEYCgPj//wAAAAAAAAAAAJAMAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuVgwAAAAAAM6T50wAAAAA
qPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIFMCgPj//wAAAAAAAAAAAOABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA4LQIAAAAAACiTZE0AAAAAAPkAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUCgPj//wAAAAAAAAAA
AIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABuxwEAAAAAAHnMW0oAAAAAWPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgFYCgPj//wAAAAAAAAAAANACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAgMAAAAAACaCt00AAAAA
sPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAUFkCgPj//wAAAAAAAAAAAOAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADEAwUAAAAAAATBF04AAAAACPoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACgPj//wAAAAAAAAAA
AEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAC92AIAAAAAAOmBt00AAAAAYPoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcI0CgPj//wAAAAAAAAAAAKAKAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOtgoAAAAAADA+0FQAAAAA
uPoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAEJgCgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABACwEAAAAAAC4FCEUAAAAAEPsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJgCgPj//wAAAAAAAAAA
ABADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACfQAMAAAAAAP8quk0AAAAAaPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA0JsCgPj//wAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCQEAAAAAAL5ibFAAAAAA
wPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIACgPj//wAAAAAAAAAAAJAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAeygYAAAAAAAoruk0AAAAAEPwAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEIDgPj//wAAAAAAAAAA
AIAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA5yAcAAAAAAB4ruk0AAAAAYPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIEwDgPj//wAAAAAAAAAAAOACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADanwIAAAAAAMGr50wAAAAA
uPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAE8DgPj//wAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD3yAAAAAAAADzePU8AAAAAEP0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsE8DgPj//wAAAAAAAAAA
APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAF1AAAAAAAABYlx1MAAAAAaP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAoFADgPj//wAAAAAAAAAAAKADAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClHwQAAAAAADElx1MAAAAA
wP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQFQDgPj//wAAAAAAAAAAAJACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAzEAMAAAAAALMgDFUAAAAAGP4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0FYDgPj//wAAAAAAAAAA
ADABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAaUQEAAAAAAGicAVUAAAAAcP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgDgPj//wAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC6gAAAAAAAG0wDFUAAAAA
IQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAG4AdABvAHMA
awByAG4AbAAuAGUAeABlAAAAHAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGgAYQBsAC4AZABsAGwAAAAAAB4AAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABrAGQAYwBvAG0ALgBkAGwAbAAAAAAAAAAAAC4AAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABtAGMAdQBwAGQAYQB0AGUA
XwBHAGUAbgB1AGkAbgBlAEkAbgB0AGUAbAAuAGQAbABsAAAAAAAAAAAAHgAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAFAAUwBIAEUARAAuAGQAbABsAAAA
AAAAAAAAHQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEMA
TABGAFMALgBTAFkAUwAAABsAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUA
bQAzADIAXABDAEkALgBkAGwAbAAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAFcAZABmADAAMQAwADAAMAAuAHMA
eQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABXAEQARgBMAEQAUgAuAFMAWQBTAAAAAAAAACUAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAQQBDAFAA
SQAuAHMAeQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAGQAcgBpAHYAZQByAHMAXABXAE0ASQBMAEkAQgAuAFMAWQBTAAAAAAAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
bQBzAGkAcwBhAGQAcgB2AC4AcwB5AHMAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHAAYwBpAC4AcwB5AHMAAAAAACkA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAdgBkAHIAdgByAG8AbwB0AC4AcwB5AHMAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGYAaQBsAHQA
LgBzAHkAcwAAAAAAJAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXAB4AGUAbgAuAHMAeQBzAAAAAAAnAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGIA
dQBzAC4AcwB5AHMAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABwAGEAcgB0AG0AZwByAC4AcwB5AHMAAAAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAdgBvAGwAbQBnAHIALgBzAHkAcwAAAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHYAbwBsAG0AZwByAHgA
LgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAGQAcgBpAHYAZQByAHMAXABpAG4AdABlAGwAaQBkAGUALgBzAHkAcwAAACgAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
UABDAEkASQBEAEUAWAAuAFMAWQBTAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAG0AbwB1AG4AdABtAGcAcgAuAHMA
eQBzAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABhAHQAYQBwAGkALgBzAHkAcwAAAAAAAAAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYQB0AGEA
cABvAHIAdAAuAFMAWQBTAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAHYAYgBkAC4AcwB5AHMAAAAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABzAHQAbwByAHAAbwByAHQALgBzAHkAcwAAACgAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAeABlAG4AYwByAHMA
aAAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGQAaQBzAGsALgBzAHkAcwAAAAAAKAAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMA
XABhAG0AZAB4AGEAdABhAC4AcwB5AHMAAAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAZgBsAHQAbQBnAHIALgBzAHkA
cwAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
ZAByAGkAdgBlAHIAcwBcAGYAaQBsAGUAaQBuAGYAbwAuAHMAeQBzAAAAJQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABOAHQA
ZgBzAC4AcwB5AHMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMAdABlAG0A
MwAyAFwARAByAGkAdgBlAHIAcwBcAG0AcwByAHAAYwAuAHMAeQBzAAAAAAAAAAAAJwAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMA
XABrAHMAZQBjAGQAZAAuAHMAeQBzAAAAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABTAHkAcwB0AGUAbQAzADIAXABEAHIAaQB2AGUAcgBzAFwAYwBuAGcALgBzAHkAcwAAAAAA
JAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYA
ZQByAHMAXABwAGMAdwAuAHMAeQBzAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAEYAcwBfAFIAZQBjAC4AcwB5AHMA
AAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABuAGQAaQBzAC4AcwB5AHMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAE4ARQBUAEkATwAuAFMA
WQBTAAAAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMA
MgBcAEQAcgBpAHYAZQByAHMAXABrAHMAZQBjAHAAawBnAC4AcwB5AHMAAAAAACYAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
dABjAHAAaQBwAC4AcwB5AHMAAAAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGYAdwBwAGsAYwBsAG4AdAAuAHMA
eQBzAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXAB2AG0AcwB0AG8AcgBmAGwALgBzAHkAcwAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAdgBvAGwA
cwBuAGEAcAAuAHMAeQBzAAAAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMA
dABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAHMAcABsAGQAcgAuAHMAeQBzAAAAAAAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYA
ZQByAHMAXAByAGQAeQBiAG8AbwBzAHQALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAHIAaQB2AGUAcgBzAFwAbQB1AHAALgBzAHkA
cwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQA
cgBpAHYAZQByAHMAXABoAHcAcABvAGwAaQBjAHkALgBzAHkAcwAAACcAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAZgB2AGUA
dgBvAGwALgBzAHkAcwAAAAAAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGQAaQBzAGsALgBzAHkAcwAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
QwBMAEEAUwBTAFAATgBQAC4AUwBZAFMAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
cwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGMAZAByAG8AbQAuAHMAeQBzAAAA
AAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQA
cgBpAHYAZQByAHMAXABOAHUAbABsAC4AUwBZAFMAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAEIAZQBlAHAALgBTAFkA
UwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAdgBnAGEALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABWAEkARABFAE8AUABSAFQA
LgBTAFkAUwAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIA
XABkAHIAaQB2AGUAcgBzAFwAdwBhAHQAYwBoAGQAbwBnAC4AcwB5AHMAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAFIA
RABQAEMARABEAC4AcwB5AHMAAAAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXAByAGQAcABlAG4AYwBkAGQALgBzAHkA
cwAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAcgBkAHAAcgBlAGYAbQBwAC4AcwB5AHMAAAAlAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAE0AcwBmAHMA
LgBTAFkAUwAAACUAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIA
XABEAHIAaQB2AGUAcgBzAFwATgBwAGYAcwAuAFMAWQBTAAAAJAAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAB0AGQAeAAuAHMA
eQBzAAAAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
RABSAEkAVgBFAFIAUwBcAFQARABJAC4AUwBZAFMAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYQBmAGQALgBzAHkA
cwAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQA
UgBJAFYARQBSAFMAXABuAGUAdABiAHQALgBzAHkAcwAAAAAAAAAAACcAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdwBmAHAA
bAB3AGYALgBzAHkAcwAAAAAAAAAmAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHAAYQBjAGUAcgAuAHMAeQBzAAAAAAAAAAAA
KAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABuAGUAdABiAGkAbwBzAC4AcwB5AHMAAAAAACcAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdwBhAG4AYQByAHAA
LgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHQAZQByAG0AZABkAC4AcwB5AHMAAAAAAAAAJgAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMA
XAByAGQAYgBzAHMALgBzAHkAcwAAAAAAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAbgBzAGkAcAByAG8AeAB5AC4A
cwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwA
RABSAEkAVgBFAFIAUwBcAG0AcwBzAG0AYgBpAG8AcwAuAHMAeQBzAAAAKQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABkAGkA
cwBjAGEAYwBoAGUALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkA
cwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAYwBzAGMALgBzAHkAcwAAAAAAJQAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMA
XABkAGYAcwBjAC4AcwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGIAbABiAGQAcgBpAHYAZQAuAHMAeQBzAAAA
JwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXAB0AHUAbgBuAGUAbAAuAHMAeQBzAAAAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAaQA4ADAANAAyAHAA
cgB0AC4AcwB5AHMAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAG0AbwB1AGMAbABhAHMAcwAuAHMAeQBzAAAAKQAAAFwA
UwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMA
XABrAGIAZABjAGwAYQBzAHMALgBzAHkAcwAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQA
XABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAZgBkAGMALgBzAHkAcwAAAAAA
KQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXABIAEQAQQB1AGQAQgB1AHMALgBzAHkAcwAAACcAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdgBpAG8AcwBlAHIA
LgBzAHkAcwAAAAAAAAAkAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAHEAeABsAC4AcwB5AHMAAAAAACgAAABcAFMAeQBzAHQA
ZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAdQBzAGIA
dQBoAGMAaQAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMA
dABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAFUAUwBCAFAATwBSAFQALgBTAFkAUwAAAAAA
KAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYA
RQBSAFMAXAB1AHMAYgBlAGgAYwBpAC4AcwB5AHMAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIA
bwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUAUgBTAFwAaQBuAHQAZQBsAHAA
cABtAC4AcwB5AHMAAAAtAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0A
MwAyAFwARABSAEkAVgBFAFIAUwBcAEMAbwBtAHAAbwBzAGkAdABlAEIAdQBzAC4AcwB5AHMA
AAApAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkA
VgBFAFIAUwBcAEEAZwBpAGwAZQBWAHAAbgAuAHMAeQBzAAAAKAAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGEAcwBsADIA
dABwAC4AcwB5AHMAAAAAACkAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUA
bQAzADIAXABEAFIASQBWAEUAUgBTAFwAbgBkAGkAcwB0AGEAcABpAC4AcwB5AHMAAAAoAAAA
XABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIA
UwBcAG4AZABpAHMAdwBhAG4ALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAHMAeQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGEAcwBwAHAAcABvAGUA
LgBzAHkAcwAAACgAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIA
XABEAFIASQBWAEUAUgBTAFwAcgBhAHMAcABwAHQAcAAuAHMAeQBzAAAAAAAoAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHIA
YQBzAHMAcwB0AHAALgBzAHkAcwAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXAByAGQAcABiAHUAcwAuAHMAeQBzAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAcwB3AGUAbgB1AG0ALgBzAHkAcwAAAAAAAAAjAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGsAcwAuAHMA
eQBzAAAAAAAAACYAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIA
XABEAFIASQBWAEUAUgBTAFwAdQBtAGIAdQBzAC4AcwB5AHMAAAAAAAAAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHUA
cwBiAGgAdQBiAC4AcwB5AHMAAAAAAAAAKAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABOAEQAUAByAG8AeAB5AC4AUwBZAFMA
AAAAACgAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwASABkAEEAdQBkAGkAbwAuAHMAeQBzAAAAAAAoAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAHAAbwByAHQA
YwBsAHMALgBzAHkAcwAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABkAHIAbQBrAC4AcwB5AHMAAAAoAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGsA
cwB0AGgAdQBuAGsALgBzAHkAcwAAAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABjAHIAYQBzAGgAZABtAHAALgBzAHkA
cwAAAC4AAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAHIA
aQB2AGUAcgBzAFwAZAB1AG0AcABfAGQAaQBzAGsAZAB1AG0AcAAuAHMAeQBzAAAAAAAAAAAA
LAAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYA
ZQByAHMAXABkAHUAbQBwAF8AeABlAG4AdgBiAGQALgBzAHkAcwAAAAAALQAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABkAHUA
bQBwAF8AeABlAG4AYwByAHMAaAAuAHMAeQBzAAAALQAAAFwAUwB5AHMAdABlAG0AUgBvAG8A
dABcAFMAeQBzAHQAZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABkAHUAbQBwAF8AZAB1AG0A
cABmAHYAZQAuAHMAeQBzAAAAHwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAHcAaQBuADMAMgBrAC4AcwB5AHMAAAAAAAAAJgAAAFwAUwB5AHMAdABlAG0A
UgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABEAHgAYQBwAGkA
LgBzAHkAcwAAAAAAAAAAACQAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUA
bQAzADIAXABkAHIAaQB2AGUAcgBzAFwAZAB4AGcALgBzAHkAcwAAAAAAHgAAAFwAUwB5AHMA
dABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAFQAUwBEAEQARAAuAGQAbABsAAAA
AAAAAAAAHgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMAMgBcAHEA
eABsAGQAZAAuAGQAbABsAAAAAAAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABsAHUAYQBmAHYALgBzAHkAcwAAAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAbABsAHQAZABpAG8ALgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHIAcwBwAG4A
ZAByAC4AcwB5AHMAAAAAAAAAJQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABIAFQAVABQAC4AcwB5AHMAAAAnAAAAXABTAHkA
cwB0AGUAbQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAGIA
bwB3AHMAZQByAC4AcwB5AHMAAAAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABtAHAAcwBkAHIAdgAuAHMAeQBzAAAA
AAAAACcAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIA
SQBWAEUAUgBTAFwAbQByAHgAcwBtAGIALgBzAHkAcwAAAAAAAAApAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAG0AcgB4AHMA
bQBiADEAMAAuAHMAeQBzAAAAKQAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQA
ZQBtADMAMgBcAEQAUgBJAFYARQBSAFMAXABtAHIAeABzAG0AYgAyADAALgBzAHkAcwAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUA
cgBzAFwAcABlAGEAdQB0AGgALgBzAHkAcwAAAAAAAAAnAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARAByAGkAdgBlAHIAcwBcAHMAZQBjAGQAcgB2AC4A
UwBZAFMAAAAAAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXABzAHIAdgBuAGUAdAAuAHMAeQBzAAAAAAAAACkAAABcAFMA
eQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwA
dABjAHAAaQBwAHIAZQBnAC4AcwB5AHMAAAAlAAAAXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwA
UwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHMAcgB2ADIALgBzAHkAcwAAACQA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABTAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUA
UgBTAFwAcwByAHYALgBzAHkAcwAAAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMA
eQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXAByAGQAcABkAHIALgBzAHkAcwAAAAAA
AAAAACYAAABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAdABkAHQAYwBwAC4AcwB5AHMAAAAAAAAAAAApAAAAXABTAHkAcwB0AGUA
bQBSAG8AbwB0AFwAUwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHQAcwBzAGUA
YwBzAHIAdgAuAHMAeQBzAAAAJgAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAFMAeQBzAHQA
ZQBtADMAMgBcAEQAcgBpAHYAZQByAHMAXABSAEQAUABXAEQALgBTAFkAUwAAAAAAAAAAACcA
AABcAFMAeQBzAHQAZQBtAFIAbwBvAHQAXABzAHkAcwB0AGUAbQAzADIAXABEAFIASQBWAEUA
UgBTAFwAeABlAG4AdgBpAGYALgBzAHkAcwAAAAAAAAApAAAAXABTAHkAcwB0AGUAbQBSAG8A
bwB0AFwAcwB5AHMAdABlAG0AMwAyAFwARABSAEkAVgBFAFIAUwBcAHgAZQBuAGkAZgBhAGMA
ZQAuAHMAeQBzAAAAJwAAAFwAUwB5AHMAdABlAG0AUgBvAG8AdABcAHMAeQBzAHQAZQBtADMA
MgBcAEQAUgBJAFYARQBSAFMAXAB4AGUAbgBuAGUAdAAuAHMAeQBzAAAAAAAAAOAMyQIA+P//
iP8AAJwAAABIi8cCAPj//yQAAQAEAAAARIvHAgD4//8oAAEABAAAAKAbwAIA+P//LAABAAAB
AAAAdswCAPj//ywBAQAEAAAAAHLMAgD4//8wAQEAUAAAAHygzwIA+P//gAEBAAQAAABooM8C
APj//4QBAQAEAAAAkEk9AoD6//+IAQEAACAAAIBCxgIA+P//iCEBAAgAAACIQsYCAPj//5Ah
AQAIAAAAAACsAgD4//+YIQEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzYwMS4xODc0MS5hbWQ2NGZyZS53aW43c3AxX2dk
ci4xNTAyMDItMTUyNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmOTc0ZjE2Yi0zZTYyLTQxMzYtYTZm
Yi02NGZjY2RkZQUAAAB8oM8CAPj//4CgzwIA+P//aKDPAgD4//9soM8CAPj//5BJPQKA+v//
kGk9AoD6//+AQsYCAPj//4hCxgIA+P//iELGAgD4//+QQsYCAPj//0cAAAAAAAAAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAaQBuAGYAXABoAGQAYQB1AGQAaQBvAC4AUABOAEYAAAACABHA
mAAkBKhLPnMAAAAAcIx+AqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAaQB0AC0A
SQBUAFwATQBNAEQAZQB2AEEAUABJAC4AZABsAGwALgBtAHUAaQAAAAIAEcCEACQEBk4+cwAA
AACgh34CoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABBAHUAZABpAG8AUwBlAHMA
LgBkAGwAbAAAAMLCwsICABHAhAAkBB1RPnMAAAAAQJF+AqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAdABhAHMAawBzAGMAaABkAC4AZABsAGwAAADCwsLCAgARwIIAJAQ6Uz5z
AAAAAIDSfgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHAAcgBvAGYAcwB2AGMA
LgBkAGwAbAAAAMLCwsLCwgIAEcCAACQEGFU+cwAAAABg2H4CoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABtAHMAdABhAHMAawAuAGQAbABsAAAAAgARwIIAJAQDVz5zAAAAAHAs
bQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAG0AcwBhAGMAbQAzADIALgBkAHIA
dgAAAMLCwsLCwgIAEcCCACQEDFo+cwAAAABwTG0CoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUA
bQAzADIAXABtAHMAYQBjAG0AMwAyAC4AZABsAGwAAADCwsLCwsICABHAggAkBG9cPnMAAAAA
QGFtAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAbQBpAGQAaQBtAGEAcAAuAGQA
bABsAAAAwsLCwsLCAgARwIAAJARZXj5zAAAAAKAnbQKg+P//XABEAGUAdgBpAGMAZQBcAEgA
YQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQA
ZQBtADMAMgBcAGQAcwByAG8AbABlAC4AZABsAGwAAAACABHAegAkBC1hPnMAAAAAcGxtAqD4
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkA
bgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAYQB0AGwALgBkAGwAbAAAAMLCwsLCwgIA
EcCMACQEA2Q+cwAAAACgZ20CoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXAB0AGgA
ZQBtAGUAcwBlAHIAdgBpAGMAZQAuAGQAbABsAAAAwsLCwgIAEcBkACQE+mU+cwAAAABA4X4C
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAAADCwsLCAgARwHoAJATQZz5zAAAAAECBbQKg+P//
XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4A
ZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHMAbABjAC4AZABsAGwAAADCwsLCwsICABHA
eAAkBExqPnMAAAAAcIxtAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZQBzAC4A
ZABsAGwAAAACABHAhAAkBD1tPnMAAAAAUGtZAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIA
ZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0A
MwAyAFwAQQB1AGQAaQBvAEUAbgBnAC4AZABsAGwAAADCwsLCAgARwIAAJARJbz5zAAAAAJCC
VgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGMAbwBtAHIAZQBzAC4AZABsAGwA
AAACABHAfAAkBCtxPnMAAAAAAFVWAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkA
cwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwA
UwBlAG4AcwAuAGQAbABsAAAAwsLCwgIAEcCEACQEvHM+cwAAAABga1YCoPj//1wARABlAHYA
aQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMA
XABTAHkAcwB0AGUAbQAzADIAXABBAFUARABJAE8ASwBTAEUALgBkAGwAbAAAAMLCwsICABHA
fgAkBKp2PnMAAAAA4FpWAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYA
bwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAdQB4AHMA
bQBzAC4AZABsAGwAAADCwgIAEcCQACQEt3g+cwAAAABwTFYCoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABkAHIAaQB2AGUAcgBzAFwAbABsAHQAZABpAG8ALgBzAHkAcwAAAAIA
EcCQACQEsHo+cwAAAABAQVYCoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABkAHIA
aQB2AGUAcgBzAFwAcgBzAHAAbgBkAHIALgBzAHkAcwAAAAIAEcCAACQEy30+cwAAAABAMVYC
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABsAG0AaABzAHYAYwAuAGQAbABsAAAA
AgARwIQAJAQxgD5zAAAAAEBRnAKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMA
awBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEkA
UABIAEwAUABBAFAASQAuAEQATABMAAAAwsLCwgIAEcCAACQEDoI+cwAAAABw/JwCoPj//1wA
RABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQA
bwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXAB3AGkAbgBuAHMAaQAuAGQAbABsAAAAAgARwIAA
JATohD5zAAAAAHAccQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAG4AcwBpAHMA
dgBjAC4AZABsAGwAAAACABHAgAAkBMCHPnMAAAAAYBZxAqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAbgByAHAAcwByAHYALgBkAGwAbAAAAAIAEcCMACQEuYk+cwAAAABAAXEC
oPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcA
aQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABXAE0AQQBMAEYAWABHAEYAWABEAFMA
UAAuAGQAbABsAAAAwsLCwgIAEcCAACQEkYs+cwAAAACgi1kCoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABtAGYAcABsAGEAdAAuAGQAbABsAAAAAgARwIQAJATFjT5zAAAAAHB2
WQKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGQAaABjAHAAYwBvAHIAZQAuAGQA
bABsAAAAwsLCwgIAEcC8ACQE8pA+cwAAAABAYaICoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAGUAcgB2AGkA
YwBlAFAAcgBvAGYAaQBsAGUAcwBcAE4AZQB0AHcAbwByAGsAUwBlAHIAdgBpAGMAZQBcAEEA
cABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAAAAwsLCwgIAEcCEACQEDJM+cwAA
AACgl1kCoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABkAG4AcwByAHMAbAB2AHIA
LgBkAGwAbAAAAMLCwsICABHAhgAkBFmVPnMAAAAAoLpZAqD4//9cAEQAZQB2AGkAYwBlAFwA
SABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMA
dABlAG0AMwAyAFwAZABoAGMAcABjAG8AcgBlADYALgBkAGwAbAAAAMLCAgARwIQAJASqmD5z
AAAAAEAhWgKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEYAVwBQAFUAQwBMAE4A
VAAuAEQATABMAAAAwsLCwgIAEcCAACQExJo+cwAAAABgJl8CoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABkAG4AcwBlAHgAdAAuAGQAbABsAAAAAgARwIIAJAStnD5zAAAAAMCL
owKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwA
VwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGQAcgBpAHYAZQByAHMAXABlAHQA
YwAAAMLCwsLCwgIAEcCGACQEmp4+cwAAAABAwUAFoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUA
bQAzADIAXABkAGgAYwBwAGMAcwB2AGMANgAuAGQAbABsAAAAwsICABHAhAAkBPmhPnMAAAAA
QNFABaD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZABoAGMAcABjAHMAdgBjAC4A
ZABsAGwAAADCwsLCAgARwIAAJARlpD5zAAAAAKCrVgWg+P//XABEAGUAdgBpAGMAZQBcAEgA
YQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQA
ZQBtADMAMgBcAFUAWABJAG4AaQB0AC4AZABsAGwAAAACABHAgAAkBE2mPnMAAAAAQOgfCqD4
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkA
bgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAcwBoAHMAdgBjAHMALgBkAGwAbAAAAAIA
EcCSACQEMag+cwAAAABA8R8KoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsA
VgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABpAHQA
LQBJAFQAXABnAHAAcwB2AGMALgBkAGwAbAAuAG0AdQBpAAAAwsLCwsLCAgARwIIAJAT4qj5z
AAAAAMC7pAKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0A
ZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAEcAcgBvAHUAcABQAG8A
bABpAGMAeQAAAMLCwsLCwgIAEcCEACQE2a0+cwAAAABAAWACoPj//1wARABlAHYAaQBjAGUA
XABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABTAHkA
cwB0AGUAbQAzADIAXABzAGMAaABlAGQAcwB2AGMALgBkAGwAbAAAAMLCwsICABHAgAAkBM2v
PnMAAAAAQBFhAqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUA
bQBlADIAXABXAGkAbgBkAG8AdwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAawB0AG0AdwAzADIA
LgBkAGwAbAAAAAIAEcB6ACQEqrE+cwAAAABAgaUCoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQAbwB3AHMAXABSAGUAcwBvAHUA
cgBjAGUAcwBcAFQAaABlAG0AZQBzAAAAwsLCwsLCAgARwKAAJATusz5zAAAAAEAhYQKg+P//
XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4A
ZABvAHcAcwBcAFIAZQBzAG8AdQByAGMAZQBzAFwAVABoAGUAbQBlAHMAXABBAGUAcgBvAFwA
YQBlAHIAbwAuAG0AcwBzAHQAeQBsAGUAcwAAAAIAEcB2ACQEA7c+cwAAAADQ9aUCoPj//1wA
RABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMgBcAFcAaQBuAGQA
bwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABUAGEAcwBrAHMAAADCwgIAEcCAACQEHLk+cwAA
AABwHGECoPj//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUA
MgBcAFcAaQBuAGQAbwB3AHMAXABTAHkAcwB0AGUAbQAzADIAXABmAHYAZQBhAHAAaQAuAGQA
bABsAAAAAgARwHoAJAQ4uz5zAAAAAEB1dwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQA
ZABpAHMAawBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMA
MgBcAHQAYgBzAC4AZABsAGwAAADCwsLCwsICABHAhAAkBHy+PnMAAAAA8Kl3AqD4//9cAEQA
ZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8A
dwBzAFwAUwB5AHMAdABlAG0AMwAyAFwAZgB2AGUAYwBlAHIAdABzAC4AZABsAGwAAADCwsLC
AgARwIAAJATMwD5zAAAAAEDBdwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMA
awBWAG8AbAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAHcA
aQBhAHIAcABjAC4AZABsAGwAAAACABHAhAAkBLLCPnMAAAAAcMx3AqD4//9cAEQAZQB2AGkA
YwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIAXABXAGkAbgBkAG8AdwBzAFwA
UwB5AHMAdABlAG0AMwAyAFwAdABhAHMAawBjAG8AbQBwAC4AZABsAGwAAADCwsLCAgARwJgA
JASVxD5zAAAAAKDHdwKg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAyAFwAVwBpAG4AZABvAHcAcwBcAFMAeQBzAHQAZQBtADMAMgBcAGkAdAAtAEkA
VABcAHQAYQBzAGsAYwBvAG0AcAAuAGQAbABsAC4AbQB1AGkAAAACABHAfgAkBGTHPnMAAAAA
QOF3AqD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADIA
XABXAGkAbgBkAG8AdwBzAFwAVABhAHMAawBzAFwAUwBDAEgARQBEAEwARwBVAC4AVABYAFQA
AADCwgIAEcAwACQE+sk+cwAAAADgfMkDgPj//1wARgBJAF8AVQBOAEsATgBPAFcATgAAAAIA
EcA6ACQE3ss+cwAAAAAgW34CoPj//1wARABlAHYAaQBjAGUAXABNAHUAcABcAC4AXAAuAFwA
AADCwsLCwsICABHAMAAkBKjOPnMAAAAAwEtBAaD4//9cAEYASQBfAFUATgBLAE4ATwBXAE4A
AAACABHAUgAkBIjRPnMAAAAAwPjYAoD6//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkA
cwBrAFYAbwBsAHUAbQBlADEAXAAkAE0AZgB0AAAAwsLCwsLCAgARwGIAJAR60z5zAAAAAECR
QgGg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAxAFwA
JABTAGUAYwB1AHIAZQA6ACQAUwBEAFMAAADCwsLCwsICABHAWgAkBF3VPnMAAAAAEPLYAoD6
//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADEAXAAkAEwA
bwBnAEYAaQBsAGUAAADCwsLCwsICABHASgAkBD7XPnMAAAAAgIZCAaD4//9cAEQAZQB2AGkA
YwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUAbQBlADEAXAAAAMLCwsLCwgIAEcBIACQE
8Nk+cwAAAAAQ8NgCgPr//1wARABlAHYAaQBjAGUAXABIAGEAcgBkAGQAaQBzAGsAVgBvAGwA
dQBtAGUAMQAAAAIAEcBSACQEtdw+cwAAAABApksBoPj//1wARABlAHYAaQBjAGUAXABIAGEA
cgBkAGQAaQBzAGsAVgBvAGwAdQBtAGUAMQBcAEIAbwBvAHQAAADCwsLCwsICABHAagAkBKfe
PnMAAAAAwPtCAaD4//9cAEQAZQB2AGkAYwBlAFwASABhAHIAZABkAGkAcwBrAFYAbwBsAHUA
bQBlADEAXAAkAEUAeAB0AGUAbgBkAFwAJABSAGUAcABhAHIAcwBlAAAAwsLCwsLCAgARwFoA
JASQ4D5zAAAAAHB8TAGg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8A
bAB1AG0AZQAxAFwAQgBvAG8AdABcAEIAQwBEAAAAwsLCwsLCAgARwGIAJASU4z5zAAAAAHA8
DwCg+P//XABEAGUAdgBpAGMAZQBcAEgAYQByAGQAZABpAHMAawBWAG8AbAB1AG0AZQAxAFwA
QgBvAG8AdABcAEIAQwBEAC4ATABPAEcAAADCwsLCwsIAoDwCgPr//5BpPQKA+v//94MAAQAA
gAAAAE0PRdNCO0QXEA+D6QIAAE6LFBdNYxyCSYvDScH7BE0D04P/IHVQTIubuAAAAEGDu0AX
AAAAdD9IiUWwSIlNuEiJVcBJi9hJi/lJi/L/FYynIwBIi0WwSItNuEiLVcBMi8NMi89Mi9Zm
ZmZmZmZmDx+EAAAAAACD4A8PhLcAAADB4ANIjWQkkEiNfCQYSIu1AAEAAEiNdiD2hfAAAAAB
dBZIOzVPnyMASA9DNUefIwAPH4AAAAAATI0deQAAAEwr2EH/4w8fAEiLRnBIiUdwSItGaEiJ
R2hIi0ZgSIlHYEiLRlhIiUdYSItGUEiJR1BIi0ZISIlHSEiLRkBIiUdASItGOEiJRzhIi0Yw
SIlHMEiLRihIiUcoSItGIEiJRyBIi0YYSIlHGEiLRhBIiUcQSItGCEiJRwj3Bf4hGQBAAAAA
D4VQAgAAQf/SZf8EJTgiAABIi53AAAAASIu9yAAAAEiLtdAAAABlTIscJYgBAAD2hfAAAAAB
D4RPAQAARA8gwUEKi/ABAABBC4vEAQAAD4XOAQAA+mVIiwwliAEAAIB5egB0V0iJRbAzwEiJ
RbhIiUXASIlFyEiJRdBIiUXYSIlF4GYP78APKUXwDylFAA8pRRAPKUUgDylFMA8pRUC5AQAA
AEQPIsH76NlH///6uQAAAABEDyLBSItFsGVIiwwliAEAAPcBAAACQHQuSIlFsPZBAgJ0Dui7
QwoAZUiLDCWIAQAA9kEDQHQMSI1lgEgzyegACwAASItFsA+uVaxNM9Jmg72AAAAAAHQ+SIlF
sOiiEAAAZUiLBCWIAQAASItAcEiLgAABAABIC8B0GGaDvfAAAAAzdQ5Mi5XoAAAASImF6AAA
AEiLRbBMi4UAAQAATIuN2AAAADPSZg/vwGYP78lmD+/SZg/v22YP7+RmD+/tSIuN6AAAAEyL
nfgAAABJi+lJi+APAfhIDwdIi5W4AAAASYmT2AEAAIpVqEGIk/YBAAD6SIvlSIut2AAAAEiL
pCQAAQAA+8OD/yB1W4lFgEiJTYhIiVWQTIlFmEyJTaDokYT//wvAi0WASItNiEiLVZBMi0WY
TItNoEiJo9gBAAAPhLH8//9IjT1YpiMAi3cQSIs/O8ZzEEiNPLcPvgQ4C8APjvn9//+4HAAA
wOnv/f//uUoAAABFM8lFDyDARQvAdRS5AQAAAEUPtoPwAQAARYuLxAEAAEiLlegAAABMi9Xo
YAAAAEiD7FBIiUwkIEiJVCQoTIlEJDBMiUwkOEyJVCRASYvK6BvYDgBIi0wkIEiLVCQoTItE
JDBMi0wkOEyLVCRASIPEUEH/0kiJRbBIi8joj9cOAEiLRbDpWf3//2YPH0QAAEiB7DgBAABI
jYQkAAEAAA8pdCQwDyl8JEBEDylEJFBEDylMJGBEDylUJHBEDylYgEQPKWCQRA8paKBEDylw
sEQPKXjASIkYSIl4CEiJcBBMiWAYTIloIEyJcChMiXgwTIlUJCDoVwoAAJBmZmZmZmZmDx+E
AAAAAAAPH4AAAAAASIHs2AEAAEiNhCQAAQAADyl0JDAPKXwkQEQPKUQkUEQPKUwkYEQPKVQk
cEQPKViARA8pYJBEDylooEQPKXCwRA8peMBIiRhIiXgISIlwEEyJYBhMiWggTIlwKEyJeDBl
SIsEJYgBAAAPumBMC3MO9oXwAAAAAXQF6IMHAABIjYQkOAEAAIkIM8mJSARIiUgITIlAEIlQ
GEyJSCBMiVAoTIlYMESKjfAAAABBgOEBxkQkIAFMjUWASIvUSIvI6Lq9AwBIjYwkAAEAAA8o
dCQwDyh8JEBEDyhEJFBEDyhMJGBEDyhUJHBEDyhZgEQPKGGQRA8oaaBEDyhxsEQPKHnASIsZ
SIt5CEiLcRBMi2EYTItpIEyLcShMi3kw+vaF8AAAAAEPhLsAAABlSIsMJYgBAACAeXoAdBm5
AQAAAEQPIsH76ApE///6uQAAAABEDyLBZUiLDCWIAQAA9wEAAAJAdCX2QQICdA7o9D8KAGVI
iwwliAEAAPZBA0B0C0iNZYCxAeg6BwAAD65VrGaDvYAAAAAAdAXo5wwAAA8oRfAPKE0ADyhV
EA8oXSAPKGUwDyhtQEyLXeBMi1XYTItN0EyLRchIi1XASItNuEiLRbBIi+VIi63YAAAASIHE
6AAAAA8B+EjPD65VrA8oRfAPKE0ADyhVEA8oXSAPKGUwDyhtQEyLXeBMi1XYTItN0EyLRchI
i1XASItNuEiLRbBIi+VIi63YAAAASIHE6AAAAEjPZmZmZmZmZg8fhAAAAAAADx8ASIPsKGVI
ixwliAEAAEiLi9gBAABIjamAAAAARA8gwAqD8AEAAAuDxAEAAHQ0uUoAAABFM8lFDyDARQvA
dRS5AQAAAEQPtoPwAQAARIuLxAEAAEiLlegAAABMi9Xo3/z///plSIsMJYgBAACAeXoAdFdI
iUWwM8BIiUW4SIlFwEiJRchIiUXQSIlF2EiJReBmD+/ADylF8A8pRQAPKUUQDylFIA8pRTAP
KUVAuQEAAABEDyLB++hWQv//+rkAAAAARA8iwUiLRbBlSIsMJYgBAAD3AQAAAkB0LkiJRbD2
QQICdA7oOD4KAGVIiwwliAEAAPZBA0B0DEiNZYBIM8nofQUAAEiLRbAPrlWsTTPSZoO9gAAA
AAB0PkiJRbDoHwsAAGVIiwQliAEAAEiLQHBIi4AAAQAASAvAdBhmg73wAAAAM3UOTIuV6AAA
AEiJhegAAABIi0WwTIuFAAEAAEyLjdgAAAAz0mYP78BmD+/JZg/v0mYP79tmD+/kZg/v7UiL
jegAAABMi534AAAASYvpSYvgDwH4SA8HZmZmZmZmZg8fhAAAAAAAZmZmZmZmZg8fhAAAAAAA
ZmYPH4QAAAAAAPplSIsUJYgBAABIi3ooSI2v8P7//0iD7whIi3EgSIPuCEiL0UiLSTBIwekD
/fNIpfxIjWcISIvKSItROP/iZpBIiU2ASIlFiEiB7KgBAAAPKbQkoAAAAA8pvCSwAAAARA8p
hCTAAAAARA8pjCTQAAAARA8plCTgAAAARA8pnCTwAAAARA8ppCQAAQAARA8prCQQAQAARA8p
tCQgAQAARA8pvCQwAQAATImkJIgBAABMiawkkAEAAEyJtCSYAQAATIm8JKABAABIibwkeAEA
AEiJtCSAAQAASImcJHABAABIjYUQAQAASIlEJCBIK8RIiUQkKEgtqAEAAEiJRCQwSI0FewAA
AEiJRCQ4SI1UJHBIiVQkWEiNVYBIiVQkUEgPumwkSABIi8zolBwSAEyLpCSIAQAATIusJJAB
AABMi7QkmAEAAEiBxKgBAADp8Pz//2ZmZmZmZmYPH4QAAAAAAGZmZmZmZmYPH4QAAAAAAGZm
ZmZmZmYPH4QAAAAAAA8fAEiD7ChIi0FYZg9vcDBmD294QGZED29AUGZED29IYGZED29QcGZE
D2+YgAAAAGZED2+gkAAAAGZED2+ooAAAAGZED2+wsAAAAGZED2+4wAAAAEyLoBgBAABMi6gg
AQAATIuwKAEAAEyLuDABAABIi7gIAQAASIuwEAEAAEiLmAABAAD7ZQ+uFCWAAQAA6H8EDABI
i02ASItFiEiDxCjDZmZmZmZmZg8fhAAAAAAAZmZmZmZmZg8fhAAAAAAADx9AAEiB7KgBAAAP
KbQkoAAAAA8pvCSwAAAARA8phCTAAAAARA8pjCTQAAAARA8plCTgAAAARA8pnCTwAAAARA8p
pCQAAQAARA8prCQQAQAARA8ptCQgAQAARA8pvCQwAQAATImkJIgBAABMiawkkAEAAEyJtCSY
AQAATIm8JKABAABIjYUQAQAASIlEJCBIK8RIiUQkKEgtqAEAAEiJRCQwSI0FWwAAAEiJRCQ4
SI1UJHBIiVQkWEiNVYBIiVQkUEgPunQkSABIi8zotBoSAEyLpCSIAQAATIusJJABAABMi7Qk
mAEAAEiBxKgBAADpEPv//2ZmZmZmZmYPH4QAAAAAAJBIg+woSItBWGYPb3AwZg9veEBmRA9v
QFBmRA9vSGBmRA9vUHBmRA9vmIAAAABmRA9voJAAAABmRA9vqKAAAABmRA9vsLAAAABmRA9v
uMAAAABMi6AYAQAATIuoIAEAAEyLsCgBAABMi7gwAQAA+2VIixwliAEAAGUPrhQlgAEAAOjL
AgwASIPEKMNmZmZmZmZmDx+EAAAAAABmZmZmZmZmDx+EAAAAAABmZmZmZmZmDx+EAAAAAABm
Dx+EAAAAAABIg+xoTIlFgEyJTYhMiVWQTIldmEyNRCRwSYkISYlQCEiNhRABAABIiUQkIEgr
xEiJRCQoSIlEJDBIjQVDAAAASIlEJDhMiUQkWEiNVYBIiVQkUEgPumwkSABIi8zoXhkSAEyL
pCSIAQAATIusJJABAABMi7QkmAEAAEiDxGjpvfn///voBwIMAGUPrhQlgAEAAEyNRCRwSYsI
SYtQCEyLRYBMi02ITItVkEyLXZhIg8Row2ZmZmZmDx+EAAAAAABIgeyoAQAADym0JKAAAAAP
KbwksAAAAEQPKYQkwAAAAEQPKYwk0AAAAEQPKZQk4AAAAEQPKZwk8AAAAEQPKaQkAAEAAEQP
KawkEAEAAEQPKbQkIAEAAEQPKbwkMAEAAEyJpCSIAQAATImsJJABAABMibQkmAEAAEyJvCSg
AQAASIm8JHgBAABIibQkgAEAAEiJnCRwAQAA+4hMJEhIjVQkcEiJVCRYSI1VgEiJVCRQSIvM
6JkLEgBIjUQkcGYPb3AwZg9veEBmRA9vQFBmRA9vSGBmRA9vUHBmRA9vmIAAAABmRA9voJAA
AABmRA9vqKAAAABmRA9vsLAAAABmRA9vuMAAAABMi6AYAQAATIuoIAEAAEyLsCgBAABMi7gw
AQAASIu4CAEAAEiLsBABAABIi5gAAQAASIHEqAEAAMOQkMzMzMzMzGZmDx+EAAAAAABIg+wo
6CcAAACQzMzMzMzMSIPsKEjHRCQgAAAAAOgOAAAAkMzMzMzMzA8fgAAAAABIiUwkCEiJVCQQ
TIlEJBhMiUwkIJxIg+ww+mVIiwwlIAAAAEiLidhLAADoYQYAAGVIiwwlIAAAAEiDwUDo7wIA
AGVMixQlIAAAAE2LkthLAABIi0QkQEmJgoAAAABIi0QkMEmJQkRIjQVs////SDtEJDh1DkyN
RCRoTI0NUP///+sMTI1EJDhMjQ1y////TYmCmAAAAE2JivgAAABEDyDAZYgEJZhIAAA8An0J
uQIAAABEDyLBSItEJDBIJQACAAB0Afvw/wXmMhoASItMJEBIx0QkKAAAAABIjQX6/v//SDtE
JDh0H0iLRCRgSIlEJCBMi0wkWEyLRCRQSItUJEjozCMPAJBIx0QkIAAAAABFM8lFM8Az0ui1
Iw8AkMzMzMzMzGZmZmZmZg8fhAAAAAAASIHs2AAAAA8pdCQwDyl8JAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFJHRER1bXBCbG9iEAAAALEdAPAgAAAAjwBcvDoe
10SYjYb2iExnWGkBAAAAAAAABwAAAAACBCRhAQAAABgAAAECAOgDAIAACAAAAAAAAAQEBv//
WGVuADQuNi11bnN0YWJsZQAwMi8xNy8yMDE1AAABGwABAQIDBAAAAAAAAAAAAAAAAAAAAAAG
AABYZW4ASFZNIGRvbVUANC42LXVuc3RhYmxlACAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAAAAw0AAwEBAAAAAwMDAlhlbgAABBoBBAEDAQLlBgEA//uJFwAAAABkCmQK
QQFDUFUgMQBJbnRlbAAABBoCBAEDAQLlBgEA//uJFwAAAABkCmQKQQFDUFUgMgBJbnRlbAAA
CwUACwFYZW4AABAPABABAwYAAB4A/v8BAAAAERUAEQAQAABAAEAAgAcJAAEABwAARElNTSAw
AAATDwATAAAAAP//HQAAEAEAABQTABQAAAAA//8dAAARABMBAAAAACALACAAAAAAAAAAAAB/
BAB/AAAAAAAAAAAAIAAAAInDemwTQ9xHnzSogAoPtWxuAgAAAAAAAAIAAAAKAAAAfgBNAEgA
egAAAAQAAAAEAAAAZAoAACwAAABDAG8AbQBwAG8AbgBlAG4AdAAgAEkAbgBmAG8AcgBtAGEA
dABpAG8AbgAAAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACYAAABDAG8AbgBmAGkAZwB1AHIA
YQB0AGkAbwBuACAARABhAHQAYQAAAAkAAAAQAAAA//////////8AAAAAAAAAABYAAABJAGQA
ZQBuAHQAaQBmAGkAZQByAAAAAQAAAEoAAABJAG4AdABlAGwANgA0ACAARgBhAG0AaQBsAHkA
IAA2ACAATQBvAGQAZQBsACAAMwAwACAAUwB0AGUAcABwAGkAbgBnACAANQAAACgAAABQAHIA
bwBjAGUAcwBzAG8AcgBOAGEAbQBlAFMAdAByAGkAbgBnAAAAAQAAAGAAAABJAG4AdABlAGwA
KABSACkAIABYAGUAbwBuACgAUgApACAAQwBQAFUAIAAgACAAIAAgACAAIAAgACAAIAAgAFgA
MwA0ADUAMAAgACAAQAAgADIALgA2ADcARwBIAHoAAAAiAAAAVQBwAGQAYQB0AGUAIABTAGkA
ZwBuAGEAdAB1AHIAZQAAAAMAAAAIAAAAAAAAAAcAAAAcAAAAVQBwAGQAYQB0AGUAIABTAHQA
YQB0AHUAcwAAAAQAAAAEAAAABwAAACIAAABWAGUAbgBkAG8AcgBJAGQAZQBuAHQAaQBmAGkA
ZQByAAAAAQAAABoAAABHAGUAbgB1AGkAbgBlAEkAbgB0AGUAbAAAAAwAAABNAFMAUgA4AEIA
AAALAAAACAAAAAAAAAAHAAAAAAAgAAAAb8A90I7YxUS6KvrgNRctGZgDAAAAAAAAAAAAAAAA
AAAAAAAACwAAAEdlbnVudGVsaW5lSQsAAABHZW51bnRlbGluZUkAAAAAAQAAAOUGAQAACCAC
ASK4gf/7ixflBgEAAAggAAEiuIH/+4sXAAAAAAIAAAABWgNV5LLwAAAAAAAsIcoJAVoDVeSy
8AAAAAAALCHKCQAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA
BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAB0QAAAAAAAAA
AAAAAAAAAAdEAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA
AAAAAAAAAQAAABcAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAEAAACLAAAA
AAAAAAcAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAABAAAAgAAAwAENAAAAAAAAAAAAAAAA
AAABDQAAAAAAAAAAAAAAAAAAAAAAAAAAAIAIAACAAAAAAAAAAAAAAAAACAAAgAAAAAAAAAAA
AAAAAAAAAAABAACAAAAAAAAAAAABAAAAAAgQKAAAAAAAAAAAAQAAAAAIECgAAAAAAgAAgElu
dGVsKFIpIFhlb24oUilJbnRlbChSKSBYZW9uKFIpAAAAAAMAAIAgQ1BVICAgICAgICAgICBY
IENQVSAgICAgICAgICAgWAAAAAAEAACAMzQ1MCAgQCAyLjY3R0h6ADM0NTAgIEAgMi42N0dI
egAAAAAABQAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAIAAAAAA
AAAAAEBgAAEAAAAAAAAAAAAAAABAYAABAAAAAAAAAAAHAACAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAACAAAgCQwAAAAAAAAAAAAAAAAAAAkMAAAAAAAAAAAAAAAAAAA
IAAAANJAO+igsEJIq+pxyeNGPdFAAAAAAAAAAAAAAABBUElDYAQAAAKwWGVuAAAARkFDUPQA
AAAEAFhlbgAAAFdBRVQoAAAAAVZYZW4AAABIUEVUOAAAAAHSWGVuAAAAIAAAAIhIyFTRAR5M
vtYoLJgkEwMAEAAAAAAAAAAAAACdTE1ULJTVRr9Q31zZUkpQSKDTAoD6//+4DwAArAhwCDEA
AABjZHJvbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMUhwAAQAAAAAACgBmH9LR
Vu4oOXc/YDfSI4V9TFIgAAIAAAAAAAsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUjQAAwAAABwA
DgBjTFCffVNJZYVAvXB3dgEA2I8n/X8FAABggNgCgPr//wUBAAAAAQAATFI8AAQAAAA8AA8A
d/p5j+/a3gVZfKRoubDwn9iPJ/1/BQAAYIDYAoD6//8HBAAAABCOewKA+v//AAAATFIoAAUA
AABwABsAIvZYR9ZK2gW5dPl6rRrhn5h7J/1/BQAANAAAwExSOAAGAAAArAAOAHf6eY/v2t4F
WXykaLmw8J/Yjyf9fwUAAGCA2AKA+v//AHB4mQKA+v//AAAATFI0AAcAAADUAA4AY0xQn31T
SWWFQL1wd3YBANiPJ/1/BQAAYIDYAoD6//8GAQAABQEAAExSNAAIAAAADAEOAGNMUJ99U0ll
hUC9cHd2AQDYjyf9fwUAAGCA2AKA+v//CAEAAAYBAABMUjQACQAAAEABCgDsSaK9xv18jIRT
Q0EKMoFI2I8n/X8FAABggNgCgPr//wEFAAAABQAATFI0AAoAAAB0AQ8A+FJLNRS6fKjM5O7U
pp4L5NiPJ/1/BQAAYIDYAoD6//8WAwAAAAMAAExSNAALAAAAqAEPAPhSSzUUunyozOTu1Kae
C+TYjyf9fwUAAGCA2AKA+v//DwMAABYDAABMUjQADAAAANwBDwD4Uks1FLp8qMzk7tSmngvk
2I8n/X8FAABggNgCgPr//xADAAAPAwAATFI0AA0AAAAQAg8A+FJLNRS6fKjM5O7Upp4L5NiP
J/1/BQAAYIDYAoD6//8RAwAAEAMAAExSNAAOAAAARAIPAPhSSzUUunyozOTu1KaeC+TYjyf9
fwUAAGCA2AKA+v//EgMAABEDAABMUiQADwAAAHgCHwD3GObi8t2KFaTU0OfXhtnK2I8n/X8F
AABMUjQAEAAAAKwCDAAJ2QuVn04AjF2DlIEg+6dt2I8n/X8FAABggNgCgPr//wIAAAABAAAA
TFIgABEAAADQAgsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAEgAAAAQDCwAi9lhH1kraBbl0
+XqtGuGfNAAAwExSIAATAAAAJAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABQAAABEAwsA
IvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAFQAAAGQDCwAi9lhH1kraBbl0+XqtGuGfNAAAwExS
IAAWAAAAhAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIoABcAAACkAxsAIvZYR9ZK2gW5dPl6
rRrhn4jmCv1/BQAANAAAwExSIAAYAAAAxAMLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABkA
AADsAwsAIvZYR9ZK2gW5dPl6rRrhnzQAAMBMUiAAGgAAAAwECwAi9lhH1kraBbl0+XqtGuGf
NAAAwExSIAAbAAAALAQLACL2WEfWStoFuXT5eq0a4Z80AADATFIgABwAAABMBAsAIvZYR9ZK
2gW5dPl6rRrhnzQAAMBMUiAAHQAAAGwECwAi9lhH1kraBbl0+XqtGuGfNAAAwExSIAAeAAAA
jAQLACL2WEfWStoFuXT5eq0a4Z80AADATFIgAB8AAACsBAsAIvZYR9ZK2gW5dPl6rRrhnzQA
AMBMUiAAIAAAAMwECwAi9lhH1kraBbl0+XqtGuGfNAAAwExSIAAhAAAA7AQLACL2WEfWStoF
uXT5eq0a4Z80AADATFI0ACIAAAAMBQwACdkLlZ9OAIxdg5SBIPunbdiPJ/1/BQAAYIDYAoD6
//8EAAAAAgAAAExSNAAjAAAALAUPAPhSSzUUunyozOTu1KaeC+TYjyf9fwUAAGCA2AKA+v//
EwMAABIDAABMUjQAJAAAAGAFDwD4Uks1FLp8qMzk7tSmngvk2I8n/X8FAABggNgCgPr//wcD
AAATAwAATFI0ACUAAACUBQoA7Emivcb9fIyEU0NBCjKBSNiPJ/1/BQAAYIDYAoD6//9lBQAA
AQUAAExSNAAmAAAAyAUKAOxJor3G/XyMhFNDQQoygUjYjyf9fwUAAGCA2AKA+v//AgUAAGUF
AABMUjQAJwAAAPwFDgBjTFCffVNJZYVAvXB3dgEA2I8n/X8FAABggNgCgPr//wkBAAAIAQAA
TFI0ACgAAAAwBg4AY0xQn31TSWWFQL1wd3YBANiPJ/1/BQAAYIDYAoD6//8ZAQAACQEAAExS
OAApAAAAZAYOAHf6eY/v2t4FWXykaLmw8J/Yjyf9fwUAAGCA2AKA+v//FHB4mQKA+v//AAAA
TFI4ACoAAACYBhQApvlp4Qzm8oQysXrRxp1PeNiPJ/1/BQAAYIDYAoD6//8AAAAAcHiZAoD6
//9MUjwAKwAAANAGDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcAAAAAcHiZ
AoD6//8AAABMUjwALAAAAAgHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcE
AAAAkFn1AoD6//8AAABMUjwALQAAAEQHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8FAABggNgC
gPr//wcEAAAAcFzLAoD6//8AAABMUjwALgAAAIAHDwB3+nmP79reBVl8pGi5sPCf2I8n/X8F
AABggNgCgPr//wcEAAAAEIZJA4D6//8AAABMUjwALwAAALwHDwB3+nmP79reBVl8pGi5sPCf
2I8n/X8FAABggNgCgPr//wcEAAAAEIZJA4D6//8AAABMUjwAMAAAAPgHDwB3+nmP79reBVl8
pGi5sPCf2I8n/X8FAABggNgCgPr//wcEAAAAgIxJA4D6//8AAABMUjwAMQAAADQIDwB3+nmP
79reBVl8pGi5sPCf2I8n/X8FAABggNgCgPr//wcEAAAAgIxJA4D6//8AAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAIAAAAExKfvihxS9Nv/DV3mOl5MNoAgAAAAAAAAAAAAAAAAAAAAAAAAEA
AAALAAAAAAAAAFdkZjAxMDAwAAAAAA0AAAAbAAAAXABXAEkATgBEAE8AVwBTABDQUAKA+v//
AQAAAAkAAACwHQAAbXNpc2FkcnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAQDlPAoD6
//8BAAAACQAAALAdAAB2ZHJ2cm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABAHnYC
gPr//wEAAAAFAAAAcBcAAHN0b3JmbHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtZcAALBi
0wKA+v//AQAAAAkAAACwHQAAY2Ryb20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAhYA
ELDZAoD6//8BAAAABwAAAHEXAABIREF1ZEJ1cwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AACwy9oCgPr//wEAAAAJAAAAsB0AAFZpcnRpb1NlcmlhbAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgAAAEAu2wKA+v//AQAAAAkAAACwHQAAaW50ZWxwcG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAACAAAAgFjdAoD6//8BAAAACQAAALAdAABDb21wb3NpdGVCdXMAAAAAAAAAAAAAAAAAAAAA
AAAAALWXAABAXt8CgPr//wEAAAAJAAAAsB0AAHVtYnVzAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAD4AAGBYXQOA+v//AQAAAAcAAABxFwAAUEVBVVRIAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABJEEyN
--------------080008050502080400090006
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------080008050502080400090006--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:59:04 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:59:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaMY4-0006Ee-2R; Tue, 24 Mar 2015 10:59:04 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YaMY2-0006A7-Ro; Tue, 24 Mar 2015 10:59:02 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	A8/48-32337-67341155; Tue, 24 Mar 2015 10:59:02 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1427194737!12664761!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13452 invoked from network); 24 Mar 2015 10:58:57 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:58:57 -0000
Received: by wgbcc7 with SMTP id cc7so167887362wgb.0;
	Tue, 24 Mar 2015 03:58:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=f8yXY+FSYPUATf6LgvzK7QWSMQZA8bGylUxkCezZMOo=;
	b=kEjPthmrbtOvz/ayM80igTNkJ81NGlGAsDeEmoBGdaMqA5ZlUOfm/xYJ2ch2Mw5hux
	4wD4mxzY80t1OPhfzhPocSAF0C5E0nqR591eg/rbCZ0+HlEnGPHR8fX3RADJXsPY2yRN
	YgPvQQS43VcgQ6giZwedinzYQGz0CBsIftLqvZ8BzNQyl1zBgIFRjrMGwyxk5sEJo3eF
	pB5g//Wm93Amvz/ZQDnRzmo38W2EjgU6P9zInY63usGo9OYGUUl9LvDV7UoaAGK0M6T8
	05xz3b4k7/qAUaU/siBSsPRPm+JB1jLMGWQib+1/YzwzuxAy72qZ+tCcBCvq6rqWaGi3
	yr/Q==
X-Received: by 10.194.88.131 with SMTP id bg3mr6755276wjb.119.1427194737421;
	Tue, 24 Mar 2015 03:58:57 -0700 (PDT)
Received: from [192.168.0.12] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id e2sm5523649wjy.46.2015.03.24.03.58.56
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 24 Mar 2015 03:58:56 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <0A96B756-8A67-4E1E-9A13-39238BF378C3@gmail.com>
Date: Tue, 24 Mar 2015 10:58:55 +0000
To: xen-devel <xen-devel@lists.xen.org>, xen-api@lists.xenproject.org,
	Win-pv-devel@lists.xenproject.org, embedded-pv-devel@lists.xenproject.org,
	mirageos-devel@xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] March Advisory Board Meeting Minutes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5014660071031558469=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============5014660071031558469==
Content-Type: multipart/alternative; boundary="Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749"


--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

See http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes =
<http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes>=

--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">See&nbsp;<a href="http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes" class="">http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes</a></body></html>
--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749--


--===============5014660071031558469==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5014660071031558469==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 10:59:04 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 10:59:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaMY4-0006Ee-2R; Tue, 24 Mar 2015 10:59:04 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YaMY2-0006A7-Ro; Tue, 24 Mar 2015 10:59:02 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
	A8/48-32337-67341155; Tue, 24 Mar 2015 10:59:02 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1427194737!12664761!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13452 invoked from network); 24 Mar 2015 10:58:57 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 10:58:57 -0000
Received: by wgbcc7 with SMTP id cc7so167887362wgb.0;
	Tue, 24 Mar 2015 03:58:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:message-id:date:to:mime-version;
	bh=f8yXY+FSYPUATf6LgvzK7QWSMQZA8bGylUxkCezZMOo=;
	b=kEjPthmrbtOvz/ayM80igTNkJ81NGlGAsDeEmoBGdaMqA5ZlUOfm/xYJ2ch2Mw5hux
	4wD4mxzY80t1OPhfzhPocSAF0C5E0nqR591eg/rbCZ0+HlEnGPHR8fX3RADJXsPY2yRN
	YgPvQQS43VcgQ6giZwedinzYQGz0CBsIftLqvZ8BzNQyl1zBgIFRjrMGwyxk5sEJo3eF
	pB5g//Wm93Amvz/ZQDnRzmo38W2EjgU6P9zInY63usGo9OYGUUl9LvDV7UoaAGK0M6T8
	05xz3b4k7/qAUaU/siBSsPRPm+JB1jLMGWQib+1/YzwzuxAy72qZ+tCcBCvq6rqWaGi3
	yr/Q==
X-Received: by 10.194.88.131 with SMTP id bg3mr6755276wjb.119.1427194737421;
	Tue, 24 Mar 2015 03:58:57 -0700 (PDT)
Received: from [192.168.0.12] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id e2sm5523649wjy.46.2015.03.24.03.58.56
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 24 Mar 2015 03:58:56 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <0A96B756-8A67-4E1E-9A13-39238BF378C3@gmail.com>
Date: Tue, 24 Mar 2015 10:58:55 +0000
To: xen-devel <xen-devel@lists.xen.org>, xen-api@lists.xenproject.org,
	Win-pv-devel@lists.xenproject.org, embedded-pv-devel@lists.xenproject.org,
	mirageos-devel@xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] March Advisory Board Meeting Minutes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5014660071031558469=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============5014660071031558469==
Content-Type: multipart/alternative; boundary="Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749"


--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

See http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes =
<http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes>=

--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">See&nbsp;<a href="http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes" class="">http://wiki.xenproject.org/wiki/AB_Meeting/March_2015_Minutes</a></body></html>
--Apple-Mail=_11348BEA-F535-490A-B658-13DC5C385749--


--===============5014660071031558469==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============5014660071031558469==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 11:00:58 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 11:00:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaMZu-0007Ll-Ow; Tue, 24 Mar 2015 11:00:58 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaMZs-0007Lc-N2
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 11:00:57 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	F3/47-13427-8E341155; Tue, 24 Mar 2015 11:00:56 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1427194850!7042062!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 11366 invoked from network); 24 Mar 2015 11:00:50 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 11:00:50 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33042379"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EA==
Date: Tue, 24 Mar 2015 11:00:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
In-Reply-To: <55113AF4.4010808@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2146863474454961599=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============2146863474454961599==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.






--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06621.D1A352C0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for the logs. The processor-group-a=
wareness
 patch did introduce a couple of problems in to XENVIF. I just posted a cou=
ple of patches that should hopefully fix these. I&#8217;ll apply them later=
 if no-one shouts so there should be a new build by the end of the day.<o:p=
></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span></font><=
o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys are named=
 the same
 as the driver, so go look in HKLM/CurrentControlSet/Services and find all =
the things starting with XEN and then either get rid of them or set the Sta=
rtType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 11/03/2015 16:47, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">As I reported time ago there was strange thing when updat=
e network components: give &quot;ready to use&quot; instead of &quot;device=
 updated&quot;
 message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_gr=
ant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_--


--===============2146863474454961599==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2146863474454961599==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 11:00:58 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 11:00:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaMZu-0007Ll-Ow; Tue, 24 Mar 2015 11:00:58 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaMZs-0007Lc-N2
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 11:00:57 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	F3/47-13427-8E341155; Tue, 24 Mar 2015 11:00:56 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1427194850!7042062!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 11366 invoked from network); 24 Mar 2015 11:00:50 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 11:00:50 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33042379"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EA==
Date: Tue, 24 Mar 2015 11:00:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
In-Reply-To: <55113AF4.4010808@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2146863474454961599=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============2146863474454961599==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.






--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06621.D1A352C0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for the logs. The processor-group-a=
wareness
 patch did introduce a couple of problems in to XENVIF. I just posted a cou=
ple of patches that should hopefully fix these. I&#8217;ll apply them later=
 if no-one shouts so there should be a new build by the end of the day.<o:p=
></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span></font><=
o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys are named=
 the same
 as the driver, so go look in HKLM/CurrentControlSet/Services and find all =
the things starting with XEN and then either get rid of them or set the Sta=
rtType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 11/03/2015 16:47, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">As I reported time ago there was strange thing when updat=
e network components: give &quot;ready to use&quot; instead of &quot;device=
 updated&quot;
 message at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_gr=
ant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92AMSPEX01CL01cit_--


--===============2146863474454961599==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2146863474454961599==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 12:09:51 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 12:09:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaNeZ-0000ib-RT; Tue, 24 Mar 2015 12:09:51 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaNeY-0000iN-Nu
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 12:09:50 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	1F/6C-08386-E0451155; Tue, 24 Mar 2015 12:09:50 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1427198989!14994020!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14851 invoked from network); 24 Mar 2015 12:09:49 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 12:09:49 -0000
Received: by wgdm6 with SMTP id m6so169510290wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 05:09:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=HvQ9rAg0INVdU34buu75xldps1kdsKb8+qu3uCXKbQI=;
	b=UndZi/ZQPr6730dAAaloSVufeXFHI6SgKg3a2AdyENp5NzsAKMw2MgggTJm8Xef7BC
	NKU07qbxRTDEuAZbMy6E/2EYVujs7kahZJA2yEvPx3MbI1ZPOJtptTDLJ562PlVdgsk+
	MNZZ2BK5+vYN+Qf/4I7OnLCGxxzGB7eP6bkXDSsuGpIu9WFeQjv2ibJwTjtpm8uOa0BT
	DO7OQ/ICJZTzxces0wjQEBwoFApLVGfKOiePnXQoauUKok4xmWjqvj4g21CwvrdkSQ+T
	z7+X6HqGqrrYm6CBPKP3CmRgXg3iPeVtmV+VHRXIe89Ves+11FUgstuSCFLei1YyTBLc
	A8gA==
X-Received: by 10.194.9.98 with SMTP id y2mr7394055wja.85.1427198987467;
	Tue, 24 Mar 2015 05:09:47 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id
	hj10sm5788148wjc.48.2015.03.24.05.09.46
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 05:09:46 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 12:09:57 +0000
Message-Id: <1427198997-15828-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH v2] Fix typos and type problems in previous
	patch
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also add some extra trace statements that proved useful in debugging

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
v2:
 - Fixed lines that were supposed to zero MaxQueues

 src/xenvif/receiver.c    |  9 ++++++++-
 src/xenvif/transmitter.c | 17 ++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index f09b71c..e414fba 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2758,6 +2758,8 @@ ReceiverConnect(
     PCHAR                   Buffer;
     NTSTATUS                status;
 
+    Trace("====>\n");
+
     Frontend = Receiver->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Receiver->DebugInterface);
@@ -2815,6 +2817,7 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail6;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail6:
@@ -3091,6 +3094,8 @@ ReceiverDisconnect(
     PXENVIF_FRONTEND        Frontend;
     LONG                    Index;
 
+    Trace("=====>\n");
+
     Frontend = Receiver->Frontend;
 
     Receiver->Split = FALSE;
@@ -3116,6 +3121,8 @@ ReceiverDisconnect(
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3142,7 +3149,7 @@ ReceiverTeardown(
 
     __ReceiverFree(Receiver->Ring);
     Receiver->Ring = NULL;
-    Receiver->MaxQueues;
+    Receiver->MaxQueues = 0;
 
     XENBUS_CACHE(Release, &Receiver->CacheInterface);
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index d6357f1..3aeac93 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3724,6 +3724,8 @@ TransmitterConnect(
     LONG                        Index;
     NTSTATUS                    status;
 
+    Trace("====>\n");
+
     Frontend = Transmitter->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Transmitter->DebugInterface);
@@ -3806,6 +3808,7 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail8;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail8:
@@ -3934,7 +3937,9 @@ TransmitterDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
+    LONG                    Index;
+
+    Trace("====>\n");
 
     Frontend = Transmitter->Frontend;
 
@@ -3946,7 +3951,7 @@ TransmitterDisconnect(
     Transmitter->DebugCallback = NULL;
 
     Index = Transmitter->NumQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
@@ -3966,6 +3971,8 @@ TransmitterDisconnect(
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3973,7 +3980,7 @@ TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3982,7 +3989,7 @@ TransmitterTeardown(
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
     Index = Transmitter->MaxQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         Transmitter->Ring[Index] = NULL;
@@ -3991,7 +3998,7 @@ TransmitterTeardown(
 
     __TransmitterFree(Transmitter->Ring);
     Transmitter->Ring = NULL;
-    Transmitter->MaxQueues;
+    Transmitter->MaxQueues = 0;
 
     XENBUS_CACHE(Release, &Transmitter->CacheInterface);
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 12:09:51 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 12:09:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaNeZ-0000ib-RT; Tue, 24 Mar 2015 12:09:51 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaNeY-0000iN-Nu
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 12:09:50 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	1F/6C-08386-E0451155; Tue, 24 Mar 2015 12:09:50 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1427198989!14994020!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14851 invoked from network); 24 Mar 2015 12:09:49 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 12:09:49 -0000
Received: by wgdm6 with SMTP id m6so169510290wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 05:09:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=HvQ9rAg0INVdU34buu75xldps1kdsKb8+qu3uCXKbQI=;
	b=UndZi/ZQPr6730dAAaloSVufeXFHI6SgKg3a2AdyENp5NzsAKMw2MgggTJm8Xef7BC
	NKU07qbxRTDEuAZbMy6E/2EYVujs7kahZJA2yEvPx3MbI1ZPOJtptTDLJ562PlVdgsk+
	MNZZ2BK5+vYN+Qf/4I7OnLCGxxzGB7eP6bkXDSsuGpIu9WFeQjv2ibJwTjtpm8uOa0BT
	DO7OQ/ICJZTzxces0wjQEBwoFApLVGfKOiePnXQoauUKok4xmWjqvj4g21CwvrdkSQ+T
	z7+X6HqGqrrYm6CBPKP3CmRgXg3iPeVtmV+VHRXIe89Ves+11FUgstuSCFLei1YyTBLc
	A8gA==
X-Received: by 10.194.9.98 with SMTP id y2mr7394055wja.85.1427198987467;
	Tue, 24 Mar 2015 05:09:47 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id
	hj10sm5788148wjc.48.2015.03.24.05.09.46
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 05:09:46 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 12:09:57 +0000
Message-Id: <1427198997-15828-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH v2] Fix typos and type problems in previous
	patch
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Also add some extra trace statements that proved useful in debugging

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
v2:
 - Fixed lines that were supposed to zero MaxQueues

 src/xenvif/receiver.c    |  9 ++++++++-
 src/xenvif/transmitter.c | 17 ++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index f09b71c..e414fba 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2758,6 +2758,8 @@ ReceiverConnect(
     PCHAR                   Buffer;
     NTSTATUS                status;
 
+    Trace("====>\n");
+
     Frontend = Receiver->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Receiver->DebugInterface);
@@ -2815,6 +2817,7 @@ ReceiverConnect(
     if (!NT_SUCCESS(status))
         goto fail6;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail6:
@@ -3091,6 +3094,8 @@ ReceiverDisconnect(
     PXENVIF_FRONTEND        Frontend;
     LONG                    Index;
 
+    Trace("=====>\n");
+
     Frontend = Receiver->Frontend;
 
     Receiver->Split = FALSE;
@@ -3116,6 +3121,8 @@ ReceiverDisconnect(
     XENBUS_STORE(Release, &Receiver->StoreInterface);
 
     XENBUS_DEBUG(Release, &Receiver->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3142,7 +3149,7 @@ ReceiverTeardown(
 
     __ReceiverFree(Receiver->Ring);
     Receiver->Ring = NULL;
-    Receiver->MaxQueues;
+    Receiver->MaxQueues = 0;
 
     XENBUS_CACHE(Release, &Receiver->CacheInterface);
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index d6357f1..3aeac93 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3724,6 +3724,8 @@ TransmitterConnect(
     LONG                        Index;
     NTSTATUS                    status;
 
+    Trace("====>\n");
+
     Frontend = Transmitter->Frontend;
 
     status = XENBUS_DEBUG(Acquire, &Transmitter->DebugInterface);
@@ -3806,6 +3808,7 @@ TransmitterConnect(
     if (!NT_SUCCESS(status))
         goto fail8;
 
+    Trace("<====\n");
     return STATUS_SUCCESS;
 
 fail8:
@@ -3934,7 +3937,9 @@ TransmitterDisconnect(
     )
 {
     PXENVIF_FRONTEND        Frontend;
-    ULONG                   Index;
+    LONG                    Index;
+
+    Trace("====>\n");
 
     Frontend = Transmitter->Frontend;
 
@@ -3946,7 +3951,7 @@ TransmitterDisconnect(
     Transmitter->DebugCallback = NULL;
 
     Index = Transmitter->NumQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         __TransmitterRingDisconnect(Ring);
@@ -3966,6 +3971,8 @@ TransmitterDisconnect(
     XENBUS_STORE(Release, &Transmitter->StoreInterface);
 
     XENBUS_DEBUG(Release, &Transmitter->DebugInterface);
+
+    Trace("<====\n");
 }
 
 VOID
@@ -3973,7 +3980,7 @@ TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
     )
 {
-    ULONG                   Index;
+    LONG                    Index;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     KeFlushQueuedDpcs();
@@ -3982,7 +3989,7 @@ TransmitterTeardown(
                   sizeof (LONG_PTR) *  XENVIF_TRANSMITTER_PACKET_OFFSET_COUNT); 
 
     Index = Transmitter->MaxQueues;
-    while (--Index >- 0) {
+    while (--Index >= 0) {
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];
 
         Transmitter->Ring[Index] = NULL;
@@ -3991,7 +3998,7 @@ TransmitterTeardown(
 
     __TransmitterFree(Transmitter->Ring);
     Transmitter->Ring = NULL;
-    Transmitter->MaxQueues;
+    Transmitter->MaxQueues = 0;
 
     XENBUS_CACHE(Release, &Transmitter->CacheInterface);
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 12:39:26 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 12:39:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaO7C-0005IC-Gz; Tue, 24 Mar 2015 12:39:26 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaO7A-0005I4-Nr
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 12:39:24 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	7E/6D-02712-CFA51155; Tue, 24 Mar 2015 12:39:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1427200763!12718116!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29596 invoked from network); 24 Mar 2015 12:39:23 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-8.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 12:39:23 -0000
Received: by wixw10 with SMTP id w10so94531951wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 05:39:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=7xsxu0cjObOUX5QBKqYLZwoAxvg0bBUx8WPR27MHDW0=;
	b=vSxOdk0OiGkbdESd4X27HZqlZ3vbUP4ZWmphAauIu8HBXhnNmawmTvCO2+A26NEBfq
	bUcqIayjUtE5k6bCc+wsLz4xlwKwLN37BlzeTeqMA6gdtxwLN4lfQ+gu2sxmWcAA16uI
	4cZG7wVrfQjEUwNx3nBV8Wkh+IQlDBPY9HwQPIJhsv/nell8zJDD0p4xa0lOjcfcDAVs
	qsqJIuFhgg3YKc7RvDULCafOsGNTuhkYT5ia5jc1l+zYpbId1ofCppGFjGeowG6Cm9YV
	skrw1MSS9nrtXZ5W7/CNztZqzYJYEgcx5ovgsRdJ1skQh17ITZnonEVswTYAifXSgLvB
	af3Q==
X-Received: by 10.194.48.12 with SMTP id h12mr8020492wjn.74.1427200762933;
	Tue, 24 Mar 2015 05:39:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id na4sm646763wic.10.2015.03.24.05.39.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 05:39:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 12:39:34 +0000
Message-Id: <1427200774-10512-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Add the 'NeedReboot' flag back in
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Older versions of the code used to set a 'NeedReboot' registry value if
the PDO failed to start because the corresponding emulated device was
found to be still present. The value was set directly in the service key
which is non-volatile and thus the value would persist after reboot.

This patch adds code to again set a 'NeedReboot' value, but this time it
is in a volatile 'Status' key under the service key so that it does not
persist. This value can then be used by the XENNET co-installer to
determine whether it should request a reboot during postinstall
processing.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/driver.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 src/xenvif/driver.h |  2 +-
 src/xenvif/pdo.c    | 23 +++++++++++++++++++++++
 3 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 8cf843f..b9e6d2f 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -48,6 +48,7 @@ typedef struct _XENVIF_DRIVER {
     PDRIVER_OBJECT      DriverObject;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
+    HANDLE              StatusKey;
 } XENVIF_DRIVER, *PXENVIF_DRIVER;
 
 static XENVIF_DRIVER    Driver;
@@ -124,6 +125,30 @@ DriverGetAddressesKey(
     return __DriverGetAddressesKey();
 }
 
+static FORCEINLINE VOID
+__DriverSetStatusKey(
+    IN  HANDLE  Key
+    )
+{
+    Driver.StatusKey = Key;
+}
+
+static FORCEINLINE HANDLE
+__DriverGetStatusKey(
+    VOID
+    )
+{
+    return Driver.StatusKey;
+}
+
+HANDLE
+DriverGetStatusKey(
+    VOID
+    )
+{
+    return __DriverGetStatusKey();
+}
+
 DRIVER_UNLOAD       DriverUnload;
 
 VOID
@@ -133,6 +158,7 @@ DriverUnload(
 {
     HANDLE              AddressesKey;
     HANDLE              ParametersKey;
+    HANDLE              StatusKey;
 
     ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
 
@@ -141,7 +167,12 @@ DriverUnload(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    AddressesKey = __DriverGetParametersKey();
+    StatusKey = __DriverGetStatusKey();
+    __DriverSetStatusKey(NULL);
+
+    RegistryCloseKey(StatusKey);
+
+    AddressesKey = __DriverGetAddressesKey();
     __DriverSetAddressesKey(NULL);
 
     RegistryCloseKey(AddressesKey);
@@ -254,6 +285,7 @@ DriverEntry(
     HANDLE              ServiceKey;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
+    HANDLE              StatusKey;
     ULONG               Index;
     NTSTATUS            status;
 
@@ -308,6 +340,15 @@ DriverEntry(
 
     __DriverSetAddressesKey(AddressesKey);
 
+    status = RegistryCreateSubKey(ServiceKey,
+                                  "Status",
+                                  REG_OPTION_VOLATILE,
+                                  &StatusKey);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    __DriverSetStatusKey(StatusKey);
+
     RegistryCloseKey(ServiceKey);
 
     DriverObject->DriverExtension->AddDevice = AddDevice;
@@ -323,6 +364,13 @@ done:
 
     return STATUS_SUCCESS;
 
+fail5:
+    Error("fail5\n");
+
+    __DriverSetAddressesKey(NULL);
+
+    RegistryCloseKey(AddressesKey);
+
 fail4:
     Error("fail4\n");
 
diff --git a/src/xenvif/driver.h b/src/xenvif/driver.h
index cdef7d1..17ed726 100644
--- a/src/xenvif/driver.h
+++ b/src/xenvif/driver.h
@@ -48,7 +48,7 @@ DriverGetAddressesKey(
     );
 
 extern HANDLE
-DriverGetAliasesKey(
+DriverGetStatusKey(
     VOID
     );
 
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index 369efb0..9352594 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -1207,6 +1207,26 @@ PdoS3ToS4(
     Trace("(%s) <====\n", __PdoGetName(Pdo));
 }
 
+static VOID
+PdoRequestReboot(
+    IN  PXENVIF_PDO     Pdo
+    )
+{
+    HANDLE              StatusKey;
+
+    UNREFERENCED_PARAMETER(Pdo);
+
+    Info("<===>\n");
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    StatusKey = DriverGetStatusKey();
+
+    (VOID) RegistryUpdateDwordValue(StatusKey,
+                                    "NeedReboot",
+                                    1);
+}
+
 static DECLSPEC_NOINLINE NTSTATUS
 PdoStartDevice(
     IN  PXENVIF_PDO     Pdo,
@@ -1292,9 +1312,12 @@ fail6:
 fail5:
     Error("fail5\n");
 
+    goto fail3;
+
 fail4:
     Error("fail4\n");
 
+    PdoRequestReboot(Pdo);
     __FreeMibTable(Table);
 
 fail3:
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 12:39:26 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 12:39:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaO7C-0005IC-Gz; Tue, 24 Mar 2015 12:39:26 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaO7A-0005I4-Nr
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 12:39:24 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	7E/6D-02712-CFA51155; Tue, 24 Mar 2015 12:39:24 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1427200763!12718116!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29596 invoked from network); 24 Mar 2015 12:39:23 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-8.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 12:39:23 -0000
Received: by wixw10 with SMTP id w10so94531951wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 05:39:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=7xsxu0cjObOUX5QBKqYLZwoAxvg0bBUx8WPR27MHDW0=;
	b=vSxOdk0OiGkbdESd4X27HZqlZ3vbUP4ZWmphAauIu8HBXhnNmawmTvCO2+A26NEBfq
	bUcqIayjUtE5k6bCc+wsLz4xlwKwLN37BlzeTeqMA6gdtxwLN4lfQ+gu2sxmWcAA16uI
	4cZG7wVrfQjEUwNx3nBV8Wkh+IQlDBPY9HwQPIJhsv/nell8zJDD0p4xa0lOjcfcDAVs
	qsqJIuFhgg3YKc7RvDULCafOsGNTuhkYT5ia5jc1l+zYpbId1ofCppGFjGeowG6Cm9YV
	skrw1MSS9nrtXZ5W7/CNztZqzYJYEgcx5ovgsRdJ1skQh17ITZnonEVswTYAifXSgLvB
	af3Q==
X-Received: by 10.194.48.12 with SMTP id h12mr8020492wjn.74.1427200762933;
	Tue, 24 Mar 2015 05:39:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id na4sm646763wic.10.2015.03.24.05.39.22
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 05:39:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 12:39:34 +0000
Message-Id: <1427200774-10512-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Add the 'NeedReboot' flag back in
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Older versions of the code used to set a 'NeedReboot' registry value if
the PDO failed to start because the corresponding emulated device was
found to be still present. The value was set directly in the service key
which is non-volatile and thus the value would persist after reboot.

This patch adds code to again set a 'NeedReboot' value, but this time it
is in a volatile 'Status' key under the service key so that it does not
persist. This value can then be used by the XENNET co-installer to
determine whether it should request a reboot during postinstall
processing.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/driver.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 src/xenvif/driver.h |  2 +-
 src/xenvif/pdo.c    | 23 +++++++++++++++++++++++
 3 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/driver.c b/src/xenvif/driver.c
index 8cf843f..b9e6d2f 100644
--- a/src/xenvif/driver.c
+++ b/src/xenvif/driver.c
@@ -48,6 +48,7 @@ typedef struct _XENVIF_DRIVER {
     PDRIVER_OBJECT      DriverObject;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
+    HANDLE              StatusKey;
 } XENVIF_DRIVER, *PXENVIF_DRIVER;
 
 static XENVIF_DRIVER    Driver;
@@ -124,6 +125,30 @@ DriverGetAddressesKey(
     return __DriverGetAddressesKey();
 }
 
+static FORCEINLINE VOID
+__DriverSetStatusKey(
+    IN  HANDLE  Key
+    )
+{
+    Driver.StatusKey = Key;
+}
+
+static FORCEINLINE HANDLE
+__DriverGetStatusKey(
+    VOID
+    )
+{
+    return Driver.StatusKey;
+}
+
+HANDLE
+DriverGetStatusKey(
+    VOID
+    )
+{
+    return __DriverGetStatusKey();
+}
+
 DRIVER_UNLOAD       DriverUnload;
 
 VOID
@@ -133,6 +158,7 @@ DriverUnload(
 {
     HANDLE              AddressesKey;
     HANDLE              ParametersKey;
+    HANDLE              StatusKey;
 
     ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
 
@@ -141,7 +167,12 @@ DriverUnload(
     if (*InitSafeBootMode > 0)
         goto done;
 
-    AddressesKey = __DriverGetParametersKey();
+    StatusKey = __DriverGetStatusKey();
+    __DriverSetStatusKey(NULL);
+
+    RegistryCloseKey(StatusKey);
+
+    AddressesKey = __DriverGetAddressesKey();
     __DriverSetAddressesKey(NULL);
 
     RegistryCloseKey(AddressesKey);
@@ -254,6 +285,7 @@ DriverEntry(
     HANDLE              ServiceKey;
     HANDLE              ParametersKey;
     HANDLE              AddressesKey;
+    HANDLE              StatusKey;
     ULONG               Index;
     NTSTATUS            status;
 
@@ -308,6 +340,15 @@ DriverEntry(
 
     __DriverSetAddressesKey(AddressesKey);
 
+    status = RegistryCreateSubKey(ServiceKey,
+                                  "Status",
+                                  REG_OPTION_VOLATILE,
+                                  &StatusKey);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    __DriverSetStatusKey(StatusKey);
+
     RegistryCloseKey(ServiceKey);
 
     DriverObject->DriverExtension->AddDevice = AddDevice;
@@ -323,6 +364,13 @@ done:
 
     return STATUS_SUCCESS;
 
+fail5:
+    Error("fail5\n");
+
+    __DriverSetAddressesKey(NULL);
+
+    RegistryCloseKey(AddressesKey);
+
 fail4:
     Error("fail4\n");
 
diff --git a/src/xenvif/driver.h b/src/xenvif/driver.h
index cdef7d1..17ed726 100644
--- a/src/xenvif/driver.h
+++ b/src/xenvif/driver.h
@@ -48,7 +48,7 @@ DriverGetAddressesKey(
     );
 
 extern HANDLE
-DriverGetAliasesKey(
+DriverGetStatusKey(
     VOID
     );
 
diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index 369efb0..9352594 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -1207,6 +1207,26 @@ PdoS3ToS4(
     Trace("(%s) <====\n", __PdoGetName(Pdo));
 }
 
+static VOID
+PdoRequestReboot(
+    IN  PXENVIF_PDO     Pdo
+    )
+{
+    HANDLE              StatusKey;
+
+    UNREFERENCED_PARAMETER(Pdo);
+
+    Info("<===>\n");
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    StatusKey = DriverGetStatusKey();
+
+    (VOID) RegistryUpdateDwordValue(StatusKey,
+                                    "NeedReboot",
+                                    1);
+}
+
 static DECLSPEC_NOINLINE NTSTATUS
 PdoStartDevice(
     IN  PXENVIF_PDO     Pdo,
@@ -1292,9 +1312,12 @@ fail6:
 fail5:
     Error("fail5\n");
 
+    goto fail3;
+
 fail4:
     Error("fail4\n");
 
+    PdoRequestReboot(Pdo);
     __FreeMibTable(Table);
 
 fail3:
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:35:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:35:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaOzc-0003Eg-8j; Tue, 24 Mar 2015 13:35:40 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaOza-0003EV-GI
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:35:38 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	E0/05-19614-92861155; Tue, 24 Mar 2015 13:35:37 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-31.messagelabs.com!1427204134!14954493!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28375 invoked from network); 24 Mar 2015 13:35:34 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-2.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:35:34 -0000
Received: by weop45 with SMTP id p45so163537152weo.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:35:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=ldoxS1OwaOQ5NuG4SGvg5b25qnk4b/tlCLq/e3muCnU=;
	b=Ix3n9fiLAD2IqpC9D38agK3hW+8+dmlfCNMDs4PlEBxzLvSfMmkYQkmeym/mB1DZMf
	Ebds7Y+ag+VmGryBb3I/VXXwrD8r5bdPdETUZzyhl1qHFHDI7DHwD0H6TynzhxOy2xGo
	xYODKDoj7CS3buY3Br9SdHbkyP+EkC0NKMtPZqd69XH/n6oLU8dbAazUXbdciP5fVZhI
	iPZZIKECfw5e+9v6UBfYJZTDRNgHRqVHEO4muRjyOKNMTqxeLC6sxk4rk92SxXIc03VT
	TyAhSUyQ6IA2fdi1cdhFiwP6+V136Z2AwGIqtKeq7Ikzijl8ob1g9hJYa8o/m2BNiJGI
	85Hg==
X-Received: by 10.180.77.40 with SMTP id p8mr28197928wiw.1.1427204134144;
	Tue, 24 Mar 2015 06:35:34 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6134712wjv.29.2015.03.24.06.35.33
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:35:33 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:35:43 +0000
Message-Id: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/2] Revert previous commit
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This patch reverts the previous commit which attempted to make XENNET
aware of multiple processor groups. The changes don't seem to work on NDIS
drivers and lead to corruption of the receiver GetLists.

A different approach is needed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/driver.c          |  2 --
 src/xennet/receiver.c        | 53 ++++++++++++--------------------------------
 vs2012/xennet/xennet.vcxproj |  4 ++--
 vs2013/xennet/xennet.vcxproj |  4 ++--
 4 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index e77ae6e..c6a4896 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -32,7 +32,6 @@
 #define INITGUID 1
 
 #include <ndis.h>
-#include <procgrp.h>
 #include "adapter.h"
 #include <version.h>
 #include "dbg_print.h"
@@ -412,7 +411,6 @@ DriverEntry (
     ULONG FailDeviceControl;
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
-    WdmlibProcgrpInitialize();
 
     Trace("====>\n");
 
diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index 95285cd..dcd88af 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -29,8 +29,6 @@
  * SUCH DAMAGE.
  */
 
-#include <ndis.h>
-#include <procgrp.h>
 #include "receiver.h"
 #include "adapter.h"
 #include <util.h>
@@ -41,8 +39,7 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            *GetList;
-    ULONG                       GetListCount;
+    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -59,23 +56,22 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Index;
+    ULONG                   Cpu;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Index = KeGetCurrentProcessorNumberEx(NULL);
-    ASSERT3U(Index, <, Receiver->GetListCount);
+    Cpu = KeGetCurrentProcessorNumber();
 
-    NetBufferList = Receiver->GetList[Index];
+    NetBufferList = Receiver->GetList[Cpu];
 
-    if (NetBufferList == NULL) {
-        Receiver->GetList[Index] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-        NetBufferList = Receiver->GetList[Index];
-    }
+    if (NetBufferList == NULL)
+        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
+
+    NetBufferList = Receiver->GetList[Cpu];
 
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Index] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -289,16 +285,6 @@ ReceiverInitialize(
     RtlZeroMemory(*Receiver, sizeof(XENNET_RECEIVER));
     (*Receiver)->Adapter = Adapter;
 
-    (*Receiver)->GetListCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
-    (*Receiver)->GetList = ExAllocatePoolWithTag(NonPagedPool,
-                                                 sizeof(PNET_BUFFER_LIST) *
-                                                 (*Receiver)->GetListCount,
-                                                 RECEIVER_POOL_TAG);
-
-    status = NDIS_STATUS_RESOURCES;
-    if ((*Receiver)->GetList == NULL)
-        goto fail2;
-
     RtlZeroMemory(&Params, sizeof(NET_BUFFER_LIST_POOL_PARAMETERS));
     Params.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
     Params.Header.Revision = NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
@@ -313,18 +299,11 @@ ReceiverInitialize(
 
     status = NDIS_STATUS_RESOURCES;
     if ((*Receiver)->NetBufferListPool == NULL)
-        goto fail3;
+        goto fail2;
 
     return NDIS_STATUS_SUCCESS;
 
-fail3:
-    ExFreePoolWithTag((*Receiver)->GetList, RECEIVER_POOL_TAG);
-    (*Receiver)->GetListCount = 0;
-
 fail2:
-    ExFreePoolWithTag(*Receiver, RECEIVER_POOL_TAG);
-    *Receiver = NULL;
-
 fail1:
     return status;
 }
@@ -334,14 +313,13 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
-    PNET_BUFFER_LIST        NetBufferList;
+    ULONG               Cpu;
+    PNET_BUFFER_LIST    NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Index = 0; Index < Receiver->GetListCount; Index++) {
-        NetBufferList = Receiver->GetList[Index];
-
+    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
+        NetBufferList = Receiver->GetList[Cpu];
         while (NetBufferList != NULL) {
             PNET_BUFFER_LIST    Next;
 
@@ -369,9 +347,6 @@ ReceiverTeardown(
     NdisFreeNetBufferListPool(Receiver->NetBufferListPool);
     Receiver->NetBufferListPool = NULL;
 
-    ExFreePoolWithTag(Receiver->GetList, RECEIVER_POOL_TAG);
-    Receiver->GetListCount = 0;
-
     Receiver->Adapter = NULL;
 
     ExFreePoolWithTag(Receiver, RECEIVER_POOL_TAG);
diff --git a/vs2012/xennet/xennet.vcxproj b/vs2012/xennet/xennet.vcxproj
index 0e2fc22..03ddf91 100644
--- a/vs2012/xennet/xennet.vcxproj
+++ b/vs2012/xennet/xennet.vcxproj
@@ -42,7 +42,7 @@
             <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
         </CustomBuildStep>
 		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<WarningLevel>EnableAllWarnings</WarningLevel>
 			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -50,7 +50,7 @@
 		</ClCompile>
 		<Link>
 			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
 			<EnableCOMDATFolding>false</EnableCOMDATFolding>
 		</Link>
 		<Inf>
diff --git a/vs2013/xennet/xennet.vcxproj b/vs2013/xennet/xennet.vcxproj
index 2eaf191..6cb09d2 100644
--- a/vs2013/xennet/xennet.vcxproj
+++ b/vs2013/xennet/xennet.vcxproj
@@ -74,7 +74,7 @@
       <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -82,7 +82,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:35:40 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:35:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaOzc-0003Eg-8j; Tue, 24 Mar 2015 13:35:40 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaOza-0003EV-GI
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:35:38 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
	E0/05-19614-92861155; Tue, 24 Mar 2015 13:35:37 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-2.tower-31.messagelabs.com!1427204134!14954493!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28375 invoked from network); 24 Mar 2015 13:35:34 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-2.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:35:34 -0000
Received: by weop45 with SMTP id p45so163537152weo.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:35:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=ldoxS1OwaOQ5NuG4SGvg5b25qnk4b/tlCLq/e3muCnU=;
	b=Ix3n9fiLAD2IqpC9D38agK3hW+8+dmlfCNMDs4PlEBxzLvSfMmkYQkmeym/mB1DZMf
	Ebds7Y+ag+VmGryBb3I/VXXwrD8r5bdPdETUZzyhl1qHFHDI7DHwD0H6TynzhxOy2xGo
	xYODKDoj7CS3buY3Br9SdHbkyP+EkC0NKMtPZqd69XH/n6oLU8dbAazUXbdciP5fVZhI
	iPZZIKECfw5e+9v6UBfYJZTDRNgHRqVHEO4muRjyOKNMTqxeLC6sxk4rk92SxXIc03VT
	TyAhSUyQ6IA2fdi1cdhFiwP6+V136Z2AwGIqtKeq7Ikzijl8ob1g9hJYa8o/m2BNiJGI
	85Hg==
X-Received: by 10.180.77.40 with SMTP id p8mr28197928wiw.1.1427204134144;
	Tue, 24 Mar 2015 06:35:34 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6134712wjv.29.2015.03.24.06.35.33
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:35:33 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:35:43 +0000
Message-Id: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 1/2] Revert previous commit
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This patch reverts the previous commit which attempted to make XENNET
aware of multiple processor groups. The changes don't seem to work on NDIS
drivers and lead to corruption of the receiver GetLists.

A different approach is needed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/driver.c          |  2 --
 src/xennet/receiver.c        | 53 ++++++++++++--------------------------------
 vs2012/xennet/xennet.vcxproj |  4 ++--
 vs2013/xennet/xennet.vcxproj |  4 ++--
 4 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/src/xennet/driver.c b/src/xennet/driver.c
index e77ae6e..c6a4896 100644
--- a/src/xennet/driver.c
+++ b/src/xennet/driver.c
@@ -32,7 +32,6 @@
 #define INITGUID 1
 
 #include <ndis.h>
-#include <procgrp.h>
 #include "adapter.h"
 #include <version.h>
 #include "dbg_print.h"
@@ -412,7 +411,6 @@ DriverEntry (
     ULONG FailDeviceControl;
 
     ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
-    WdmlibProcgrpInitialize();
 
     Trace("====>\n");
 
diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index 95285cd..dcd88af 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -29,8 +29,6 @@
  * SUCH DAMAGE.
  */
 
-#include <ndis.h>
-#include <procgrp.h>
 #include "receiver.h"
 #include "adapter.h"
 #include <util.h>
@@ -41,8 +39,7 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            *GetList;
-    ULONG                       GetListCount;
+    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -59,23 +56,22 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Index;
+    ULONG                   Cpu;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Index = KeGetCurrentProcessorNumberEx(NULL);
-    ASSERT3U(Index, <, Receiver->GetListCount);
+    Cpu = KeGetCurrentProcessorNumber();
 
-    NetBufferList = Receiver->GetList[Index];
+    NetBufferList = Receiver->GetList[Cpu];
 
-    if (NetBufferList == NULL) {
-        Receiver->GetList[Index] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-        NetBufferList = Receiver->GetList[Index];
-    }
+    if (NetBufferList == NULL)
+        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
+
+    NetBufferList = Receiver->GetList[Cpu];
 
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Index] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -289,16 +285,6 @@ ReceiverInitialize(
     RtlZeroMemory(*Receiver, sizeof(XENNET_RECEIVER));
     (*Receiver)->Adapter = Adapter;
 
-    (*Receiver)->GetListCount = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
-    (*Receiver)->GetList = ExAllocatePoolWithTag(NonPagedPool,
-                                                 sizeof(PNET_BUFFER_LIST) *
-                                                 (*Receiver)->GetListCount,
-                                                 RECEIVER_POOL_TAG);
-
-    status = NDIS_STATUS_RESOURCES;
-    if ((*Receiver)->GetList == NULL)
-        goto fail2;
-
     RtlZeroMemory(&Params, sizeof(NET_BUFFER_LIST_POOL_PARAMETERS));
     Params.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
     Params.Header.Revision = NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
@@ -313,18 +299,11 @@ ReceiverInitialize(
 
     status = NDIS_STATUS_RESOURCES;
     if ((*Receiver)->NetBufferListPool == NULL)
-        goto fail3;
+        goto fail2;
 
     return NDIS_STATUS_SUCCESS;
 
-fail3:
-    ExFreePoolWithTag((*Receiver)->GetList, RECEIVER_POOL_TAG);
-    (*Receiver)->GetListCount = 0;
-
 fail2:
-    ExFreePoolWithTag(*Receiver, RECEIVER_POOL_TAG);
-    *Receiver = NULL;
-
 fail1:
     return status;
 }
@@ -334,14 +313,13 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG                   Index;
-    PNET_BUFFER_LIST        NetBufferList;
+    ULONG               Cpu;
+    PNET_BUFFER_LIST    NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Index = 0; Index < Receiver->GetListCount; Index++) {
-        NetBufferList = Receiver->GetList[Index];
-
+    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
+        NetBufferList = Receiver->GetList[Cpu];
         while (NetBufferList != NULL) {
             PNET_BUFFER_LIST    Next;
 
@@ -369,9 +347,6 @@ ReceiverTeardown(
     NdisFreeNetBufferListPool(Receiver->NetBufferListPool);
     Receiver->NetBufferListPool = NULL;
 
-    ExFreePoolWithTag(Receiver->GetList, RECEIVER_POOL_TAG);
-    Receiver->GetListCount = 0;
-
     Receiver->Adapter = NULL;
 
     ExFreePoolWithTag(Receiver, RECEIVER_POOL_TAG);
diff --git a/vs2012/xennet/xennet.vcxproj b/vs2012/xennet/xennet.vcxproj
index 0e2fc22..03ddf91 100644
--- a/vs2012/xennet/xennet.vcxproj
+++ b/vs2012/xennet/xennet.vcxproj
@@ -42,7 +42,7 @@
             <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
         </CustomBuildStep>
 		<ClCompile>
-			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<WarningLevel>EnableAllWarnings</WarningLevel>
 			<DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -50,7 +50,7 @@
 		</ClCompile>
 		<Link>
 			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+			<AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
 			<EnableCOMDATFolding>false</EnableCOMDATFolding>
 		</Link>
 		<Inf>
diff --git a/vs2013/xennet/xennet.vcxproj b/vs2013/xennet/xennet.vcxproj
index 2eaf191..6cb09d2 100644
--- a/vs2013/xennet/xennet.vcxproj
+++ b/vs2013/xennet/xennet.vcxproj
@@ -74,7 +74,7 @@
       <Inputs>..\..\src\xennet.inf;..\..\include\version.hx</Inputs>
     </CustomBuildStep>
     <ClCompile>
-      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__MODULE__="XENNET";NDIS_MINIPORT_DRIVER;NDIS60_MINIPORT=1;POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -82,7 +82,7 @@
     </ClCompile>
     <Link>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
     <Inf>
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:35:42 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:35:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaOze-0003FE-9v; Tue, 24 Mar 2015 13:35:42 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaOzc-0003Ee-BY
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:35:40 +0000
Received: from [193.109.254.147] by server-1.bemta-14.messagelabs.com id
	EE/F6-01386-B2861155; Tue, 24 Mar 2015 13:35:39 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1427204136!8074753!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9714 invoked from network); 24 Mar 2015 13:35:37 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:35:37 -0000
Received: by wibg7 with SMTP id g7so74940221wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=wepYSX4IOrwEn+224vWSGE58CK7CbvseRqsP4WZAGQA=;
	b=VjwR/fWtfG9pqNX436tiFHzJkYCdQdnCnI4XBy/UY25KVKLK0+xgFtWw/FDros+GBa
	VLqolJAzlCLuFXO1OCIjZduCNFlgtBN1k5heXoJTE6LcPe3RafMdh6HhgaVfIgPvjVAj
	qDMfYcLOyrZn/imk+G5p7mg7YtAgt9CbOQX2CXQseXt9fIvlH/xrTYxhN7nQTshnAHd2
	cw5d5hRaf7zYLHMRba4vWFUsuaF+LZl2xkipE5ww1P1F+3PjZYwwcSGpkTNI4uLPXrjK
	fW0Fmu9BaKp4A2d8P3txaM1bu24mehd+RnG/ubJytmwBmp4kRGhhM8G3np3aoaPOKxCg
	NMDg==
X-Received: by 10.180.89.34 with SMTP id bl2mr28858879wib.23.1427204136817;
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6134712wjv.29.2015.03.24.06.35.36
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:35:44 +0000
Message-Id: <1427204144-17756-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
References: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/2] Use a single locked receiver GetList
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This avoids the need for any reference to the current CPU or need for
MAXIMUM_PROCESSOR sized array.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/receiver.c | 41 ++++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index dcd88af..98da49b 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -39,7 +39,8 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
+    PNET_BUFFER_LIST            GetList;
+    KSPIN_LOCK                  Lock;
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -56,22 +57,19 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Cpu;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Cpu = KeGetCurrentProcessorNumber();
+    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
+    KeAcquireSpinLockAtDpcLevel(&Receiver->Lock);
 
-    NetBufferList = Receiver->GetList[Cpu];
-
-    if (NetBufferList == NULL)
-        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-
-    NetBufferList = Receiver->GetList[Cpu];
+    if (Receiver->GetList == NULL)
+        Receiver->GetList = InterlockedExchangePointer(&Receiver->PutList, NULL);
 
+    NetBufferList = Receiver->GetList;
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -90,6 +88,8 @@ __ReceiverAllocateNetBufferList(
         ASSERT(IMPLY(NetBufferList != NULL, NET_BUFFER_LIST_NEXT_NBL(NetBufferList) == NULL));
     }
 
+    KeReleaseSpinLockFromDpcLevel(&Receiver->Lock);
+
     return NetBufferList;
 }        
 
@@ -301,6 +301,8 @@ ReceiverInitialize(
     if ((*Receiver)->NetBufferListPool == NULL)
         goto fail2;
 
+    KeInitializeSpinLock(&(*Receiver)->Lock);
+
     return NDIS_STATUS_SUCCESS;
 
 fail2:
@@ -313,23 +315,20 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG               Cpu;
-    PNET_BUFFER_LIST    NetBufferList;
+    PNET_BUFFER_LIST        NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        NetBufferList = Receiver->GetList[Cpu];
-        while (NetBufferList != NULL) {
-            PNET_BUFFER_LIST    Next;
+    NetBufferList = Receiver->GetList;
+    while (NetBufferList != NULL) {
+        PNET_BUFFER_LIST    Next;
 
-            Next = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
-            NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
+        Next = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
-            NdisFreeNetBufferList(NetBufferList);
+        NdisFreeNetBufferList(NetBufferList);
 
-            NetBufferList = Next;
-        }
+        NetBufferList = Next;
     }
 
     NetBufferList = Receiver->PutList;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:35:42 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:35:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaOze-0003FE-9v; Tue, 24 Mar 2015 13:35:42 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaOzc-0003Ee-BY
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:35:40 +0000
Received: from [193.109.254.147] by server-1.bemta-14.messagelabs.com id
	EE/F6-01386-B2861155; Tue, 24 Mar 2015 13:35:39 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1427204136!8074753!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9714 invoked from network); 24 Mar 2015 13:35:37 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:35:37 -0000
Received: by wibg7 with SMTP id g7so74940221wib.1
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id:in-reply-to:references;
	bh=wepYSX4IOrwEn+224vWSGE58CK7CbvseRqsP4WZAGQA=;
	b=VjwR/fWtfG9pqNX436tiFHzJkYCdQdnCnI4XBy/UY25KVKLK0+xgFtWw/FDros+GBa
	VLqolJAzlCLuFXO1OCIjZduCNFlgtBN1k5heXoJTE6LcPe3RafMdh6HhgaVfIgPvjVAj
	qDMfYcLOyrZn/imk+G5p7mg7YtAgt9CbOQX2CXQseXt9fIvlH/xrTYxhN7nQTshnAHd2
	cw5d5hRaf7zYLHMRba4vWFUsuaF+LZl2xkipE5ww1P1F+3PjZYwwcSGpkTNI4uLPXrjK
	fW0Fmu9BaKp4A2d8P3txaM1bu24mehd+RnG/ubJytmwBmp4kRGhhM8G3np3aoaPOKxCg
	NMDg==
X-Received: by 10.180.89.34 with SMTP id bl2mr28858879wib.23.1427204136817;
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm6134712wjv.29.2015.03.24.06.35.36
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:35:36 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:35:44 +0000
Message-Id: <1427204144-17756-2-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
In-Reply-To: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
References: <1427204144-17756-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH 2/2] Use a single locked receiver GetList
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This avoids the need for any reference to the current CPU or need for
MAXIMUM_PROCESSOR sized array.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xennet/receiver.c | 41 ++++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/xennet/receiver.c b/src/xennet/receiver.c
index dcd88af..98da49b 100644
--- a/src/xennet/receiver.c
+++ b/src/xennet/receiver.c
@@ -39,7 +39,8 @@ struct _XENNET_RECEIVER {
     PXENNET_ADAPTER             Adapter;
     NDIS_HANDLE                 NetBufferListPool;
     PNET_BUFFER_LIST            PutList;
-    PNET_BUFFER_LIST            GetList[MAXIMUM_PROCESSORS];
+    PNET_BUFFER_LIST            GetList;
+    KSPIN_LOCK                  Lock;
     LONG                        InNDIS;
     LONG                        InNDISMax;
     XENVIF_VIF_OFFLOAD_OPTIONS  OffloadOptions;
@@ -56,22 +57,19 @@ __ReceiverAllocateNetBufferList(
     IN  ULONG               Length
     )
 {
-    ULONG                   Cpu;
     PNET_BUFFER_LIST        NetBufferList;
 
-    Cpu = KeGetCurrentProcessorNumber();
+    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
+    KeAcquireSpinLockAtDpcLevel(&Receiver->Lock);
 
-    NetBufferList = Receiver->GetList[Cpu];
-
-    if (NetBufferList == NULL)
-        Receiver->GetList[Cpu] = InterlockedExchangePointer(&Receiver->PutList, NULL);
-
-    NetBufferList = Receiver->GetList[Cpu];
+    if (Receiver->GetList == NULL)
+        Receiver->GetList = InterlockedExchangePointer(&Receiver->PutList, NULL);
 
+    NetBufferList = Receiver->GetList;
     if (NetBufferList != NULL) {
         PNET_BUFFER NetBuffer;
 
-        Receiver->GetList[Cpu] = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        Receiver->GetList = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
         NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
         NetBuffer = NET_BUFFER_LIST_FIRST_NB(NetBufferList);
@@ -90,6 +88,8 @@ __ReceiverAllocateNetBufferList(
         ASSERT(IMPLY(NetBufferList != NULL, NET_BUFFER_LIST_NEXT_NBL(NetBufferList) == NULL));
     }
 
+    KeReleaseSpinLockFromDpcLevel(&Receiver->Lock);
+
     return NetBufferList;
 }        
 
@@ -301,6 +301,8 @@ ReceiverInitialize(
     if ((*Receiver)->NetBufferListPool == NULL)
         goto fail2;
 
+    KeInitializeSpinLock(&(*Receiver)->Lock);
+
     return NDIS_STATUS_SUCCESS;
 
 fail2:
@@ -313,23 +315,20 @@ ReceiverTeardown(
     IN  PXENNET_RECEIVER    Receiver
     )
 {
-    ULONG               Cpu;
-    PNET_BUFFER_LIST    NetBufferList;
+    PNET_BUFFER_LIST        NetBufferList;
 
     ASSERT(Receiver != NULL);
 
-    for (Cpu = 0; Cpu < MAXIMUM_PROCESSORS; Cpu++) {
-        NetBufferList = Receiver->GetList[Cpu];
-        while (NetBufferList != NULL) {
-            PNET_BUFFER_LIST    Next;
+    NetBufferList = Receiver->GetList;
+    while (NetBufferList != NULL) {
+        PNET_BUFFER_LIST    Next;
 
-            Next = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
-            NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
+        Next = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
+        NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
 
-            NdisFreeNetBufferList(NetBufferList);
+        NdisFreeNetBufferList(NetBufferList);
 
-            NetBufferList = Next;
-        }
+        NetBufferList = Next;
     }
 
     NetBufferList = Receiver->PutList;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:36:22 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:36:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaP0I-0003KG-GN; Tue, 24 Mar 2015 13:36:22 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaP0G-0003JZ-DX
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:36:20 +0000
Received: from [85.158.139.211] by server-9.bemta-5.messagelabs.com id
	D3/55-15508-35861155; Tue, 24 Mar 2015 13:36:19 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1427204178!11214362!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6355 invoked from network); 24 Mar 2015 13:36:18 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:36:18 -0000
Received: by wgdm6 with SMTP id m6so171425004wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:36:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xQ2Gh7qtIzvvtAhxKmunrnN2cXiDHIRz5CzkZFxIxzo=;
	b=ZIOiGLyHlDEe6aLE4jpwA1vddMepipGR5DoiTauGYMW2hGujKU9k2zOkZ40i/87uKr
	mk9h/PlWvjUSU9gtnje/i73o8qD31fcVswahyTBNlQ/RjCRy0Yy+XYory1PnLwunR4bn
	+UdV6r16qTp2gkDeuRq1nEjYImECCzCCo4Mf02KUhyol/lt31l+CmwzleYnUMrIWpy2g
	k1YNp0hmluJuqmEpjvgBvaAT80CVe2FBdfrhQOdGPARRak5Tx+r2tQsX/eYUKOxsc9Bi
	8y6DoTO8aI/Mo6siG9T6evfD/4o8go4fFukSq+9NPT7arpGaQ764HU3xzykzYHxEChG3
	MmUg==
X-Received: by 10.194.82.226 with SMTP id l2mr8213217wjy.11.1427204178313;
	Tue, 24 Mar 2015 06:36:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id k6sm15968868wia.6.2015.03.24.06.36.17
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:36:17 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:36:28 +0000
Message-Id: <1427204188-10604-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Co-installer RequestReboot() invocation
	changes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Stop requesting reboot on uninstall of XENNET. If an admin removes the
network driver then there is no particular need to request a reboot.
However, make sure that we only remove the unplug key if the last instance
of XENNET is being removed.

On installation of XENNET, use the XENVIF 'NeedReboot' flag to determine
whether to request reboot.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/coinst/coinst.c | 174 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 164 insertions(+), 10 deletions(-)

diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
index b982021..0905205 100644
--- a/src/coinst/coinst.c
+++ b/src/coinst/coinst.c
@@ -65,6 +65,12 @@ __user_code;
 #define ADDRESSES_KEY   \
         SERVICE_KEY(XENVIF) ## "\\Addresses"
 
+#define STATUS_KEY  \
+        SERVICE_KEY(XENVIF) ## "\\Status"
+
+#define ENUM_KEY  \
+        SERVICE_KEY(XENVIF) ## "\\Enum"
+
 #define UNPLUG_KEY  \
         SERVICE_KEY(XENFILT) ## "\\Unplug"
 
@@ -76,8 +82,6 @@ __user_code;
 #define NSI_KEY \
         CONTROL_KEY ## "\\Nsi"
 
-#define ENUM_KEY "SYSTEM\\CurrentControlSet\\Enum"
-
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
@@ -2235,6 +2239,147 @@ fail1:
 }
 
 static BOOLEAN
+GetEnumCount(
+    OUT PDWORD  Count
+    )
+{
+    HKEY        EnumKey;
+    HRESULT     Error;
+    DWORD       ValueLength;
+    DWORD       Value;
+    DWORD       Type;
+
+    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                         ENUM_KEY,
+                         0,
+                         KEY_READ,
+                         &EnumKey);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail1;
+    }
+
+    ValueLength = sizeof (Value);
+
+    Error = RegQueryValueEx(EnumKey,
+                            "Count",
+                            NULL,
+                            &Type,
+                            (LPBYTE)&Value,
+                            &ValueLength);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail2;
+    }
+
+    if (Type != REG_DWORD) {
+        SetLastError(ERROR_BAD_FORMAT);
+        goto fail3;
+    }
+
+    *Count = Value;
+    Log("%u", *Count);
+
+    RegCloseKey(EnumKey);
+
+    return TRUE;
+
+fail3:
+    Log("fail3");
+
+fail2:
+    Log("fail2");
+
+    RegCloseKey(EnumKey);
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+        Message = __GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
+CheckStatus(
+    OUT PBOOLEAN    NeedReboot
+    )
+{
+    HKEY            StatusKey;
+    HRESULT         Error;
+    DWORD           ValueLength;
+    DWORD           Value;
+    DWORD           Type;
+
+    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                         STATUS_KEY,
+                         0,
+                         KEY_READ,
+                         &StatusKey);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail1;
+    }
+
+    ValueLength = sizeof (Value);
+
+    Error = RegQueryValueEx(StatusKey,
+                            "NeedReboot",
+                            NULL,
+                            &Type,
+                            (LPBYTE)&Value,
+                            &ValueLength);
+    if (Error != ERROR_SUCCESS) {
+        if (Error == ERROR_FILE_NOT_FOUND) {
+            Type = REG_DWORD;
+            Value = 0;
+        } else {
+            SetLastError(Error);
+            goto fail2;
+        }
+    }
+
+    if (Type != REG_DWORD) {
+        SetLastError(ERROR_BAD_FORMAT);
+        goto fail3;
+    }
+
+    *NeedReboot = (Value != 0) ? TRUE : FALSE;
+
+    if (*NeedReboot)
+        Log("NeedReboot");
+
+    RegCloseKey(StatusKey);
+
+    return TRUE;
+
+fail3:
+    Log("fail3");
+
+fail2:
+    Log("fail2");
+
+    RegCloseKey(StatusKey);
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+        Message = __GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
 RequestReboot(
     IN  HDEVINFO            DeviceInfoSet,
     IN  PSP_DEVINFO_DATA    DeviceInfoData
@@ -2304,6 +2449,7 @@ __DifInstallPostProcess(
     BOOLEAN                         Success;
     ETHERNET_ADDRESS                Address;
     PTCHAR                          SoftwareKeyName;
+    BOOLEAN                         NeedReboot;
     HRESULT                         Error;
 
     UNREFERENCED_PARAMETER(Context);
@@ -2340,11 +2486,11 @@ __DifInstallPostProcess(
     RegisterInterface("XENVIF", "VIF", XENVIF_VIF_INTERFACE_VERSION_MAX);
     RegisterInterface("XENBUS", "CACHE", XENBUS_CACHE_INTERFACE_VERSION_MAX);
 
-    if (SoftwareKeyName != NULL) {
-        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
+    NeedReboot = FALSE;
 
-        free(SoftwareKeyName);
-    }
+    Success = CheckStatus(&NeedReboot);
+    if (Success && NeedReboot)
+        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
 
     Log("<====");
 
@@ -2416,14 +2562,22 @@ __DifRemovePreProcess(
     IN  PCOINSTALLER_CONTEXT_DATA   Context
     )
 {
+    BOOLEAN                         Success;
+    DWORD                           Count;
+
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
     UNREFERENCED_PARAMETER(Context);
 
     Log("====>");
 
-    (VOID) DeregisterAllInterfaces("XENVIF");
-    (VOID) DeregisterAllInterfaces("XENBUS");
-    (VOID) RemoveUnplugService("NICS", "XENNET");
-    (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
+    Success = GetEnumCount(&Count);
+
+    if (Success && Count == 1) {
+        (VOID) DeregisterAllInterfaces("XENVIF");
+        (VOID) DeregisterAllInterfaces("XENBUS");
+        (VOID) RemoveUnplugService("NICS", "XENNET");
+    }
 
     Log("<====");
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 13:36:22 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 13:36:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaP0I-0003KG-GN; Tue, 24 Mar 2015 13:36:22 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaP0G-0003JZ-DX
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 13:36:20 +0000
Received: from [85.158.139.211] by server-9.bemta-5.messagelabs.com id
	D3/55-15508-35861155; Tue, 24 Mar 2015 13:36:19 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1427204178!11214362!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6355 invoked from network); 24 Mar 2015 13:36:18 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 13:36:18 -0000
Received: by wgdm6 with SMTP id m6so171425004wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 06:36:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=xQ2Gh7qtIzvvtAhxKmunrnN2cXiDHIRz5CzkZFxIxzo=;
	b=ZIOiGLyHlDEe6aLE4jpwA1vddMepipGR5DoiTauGYMW2hGujKU9k2zOkZ40i/87uKr
	mk9h/PlWvjUSU9gtnje/i73o8qD31fcVswahyTBNlQ/RjCRy0Yy+XYory1PnLwunR4bn
	+UdV6r16qTp2gkDeuRq1nEjYImECCzCCo4Mf02KUhyol/lt31l+CmwzleYnUMrIWpy2g
	k1YNp0hmluJuqmEpjvgBvaAT80CVe2FBdfrhQOdGPARRak5Tx+r2tQsX/eYUKOxsc9Bi
	8y6DoTO8aI/Mo6siG9T6evfD/4o8go4fFukSq+9NPT7arpGaQ764HU3xzykzYHxEChG3
	MmUg==
X-Received: by 10.194.82.226 with SMTP id l2mr8213217wjy.11.1427204178313;
	Tue, 24 Mar 2015 06:36:18 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id k6sm15968868wia.6.2015.03.24.06.36.17
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 06:36:17 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 13:36:28 +0000
Message-Id: <1427204188-10604-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Co-installer RequestReboot() invocation
	changes
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Stop requesting reboot on uninstall of XENNET. If an admin removes the
network driver then there is no particular need to request a reboot.
However, make sure that we only remove the unplug key if the last instance
of XENNET is being removed.

On installation of XENNET, use the XENVIF 'NeedReboot' flag to determine
whether to request reboot.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/coinst/coinst.c | 174 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 164 insertions(+), 10 deletions(-)

diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
index b982021..0905205 100644
--- a/src/coinst/coinst.c
+++ b/src/coinst/coinst.c
@@ -65,6 +65,12 @@ __user_code;
 #define ADDRESSES_KEY   \
         SERVICE_KEY(XENVIF) ## "\\Addresses"
 
+#define STATUS_KEY  \
+        SERVICE_KEY(XENVIF) ## "\\Status"
+
+#define ENUM_KEY  \
+        SERVICE_KEY(XENVIF) ## "\\Enum"
+
 #define UNPLUG_KEY  \
         SERVICE_KEY(XENFILT) ## "\\Unplug"
 
@@ -76,8 +82,6 @@ __user_code;
 #define NSI_KEY \
         CONTROL_KEY ## "\\Nsi"
 
-#define ENUM_KEY "SYSTEM\\CurrentControlSet\\Enum"
-
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
@@ -2235,6 +2239,147 @@ fail1:
 }
 
 static BOOLEAN
+GetEnumCount(
+    OUT PDWORD  Count
+    )
+{
+    HKEY        EnumKey;
+    HRESULT     Error;
+    DWORD       ValueLength;
+    DWORD       Value;
+    DWORD       Type;
+
+    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                         ENUM_KEY,
+                         0,
+                         KEY_READ,
+                         &EnumKey);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail1;
+    }
+
+    ValueLength = sizeof (Value);
+
+    Error = RegQueryValueEx(EnumKey,
+                            "Count",
+                            NULL,
+                            &Type,
+                            (LPBYTE)&Value,
+                            &ValueLength);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail2;
+    }
+
+    if (Type != REG_DWORD) {
+        SetLastError(ERROR_BAD_FORMAT);
+        goto fail3;
+    }
+
+    *Count = Value;
+    Log("%u", *Count);
+
+    RegCloseKey(EnumKey);
+
+    return TRUE;
+
+fail3:
+    Log("fail3");
+
+fail2:
+    Log("fail2");
+
+    RegCloseKey(EnumKey);
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+        Message = __GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
+CheckStatus(
+    OUT PBOOLEAN    NeedReboot
+    )
+{
+    HKEY            StatusKey;
+    HRESULT         Error;
+    DWORD           ValueLength;
+    DWORD           Value;
+    DWORD           Type;
+
+    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                         STATUS_KEY,
+                         0,
+                         KEY_READ,
+                         &StatusKey);
+    if (Error != ERROR_SUCCESS) {
+        SetLastError(Error);
+        goto fail1;
+    }
+
+    ValueLength = sizeof (Value);
+
+    Error = RegQueryValueEx(StatusKey,
+                            "NeedReboot",
+                            NULL,
+                            &Type,
+                            (LPBYTE)&Value,
+                            &ValueLength);
+    if (Error != ERROR_SUCCESS) {
+        if (Error == ERROR_FILE_NOT_FOUND) {
+            Type = REG_DWORD;
+            Value = 0;
+        } else {
+            SetLastError(Error);
+            goto fail2;
+        }
+    }
+
+    if (Type != REG_DWORD) {
+        SetLastError(ERROR_BAD_FORMAT);
+        goto fail3;
+    }
+
+    *NeedReboot = (Value != 0) ? TRUE : FALSE;
+
+    if (*NeedReboot)
+        Log("NeedReboot");
+
+    RegCloseKey(StatusKey);
+
+    return TRUE;
+
+fail3:
+    Log("fail3");
+
+fail2:
+    Log("fail2");
+
+    RegCloseKey(StatusKey);
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+        Message = __GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
 RequestReboot(
     IN  HDEVINFO            DeviceInfoSet,
     IN  PSP_DEVINFO_DATA    DeviceInfoData
@@ -2304,6 +2449,7 @@ __DifInstallPostProcess(
     BOOLEAN                         Success;
     ETHERNET_ADDRESS                Address;
     PTCHAR                          SoftwareKeyName;
+    BOOLEAN                         NeedReboot;
     HRESULT                         Error;
 
     UNREFERENCED_PARAMETER(Context);
@@ -2340,11 +2486,11 @@ __DifInstallPostProcess(
     RegisterInterface("XENVIF", "VIF", XENVIF_VIF_INTERFACE_VERSION_MAX);
     RegisterInterface("XENBUS", "CACHE", XENBUS_CACHE_INTERFACE_VERSION_MAX);
 
-    if (SoftwareKeyName != NULL) {
-        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
+    NeedReboot = FALSE;
 
-        free(SoftwareKeyName);
-    }
+    Success = CheckStatus(&NeedReboot);
+    if (Success && NeedReboot)
+        (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
 
     Log("<====");
 
@@ -2416,14 +2562,22 @@ __DifRemovePreProcess(
     IN  PCOINSTALLER_CONTEXT_DATA   Context
     )
 {
+    BOOLEAN                         Success;
+    DWORD                           Count;
+
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
     UNREFERENCED_PARAMETER(Context);
 
     Log("====>");
 
-    (VOID) DeregisterAllInterfaces("XENVIF");
-    (VOID) DeregisterAllInterfaces("XENBUS");
-    (VOID) RemoveUnplugService("NICS", "XENNET");
-    (VOID) RequestReboot(DeviceInfoSet, DeviceInfoData);
+    Success = GetEnumCount(&Count);
+
+    if (Success && Count == 1) {
+        (VOID) DeregisterAllInterfaces("XENVIF");
+        (VOID) DeregisterAllInterfaces("XENBUS");
+        (VOID) RemoveUnplugService("NICS", "XENNET");
+    }
 
     Log("<====");
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:30:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:30:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaPqL-0003hE-Hw; Tue, 24 Mar 2015 14:30:09 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaPqJ-0003gy-Us
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 14:30:08 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	03/87-18529-FE471155; Tue, 24 Mar 2015 14:30:07 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427207405!12664643!1
X-Originating-IP: [209.85.212.180]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 26859 invoked from network); 24 Mar 2015 14:30:05 -0000
Received: from mail-wi0-f180.google.com (HELO mail-wi0-f180.google.com)
	(209.85.212.180)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:30:05 -0000
Received: by wixw10 with SMTP id w10so53996323wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 07:30:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=XQDfMhUmCcdkciRgn1R1+FXumuGZPBLn2V/XRlNJo6M=;
	b=iuOFeytPCHOszxMupTbJ1b6ubYoa5IElLowhcficzaMe3v1V93HWNx2CT5A1NEuuKd
	mRPZvKLr0TYdNXprMkfcpTG7saNhm+chH9k+7VfF25qDEWmfQ2+OftKPrHrDKQe+2OH1
	5Hr6jqgYpvRha/Wv/dmSmCmbueaI3Sup8S+MdtlcGPe/YVb9A5mlsWK6lHdUp6aL3kuK
	Z8+2VaVRFs26hgGGYT3L10dEOyzv4N2sU58U7kRJEWGn3eKsp0k8NiY720fuAHsNW7MR
	CSdzqvNZE15VkRYNVU7Fh86J3DsgLFqXzOMPAVVm2xDmiPJHk0IWbXNwsv7FPg6qCbvF
	j/ZA==
X-Gm-Message-State: ALoCoQkkSo1qd04I0+kd6sDRdAG7wIbPhtsDr3Pp5kieQotaBb9tEVjJXFxPRqbmtfVKX68k2B+l
X-Received: by 10.180.105.136 with SMTP id gm8mr29562911wib.13.1427207404542; 
	Tue, 24 Mar 2015 07:30:04 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id hw7sm6339436wjb.24.2015.03.24.07.30.01
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 07:30:03 -0700 (PDT)
Message-ID: <551174EA.50103@m2r.biz>
Date: Tue, 24 Mar 2015 15:30:02 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2830558409077109929=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============2830558409077109929==
Content-Type: multipart/alternative;
 boundary="------------020301090003040103000705"

This is a multi-part message in MIME format.
--------------020301090003040103000705
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 10991
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
> Thanks for the logs. The processor-group-awareness patch did introduce 
> a couple of problems in to XENVIF. I just posted a couple of patches 
> that should hopefully fix these. I=92ll apply them later if no-one 
> shouts so there should be a new build by the end of the day.
>
> Paul
>

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain 
after uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc 
command that also delete registry keys and the files about but after 
reboot I had always blue screen with 7B without nothing in logs, no 
minidump and also with xen_platform_pci=3D0

I did the following commands:
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed=3F
Is needed to add/change registry key about disk controller standard to 
have emulated qemu controller working=3F
I remember something similar with xp changing disk controller but I not 
found exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.



> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020301090003040103000705
Content-Type: text/html; charset=windows-1252
Content-Length: 65728
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 12:00, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06621.D1A352C0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Thanks for the logs. The
              processor-group-awareness patch did introduce a couple of
              problems in to XENVIF. I just posted a couple of patches
              that should hopefully fix these. I=92ll apply them later if
              no-one shouts so there should be a new build by the end of
              the day.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Thanks.<br>
    <span id=3D"result_box" class=3D"short_text" lang=3D"en"><span class=3D"hps">Meanwhile</span></span>
    I tried to do a batch for remove pv drivers things that remain after
    uninstall all from control panel.<br>
    Instead remove the registry keys about services I removed them with
    sc command that also delete registry keys and the files about but
    after reboot I had always blue screen with 7B without nothing in
    logs, no minidump and also with xen_platform_pci=3D0<br>
    <br>
    I did the following commands:<br>
    <blockquote type=3D"cite">net stop xenlite<br>
      sc delete xenlite<br>
      DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
      sc delete xeniface<br>
      DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
      sc delete xendisk<br>
      DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
      sc delete xennet<br>
      DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
      sc delete xenvbd<br>
      DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
      sc delete XENVIF<br>
      DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
      sc delete XENFILT<br>
      DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
      sc delete XENBUS<br>
      DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</blockquote>
    <br>
    I did something wrong or missed=3F<br>
    Is needed to add/change registry key about disk controller standard
    to have emulated qemu controller working=3F<br>
    I remember something similar with xp changing disk controller but I
    not found exact reg key to add in windows 7 about with a fast
    search.<br>
    <br>
    Thanks for any reply.<br>
    <br>
    <br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 10:23<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Sorry
                  for the delay, I missed this=85</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">It=92s
                  fairly easy=85 The service keys are named the same as
                  the driver, so go look in
                  HKLM/CurrentControlSet/Services and find all the
                  things starting with XEN and then either get rid of
                  them or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Thanks for reply, I'll try to do a bat script for remove
                all files and registry keys of pv drivers and I'll post
                it for help also other people having problems about.<br>
                <br>
                Today after updating pv drivers to latest build I had
                blue screen after reboot windows, seems about xenvif.<br>
                In attachments qemu log and crash minidump.<br>
                <br>
                Thanks for any reply and sorry for my bad english.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      17 March 2015 09:00<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Windows driver removal is a black art and is
                    broken in different ways on different versions of
                    Windows. As you correctly observe, using the pnputil
                    tool does not actually remove the drivers, and hence
                    you=92ll see DllInitialize() and DriverEntry()
                    functions called *<b><span style=3D"font-weight:bold">but</span></b>*
                    there should be no AddDevice() called i.e. the
                    drivers are unbound from the devices but the modules
                    are still present.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>If you also want to stop the driver modules
                    from loading then you need to remove the service
                    keys from the registry, which you should be able to
                    safely do after the reboot. If you just remove the
                    binaries from system32 then you may well end up in a
                    situation where the registry is telling the system
                    to load a driver but, when it looks, the binary has
                    gone.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Can you tell me which ones registry keys I must delete
                  with the manually remove of remaining pv drivers in
                  system32 without cause problems please=3F<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        16 March 2015 15:25<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 11/03/2015
                      16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                      a look in
                      C:\Windows\System32\DriverStore\FileRepository. If
                      you still have packages for old drivers in here
                      then Windows can find them and re-install them
                      even if you think you=92ve uninstalled. The correct
                      way to remove packages is using =91pnputil =96d=92 but
                      it=92s a bit clunky.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I removed all pv drivers visible in windows control
                    panel, after I removed with "pnputil -f -d" all
                    remaining drivers found with "pnputil /e" and
                    rebooted.<br>
                    Now still load latest xenbus (visible from qemu log)
                    and network is not available even if
                    .../FileRepository folder don't have other xen's
                    drivers.<br>
                    I tried a search and I found there are still all pv
                    drivers files in C:\windows\system32 and
                    C:\windows\system32\drivers<br>
                    I removed also these files and rebooted and now
                    didn't load pv drivers, emulated network is working
                    and seems ok.<br>
                    Previous week tests instead gave me windows blue
                    screen "registry error" 1 minute after windows boot.<br>
                    <br>
                    Is there another way to clean uninstall all drivers
                    without risk of problems=3F<br>
                    <br>
                    Thanks for any reply and sorry for my bad english.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          11 March 2015 15:39<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        11/03/2015 16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                        you tried uninstalling all versions of XENVIF
                        and XENNET and then re-installing the latest=3F
                        Windows should always prefer the newest driver
                        by date but maybe something has gone wrong and
                        for some reason is favouring a really old
                        version you have lying around in DriverStore.</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Yes, I already uninstalled all old drivers build
                      of all component 3 tests ago, rebooted windows and
                      after installed the new build but seems olders
                      xenvif and xennet still remained even if not
                      visible in control center and always on new xenvif
                      and xennet install give me "ready to use" instead
                      of "device updated" message at end.<br>
                      The only other way I know to delete the drivers is
                      search the files in c:/windows/... but I tried
                      time ago with other things gave me always blue
                      screen on next boot, so I not tried with pv.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                      RangeSetPop error is not anything to worry about.
                      It is expected. It simply means the grant table
                      has run out of space and needs to be expanded,
                      which is why you see the error immediately
                      followed by a map and populate of the next grant
                      table page.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            11 March 2015 15:17<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Cc:</span></b>
                            Paul Durrant<br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            [win-pv-devel] xenvif xennet don't update or
                            load correctly and another error saw in qemu
                            log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">As I reported
                        time ago there was strange thing when update
                        network components: give "ready to use" instead
                        of "device updated" message at end of driver
                        component install.<br>
                        Today I saw in qemu log of one W7 pro 64 bit
                        domU this:<br>
                        xen_platform_log xen platform:
                        XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                        (24.09.2014)<br>
                        xen_platform_log xen platform:
                        XENNET|DriverEntry: XENNET 8.0.0 (0)
                        (24.09.2014)<br>
                        <br>
                        Is probably the first build I installed in this
                        domU and that I already uninstall from control
                        center time ago.<br>
                        <br>
                        other components instead seems loaded correctly
                        the latest build installed:<br>
                        xen_platform_log xen platform:
                        XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)<br>
                        xen_platform_log xen platform:
                        XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                        (05.03.2015)<br>
                        xen_platform_log xen platform:
                        XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                        (03.03.2015)<br>
                        xen_platform_log xen platform:
                        XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                        <br>
                        ----------<br>
                        <br>
                        I saw also these errors in qemu log:<br>
                        ...<br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">xen_platform_log
                        xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000200
                        - 000003ff]<br>
                        <b><span style=3D"font-weight:bold">xen_platform_log
                            xen platform: XENBUS|RangeSetPop: fail1
                            (c000009a)</span></b><br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000400
                        - 000005ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000600
                        - 000007ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000800
                        - 000009ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000a00
                        - 00000bff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000c00
                        - 00000dff]</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                      color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                        style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                        New Roman&quot;">...<br>
                        Can someone tell me something about=3F<br>
                        Can they be related to some failed memory
                        balloning error in dom0's kern.log and syslog=3F<br>
                        <br>
                        Full qemu log in attachment is needed.<br>
                        <br>
                        If you need more informations and/or tests tell
                        me and I'll post them.<br>
                        Thanks for any reply and sorry for my bad
                        english.<br
                          style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span><o:p></o:p></font></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020301090003040103000705--


--===============2830558409077109929==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2830558409077109929==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:30:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:30:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaPqL-0003hE-Hw; Tue, 24 Mar 2015 14:30:09 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaPqJ-0003gy-Us
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 14:30:08 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	03/87-18529-FE471155; Tue, 24 Mar 2015 14:30:07 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427207405!12664643!1
X-Originating-IP: [209.85.212.180]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 26859 invoked from network); 24 Mar 2015 14:30:05 -0000
Received: from mail-wi0-f180.google.com (HELO mail-wi0-f180.google.com)
	(209.85.212.180)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:30:05 -0000
Received: by wixw10 with SMTP id w10so53996323wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 07:30:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=XQDfMhUmCcdkciRgn1R1+FXumuGZPBLn2V/XRlNJo6M=;
	b=iuOFeytPCHOszxMupTbJ1b6ubYoa5IElLowhcficzaMe3v1V93HWNx2CT5A1NEuuKd
	mRPZvKLr0TYdNXprMkfcpTG7saNhm+chH9k+7VfF25qDEWmfQ2+OftKPrHrDKQe+2OH1
	5Hr6jqgYpvRha/Wv/dmSmCmbueaI3Sup8S+MdtlcGPe/YVb9A5mlsWK6lHdUp6aL3kuK
	Z8+2VaVRFs26hgGGYT3L10dEOyzv4N2sU58U7kRJEWGn3eKsp0k8NiY720fuAHsNW7MR
	CSdzqvNZE15VkRYNVU7Fh86J3DsgLFqXzOMPAVVm2xDmiPJHk0IWbXNwsv7FPg6qCbvF
	j/ZA==
X-Gm-Message-State: ALoCoQkkSo1qd04I0+kd6sDRdAG7wIbPhtsDr3Pp5kieQotaBb9tEVjJXFxPRqbmtfVKX68k2B+l
X-Received: by 10.180.105.136 with SMTP id gm8mr29562911wib.13.1427207404542; 
	Tue, 24 Mar 2015 07:30:04 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id hw7sm6339436wjb.24.2015.03.24.07.30.01
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 07:30:03 -0700 (PDT)
Message-ID: <551174EA.50103@m2r.biz>
Date: Tue, 24 Mar 2015 15:30:02 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2830558409077109929=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============2830558409077109929==
Content-Type: multipart/alternative;
 boundary="------------020301090003040103000705"

This is a multi-part message in MIME format.
--------------020301090003040103000705
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 10991
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
> Thanks for the logs. The processor-group-awareness patch did introduce 
> a couple of problems in to XENVIF. I just posted a couple of patches 
> that should hopefully fix these. I=92ll apply them later if no-one 
> shouts so there should be a new build by the end of the day.
>
> Paul
>

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain 
after uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc 
command that also delete registry keys and the files about but after 
reboot I had always blue screen with 7B without nothing in logs, no 
minidump and also with xen_platform_pci=3D0

I did the following commands:
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed=3F
Is needed to add/change registry key about disk controller standard to 
have emulated qemu controller working=3F
I remember something similar with xp changing disk controller but I not 
found exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.



> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020301090003040103000705
Content-Type: text/html; charset=windows-1252
Content-Length: 65728
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 12:00, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06621.D1A352C0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Thanks for the logs. The
              processor-group-awareness patch did introduce a couple of
              problems in to XENVIF. I just posted a couple of patches
              that should hopefully fix these. I=92ll apply them later if
              no-one shouts so there should be a new build by the end of
              the day.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    Thanks.<br>
    <span id=3D"result_box" class=3D"short_text" lang=3D"en"><span class=3D"hps">Meanwhile</span></span>
    I tried to do a batch for remove pv drivers things that remain after
    uninstall all from control panel.<br>
    Instead remove the registry keys about services I removed them with
    sc command that also delete registry keys and the files about but
    after reboot I had always blue screen with 7B without nothing in
    logs, no minidump and also with xen_platform_pci=3D0<br>
    <br>
    I did the following commands:<br>
    <blockquote type=3D"cite">net stop xenlite<br>
      sc delete xenlite<br>
      DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
      sc delete xeniface<br>
      DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
      sc delete xendisk<br>
      DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
      sc delete xennet<br>
      DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
      sc delete xenvbd<br>
      DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
      sc delete XENVIF<br>
      DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
      sc delete XENFILT<br>
      DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
      sc delete XENBUS<br>
      DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</blockquote>
    <br>
    I did something wrong or missed=3F<br>
    Is needed to add/change registry key about disk controller standard
    to have emulated qemu controller working=3F<br>
    I remember something similar with xp changing disk controller but I
    not found exact reg key to add in windows 7 about with a fast
    search.<br>
    <br>
    Thanks for any reply.<br>
    <br>
    <br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 10:23<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Sorry
                  for the delay, I missed this=85</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">It=92s
                  fairly easy=85 The service keys are named the same as
                  the driver, so go look in
                  HKLM/CurrentControlSet/Services and find all the
                  things starting with XEN and then either get rid of
                  them or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Thanks for reply, I'll try to do a bat script for remove
                all files and registry keys of pv drivers and I'll post
                it for help also other people having problems about.<br>
                <br>
                Today after updating pv drivers to latest build I had
                blue screen after reboot windows, seems about xenvif.<br>
                In attachments qemu log and crash minidump.<br>
                <br>
                Thanks for any reply and sorry for my bad english.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US">
                      <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                      [<a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                      <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                      Fantoni<br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      17 March 2015 09:00<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 16/03/2015 18:40, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Windows driver removal is a black art and is
                    broken in different ways on different versions of
                    Windows. As you correctly observe, using the pnputil
                    tool does not actually remove the drivers, and hence
                    you=92ll see DllInitialize() and DriverEntry()
                    functions called *<b><span style=3D"font-weight:bold">but</span></b>*
                    there should be no AddDevice() called i.e. the
                    drivers are unbound from the devices but the modules
                    are still present.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>If you also want to stop the driver modules
                    from loading then you need to remove the service
                    keys from the registry, which you should be able to
                    safely do after the reboot. If you just remove the
                    binaries from system32 then you may well end up in a
                    situation where the registry is telling the system
                    to load a driver but, when it looks, the binary has
                    gone.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Can you tell me which ones registry keys I must delete
                  with the manually remove of remaining pv drivers in
                  system32 without cause problems please=3F<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        16 March 2015 15:25<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 11/03/2015
                      16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                      a look in
                      C:\Windows\System32\DriverStore\FileRepository. If
                      you still have packages for old drivers in here
                      then Windows can find them and re-install them
                      even if you think you=92ve uninstalled. The correct
                      way to remove packages is using =91pnputil =96d=92 but
                      it=92s a bit clunky.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I removed all pv drivers visible in windows control
                    panel, after I removed with "pnputil -f -d" all
                    remaining drivers found with "pnputil /e" and
                    rebooted.<br>
                    Now still load latest xenbus (visible from qemu log)
                    and network is not available even if
                    .../FileRepository folder don't have other xen's
                    drivers.<br>
                    I tried a search and I found there are still all pv
                    drivers files in C:\windows\system32 and
                    C:\windows\system32\drivers<br>
                    I removed also these files and rebooted and now
                    didn't load pv drivers, emulated network is working
                    and seems ok.<br>
                    Previous week tests instead gave me windows blue
                    screen "registry error" 1 minute after windows boot.<br>
                    <br>
                    Is there another way to clean uninstall all drivers
                    without risk of problems=3F<br>
                    <br>
                    Thanks for any reply and sorry for my bad english.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          11 March 2015 15:39<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        11/03/2015 16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                        you tried uninstalling all versions of XENVIF
                        and XENNET and then re-installing the latest=3F
                        Windows should always prefer the newest driver
                        by date but maybe something has gone wrong and
                        for some reason is favouring a really old
                        version you have lying around in DriverStore.</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Yes, I already uninstalled all old drivers build
                      of all component 3 tests ago, rebooted windows and
                      after installed the new build but seems olders
                      xenvif and xennet still remained even if not
                      visible in control center and always on new xenvif
                      and xennet install give me "ready to use" instead
                      of "device updated" message at end.<br>
                      The only other way I know to delete the drivers is
                      search the files in c:/windows/... but I tried
                      time ago with other things gave me always blue
                      screen on next boot, so I not tried with pv.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                      RangeSetPop error is not anything to worry about.
                      It is expected. It simply means the grant table
                      has run out of space and needs to be expanded,
                      which is why you see the error immediately
                      followed by a map and populate of the next grant
                      table page.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            11 March 2015 15:17<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Cc:</span></b>
                            Paul Durrant<br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            [win-pv-devel] xenvif xennet don't update or
                            load correctly and another error saw in qemu
                            log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">As I reported
                        time ago there was strange thing when update
                        network components: give "ready to use" instead
                        of "device updated" message at end of driver
                        component install.<br>
                        Today I saw in qemu log of one W7 pro 64 bit
                        domU this:<br>
                        xen_platform_log xen platform:
                        XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                        (24.09.2014)<br>
                        xen_platform_log xen platform:
                        XENNET|DriverEntry: XENNET 8.0.0 (0)
                        (24.09.2014)<br>
                        <br>
                        Is probably the first build I installed in this
                        domU and that I already uninstall from control
                        center time ago.<br>
                        <br>
                        other components instead seems loaded correctly
                        the latest build installed:<br>
                        xen_platform_log xen platform:
                        XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)<br>
                        xen_platform_log xen platform:
                        XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                        (05.03.2015)<br>
                        xen_platform_log xen platform:
                        XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                        (03.03.2015)<br>
                        xen_platform_log xen platform:
                        XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                        <br>
                        ----------<br>
                        <br>
                        I saw also these errors in qemu log:<br>
                        ...<br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">xen_platform_log
                        xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000200
                        - 000003ff]<br>
                        <b><span style=3D"font-weight:bold">xen_platform_log
                            xen platform: XENBUS|RangeSetPop: fail1
                            (c000009a)</span></b><br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000400
                        - 000005ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000600
                        - 000007ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000800
                        - 000009ff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000a00
                        - 00000bff]<br>
                        xen_platform_log xen platform:
                        XENBUS|RangeSetPop: fail1 (c000009a)<br>
                        xen_platform_log xen platform: GNTTAB: MAP
                        XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                        xen_platform_log xen platform:
                        XENBUS|GnttabExpand: added references [00000c00
                        - 00000dff]</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                      color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                        style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                        New Roman&quot;">...<br>
                        Can someone tell me something about=3F<br>
                        Can they be related to some failed memory
                        balloning error in dom0's kern.log and syslog=3F<br>
                        <br>
                        Full qemu log in attachment is needed.<br>
                        <br>
                        If you need more informations and/or tests tell
                        me and I'll post them.<br>
                        Thanks for any reply and sorry for my bad
                        english.<br
                          style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span><o:p></o:p></font></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020301090003040103000705--


--===============2830558409077109929==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2830558409077109929==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:41:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:41:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQ1a-000670-3y; Tue, 24 Mar 2015 14:41:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaQ1Y-00066q-6t
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 14:41:44 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	6B/6E-32397-7A771155; Tue, 24 Mar 2015 14:41:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427208097!12670662!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17705 invoked from network); 24 Mar 2015 14:41:41 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:41:41 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33050023"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUA=
Date: Tue, 24 Mar 2015 14:41:26 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
In-Reply-To: <551174EA.50103@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3920031661468047384=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============3920031661468047384==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.







--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06640.A6E9BAA0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">No, that looks ok. You should not need
 to do anything magic to re-enable the emulated IDE; the driver should alre=
ady be there. Can you boot up in safe mode?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Thanks for the logs. The processor-group-awareness patch
 did introduce a couple of problems in to XENVIF. I just posted a couple of=
 patches that should hopefully fix these. I&#8217;ll apply them later if no=
-one shouts so there should be a new build by the end of the day.</span></f=
ont><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Meanwhile</span=
></span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"=
> I tried to do a batch for remove pv drivers things that remain
 after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 16/03/2015 18:40, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">As I reported time ago there was str=
ange thing when update network components: give &quot;ready to use&quot; in=
stead of &quot;device updated&quot; message at end of driver component
 install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">xen_platform_log xen platform: GNTTA=
B: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_--


--===============3920031661468047384==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============3920031661468047384==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:41:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:41:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQ1a-000670-3y; Tue, 24 Mar 2015 14:41:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaQ1Y-00066q-6t
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 14:41:44 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	6B/6E-32397-7A771155; Tue, 24 Mar 2015 14:41:43 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427208097!12670662!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17705 invoked from network); 24 Mar 2015 14:41:41 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:41:41 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33050023"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUA=
Date: Tue, 24 Mar 2015 14:41:26 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
In-Reply-To: <551174EA.50103@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3920031661468047384=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============3920031661468047384==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.







--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06640.A6E9BAA0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">No, that looks ok. You should not need
 to do anything magic to re-enable the emulated IDE; the driver should alre=
ady be there. Can you boot up in safe mode?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Thanks for the logs. The processor-group-awareness patch
 did introduce a couple of problems in to XENVIF. I just posted a couple of=
 patches that should hopefully fix these. I&#8217;ll apply them later if no=
-one shouts so there should be a new build by the end of the day.</span></f=
ont><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Meanwhile</span=
></span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"=
> I tried to do a batch for remove pv drivers things that remain
 after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;<o:p></o:p></spa=
n></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 16/03/2015 18:40, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 11/03/2015 16:22, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">As I reported time ago there was str=
ange thing when update network components: give &quot;ready to use&quot; in=
stead of &quot;device updated&quot; message at end of driver component
 install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">xen_platform_log xen platform: GNTTA=
B: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]<o:p></o:p></span></font></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850046AMSPEX01CL01cit_--


--===============3920031661468047384==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============3920031661468047384==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:52:56 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:52:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQCO-0007e9-FD; Tue, 24 Mar 2015 14:52:56 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YaQCM-0007de-Qc; Tue, 24 Mar 2015 14:52:55 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
	26/41-28741-54A71155; Tue, 24 Mar 2015 14:52:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1427208772!11229833!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7620 invoked from network); 24 Mar 2015 14:52:52 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:52:52 -0000
Received: by wgdm6 with SMTP id m6so173246566wgd.2;
	Tue, 24 Mar 2015 07:52:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:date:references:to:message-id
	:mime-version; bh=Hx44ajRsbGLBdArNZ4zXqC7BQIhOoVvKF5oCzbmktHs=;
	b=m/aC5ICB1n6m16WHTuPSwZ5qcVATcWkN0xIm2KcTmSNLIxGT+9omZ3tGmKhvGA0W8A
	2BU2gtrUsLu/1YQDmV3L7WbV2ZYshMsRlsGvOxuX2wjYaTegjtDfzHN/QAhk1g7CCY7q
	OQYm3ZxJZAMQnZ7NL6ZBIYg2IjNjTejBvBaB78R+X/MR9jLpQkHkUbARb6gl0jQrNNsd
	nOr2lI2epIa2HUeNsNYXvG/TaONI+7rAL3WrIv8qR0pH+xJcRbfqciucv0FtV1RjhCnK
	E8KjvhKEA6sX8AOO9vXtNuqKPmS/LJmKDKjECgyoVSo5Z+nBkZxqugg1sQvI0zo6Ujrs
	YQMg==
X-Received: by 10.180.103.170 with SMTP id fx10mr24048448wib.57.1427208772483; 
	Tue, 24 Mar 2015 07:52:52 -0700 (PDT)
Received: from [192.168.0.12] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id
	nd15sm16167573wic.8.2015.03.24.07.52.51
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 24 Mar 2015 07:52:51 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Tue, 24 Mar 2015 14:52:50 +0000
References: <5955AACA-F561-4EA8-9936-2D2CB957489A@gmail.com>
To: xen-api@lists.xenproject.org, xen-devel <xen-devel@lists.xen.org>,
	mirageos-devel <mirageos-devel@lists.xenproject.org>,
	Win-pv-devel@lists.xenproject.org
Message-Id: <DE304421-EFEF-4B70-B7ED-EDA9EB67F574@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] Outreachy (formerly OPW) application deadline
	extended to April 7
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2957088800657375952=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============2957088800657375952==
Content-Type: multipart/alternative; boundary="Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496"


--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=us-ascii

FYI: Will update the web pages and blog post

> Begin forwarded message:
> 
> Subject: Re: [COORDINATION] Extend your applicant deadline?
> From: Lars Kurth <lars.kurth.xen@gmail.com>
> Date: 24 March 2015 14:08:29 GMT
> Cc: outreachy-admins@gnome.org, outreachy-list@gnome.org
> To: Sarah A Sharp <sarah@thesharps.us>
> 
> Sarah,
> the Xen Project would like to do so
> Regards
> Lars
> 
>> On 24 Mar 2015, at 13:52, Sarah A Sharp <sarah@thesharps.us> wrote:
>> 
>> Greetings,
>> 
>> Please let me know if your organization would like to extend your
>> application deadline to April 7.  Organizations that need to pick
>> participants for Google Summer of Code (Ceph, Debian, GNOME,
>> OpenStreetMap, QEMU, and Wikimedia) may not want to extend their
>> deadline so that they can pick their interns for GSoC and Outreachy at
>> the same time.
>> 
>> Thanks,
>> Sarah Sharp
>> _______________________________________________
>> Outreachy-list mailing list
>> Outreachy-list@gnome.org
>> https://mail.gnome.org/mailman/listinfo/outreachy-list
> 


--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">FYI: Will update the web pages and blog post<br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">Begin forwarded message:</div><br =
class=3D"Apple-interchange-newline"><div style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span=
 style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Subject: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D""><b class=3D"">Re: =
[COORDINATION] Extend your applicant deadline?</b><br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">From: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D"">Lars Kurth &lt;<a =
href=3D"mailto:lars.kurth.xen@gmail.com" =
class=3D"">lars.kurth.xen@gmail.com</a>&gt;<br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Date: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D"">24 March 2015 14:08:29 GMT<br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Cc: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D""><a =
href=3D"mailto:outreachy-admins@gnome.org" =
class=3D"">outreachy-admins@gnome.org</a>, <a =
href=3D"mailto:outreachy-list@gnome.org" =
class=3D"">outreachy-list@gnome.org</a><br class=3D""></span></div><div =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px;" class=3D""><span style=3D"font-family: =
-webkit-system-font, Helvetica Neue, Helvetica, sans-serif; =
color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">To: </b></span><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif;" class=3D"">Sarah A Sharp &lt;<a =
href=3D"mailto:sarah@thesharps.us" =
class=3D"">sarah@thesharps.us</a>&gt;<br class=3D""></span></div><br =
class=3D""><div class=3D"">Sarah,<br class=3D"">the Xen Project would =
like to do so<br class=3D"">Regards<br class=3D"">Lars<br class=3D""><br =
class=3D""><blockquote type=3D"cite" class=3D"">On 24 Mar 2015, at =
13:52, Sarah A Sharp &lt;<a href=3D"mailto:sarah@thesharps.us" =
class=3D"">sarah@thesharps.us</a>&gt; wrote:<br class=3D""><br =
class=3D"">Greetings,<br class=3D""><br class=3D"">Please let me know if =
your organization would like to extend your<br class=3D"">application =
deadline to April 7. &nbsp;Organizations that need to pick<br =
class=3D"">participants for Google Summer of Code (Ceph, Debian, =
GNOME,<br class=3D"">OpenStreetMap, QEMU, and Wikimedia) may not want to =
extend their<br class=3D"">deadline so that they can pick their interns =
for GSoC and Outreachy at<br class=3D"">the same time.<br class=3D""><br =
class=3D"">Thanks,<br class=3D"">Sarah Sharp<br =
class=3D"">_______________________________________________<br =
class=3D"">Outreachy-list mailing list<br class=3D""><a =
href=3D"mailto:Outreachy-list@gnome.org" =
class=3D"">Outreachy-list@gnome.org</a><br =
class=3D"">https://mail.gnome.org/mailman/listinfo/outreachy-list<br =
class=3D""></blockquote><br class=3D""></div></blockquote></div><br =
class=3D""></body></html>=

--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496--


--===============2957088800657375952==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2957088800657375952==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 14:52:56 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 14:52:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQCO-0007e9-FD; Tue, 24 Mar 2015 14:52:56 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1YaQCM-0007de-Qc; Tue, 24 Mar 2015 14:52:55 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
	26/41-28741-54A71155; Tue, 24 Mar 2015 14:52:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1427208772!11229833!1
X-Originating-IP: [74.125.82.52]
X-SpamReason: No, hits=0.0 required=7.0 tests=HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7620 invoked from network); 24 Mar 2015 14:52:52 -0000
Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com)
	(74.125.82.52)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 14:52:52 -0000
Received: by wgdm6 with SMTP id m6so173246566wgd.2;
	Tue, 24 Mar 2015 07:52:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:date:references:to:message-id
	:mime-version; bh=Hx44ajRsbGLBdArNZ4zXqC7BQIhOoVvKF5oCzbmktHs=;
	b=m/aC5ICB1n6m16WHTuPSwZ5qcVATcWkN0xIm2KcTmSNLIxGT+9omZ3tGmKhvGA0W8A
	2BU2gtrUsLu/1YQDmV3L7WbV2ZYshMsRlsGvOxuX2wjYaTegjtDfzHN/QAhk1g7CCY7q
	OQYm3ZxJZAMQnZ7NL6ZBIYg2IjNjTejBvBaB78R+X/MR9jLpQkHkUbARb6gl0jQrNNsd
	nOr2lI2epIa2HUeNsNYXvG/TaONI+7rAL3WrIv8qR0pH+xJcRbfqciucv0FtV1RjhCnK
	E8KjvhKEA6sX8AOO9vXtNuqKPmS/LJmKDKjECgyoVSo5Z+nBkZxqugg1sQvI0zo6Ujrs
	YQMg==
X-Received: by 10.180.103.170 with SMTP id fx10mr24048448wib.57.1427208772483; 
	Tue, 24 Mar 2015 07:52:52 -0700 (PDT)
Received: from [192.168.0.12] (97e5522d.skybroadband.com. [151.229.82.45])
	by mx.google.com with ESMTPSA id
	nd15sm16167573wic.8.2015.03.24.07.52.51
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 24 Mar 2015 07:52:51 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Tue, 24 Mar 2015 14:52:50 +0000
References: <5955AACA-F561-4EA8-9936-2D2CB957489A@gmail.com>
To: xen-api@lists.xenproject.org, xen-devel <xen-devel@lists.xen.org>,
	mirageos-devel <mirageos-devel@lists.xenproject.org>,
	Win-pv-devel@lists.xenproject.org
Message-Id: <DE304421-EFEF-4B70-B7ED-EDA9EB67F574@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
X-Mailer: Apple Mail (2.2070.6)
Subject: [win-pv-devel] Outreachy (formerly OPW) application deadline
	extended to April 7
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2957088800657375952=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============2957088800657375952==
Content-Type: multipart/alternative; boundary="Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496"


--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=us-ascii

FYI: Will update the web pages and blog post

> Begin forwarded message:
> 
> Subject: Re: [COORDINATION] Extend your applicant deadline?
> From: Lars Kurth <lars.kurth.xen@gmail.com>
> Date: 24 March 2015 14:08:29 GMT
> Cc: outreachy-admins@gnome.org, outreachy-list@gnome.org
> To: Sarah A Sharp <sarah@thesharps.us>
> 
> Sarah,
> the Xen Project would like to do so
> Regards
> Lars
> 
>> On 24 Mar 2015, at 13:52, Sarah A Sharp <sarah@thesharps.us> wrote:
>> 
>> Greetings,
>> 
>> Please let me know if your organization would like to extend your
>> application deadline to April 7.  Organizations that need to pick
>> participants for Google Summer of Code (Ceph, Debian, GNOME,
>> OpenStreetMap, QEMU, and Wikimedia) may not want to extend their
>> deadline so that they can pick their interns for GSoC and Outreachy at
>> the same time.
>> 
>> Thanks,
>> Sarah Sharp
>> _______________________________________________
>> Outreachy-list mailing list
>> Outreachy-list@gnome.org
>> https://mail.gnome.org/mailman/listinfo/outreachy-list
> 


--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">FYI: Will update the web pages and blog post<br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">Begin forwarded message:</div><br =
class=3D"Apple-interchange-newline"><div style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span=
 style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Subject: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D""><b class=3D"">Re: =
[COORDINATION] Extend your applicant deadline?</b><br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">From: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D"">Lars Kurth &lt;<a =
href=3D"mailto:lars.kurth.xen@gmail.com" =
class=3D"">lars.kurth.xen@gmail.com</a>&gt;<br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Date: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D"">24 March 2015 14:08:29 GMT<br =
class=3D""></span></div><div style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px;" class=3D""><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif; color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">Cc: =
</b></span><span style=3D"font-family: -webkit-system-font, Helvetica =
Neue, Helvetica, sans-serif;" class=3D""><a =
href=3D"mailto:outreachy-admins@gnome.org" =
class=3D"">outreachy-admins@gnome.org</a>, <a =
href=3D"mailto:outreachy-list@gnome.org" =
class=3D"">outreachy-list@gnome.org</a><br class=3D""></span></div><div =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px;" class=3D""><span style=3D"font-family: =
-webkit-system-font, Helvetica Neue, Helvetica, sans-serif; =
color:rgba(0, 0, 0, 1.0);" class=3D""><b class=3D"">To: </b></span><span =
style=3D"font-family: -webkit-system-font, Helvetica Neue, Helvetica, =
sans-serif;" class=3D"">Sarah A Sharp &lt;<a =
href=3D"mailto:sarah@thesharps.us" =
class=3D"">sarah@thesharps.us</a>&gt;<br class=3D""></span></div><br =
class=3D""><div class=3D"">Sarah,<br class=3D"">the Xen Project would =
like to do so<br class=3D"">Regards<br class=3D"">Lars<br class=3D""><br =
class=3D""><blockquote type=3D"cite" class=3D"">On 24 Mar 2015, at =
13:52, Sarah A Sharp &lt;<a href=3D"mailto:sarah@thesharps.us" =
class=3D"">sarah@thesharps.us</a>&gt; wrote:<br class=3D""><br =
class=3D"">Greetings,<br class=3D""><br class=3D"">Please let me know if =
your organization would like to extend your<br class=3D"">application =
deadline to April 7. &nbsp;Organizations that need to pick<br =
class=3D"">participants for Google Summer of Code (Ceph, Debian, =
GNOME,<br class=3D"">OpenStreetMap, QEMU, and Wikimedia) may not want to =
extend their<br class=3D"">deadline so that they can pick their interns =
for GSoC and Outreachy at<br class=3D"">the same time.<br class=3D""><br =
class=3D"">Thanks,<br class=3D"">Sarah Sharp<br =
class=3D"">_______________________________________________<br =
class=3D"">Outreachy-list mailing list<br class=3D""><a =
href=3D"mailto:Outreachy-list@gnome.org" =
class=3D"">Outreachy-list@gnome.org</a><br =
class=3D"">https://mail.gnome.org/mailman/listinfo/outreachy-list<br =
class=3D""></blockquote><br class=3D""></div></blockquote></div><br =
class=3D""></body></html>=

--Apple-Mail=_D0546D00-B09A-4800-91BD-673CFD451496--


--===============2957088800657375952==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2957088800657375952==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 15:00:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 15:00:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQK5-00007K-Ch; Tue, 24 Mar 2015 15:00:53 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaQK3-00007F-PO
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 15:00:52 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	BA/02-23598-22C71155; Tue, 24 Mar 2015 15:00:50 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427209242!14966345!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32376 invoked from network); 24 Mar 2015 15:00:42 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 15:00:42 -0000
Received: by wixw10 with SMTP id w10so54503359wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 08:00:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=3WErb5a9PnYO302R8WkQh/gwXraPtlojEe6Seprv/Oo=;
	b=JFwlfDq12L6z1Ei2ILmrPDJOAtGi9jxYQGXvWPhPku8XJKWeuW0xGdCfFrG/mvuDrR
	MwijAgZ+EYDkBcwgX2O0D5W0sEM5sH/ttqwg9dWUGQjgf+B05mLTkdeAbSzFdrnuN59g
	S+oP6vOQqllzuKGKCTSsWyY+3xOwlCv5zUtcfQlAEI43etmem/6THDWc0ejG+KG8LxD4
	+KTNniXKENtmTZJ3vpRXJlKOF5KI+L8b62QgS9aSxJIrJG1dUWmCs+PPKXthSn0Vz5xz
	7lRbfEFFZHreHtf32BTUGJfr/qrd6+K+wxCqMv04umAhvW+8xZ3irW6DJAaIUdy/S9g3
	97/Q==
X-Gm-Message-State: ALoCoQms4d9XyAe1mXFFBeuU2L9JPNNIw++CXyweADrzORrlSqxPxsefctvLTPw2fj//0T7TYTcy
X-Received: by 10.194.210.103 with SMTP id mt7mr8742978wjc.103.1427209241976; 
	Tue, 24 Mar 2015 08:00:41 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id f15sm16205106wik.2.2015.03.24.08.00.38
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 08:00:41 -0700 (PDT)
Message-ID: <55117C17.3000208@m2r.biz>
Date: Tue, 24 Mar 2015 16:00:39 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7741127999518214599=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7741127999518214599==
Content-Type: multipart/alternative;
 boundary="------------000902010008070001040801"

This is a multi-part message in MIME format.
--------------000902010008070001040801
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 11662
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
> No, that looks ok. You should not need to do anything magic to 
> re-enable the emulated IDE; the driver should already be there. Can 
> you boot up in safe mode=3F
>
> Paul
>

I tried also safe mode but was still unable to start.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------000902010008070001040801
Content-Type: text/html; charset=windows-1252
Content-Length: 72942
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 15:41, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06640.A6E9BAA0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">No, that looks ok. You
              should not need to do anything magic to re-enable the
              emulated IDE; the driver should already be there. Can you
              boot up in safe mode=3F<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I tried also safe mode but was still unable to start.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 14:30<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Thanks
                  for the logs. The processor-group-awareness patch did
                  introduce a couple of problems in to XENVIF. I just
                  posted a couple of patches that should hopefully fix
                  these. I=92ll apply them later if no-one shouts so there
                  should be a new build by the end of the day.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Thanks.<br>
              </span></font><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"> I tried to do a batch for remove pv drivers
              things that remain after uninstall all from control panel.<br>
              Instead remove the registry keys about services I removed
              them with sc command that also delete registry keys and
              the files about but after reboot I had always blue screen
              with 7B without nothing in logs, no minidump and also with
              xen_platform_pci=3D0<br>
              <br>
              I did the following commands:<br
                style=3D"mso-special-character:line-break">
              <!--[if !supportLineBreakNewLine]--><br
                style=3D"mso-special-character:line-break">
              <!--[endif]--><o:p></o:p></span></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">net stop xenlite<br>
                sc delete xenlite<br>
                DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                sc delete xeniface<br>
                DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                sc delete xendisk<br>
                DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                sc delete xennet<br>
                DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                sc delete xenvbd<br>
                DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                sc delete XENVIF<br>
                DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                sc delete XENFILT<br>
                DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                sc delete XENBUS<br>
                DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"<o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I did something wrong or missed=3F<br>
                Is needed to add/change registry key about disk
                controller standard to have emulated qemu controller
                working=3F<br>
                I remember something similar with xp changing disk
                controller but I not found exact reg key to add in
                windows 7 about with a fast search.<br>
                <br>
                Thanks for any reply.<br>
                <br>
                <br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 10:23<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                    for the delay, I missed this=85</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                    fairly easy=85 The service keys are named the same as
                    the driver, so go look in
                    HKLM/CurrentControlSet/Services and find all the
                    things starting with XEN and then either get rid of
                    them or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Thanks for reply, I'll try to do a bat script for
                  remove all files and registry keys of pv drivers and
                  I'll post it for help also other people having
                  problems about.<br>
                  <br>
                  Today after updating pv drivers to latest build I had
                  blue screen after reboot windows, seems about xenvif.<br>
                  In attachments qemu log and crash minidump.<br>
                  <br>
                  Thanks for any reply and sorry for my bad english.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        17 March 2015 09:00<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 16/03/2015
                      18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Windows driver removal is a black art and
                      is broken in different ways on different versions
                      of Windows. As you correctly observe, using the
                      pnputil tool does not actually remove the drivers,
                      and hence you=92ll see DllInitialize() and
                      DriverEntry() functions called *<b><span
                          style=3D"font-weight:bold">but</span></b>* there
                      should be no AddDevice() called i.e. the drivers
                      are unbound from the devices but the modules are
                      still present.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>If you also want to stop the driver modules
                      from loading then you need to remove the service
                      keys from the registry, which you should be able
                      to safely do after the reboot. If you just remove
                      the binaries from system32 then you may well end
                      up in a situation where the registry is telling
                      the system to load a driver but, when it looks,
                      the binary has gone.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Can you tell me which ones registry keys I must
                    delete with the manually remove of remaining pv
                    drivers in system32 without cause problems please=3F<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          16 March 2015 15:25<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        11/03/2015 16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                        a look in
                        C:\Windows\System32\DriverStore\FileRepository.
                        If you still have packages for old drivers in
                        here then Windows can find them and re-install
                        them even if you think you=92ve uninstalled. The
                        correct way to remove packages is using =91pnputil
                        =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      I removed all pv drivers visible in windows
                      control panel, after I removed with "pnputil -f
                      -d" all remaining drivers found with "pnputil /e"
                      and rebooted.<br>
                      Now still load latest xenbus (visible from qemu
                      log) and network is not available even if
                      .../FileRepository folder don't have other xen's
                      drivers.<br>
                      I tried a search and I found there are still all
                      pv drivers files in C:\windows\system32 and
                      C:\windows\system32\drivers<br>
                      I removed also these files and rebooted and now
                      didn't load pv drivers, emulated network is
                      working and seems ok.<br>
                      Previous week tests instead gave me windows blue
                      screen "registry error" 1 minute after windows
                      boot.<br>
                      <br>
                      Is there another way to clean uninstall all
                      drivers without risk of problems=3F<br>
                      <br>
                      Thanks for any reply and sorry for my bad english.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            11 March 2015 15:39<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 11/03/2015
                          16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                          you tried uninstalling all versions of XENVIF
                          and XENNET and then re-installing the latest=3F
                          Windows should always prefer the newest driver
                          by date but maybe something has gone wrong and
                          for some reason is favouring a really old
                          version you have lying around in DriverStore.</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Yes, I already uninstalled all old drivers build
                        of all component 3 tests ago, rebooted windows
                        and after installed the new build but seems
                        olders xenvif and xennet still remained even if
                        not visible in control center and always on new
                        xenvif and xennet install give me "ready to use"
                        instead of "device updated" message at end.<br>
                        The only other way I know to delete the drivers
                        is search the files in c:/windows/... but I
                        tried time ago with other things gave me always
                        blue screen on next boot, so I not tried with
                        pv.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                        RangeSetPop error is not anything to worry
                        about. It is expected. It simply means the grant
                        table has run out of space and needs to be
                        expanded, which is why you see the error
                        immediately followed by a map and populate of
                        the next grant table page.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              11 March 2015 15:17<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Cc:</span></b>
                              Paul Durrant<br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              [win-pv-devel] xenvif xennet don't update
                              or load correctly and another error saw in
                              qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">As I reported time
                          ago there was strange thing when update
                          network components: give "ready to use"
                          instead of "device updated" message at end of
                          driver component install.<br>
                          Today I saw in qemu log of one W7 pro 64 bit
                          domU this:<br>
                          xen_platform_log xen platform:
                          XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                          (24.09.2014)<br>
                          xen_platform_log xen platform:
                          XENNET|DriverEntry: XENNET 8.0.0 (0)
                          (24.09.2014)<br>
                          <br>
                          Is probably the first build I installed in
                          this domU and that I already uninstall from
                          control center time ago.<br>
                          <br>
                          other components instead seems loaded
                          correctly the latest build installed:<br>
                          xen_platform_log xen platform:
                          XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)<br>
                          xen_platform_log xen platform:
                          XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                          (05.03.2015)<br>
                          xen_platform_log xen platform:
                          XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                          (03.03.2015)<br>
                          xen_platform_log xen platform:
                          XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                          <br>
                          ----------<br>
                          <br>
                          I saw also these errors in qemu log:<br>
                          ...<br
                            style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">xen_platform_log xen
                          platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000200 - 000003ff]<br>
                          <b><span style=3D"font-weight:bold">xen_platform_log
                              xen platform: XENBUS|RangeSetPop: fail1
                              (c000009a)</span></b><br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000400 - 000005ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000600 - 000007ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000800 - 000009ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000a00 - 00000bff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000c00 - 00000dff]<o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                        color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                          New Roman&quot;">...<br>
                          Can someone tell me something about=3F<br>
                          Can they be related to some failed memory
                          balloning error in dom0's kern.log and syslog=3F<br>
                          <br>
                          Full qemu log in attachment is needed.<br>
                          <br>
                          If you need more informations and/or tests
                          tell me and I'll post them.<br>
                          Thanks for any reply and sorry for my bad
                          english.<br
                            style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--></span><o:p></o:p></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------000902010008070001040801--


--===============7741127999518214599==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7741127999518214599==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 15:00:54 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 15:00:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQK5-00007K-Ch; Tue, 24 Mar 2015 15:00:53 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YaQK3-00007F-PO
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 15:00:52 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	BA/02-23598-22C71155; Tue, 24 Mar 2015 15:00:50 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427209242!14966345!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32376 invoked from network); 24 Mar 2015 15:00:42 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 15:00:42 -0000
Received: by wixw10 with SMTP id w10so54503359wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 08:00:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=3WErb5a9PnYO302R8WkQh/gwXraPtlojEe6Seprv/Oo=;
	b=JFwlfDq12L6z1Ei2ILmrPDJOAtGi9jxYQGXvWPhPku8XJKWeuW0xGdCfFrG/mvuDrR
	MwijAgZ+EYDkBcwgX2O0D5W0sEM5sH/ttqwg9dWUGQjgf+B05mLTkdeAbSzFdrnuN59g
	S+oP6vOQqllzuKGKCTSsWyY+3xOwlCv5zUtcfQlAEI43etmem/6THDWc0ejG+KG8LxD4
	+KTNniXKENtmTZJ3vpRXJlKOF5KI+L8b62QgS9aSxJIrJG1dUWmCs+PPKXthSn0Vz5xz
	7lRbfEFFZHreHtf32BTUGJfr/qrd6+K+wxCqMv04umAhvW+8xZ3irW6DJAaIUdy/S9g3
	97/Q==
X-Gm-Message-State: ALoCoQms4d9XyAe1mXFFBeuU2L9JPNNIw++CXyweADrzORrlSqxPxsefctvLTPw2fj//0T7TYTcy
X-Received: by 10.194.210.103 with SMTP id mt7mr8742978wjc.103.1427209241976; 
	Tue, 24 Mar 2015 08:00:41 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id f15sm16205106wik.2.2015.03.24.08.00.38
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 08:00:41 -0700 (PDT)
Message-ID: <55117C17.3000208@m2r.biz>
Date: Tue, 24 Mar 2015 16:00:39 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7741127999518214599=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7741127999518214599==
Content-Type: multipart/alternative;
 boundary="------------000902010008070001040801"

This is a multi-part message in MIME format.
--------------000902010008070001040801
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 11662
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
> No, that looks ok. You should not need to do anything magic to 
> re-enable the emulated IDE; the driver should already be there. Can 
> you boot up in safe mode=3F
>
> Paul
>

I tried also safe mode but was still unable to start.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------000902010008070001040801
Content-Type: text/html; charset=windows-1252
Content-Length: 72942
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 15:41, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06640.A6E9BAA0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">No, that looks ok. You
              should not need to do anything magic to re-enable the
              emulated IDE; the driver should already be there. Can you
              boot up in safe mode=3F<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I tried also safe mode but was still unable to start.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 14:30<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Thanks
                  for the logs. The processor-group-awareness patch did
                  introduce a couple of problems in to XENVIF. I just
                  posted a couple of patches that should hopefully fix
                  these. I=92ll apply them later if no-one shouts so there
                  should be a new build by the end of the day.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                Thanks.<br>
              </span></font><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"> I tried to do a batch for remove pv drivers
              things that remain after uninstall all from control panel.<br>
              Instead remove the registry keys about services I removed
              them with sc command that also delete registry keys and
              the files about but after reboot I had always blue screen
              with 7B without nothing in logs, no minidump and also with
              xen_platform_pci=3D0<br>
              <br>
              I did the following commands:<br
                style=3D"mso-special-character:line-break">
              <!--[if !supportLineBreakNewLine]--><br
                style=3D"mso-special-character:line-break">
              <!--[endif]--><o:p></o:p></span></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;">net stop xenlite<br>
                sc delete xenlite<br>
                DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                sc delete xeniface<br>
                DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                sc delete xendisk<br>
                DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                sc delete xennet<br>
                DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                sc delete xenvbd<br>
                DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                sc delete XENVIF<br>
                DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                sc delete XENFILT<br>
                DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                sc delete XENBUS<br>
                DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"<o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I did something wrong or missed=3F<br>
                Is needed to add/change registry key about disk
                controller standard to have emulated qemu controller
                working=3F<br>
                I remember something similar with xp changing disk
                controller but I not found exact reg key to add in
                windows 7 about with a fast search.<br>
                <br>
                Thanks for any reply.<br>
                <br>
                <br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 10:23<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 20/03/2015 11:22, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                    for the delay, I missed this=85</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                    fairly easy=85 The service keys are named the same as
                    the driver, so go look in
                    HKLM/CurrentControlSet/Services and find all the
                    things starting with XEN and then either get rid of
                    them or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Thanks for reply, I'll try to do a bat script for
                  remove all files and registry keys of pv drivers and
                  I'll post it for help also other people having
                  problems about.<br>
                  <br>
                  Today after updating pv drivers to latest build I had
                  blue screen after reboot windows, seems about xenvif.<br>
                  In attachments qemu log and crash minidump.<br>
                  <br>
                  Thanks for any reply and sorry for my bad english.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US">
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                        [<a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                        <b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio
                        Fantoni<br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        17 March 2015 09:00<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 16/03/2015
                      18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Windows driver removal is a black art and
                      is broken in different ways on different versions
                      of Windows. As you correctly observe, using the
                      pnputil tool does not actually remove the drivers,
                      and hence you=92ll see DllInitialize() and
                      DriverEntry() functions called *<b><span
                          style=3D"font-weight:bold">but</span></b>* there
                      should be no AddDevice() called i.e. the drivers
                      are unbound from the devices but the modules are
                      still present.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>If you also want to stop the driver modules
                      from loading then you need to remove the service
                      keys from the registry, which you should be able
                      to safely do after the reboot. If you just remove
                      the binaries from system32 then you may well end
                      up in a situation where the registry is telling
                      the system to load a driver but, when it looks,
                      the binary has gone.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Can you tell me which ones registry keys I must
                    delete with the manually remove of remaining pv
                    drivers in system32 without cause problems please=3F<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          16 March 2015 15:25<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        11/03/2015 16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                        a look in
                        C:\Windows\System32\DriverStore\FileRepository.
                        If you still have packages for old drivers in
                        here then Windows can find them and re-install
                        them even if you think you=92ve uninstalled. The
                        correct way to remove packages is using =91pnputil
                        =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      I removed all pv drivers visible in windows
                      control panel, after I removed with "pnputil -f
                      -d" all remaining drivers found with "pnputil /e"
                      and rebooted.<br>
                      Now still load latest xenbus (visible from qemu
                      log) and network is not available even if
                      .../FileRepository folder don't have other xen's
                      drivers.<br>
                      I tried a search and I found there are still all
                      pv drivers files in C:\windows\system32 and
                      C:\windows\system32\drivers<br>
                      I removed also these files and rebooted and now
                      didn't load pv drivers, emulated network is
                      working and seems ok.<br>
                      Previous week tests instead gave me windows blue
                      screen "registry error" 1 minute after windows
                      boot.<br>
                      <br>
                      Is there another way to clean uninstall all
                      drivers without risk of problems=3F<br>
                      <br>
                      Thanks for any reply and sorry for my bad english.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            11 March 2015 15:39<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 11/03/2015
                          16:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                          you tried uninstalling all versions of XENVIF
                          and XENNET and then re-installing the latest=3F
                          Windows should always prefer the newest driver
                          by date but maybe something has gone wrong and
                          for some reason is favouring a really old
                          version you have lying around in DriverStore.</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Yes, I already uninstalled all old drivers build
                        of all component 3 tests ago, rebooted windows
                        and after installed the new build but seems
                        olders xenvif and xennet still remained even if
                        not visible in control center and always on new
                        xenvif and xennet install give me "ready to use"
                        instead of "device updated" message at end.<br>
                        The only other way I know to delete the drivers
                        is search the files in c:/windows/... but I
                        tried time ago with other things gave me always
                        blue screen on next boot, so I not tried with
                        pv.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                        RangeSetPop error is not anything to worry
                        about. It is expected. It simply means the grant
                        table has run out of space and needs to be
                        expanded, which is why you see the error
                        immediately followed by a map and populate of
                        the next grant table page.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              11 March 2015 15:17<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Cc:</span></b>
                              Paul Durrant<br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              [win-pv-devel] xenvif xennet don't update
                              or load correctly and another error saw in
                              qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">As I reported time
                          ago there was strange thing when update
                          network components: give "ready to use"
                          instead of "device updated" message at end of
                          driver component install.<br>
                          Today I saw in qemu log of one W7 pro 64 bit
                          domU this:<br>
                          xen_platform_log xen platform:
                          XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                          (24.09.2014)<br>
                          xen_platform_log xen platform:
                          XENNET|DriverEntry: XENNET 8.0.0 (0)
                          (24.09.2014)<br>
                          <br>
                          Is probably the first build I installed in
                          this domU and that I already uninstall from
                          control center time ago.<br>
                          <br>
                          other components instead seems loaded
                          correctly the latest build installed:<br>
                          xen_platform_log xen platform:
                          XEN|DllInitialize: XEN 8.0.0 (41) (05.03.2015)<br>
                          xen_platform_log xen platform:
                          XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                          (05.03.2015)<br>
                          xen_platform_log xen platform:
                          XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                          (03.03.2015)<br>
                          xen_platform_log xen platform:
                          XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                          <br>
                          ----------<br>
                          <br>
                          I saw also these errors in qemu log:<br>
                          ...<br
                            style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">xen_platform_log xen
                          platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000200 - 000003ff]<br>
                          <b><span style=3D"font-weight:bold">xen_platform_log
                              xen platform: XENBUS|RangeSetPop: fail1
                              (c000009a)</span></b><br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[2] @ 00000000.f8003000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000400 - 000005ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[3] @ 00000000.f8004000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000600 - 000007ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[4] @ 00000000.f8005000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000800 - 000009ff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[5] @ 00000000.f8006000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000a00 - 00000bff]<br>
                          xen_platform_log xen platform:
                          XENBUS|RangeSetPop: fail1 (c000009a)<br>
                          xen_platform_log xen platform: GNTTAB: MAP
                          XENMAPSPACE_grant_table[6] @ 00000000.f8007000<br>
                          xen_platform_log xen platform:
                          XENBUS|GnttabExpand: added references
                          [00000c00 - 00000dff]<o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                        color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                          New Roman&quot;">...<br>
                          Can someone tell me something about=3F<br>
                          Can they be related to some failed memory
                          balloning error in dom0's kern.log and syslog=3F<br>
                          <br>
                          Full qemu log in attachment is needed.<br>
                          <br>
                          If you need more informations and/or tests
                          tell me and I'll post them.<br>
                          Thanks for any reply and sorry for my bad
                          english.<br
                            style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--></span><o:p></o:p></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------000902010008070001040801--


--===============7741127999518214599==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7741127999518214599==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 15:08:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 15:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQQy-0001HM-FN; Tue, 24 Mar 2015 15:08:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaQQw-0001Fe-Cw
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 15:07:58 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	A2/D4-32397-DCD71155; Tue, 24 Mar 2015 15:07:57 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427209674!12683549!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5881 invoked from network); 24 Mar 2015 15:07:54 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 15:07:54 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33050850"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQ
Date: Tue, 24 Mar 2015 15:07:54 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
In-Reply-To: <55117C17.3000208@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8035548449540139170=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============8035548449540139170==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.








--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06644.59765180"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Sounds like your VM is missing something
 pretty vital then unfortunately.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">No, that looks ok. You should not need to do anything
 magic to re-enable the emulated IDE; the driver should already be there. C=
an you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"> I tried to do a batch for remove pv drivers things=
 that remain after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 20/03/2015 11:22, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">As I reported time ago there was strange thing wh=
en update network components: give &quot;ready to use&quot; instead of &quo=
t;device updated&quot; message
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAP=
SPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_--


--===============8035548449540139170==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8035548449540139170==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 15:08:00 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 15:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaQQy-0001HM-FN; Tue, 24 Mar 2015 15:08:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YaQQw-0001Fe-Cw
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 15:07:58 +0000
Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id
	A2/D4-32397-DCD71155; Tue, 24 Mar 2015 15:07:57 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427209674!12683549!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5881 invoked from network); 24 Mar 2015 15:07:54 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 15:07:54 -0000
X-IronPort-AV: E=Sophos;i="5.11,458,1422921600"; d="scan'208,217";a="33050850"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQ
Date: Tue, 24 Mar 2015 15:07:54 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
In-Reply-To: <55117C17.3000208@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8035548449540139170=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============8035548449540139170==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

  Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.








--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06644.59765180"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Sounds like your VM is missing something
 pretty vital then unfortunately.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">No, that looks ok. You should not need to do anything
 magic to re-enable the emulated IDE; the driver should already be there. C=
an you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"> I tried to do a batch for remove pv drivers things=
 that remain after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 20/03/2015 11:22, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 11/03/2015 16:47, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">As I reported time ago there was strange thing wh=
en update network components: give &quot;ready to use&quot; instead of &quo=
t;device updated&quot; message
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">xen_platform_log xen platform: GNTTAB: MAP XENMAP=
SPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD025850130AMSPEX01CL01cit_--


--===============8035548449540139170==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8035548449540139170==--


From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 17:53:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 17:53:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaT13-000806-OS; Tue, 24 Mar 2015 17:53:25 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaT12-0007zy-DF
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 17:53:24 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	05/12-23598-394A1155; Tue, 24 Mar 2015 17:53:23 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427219603!15026906!1
X-Originating-IP: [74.125.82.46]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1647 invoked from network); 24 Mar 2015 17:53:23 -0000
Received: from mail-wg0-f46.google.com (HELO mail-wg0-f46.google.com)
	(74.125.82.46)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 17:53:23 -0000
Received: by wgra20 with SMTP id a20so273046wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=+0MvQKv6Gj11B8Lrsd0xsxkXyFszrhI8kd7iUyRre7o=;
	b=hsLWsh1SNsebaykeLMh2Pgs+xNSLMY8zoh4Zdvucr81JHilGOLYMieHHIKxaqzKXXN
	zASWqAu/uksdQWqvELaKBC4rh9oljZ4f+yWXDwd8w2NR3CYtRBv05c3+YIx1j6bebawq
	dT+gQMOwMwEmy1CFcAQ8PCzoE6ZfaW1lbx+HTuoGvGHZuZLNo82Mb7orCpMOcv7grctH
	lofpdH0b5AKm1jm8HTYa6JCXCh3pQCsseyVkdoZI3c1Pl0kioG9lDmb9uoyRCWUgpIv4
	I4RREaK2Ub5ItoRO6LtScM+4LYFdUMUscK1GvKQ6IcV9TNsKc7AqNPXDjrm5h2CXkDAW
	H2Bg==
X-Received: by 10.180.13.146 with SMTP id h18mr30188882wic.73.1427219602754;
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm7071911wjv.29.2015.03.24.10.53.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 17:53:32 +0000
Message-Id: <1427219612-16920-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix a couple of ASSERT failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The multi-processor-group patch introduced a new statistics array in
the Frontend object. Unfortunately, whilst the array is correctly freed
on object destruction, the pointer is not NULL-ed out so the IsZeroMemory
check fails. This patch adss the ncessary lines to NULL the array pointer.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 3c03e50..0e393b5 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1581,6 +1581,7 @@ fail2:
     Error("fail2\n");
 
     __FrontendFree(Frontend->Statistics);
+    Frontend->Statistics = NULL;
     Frontend->StatisticsCount = 0;
 
 fail1:
@@ -1611,6 +1612,7 @@ __FrontendDisconnect(
     XENBUS_DEBUG(Release, &Frontend->DebugInterface);
 
     __FrontendFree(Frontend->Statistics);
+    Frontend->Statistics = NULL;
     Frontend->StatisticsCount = 0;
 
     Trace("<====\n");
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 24 17:53:25 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 24 Mar 2015 17:53:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YaT13-000806-OS; Tue, 24 Mar 2015 17:53:25 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YaT12-0007zy-DF
	for win-pv-devel@lists.xenproject.org; Tue, 24 Mar 2015 17:53:24 +0000
Received: from [85.158.137.68] by server-15.bemta-3.messagelabs.com id
	05/12-23598-394A1155; Tue, 24 Mar 2015 17:53:23 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427219603!15026906!1
X-Originating-IP: [74.125.82.46]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.4; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1647 invoked from network); 24 Mar 2015 17:53:23 -0000
Received: from mail-wg0-f46.google.com (HELO mail-wg0-f46.google.com)
	(74.125.82.46)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Mar 2015 17:53:23 -0000
Received: by wgra20 with SMTP id a20so273046wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=+0MvQKv6Gj11B8Lrsd0xsxkXyFszrhI8kd7iUyRre7o=;
	b=hsLWsh1SNsebaykeLMh2Pgs+xNSLMY8zoh4Zdvucr81JHilGOLYMieHHIKxaqzKXXN
	zASWqAu/uksdQWqvELaKBC4rh9oljZ4f+yWXDwd8w2NR3CYtRBv05c3+YIx1j6bebawq
	dT+gQMOwMwEmy1CFcAQ8PCzoE6ZfaW1lbx+HTuoGvGHZuZLNo82Mb7orCpMOcv7grctH
	lofpdH0b5AKm1jm8HTYa6JCXCh3pQCsseyVkdoZI3c1Pl0kioG9lDmb9uoyRCWUgpIv4
	I4RREaK2Ub5ItoRO6LtScM+4LYFdUMUscK1GvKQ6IcV9TNsKc7AqNPXDjrm5h2CXkDAW
	H2Bg==
X-Received: by 10.180.13.146 with SMTP id h18mr30188882wic.73.1427219602754;
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id 14sm7071911wjv.29.2015.03.24.10.53.21
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 24 Mar 2015 10:53:22 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 24 Mar 2015 17:53:32 +0000
Message-Id: <1427219612-16920-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix a couple of ASSERT failures
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The multi-processor-group patch introduced a new statistics array in
the Frontend object. Unfortunately, whilst the array is correctly freed
on object destruction, the pointer is not NULL-ed out so the IsZeroMemory
check fails. This patch adss the ncessary lines to NULL the array pointer.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenvif/frontend.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 3c03e50..0e393b5 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1581,6 +1581,7 @@ fail2:
     Error("fail2\n");
 
     __FrontendFree(Frontend->Statistics);
+    Frontend->Statistics = NULL;
     Frontend->StatisticsCount = 0;
 
 fail1:
@@ -1611,6 +1612,7 @@ __FrontendDisconnect(
     XENBUS_DEBUG(Release, &Frontend->DebugInterface);
 
     __FrontendFree(Frontend->Statistics);
+    Frontend->Statistics = NULL;
     Frontend->StatisticsCount = 0;
 
     Trace("<====\n");
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 26 13:46:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 26 Mar 2015 13:46:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Yb87S-0001mE-QF; Thu, 26 Mar 2015 13:46:46 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1Yb87S-0001m5-2q
	for win-pv-devel@lists.xenproject.org; Thu, 26 Mar 2015 13:46:46 +0000
Received: from [193.109.254.147] by server-7.bemta-14.messagelabs.com id
	48/11-23320-5CD04155; Thu, 26 Mar 2015 13:46:45 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427377604!13400193!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24146 invoked from network); 26 Mar 2015 13:46:44 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Mar 2015 13:46:44 -0000
Received: by wiaa2 with SMTP id a2so23301435wia.0
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=lZou+xNBa0s0pH3gT6NZnhyxGfyPcbDBBu0V2HNh5Dg=;
	b=Ys42rg83uvV1Y3ChUdzOzmQOjcZrdWUBRVzlsooHoga4lXap2JyLPQLGRE4olQcqRQ
	3Gyv74iJYeunxGM8GaON7wAapHftRsAS6b41HZMvHnPhzp/kfeOm9gutzaC83IcLjxGa
	gDt9KNhH0URIWDUKpzDGEJfGmQk94xHFK/LeLme2w4/6P1+fgAjEo8ijxYz3AuJsJjtl
	wlFrZnT1+dJQ+v7vHRFvHGXpU57XnBHfhuD98RgmktRbwG7VoOrPnTUuruk71DH1t+JU
	sf3COc8p15lf0qZG30eWCTZDKzFnC8VoAE9uq1AF/Yw0mVrqzWWzi36bXjhodUvZFuxn
	mwMg==
X-Received: by 10.194.185.68 with SMTP id fa4mr27547875wjc.111.1427377604610; 
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id i3sm2302592wiy.23.2015.03.26.06.46.43
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 26 Mar 2015 13:46:55 +0000
Message-Id: <1427377615-3096-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix an ASSERT failure and BugCheck on XENBUS
	unload
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The Prcoessor array pointer in the EVTCHN code is not being NULLed, leading
to an ASSERT faiure. There is also a race in zero-ing out the per-processor
DPCs and them being present on kernel queues, which leads to a BugCheck.
This patch fixes both issues.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/evtchn.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 23eb189..a5a3caf 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -1374,6 +1374,7 @@ EvtchnRelease(
 
         EvtchnFlush(Context, Index);
 
+        (VOID) KeRemoveQueueDpc(&Processor->Dpc);
         RtlZeroMemory(&Processor->Dpc, sizeof (KDPC));
         RtlZeroMemory(&Processor->PendingList, sizeof (LIST_ENTRY));
 
@@ -1383,6 +1384,7 @@ EvtchnRelease(
 
     ASSERT(IsZeroMemory(Context->Processor, sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount));
     __EvtchnFree(Context->Processor);
+    Context->Processor = NULL;
     Context->ProcessorCount = 0;
 
     FdoFreeInterrupt(Fdo, Context->Interrupt);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 26 13:46:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 26 Mar 2015 13:46:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Yb87S-0001mE-QF; Thu, 26 Mar 2015 13:46:46 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1Yb87S-0001m5-2q
	for win-pv-devel@lists.xenproject.org; Thu, 26 Mar 2015 13:46:46 +0000
Received: from [193.109.254.147] by server-7.bemta-14.messagelabs.com id
	48/11-23320-5CD04155; Thu, 26 Mar 2015 13:46:45 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427377604!13400193!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24146 invoked from network); 26 Mar 2015 13:46:44 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Mar 2015 13:46:44 -0000
Received: by wiaa2 with SMTP id a2so23301435wia.0
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=lZou+xNBa0s0pH3gT6NZnhyxGfyPcbDBBu0V2HNh5Dg=;
	b=Ys42rg83uvV1Y3ChUdzOzmQOjcZrdWUBRVzlsooHoga4lXap2JyLPQLGRE4olQcqRQ
	3Gyv74iJYeunxGM8GaON7wAapHftRsAS6b41HZMvHnPhzp/kfeOm9gutzaC83IcLjxGa
	gDt9KNhH0URIWDUKpzDGEJfGmQk94xHFK/LeLme2w4/6P1+fgAjEo8ijxYz3AuJsJjtl
	wlFrZnT1+dJQ+v7vHRFvHGXpU57XnBHfhuD98RgmktRbwG7VoOrPnTUuruk71DH1t+JU
	sf3COc8p15lf0qZG30eWCTZDKzFnC8VoAE9uq1AF/Yw0mVrqzWWzi36bXjhodUvZFuxn
	mwMg==
X-Received: by 10.194.185.68 with SMTP id fa4mr27547875wjc.111.1427377604610; 
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id i3sm2302592wiy.23.2015.03.26.06.46.43
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 26 Mar 2015 06:46:44 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 26 Mar 2015 13:46:55 +0000
Message-Id: <1427377615-3096-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Fix an ASSERT failure and BugCheck on XENBUS
	unload
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

The Prcoessor array pointer in the EVTCHN code is not being NULLed, leading
to an ASSERT faiure. There is also a race in zero-ing out the per-processor
DPCs and them being present on kernel queues, which leads to a BugCheck.
This patch fixes both issues.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/evtchn.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 23eb189..a5a3caf 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -1374,6 +1374,7 @@ EvtchnRelease(
 
         EvtchnFlush(Context, Index);
 
+        (VOID) KeRemoveQueueDpc(&Processor->Dpc);
         RtlZeroMemory(&Processor->Dpc, sizeof (KDPC));
         RtlZeroMemory(&Processor->PendingList, sizeof (LIST_ENTRY));
 
@@ -1383,6 +1384,7 @@ EvtchnRelease(
 
     ASSERT(IsZeroMemory(Context->Processor, sizeof (XENBUS_EVTCHN_PROCESSOR) * Context->ProcessorCount));
     __EvtchnFree(Context->Processor);
+    Context->Processor = NULL;
     Context->ProcessorCount = 0;
 
     FdoFreeInterrupt(Fdo, Context->Interrupt);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 26 13:47:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 26 Mar 2015 13:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Yb88d-0001t9-R9; Thu, 26 Mar 2015 13:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1Yb88c-0001t0-LL
	for win-pv-devel@lists.xenproject.org; Thu, 26 Mar 2015 13:47:58 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
	6D/66-14870-D0E04155; Thu, 26 Mar 2015 13:47:57 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427377676!13400613!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3288 invoked from network); 26 Mar 2015 13:47:56 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Mar 2015 13:47:56 -0000
Received: by wgra20 with SMTP id a20so64675356wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 26 Mar 2015 06:47:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=iBQU5O0oCeSpGK/rOJNwIo36lMvD4h7C+/RlDMh41z8=;
	b=rh0Nu9Qu62tqpXlbPAjr4w5IoPHRRdbwUMBzUXrDk0X4tj/AY4xKgDdoNb0cM/M6YK
	qcxo9MwD2rANjLu0DSsFdI1PQWVoWhynwU8Icz5I6EW9Lm3Bp0TizqLM/gAH3Gv7531E
	0mQhdGUbeX3wlGnrUSMLmbH4nZrBjt43rAJqV5Jl/BQS0ZPU9388mLZg1pzpkLyb/zb/
	UrOQV7W2Bs1qDYf9JjOMB6RUBdYr01q4n1FLQYMsYX6pwnXf2esCb0RTE/NxH4XuhqFP
	mCOrd+DHyH2+fuOb8pttQsE5UddICTGm54Lu9pEptICvHzjAMfKGFVOCISjM0iSfrRIx
	FBfQ==
X-Received: by 10.180.87.66 with SMTP id v2mr46107441wiz.51.1427377676266;
	Thu, 26 Mar 2015 06:47:56 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id j9sm8488150wjy.18.2015.03.26.06.47.55
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 26 Mar 2015 06:47:55 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 26 Mar 2015 13:48:09 +0000
Message-Id: <1427377689-7716-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Don't use a stack based DPC structure in the
	System per-CPU code
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Whilst this is believed to be safe, there is no documentation to say that
Windows does not make use of the DPC structure after the DPC routine has
completed. Instead, make the DPC structure part of the per-CPU structure.

Also fix an ASSERT on the per-CPU array pointer not being NULLed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xen/system.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/xen/system.c b/src/xen/system.c
index a602d8b..f7be963 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -49,6 +49,7 @@
 #define XEN_SYSTEM_TAG  'TSYS'
 
 typedef struct _SYSTEM_PROCESSOR {
+    KDPC    Dpc;
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
@@ -343,7 +344,7 @@ SystemProcessorInformation(
     )
 {
     PSYSTEM_CONTEXT     Context = &SystemContext;
-    PKEVENT             Event = _Context;
+    PKEVENT             Event = Argument1;
     ULONG               Index;
     PROCESSOR_NUMBER    ProcNumber;
     PSYSTEM_PROCESSOR   Processor;
@@ -352,7 +353,7 @@ SystemProcessorInformation(
     ULONG               EDX;
 
     UNREFERENCED_PARAMETER(Dpc);
-    UNREFERENCED_PARAMETER(Argument1);
+    UNREFERENCED_PARAMETER(_Context);
     UNREFERENCED_PARAMETER(Argument2);
 
     Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
@@ -438,18 +439,20 @@ SystemProcessorChangeCallback(
         break;
     }
     case KeProcessorAddCompleteNotify: {
+        PSYSTEM_PROCESSOR   Processor;
         KEVENT              Event;
-        KDPC                Dpc;
 
         ASSERT3U(Index, <, Context->ProcessorCount);
 
+        Processor = &Context->Processor[Index];
+
         KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeDpc(&Dpc, SystemProcessorInformation, &Event);
-        KeSetImportanceDpc(&Dpc, HighImportance);
-        KeSetTargetProcessorDpcEx(&Dpc, &ProcNumber);
+        KeInitializeDpc(&Processor->Dpc, SystemProcessorInformation, NULL);
+        KeSetImportanceDpc(&Processor->Dpc, HighImportance);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
 
-        KeInsertQueueDpc(&Dpc, NULL, NULL);
+        KeInsertQueueDpc(&Processor->Dpc, &Event, NULL);
 
         (VOID) KeWaitForSingleObject(&Event,
                                      Executive,
@@ -507,6 +510,7 @@ SystemDeregisterProcessorChangeCallback(
     Context->ProcessorChangeHandle = NULL;
 
     __SystemFree(Context->Processor);
+    Context->Processor = NULL;
     Context->ProcessorCount = 0;
 }
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 26 13:47:59 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 26 Mar 2015 13:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Yb88d-0001t9-R9; Thu, 26 Mar 2015 13:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1Yb88c-0001t0-LL
	for win-pv-devel@lists.xenproject.org; Thu, 26 Mar 2015 13:47:58 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
	6D/66-14870-D0E04155; Thu, 26 Mar 2015 13:47:57 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1427377676!13400613!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3288 invoked from network); 26 Mar 2015 13:47:56 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-4.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Mar 2015 13:47:56 -0000
Received: by wgra20 with SMTP id a20so64675356wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 26 Mar 2015 06:47:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=iBQU5O0oCeSpGK/rOJNwIo36lMvD4h7C+/RlDMh41z8=;
	b=rh0Nu9Qu62tqpXlbPAjr4w5IoPHRRdbwUMBzUXrDk0X4tj/AY4xKgDdoNb0cM/M6YK
	qcxo9MwD2rANjLu0DSsFdI1PQWVoWhynwU8Icz5I6EW9Lm3Bp0TizqLM/gAH3Gv7531E
	0mQhdGUbeX3wlGnrUSMLmbH4nZrBjt43rAJqV5Jl/BQS0ZPU9388mLZg1pzpkLyb/zb/
	UrOQV7W2Bs1qDYf9JjOMB6RUBdYr01q4n1FLQYMsYX6pwnXf2esCb0RTE/NxH4XuhqFP
	mCOrd+DHyH2+fuOb8pttQsE5UddICTGm54Lu9pEptICvHzjAMfKGFVOCISjM0iSfrRIx
	FBfQ==
X-Received: by 10.180.87.66 with SMTP id v2mr46107441wiz.51.1427377676266;
	Thu, 26 Mar 2015 06:47:56 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id j9sm8488150wjy.18.2015.03.26.06.47.55
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Thu, 26 Mar 2015 06:47:55 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Thu, 26 Mar 2015 13:48:09 +0000
Message-Id: <1427377689-7716-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Don't use a stack based DPC structure in the
	System per-CPU code
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Whilst this is believed to be safe, there is no documentation to say that
Windows does not make use of the DPC structure after the DPC routine has
completed. Instead, make the DPC structure part of the per-CPU structure.

Also fix an ASSERT on the per-CPU array pointer not being NULLed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xen/system.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/xen/system.c b/src/xen/system.c
index a602d8b..f7be963 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -49,6 +49,7 @@
 #define XEN_SYSTEM_TAG  'TSYS'
 
 typedef struct _SYSTEM_PROCESSOR {
+    KDPC    Dpc;
     CHAR    Manufacturer[13];
     UCHAR   ApicID;
     UCHAR   ProcessorID;
@@ -343,7 +344,7 @@ SystemProcessorInformation(
     )
 {
     PSYSTEM_CONTEXT     Context = &SystemContext;
-    PKEVENT             Event = _Context;
+    PKEVENT             Event = Argument1;
     ULONG               Index;
     PROCESSOR_NUMBER    ProcNumber;
     PSYSTEM_PROCESSOR   Processor;
@@ -352,7 +353,7 @@ SystemProcessorInformation(
     ULONG               EDX;
 
     UNREFERENCED_PARAMETER(Dpc);
-    UNREFERENCED_PARAMETER(Argument1);
+    UNREFERENCED_PARAMETER(_Context);
     UNREFERENCED_PARAMETER(Argument2);
 
     Index = KeGetCurrentProcessorNumberEx(&ProcNumber);
@@ -438,18 +439,20 @@ SystemProcessorChangeCallback(
         break;
     }
     case KeProcessorAddCompleteNotify: {
+        PSYSTEM_PROCESSOR   Processor;
         KEVENT              Event;
-        KDPC                Dpc;
 
         ASSERT3U(Index, <, Context->ProcessorCount);
 
+        Processor = &Context->Processor[Index];
+
         KeInitializeEvent(&Event, NotificationEvent, FALSE);
 
-        KeInitializeDpc(&Dpc, SystemProcessorInformation, &Event);
-        KeSetImportanceDpc(&Dpc, HighImportance);
-        KeSetTargetProcessorDpcEx(&Dpc, &ProcNumber);
+        KeInitializeDpc(&Processor->Dpc, SystemProcessorInformation, NULL);
+        KeSetImportanceDpc(&Processor->Dpc, HighImportance);
+        KeSetTargetProcessorDpcEx(&Processor->Dpc, &ProcNumber);
 
-        KeInsertQueueDpc(&Dpc, NULL, NULL);
+        KeInsertQueueDpc(&Processor->Dpc, &Event, NULL);
 
         (VOID) KeWaitForSingleObject(&Event,
                                      Executive,
@@ -507,6 +510,7 @@ SystemDeregisterProcessorChangeCallback(
     Context->ProcessorChangeHandle = NULL;
 
     __SystemFree(Context->Processor);
+    Context->Processor = NULL;
     Context->ProcessorCount = 0;
 }
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 27 14:29:07 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 27 Mar 2015 14:29:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YbVFz-000295-83; Fri, 27 Mar 2015 14:29:07 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YbVFx-00028M-9v
	for win-pv-devel@lists.xenproject.org; Fri, 27 Mar 2015 14:29:05 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	B8/82-26324-03965155; Fri, 27 Mar 2015 14:29:04 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427466542!11583406!1
X-Originating-IP: [74.125.82.53]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17151 invoked from network); 27 Mar 2015 14:29:02 -0000
Received: from mail-wg0-f53.google.com (HELO mail-wg0-f53.google.com)
	(74.125.82.53)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	27 Mar 2015 14:29:02 -0000
Received: by wgra20 with SMTP id a20so100892683wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 27 Mar 2015 07:29:02 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=mWMRTjMQ0ai/7+M+1R9suuw1gNhVwKp0O8B9eEarw/E=;
	b=Mbi2M8hAMAVR92Kjl82K4IdQrlY51CIIrNc7ABn2rhH7r02mcsFKLfkxNSIJlHPpyq
	P993fyNw0OFMRyCm/8u8UuXJ2HvEVrR1CFz6C3ffS9InlcYh7kQgr5YopkM0xp4J/3Kp
	KXTmw1SBjcLe5tDpcHMPPJJ2b86ZTkkQ4IYWfL6wwdBc3GiWN8K+/re8ypDfaas0ANS8
	P0zqzewyX9EbuZqd8Bm7mGWu7DgkD6AptIAl5xvGCQn80bFyYPJUACaKN14n+B7wSTwC
	anO+1bc3CRRdO4ogb/IPTe9nAwV8tzqHoJUuBbnMLOVMZCkpIeaimQ7nLdG1hbZ22hkf
	9DvQ==
X-Gm-Message-State: ALoCoQnJ3FCYjJhLh3qUqTHBOCALgMF5vRieM5uc29TjRCuo2GdjNHJ+kFZLS7Zf3uzWv1v1HkoL
X-Received: by 10.180.240.172 with SMTP id wb12mr35315636wic.55.1427466541891; 
	Fri, 27 Mar 2015 07:29:01 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id 17sm3057989wjt.45.2015.03.27.07.28.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 27 Mar 2015 07:29:01 -0700 (PDT)
Message-ID: <55156935.80702@m2r.biz>
Date: Fri, 27 Mar 2015 15:29:09 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7837832806259307854=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7837832806259307854==
Content-Type: multipart/alternative;
 boundary="------------090405000206090007050003"

This is a multi-part message in MIME format.
--------------090405000206090007050003
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 12631
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
> Sounds like your VM is missing something pretty vital then unfortunately.
>
> Paul
>

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv 
drivers, I think that anyone can improve it and in future probably can 
be also added to wiki.

About regression reported some days ago seems solved with latest build 
and I not found other critical/important bugs for now, thanks.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------090405000206090007050003
Content-Type: text/html; charset=windows-1252
Content-Length: 80482
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 16:07, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06644.59765180">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Sounds like your VM is
              missing something pretty vital then unfortunately.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I probably found a solution, I did some tests successfull.<br>
    Here a readme with some notes about new winpv drivers based on my
    tests:<br>
    <a class=3D"moz-txt-link-freetext" href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
    Probably can be useful for other users that wants tests new winpv
    drivers, I think that anyone can improve it and in future probably
    can be also added to wiki.<br>
    <br>
    About regression reported some days ago seems solved with latest
    build and I not found other critical/important bugs for now, thanks.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 15:01<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">No,
                  that looks ok. You should not need to do anything
                  magic to re-enable the emulated IDE; the driver should
                  already be there. Can you boot up in safe mode=3F</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I tried also safe mode but was still unable to start.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 14:30<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                    for the logs. The processor-group-awareness patch
                    did introduce a couple of problems in to XENVIF. I
                    just posted a couple of patches that should
                    hopefully fix these. I=92ll apply them later if no-one
                    shouts so there should be a new build by the end of
                    the day.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Thanks.<br>
                </span></font><span class=3D"hps"><span
                  style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;"> I tried to do a batch for remove pv
                drivers things that remain after uninstall all from
                control panel.<br>
                Instead remove the registry keys about services I
                removed them with sc command that also delete registry
                keys and the files about but after reboot I had always
                blue screen with 7B without nothing in logs, no minidump
                and also with xen_platform_pci=3D0<br>
                <br>
                I did the following commands:<br
                  style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--></span><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">net stop xenlite<br>
                  sc delete xenlite<br>
                  DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                  sc delete xeniface<br>
                  DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                  sc delete xendisk<br>
                  DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                  sc delete xennet<br>
                  DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                  sc delete xenvbd<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                  sc delete XENVIF<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                  sc delete XENFILT<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                  sc delete XENBUS<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I did something wrong or missed=3F<br>
                  Is needed to add/change registry key about disk
                  controller standard to have emulated qemu controller
                  working=3F<br>
                  I remember something similar with xp changing disk
                  controller but I not found exact reg key to add in
                  windows 7 about with a fast search.<br>
                  <br>
                  Thanks for any reply.<br>
                  <br>
                  <br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 10:23<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 20/03/2015
                      11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                      for the delay, I missed this=85</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                      fairly easy=85 The service keys are named the same
                      as the driver, so go look in
                      HKLM/CurrentControlSet/Services and find all the
                      things starting with XEN and then either get rid
                      of them or set the StartType value to 4
                      (disabled).</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Thanks for reply, I'll try to do a bat script for
                    remove all files and registry keys of pv drivers and
                    I'll post it for help also other people having
                    problems about.<br>
                    <br>
                    Today after updating pv drivers to latest build I
                    had blue screen after reboot windows, seems about
                    xenvif.<br>
                    In attachments qemu log and crash minidump.<br>
                    <br>
                    Thanks for any reply and sorry for my bad english.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          17 March 2015 09:00<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        16/03/2015 18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Windows driver removal is a black art and
                        is broken in different ways on different
                        versions of Windows. As you correctly observe,
                        using the pnputil tool does not actually remove
                        the drivers, and hence you=92ll see
                        DllInitialize() and DriverEntry() functions
                        called *<b><span style=3D"font-weight:bold">but</span></b>*
                        there should be no AddDevice() called i.e. the
                        drivers are unbound from the devices but the
                        modules are still present.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>If you also want to stop the driver
                        modules from loading then you need to remove the
                        service keys from the registry, which you should
                        be able to safely do after the reboot. If you
                        just remove the binaries from system32 then you
                        may well end up in a situation where the
                        registry is telling the system to load a driver
                        but, when it looks, the binary has gone.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Can you tell me which ones registry keys I must
                      delete with the manually remove of remaining pv
                      drivers in system32 without cause problems please=3F<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            16 March 2015 15:25<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 11/03/2015
                          16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                          a look in
                          C:\Windows\System32\DriverStore\FileRepository.
                          If you still have packages for old drivers in
                          here then Windows can find them and re-install
                          them even if you think you=92ve uninstalled. The
                          correct way to remove packages is using
                          =91pnputil =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        I removed all pv drivers visible in windows
                        control panel, after I removed with "pnputil -f
                        -d" all remaining drivers found with "pnputil
                        /e" and rebooted.<br>
                        Now still load latest xenbus (visible from qemu
                        log) and network is not available even if
                        .../FileRepository folder don't have other xen's
                        drivers.<br>
                        I tried a search and I found there are still all
                        pv drivers files in C:\windows\system32 and
                        C:\windows\system32\drivers<br>
                        I removed also these files and rebooted and now
                        didn't load pv drivers, emulated network is
                        working and seems ok.<br>
                        Previous week tests instead gave me windows blue
                        screen "registry error" 1 minute after windows
                        boot.<br>
                        <br>
                        Is there another way to clean uninstall all
                        drivers without risk of problems=3F<br>
                        <br>
                        Thanks for any reply and sorry for my bad
                        english.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              11 March 2015 15:39<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 11/03/2015
                            16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                            you tried uninstalling all versions of
                            XENVIF and XENNET and then re-installing the
                            latest=3F Windows should always prefer the
                            newest driver by date but maybe something
                            has gone wrong and for some reason is
                            favouring a really old version you have
                            lying around in DriverStore.</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          Yes, I already uninstalled all old drivers
                          build of all component 3 tests ago, rebooted
                          windows and after installed the new build but
                          seems olders xenvif and xennet still remained
                          even if not visible in control center and
                          always on new xenvif and xennet install give
                          me "ready to use" instead of "device updated"
                          message at end.<br>
                          The only other way I know to delete the
                          drivers is search the files in c:/windows/...
                          but I tried time ago with other things gave me
                          always blue screen on next boot, so I not
                          tried with pv.<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                          RangeSetPop error is not anything to worry
                          about. It is expected. It simply means the
                          grant table has run out of space and needs to
                          be expanded, which is why you see the error
                          immediately followed by a map and populate of
                          the next grant table page.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                11 March 2015 15:17<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Cc:</span></b>
                                Paul Durrant<br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">As I reported time
                            ago there was strange thing when update
                            network components: give "ready to use"
                            instead of "device updated" message at end
                            of driver component install.<br>
                            Today I saw in qemu log of one W7 pro 64 bit
                            domU this:<br>
                            xen_platform_log xen platform:
                            XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                            (24.09.2014)<br>
                            xen_platform_log xen platform:
                            XENNET|DriverEntry: XENNET 8.0.0 (0)
                            (24.09.2014)<br>
                            <br>
                            Is probably the first build I installed in
                            this domU and that I already uninstall from
                            control center time ago.<br>
                            <br>
                            other components instead seems loaded
                            correctly the latest build installed:<br>
                            xen_platform_log xen platform:
                            XEN|DllInitialize: XEN 8.0.0 (41)
                            (05.03.2015)<br>
                            xen_platform_log xen platform:
                            XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                            (05.03.2015)<br>
                            xen_platform_log xen platform:
                            XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                            (03.03.2015)<br>
                            xen_platform_log xen platform:
                            XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                            <br>
                            ----------<br>
                            <br>
                            I saw also these errors in qemu log:<br>
                            ...<br
                              style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">xen_platform_log
                            xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[1] @
                            00000000.f8002000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000200 - 000003ff]<br>
                            <b><span style=3D"font-weight:bold">xen_platform_log
                                xen platform: XENBUS|RangeSetPop: fail1
                                (c000009a)</span></b><br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[2] @
                            00000000.f8003000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000400 - 000005ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[3] @
                            00000000.f8004000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000600 - 000007ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[4] @
                            00000000.f8005000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000800 - 000009ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[5] @
                            00000000.f8006000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000a00 - 00000bff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[6] @
                            00000000.f8007000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                          color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                            New Roman&quot;">...<br>
                            Can someone tell me something about=3F<br>
                            Can they be related to some failed memory
                            balloning error in dom0's kern.log and
                            syslog=3F<br>
                            <br>
                            Full qemu log in attachment is needed.<br>
                            <br>
                            If you need more informations and/or tests
                            tell me and I'll post them.<br>
                            Thanks for any reply and sorry for my bad
                            english.<br
                              style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span><o:p></o:p></font></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------090405000206090007050003--


--===============7837832806259307854==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7837832806259307854==--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 27 14:29:07 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 27 Mar 2015 14:29:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YbVFz-000295-83; Fri, 27 Mar 2015 14:29:07 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YbVFx-00028M-9v
	for win-pv-devel@lists.xenproject.org; Fri, 27 Mar 2015 14:29:05 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	B8/82-26324-03965155; Fri, 27 Mar 2015 14:29:04 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1427466542!11583406!1
X-Originating-IP: [74.125.82.53]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17151 invoked from network); 27 Mar 2015 14:29:02 -0000
Received: from mail-wg0-f53.google.com (HELO mail-wg0-f53.google.com)
	(74.125.82.53)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	27 Mar 2015 14:29:02 -0000
Received: by wgra20 with SMTP id a20so100892683wgr.3
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 27 Mar 2015 07:29:02 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=mWMRTjMQ0ai/7+M+1R9suuw1gNhVwKp0O8B9eEarw/E=;
	b=Mbi2M8hAMAVR92Kjl82K4IdQrlY51CIIrNc7ABn2rhH7r02mcsFKLfkxNSIJlHPpyq
	P993fyNw0OFMRyCm/8u8UuXJ2HvEVrR1CFz6C3ffS9InlcYh7kQgr5YopkM0xp4J/3Kp
	KXTmw1SBjcLe5tDpcHMPPJJ2b86ZTkkQ4IYWfL6wwdBc3GiWN8K+/re8ypDfaas0ANS8
	P0zqzewyX9EbuZqd8Bm7mGWu7DgkD6AptIAl5xvGCQn80bFyYPJUACaKN14n+B7wSTwC
	anO+1bc3CRRdO4ogb/IPTe9nAwV8tzqHoJUuBbnMLOVMZCkpIeaimQ7nLdG1hbZ22hkf
	9DvQ==
X-Gm-Message-State: ALoCoQnJ3FCYjJhLh3qUqTHBOCALgMF5vRieM5uc29TjRCuo2GdjNHJ+kFZLS7Zf3uzWv1v1HkoL
X-Received: by 10.180.240.172 with SMTP id wb12mr35315636wic.55.1427466541891; 
	Fri, 27 Mar 2015 07:29:01 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id 17sm3057989wjt.45.2015.03.27.07.28.58
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Fri, 27 Mar 2015 07:29:01 -0700 (PDT)
Message-ID: <55156935.80702@m2r.biz>
Date: Fri, 27 Mar 2015 15:29:09 +0100
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7837832806259307854=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============7837832806259307854==
Content-Type: multipart/alternative;
 boundary="------------090405000206090007050003"

This is a multi-part message in MIME format.
--------------090405000206090007050003
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 12631
Content-Transfer-Encoding: quoted-printable

Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
> Sounds like your VM is missing something pretty vital then unfortunately.
>
> Paul
>

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv 
drivers, I think that anyone can improve it and in future probably can 
be also added to wiki.

About regression reported some days ago seems solved with latest build 
and I not found other critical/important bugs for now, thanks.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------090405000206090007050003
Content-Type: text/html; charset=windows-1252
Content-Length: 80482
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 24/03/2015 16:07, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06644.59765180">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Arial Rounded MT Bold";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Sounds like your VM is
              missing something pretty vital then unfortunately.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I probably found a solution, I did some tests successfull.<br>
    Here a readme with some notes about new winpv drivers based on my
    tests:<br>
    <a class=3D"moz-txt-link-freetext" href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
    Probably can be useful for other users that wants tests new winpv
    drivers, I think that anyone can improve it and in future probably
    can be also added to wiki.<br>
    <br>
    About regression reported some days ago seems solved with latest
    build and I not found other critical/important bugs for now, thanks.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    24 March 2015 15:01<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">No,
                  that looks ok. You should not need to do anything
                  magic to re-enable the emulated IDE; the driver should
                  already be there. Can you boot up in safe mode=3F</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I tried also safe mode but was still unable to start.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 14:30<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 12:00, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                    for the logs. The processor-group-awareness patch
                    did introduce a couple of problems in to XENVIF. I
                    just posted a couple of patches that should
                    hopefully fix these. I=92ll apply them later if no-one
                    shouts so there should be a new build by the end of
                    the day.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  Thanks.<br>
                </span></font><span class=3D"hps"><span
                  style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;"> I tried to do a batch for remove pv
                drivers things that remain after uninstall all from
                control panel.<br>
                Instead remove the registry keys about services I
                removed them with sc command that also delete registry
                keys and the files about but after reboot I had always
                blue screen with 7B without nothing in logs, no minidump
                and also with xen_platform_pci=3D0<br>
                <br>
                I did the following commands:<br
                  style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--></span><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">net stop xenlite<br>
                  sc delete xenlite<br>
                  DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                  sc delete xeniface<br>
                  DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                  sc delete xendisk<br>
                  DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                  sc delete xennet<br>
                  DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                  sc delete xenvbd<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                  sc delete XENVIF<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                  sc delete XENFILT<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                  sc delete XENBUS<br>
                  DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I did something wrong or missed=3F<br>
                  Is needed to add/change registry key about disk
                  controller standard to have emulated qemu controller
                  working=3F<br>
                  I remember something similar with xp changing disk
                  controller but I not found exact reg key to add in
                  windows 7 about with a fast search.<br>
                  <br>
                  Thanks for any reply.<br>
                  <br>
                  <br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 10:23<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 20/03/2015
                      11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                      for the delay, I missed this=85</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                      fairly easy=85 The service keys are named the same
                      as the driver, so go look in
                      HKLM/CurrentControlSet/Services and find all the
                      things starting with XEN and then either get rid
                      of them or set the StartType value to 4
                      (disabled).</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Thanks for reply, I'll try to do a bat script for
                    remove all files and registry keys of pv drivers and
                    I'll post it for help also other people having
                    problems about.<br>
                    <br>
                    Today after updating pv drivers to latest build I
                    had blue screen after reboot windows, seems about
                    xenvif.<br>
                    In attachments qemu log and crash minidump.<br>
                    <br>
                    Thanks for any reply and sorry for my bad english.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US">
                          <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                          [<a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                          <b><span style=3D"font-weight:bold">On Behalf Of
                            </span></b>Fabio Fantoni<br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          17 March 2015 09:00<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        16/03/2015 18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Windows driver removal is a black art and
                        is broken in different ways on different
                        versions of Windows. As you correctly observe,
                        using the pnputil tool does not actually remove
                        the drivers, and hence you=92ll see
                        DllInitialize() and DriverEntry() functions
                        called *<b><span style=3D"font-weight:bold">but</span></b>*
                        there should be no AddDevice() called i.e. the
                        drivers are unbound from the devices but the
                        modules are still present.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>If you also want to stop the driver
                        modules from loading then you need to remove the
                        service keys from the registry, which you should
                        be able to safely do after the reboot. If you
                        just remove the binaries from system32 then you
                        may well end up in a situation where the
                        registry is telling the system to load a driver
                        but, when it looks, the binary has gone.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Can you tell me which ones registry keys I must
                      delete with the manually remove of remaining pv
                      drivers in system32 without cause problems please=3F<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            16 March 2015 15:25<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 11/03/2015
                          16:47, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                          a look in
                          C:\Windows\System32\DriverStore\FileRepository.
                          If you still have packages for old drivers in
                          here then Windows can find them and re-install
                          them even if you think you=92ve uninstalled. The
                          correct way to remove packages is using
                          =91pnputil =96d=92 but it=92s a bit clunky.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        I removed all pv drivers visible in windows
                        control panel, after I removed with "pnputil -f
                        -d" all remaining drivers found with "pnputil
                        /e" and rebooted.<br>
                        Now still load latest xenbus (visible from qemu
                        log) and network is not available even if
                        .../FileRepository folder don't have other xen's
                        drivers.<br>
                        I tried a search and I found there are still all
                        pv drivers files in C:\windows\system32 and
                        C:\windows\system32\drivers<br>
                        I removed also these files and rebooted and now
                        didn't load pv drivers, emulated network is
                        working and seems ok.<br>
                        Previous week tests instead gave me windows blue
                        screen "registry error" 1 minute after windows
                        boot.<br>
                        <br>
                        Is there another way to clean uninstall all
                        drivers without risk of problems=3F<br>
                        <br>
                        Thanks for any reply and sorry for my bad
                        english.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              11 March 2015 15:39<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 11/03/2015
                            16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                            you tried uninstalling all versions of
                            XENVIF and XENNET and then re-installing the
                            latest=3F Windows should always prefer the
                            newest driver by date but maybe something
                            has gone wrong and for some reason is
                            favouring a really old version you have
                            lying around in DriverStore.</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          Yes, I already uninstalled all old drivers
                          build of all component 3 tests ago, rebooted
                          windows and after installed the new build but
                          seems olders xenvif and xennet still remained
                          even if not visible in control center and
                          always on new xenvif and xennet install give
                          me "ready to use" instead of "device updated"
                          message at end.<br>
                          The only other way I know to delete the
                          drivers is search the files in c:/windows/...
                          but I tried time ago with other things gave me
                          always blue screen on next boot, so I not
                          tried with pv.<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                          RangeSetPop error is not anything to worry
                          about. It is expected. It simply means the
                          grant table has run out of space and needs to
                          be expanded, which is why you see the error
                          immediately followed by a map and populate of
                          the next grant table page.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                11 March 2015 15:17<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Cc:</span></b>
                                Paul Durrant<br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">As I reported time
                            ago there was strange thing when update
                            network components: give "ready to use"
                            instead of "device updated" message at end
                            of driver component install.<br>
                            Today I saw in qemu log of one W7 pro 64 bit
                            domU this:<br>
                            xen_platform_log xen platform:
                            XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                            (24.09.2014)<br>
                            xen_platform_log xen platform:
                            XENNET|DriverEntry: XENNET 8.0.0 (0)
                            (24.09.2014)<br>
                            <br>
                            Is probably the first build I installed in
                            this domU and that I already uninstall from
                            control center time ago.<br>
                            <br>
                            other components instead seems loaded
                            correctly the latest build installed:<br>
                            xen_platform_log xen platform:
                            XEN|DllInitialize: XEN 8.0.0 (41)
                            (05.03.2015)<br>
                            xen_platform_log xen platform:
                            XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                            (05.03.2015)<br>
                            xen_platform_log xen platform:
                            XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                            (03.03.2015)<br>
                            xen_platform_log xen platform:
                            XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                            <br>
                            ----------<br>
                            <br>
                            I saw also these errors in qemu log:<br>
                            ...<br
                              style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">xen_platform_log
                            xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[1] @
                            00000000.f8002000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000200 - 000003ff]<br>
                            <b><span style=3D"font-weight:bold">xen_platform_log
                                xen platform: XENBUS|RangeSetPop: fail1
                                (c000009a)</span></b><br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[2] @
                            00000000.f8003000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000400 - 000005ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[3] @
                            00000000.f8004000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000600 - 000007ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[4] @
                            00000000.f8005000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000800 - 000009ff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[5] @
                            00000000.f8006000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000a00 - 00000bff]<br>
                            xen_platform_log xen platform:
                            XENBUS|RangeSetPop: fail1 (c000009a)<br>
                            xen_platform_log xen platform: GNTTAB: MAP
                            XENMAPSPACE_grant_table[6] @
                            00000000.f8007000<br>
                            xen_platform_log xen platform:
                            XENBUS|GnttabExpand: added references
                            [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font
                          color=3D"black" face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                            New Roman&quot;">...<br>
                            Can someone tell me something about=3F<br>
                            Can they be related to some failed memory
                            balloning error in dom0's kern.log and
                            syslog=3F<br>
                            <br>
                            Full qemu log in attachment is needed.<br>
                            <br>
                            If you need more informations and/or tests
                            tell me and I'll post them.<br>
                            Thanks for any reply and sorry for my bad
                            english.<br
                              style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span><o:p></o:p></font></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------090405000206090007050003--


--===============7837832806259307854==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============7837832806259307854==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 08:56:38 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 08:56:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcVUs-0004Zx-3b; Mon, 30 Mar 2015 08:56:38 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcVUq-0004Zr-72
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 08:56:36 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
	55/11-05046-3CF09155; Mon, 30 Mar 2015 08:56:35 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-27.messagelabs.com!1427705792!14162216!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25948 invoked from network); 30 Mar 2015 08:56:33 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-10.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 08:56:33 -0000
X-IronPort-AV: E=Sophos;i="5.11,492,1422921600"; d="scan'208,217";a="33155860"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMA==
Date: Mon, 30 Mar 2015 08:56:30 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
In-Reply-To: <55156935.80702@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1228517061925213708=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============1228517061925213708==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for the notes. Perhaps worth a blog entry?

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

 Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.









--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ACF.CB0373C0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog
 entry?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Sounds like your VM is missing something pretty vital
 then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 12:00, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"> I tried to do a batch for remove pv drivers things=
 that remain after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;</span>Pa=
ul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">As I reported time ago there w=
as strange thing when update network components: give &quot;ready to
 use&quot; instead of &quot;device updated&quot; message at end of driver c=
omponent install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">xen_platform_log xen platform:=
 GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_--


--===============1228517061925213708==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1228517061925213708==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 08:56:38 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 08:56:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcVUs-0004Zx-3b; Mon, 30 Mar 2015 08:56:38 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcVUq-0004Zr-72
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 08:56:36 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
	55/11-05046-3CF09155; Mon, 30 Mar 2015 08:56:35 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-27.messagelabs.com!1427705792!14162216!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25948 invoked from network); 30 Mar 2015 08:56:33 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-10.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 08:56:33 -0000
X-IronPort-AV: E=Sophos;i="5.11,492,1422921600"; d="scan'208,217";a="33155860"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMA==
Date: Mon, 30 Mar 2015 08:56:30 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
In-Reply-To: <55156935.80702@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1228517061925213708=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============1228517061925213708==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for the notes. Perhaps worth a blog entry?

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

 Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.









--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ACF.CB0373C0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog
 entry?<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Sounds like your VM is missing something pretty vital
 then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 12:00, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"> I tried to do a batch for remove pv drivers things=
 that remain after uninstall all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 16/03/2015 18:40, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;</span>Pa=
ul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">As I reported time ago there w=
as strange thing when update network components: give &quot;ready to
 use&quot; instead of &quot;device updated&quot; message at end of driver c=
omponent install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">xen_platform_log xen platform:=
 GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5AMSPEX01CL01cit_--


--===============1228517061925213708==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1228517061925213708==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 09:59:06 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 09:59:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcWTK-0004wt-9C; Mon, 30 Mar 2015 09:59:06 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcWTI-0004rh-9K
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 09:59:04 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	25/FA-26324-76E19155; Mon, 30 Mar 2015 09:59:03 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427709540!9788044!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23929 invoked from network); 30 Mar 2015 09:59:00 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 09:59:00 -0000
Received: by wgbdm7 with SMTP id dm7so61461790wgb.1
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 02:59:00 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=mSZROGCMHN9BGWg8pn3Pjn8lXQpzlvgFOwF1Sf2OiNk=;
	b=RiqNxuNOtWGSgK19m2dPJpRpF4VmfWxriElJcHwFneVfQVs0vWlzo/CUQNYLD1UxaM
	72lsIvqZatMpAcORqL1i4gs3k+Ljm+fDcT3aOiqVhuNFMTtI7Wg0l5QMIBskZek3cY4/
	6540+TwAKKa0ZW4uuoA8LhEAmBjqgpdlKsdtKJFWDqCB581QO3Rue86hMDLpjNaGaeR0
	x5OMbhrDnhXZ9Qn3a52nsF9Jev7KYtq2aXRuYbKEvIIXRnYZcvYvETlLSs+7SFLDRKlM
	bodR/z+gv9UoO3iYWPEJUk/J2t5QGt8VxPCULGBWdOU+gjMCUaUBLTvFpbh5CUXON4Tt
	wrHQ==
X-Gm-Message-State: ALoCoQnJc4KObPnxSH/X/wwvof/y6p1vWVaPaw0Uidl70SEhPhffM5TyKSQRIWZxSYPZM90SpTr7
X-Received: by 10.180.80.164 with SMTP id s4mr10129013wix.63.1427709540228;
	Mon, 30 Mar 2015 02:59:00 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	fy2sm15570479wic.15.2015.03.30.02.58.56
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 02:58:59 -0700 (PDT)
Message-ID: <55191E5D.8010702@m2r.biz>
Date: Mon, 30 Mar 2015 11:58:53 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1368060636429992527=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============1368060636429992527==
Content-Type: multipart/alternative;
 boundary="------------030806070103030209060007"

This is a multi-part message in MIME format.
--------------030806070103030209060007
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 13442
Content-Transfer-Encoding: quoted-printable

Il 30/03/2015 10:56, Paul Durrant ha scritto:
>
> Thanks for the notes. Perhaps worth a blog entry=3F
>
> Paul
>

Which blog you mean=3F
If you mean the Xen blog is perhaps useful to inform all on the state of 
winpv drivers with all thenotes about them for anyonewant to help in 
testing and/or development.
But in that case I think other and all possibible informations should be 
added, my notes is short for now and probably my english is bad.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 27 March 2015 14:29
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
>     Sounds like your VM is missing something pretty vital then
>     unfortunately.
>
>     Paul
>
>
> I probably found a solution, I did some tests successfull.
> Here a readme with some notes about new winpv drivers based on my tests:
> http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
> Probably can be useful for other users that wants tests new winpv 
> drivers, I think that anyone can improve it and in future probably can 
> be also added to wiki.
>
> About regression reported some days ago seems solved with latest build 
> and I not found other critical/important bugs for now, thanks.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------030806070103030209060007
Content-Type: text/html; charset=windows-1252
Content-Length: 88466
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 30/03/2015 10:56, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ACF.CB0373C0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Thanks for the notes.
              Perhaps worth a blog entry=3F<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    <span id=3D"result_box" class=3D"short_text" lang=3D"en"><span class=3D"hps">Which
        blog</span> <span class=3D"hps">you mean=3F</span></span><br>
    <span id=3D"result_box" class=3D"" lang=3D"en"><span class=3D"hps">If</span>
      <span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span
        class=3D"hps">Xen blog</span> <span class=3D"hps">is</span> <span
        class=3D"hps">perhaps</span> <span class=3D"hps">useful</span> <span
        class=3D"hps">to inform all</span> <span class=3D"hps">on the state
        of</span> <span class=3D"hps">winpv drivers</span> with all the<span
        class=3D"hps"> notes</span> <span class=3D"hps">about them</span> <span
        class=3D"hps"></span></span><span id=3D"result_box" class=3D""
      lang=3D"en"><span class=3D"hps"><span id=3D"result_box"
          class=3D"short_text" lang=3D"en"><span class=3D"hps">for anyone</span></span></span><span
        class=3D"hps"> want to</span> <span class=3D"hps">help</span> <span
        class=3D"hps">in testing and</span><span class=3D"hps">/</span><span
        class=3D"hps">or development</span><span class=3D"">.</span></span><br>
    But in that case I think other and all possibible informations
    should be added, my notes is short for now and probably my english
    is bad.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    27 March 2015 14:29<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Sounds
                  like your VM is missing something pretty vital then
                  unfortunately.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I probably found a solution, I did some tests
                successfull.<br>
                Here a readme with some notes about new winpv drivers
                based on my tests:<br>
                <a moz-do-not-send=3D"true"
                  href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
                Probably can be useful for other users that wants tests
                new winpv drivers, I think that anyone can improve it
                and in future probably can be also added to wiki.<br>
                <br>
                About regression reported some days ago seems solved
                with latest build and I not found other
                critical/important bugs for now, thanks.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 15:01<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">No,
                    that looks ok. You should not need to do anything
                    magic to re-enable the emulated IDE; the driver
                    should already be there. Can you boot up in safe
                    mode=3F</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I tried also safe mode but was still unable to start.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 14:30<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 24/03/2015
                      12:00, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                      for the logs. The processor-group-awareness patch
                      did introduce a couple of problems in to XENVIF. I
                      just posted a couple of patches that should
                      hopefully fix these. I=92ll apply them later if
                      no-one shouts so there should be a new build by
                      the end of the day.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Thanks.<br>
                  </span></font><span class=3D"hps"><span
                    style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                  style=3D"mso-fareast-font-family:&quot;Times New
                  Roman&quot;"> I tried to do a batch for remove pv
                  drivers things that remain after uninstall all from
                  control panel.<br>
                  Instead remove the registry keys about services I
                  removed them with sc command that also delete registry
                  keys and the files about but after reboot I had always
                  blue screen with 7B without nothing in logs, no
                  minidump and also with xen_platform_pci=3D0<br>
                  <br>
                  I did the following commands:<br
                    style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">net stop xenlite<br>
                    sc delete xenlite<br>
                    DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                    sc delete xeniface<br>
                    DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                    sc delete xendisk<br>
                    DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                    sc delete xennet<br>
                    DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                    sc delete xenvbd<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                    sc delete XENVIF<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                    sc delete XENFILT<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                    sc delete XENBUS<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I did something wrong or missed=3F<br>
                    Is needed to add/change registry key about disk
                    controller standard to have emulated qemu controller
                    working=3F<br>
                    I remember something similar with xp changing disk
                    controller but I not found exact reg key to add in
                    windows 7 about with a fast search.<br>
                    <br>
                    Thanks for any reply.<br>
                    <br>
                    <br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US"> Fabio Fantoni [<a
                            moz-do-not-send=3D"true"
                            href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                          <br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          24 March 2015 10:23<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        20/03/2015 11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                        for the delay, I missed this=85</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                        fairly easy=85 The service keys are named the same
                        as the driver, so go look in
                        HKLM/CurrentControlSet/Services and find all the
                        things starting with XEN and then either get rid
                        of them or set the StartType value to 4
                        (disabled).</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Thanks for reply, I'll try to do a bat script for
                      remove all files and registry keys of pv drivers
                      and I'll post it for help also other people having
                      problems about.<br>
                      <br>
                      Today after updating pv drivers to latest build I
                      had blue screen after reboot windows, seems about
                      xenvif.<br>
                      In attachments qemu log and crash minidump.<br>
                      <br>
                      Thanks for any reply and sorry for my bad english.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            17 March 2015 09:00<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 16/03/2015
                          18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Windows driver removal is a black art
                          and is broken in different ways on different
                          versions of Windows. As you correctly observe,
                          using the pnputil tool does not actually
                          remove the drivers, and hence you=92ll see
                          DllInitialize() and DriverEntry() functions
                          called *<b><span style=3D"font-weight:bold">but</span></b>*
                          there should be no AddDevice() called i.e. the
                          drivers are unbound from the devices but the
                          modules are still present.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>If you also want to stop the driver
                          modules from loading then you need to remove
                          the service keys from the registry, which you
                          should be able to safely do after the reboot.
                          If you just remove the binaries from system32
                          then you may well end up in a situation where
                          the registry is telling the system to load a
                          driver but, when it looks, the binary has
                          gone.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Can you tell me which ones registry keys I must
                        delete with the manually remove of remaining pv
                        drivers in system32 without cause problems
                        please=3F<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              16 March 2015 15:25<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 11/03/2015
                            16:47, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                            a look in
                            C:\Windows\System32\DriverStore\FileRepository.
                            If you still have packages for old drivers
                            in here then Windows can find them and
                            re-install them even if you think you=92ve
                            uninstalled. The correct way to remove
                            packages is using =91pnputil =96d=92 but it=92s a
                            bit clunky.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Paul</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          I removed all pv drivers visible in windows
                          control panel, after I removed with "pnputil
                          -f -d" all remaining drivers found with
                          "pnputil /e" and rebooted.<br>
                          Now still load latest xenbus (visible from
                          qemu log) and network is not available even if
                          .../FileRepository folder don't have other
                          xen's drivers.<br>
                          I tried a search and I found there are still
                          all pv drivers files in C:\windows\system32
                          and C:\windows\system32\drivers<br>
                          I removed also these files and rebooted and
                          now didn't load pv drivers, emulated network
                          is working and seems ok.<br>
                          Previous week tests instead gave me windows
                          blue screen "registry error" 1 minute after
                          windows boot.<br>
                          <br>
                          Is there another way to clean uninstall all
                          drivers without risk of problems=3F<br>
                          <br>
                          Thanks for any reply and sorry for my bad
                          english.<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                11 March 2015 15:39<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                Paul Durrant; <a moz-do-not-send=3D"true"
href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                Re: [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New Roman" size=3D"3"><span
                              style=3D"font-size:12.0pt">Il 11/03/2015
                              16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                      </div>
                      <blockquote
                        style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                              you tried uninstalling all versions of
                              XENVIF and XENNET and then re-installing
                              the latest=3F Windows should always prefer
                              the newest driver by date but maybe
                              something has gone wrong and for some
                              reason is favouring a really old version
                              you have lying around in DriverStore.</span></font><o:p></o:p></p>
                      </blockquote>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;"><br>
                            Yes, I already uninstalled all old drivers
                            build of all component 3 tests ago, rebooted
                            windows and after installed the new build
                            but seems olders xenvif and xennet still
                            remained even if not visible in control
                            center and always on new xenvif and xennet
                            install give me "ready to use" instead of
                            "device updated" message at end.<br>
                            The only other way I know to delete the
                            drivers is search the files in
                            c:/windows/... but I tried time ago with
                            other things gave me always blue screen on
                            next boot, so I not tried with pv.<br>
                            <br style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                            RangeSetPop error is not anything to worry
                            about. It is expected. It simply means the
                            grant table has run out of space and needs
                            to be expanded, which is why you see the
                            error immediately followed by a map and
                            populate of the next grant table page.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0</span>Paul</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <div style=3D"border:none;border-left:solid blue
                        1.5pt;padding:0cm 0cm 0cm 4.0pt">
                        <div>
                          <div style=3D"border:none;border-top:solid
                            #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                            <p class=3D"MsoNormal"
                              style=3D"mso-outline-level:1"><b><font
                                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                    lang=3D"EN-US">From:</span></font></b><font
                                face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                  lang=3D"EN-US">
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                  [<a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                  <b><span style=3D"font-weight:bold">On
                                      Behalf Of </span></b>Fabio
                                  Fantoni<br>
                                  <b><span style=3D"font-weight:bold">Sent:</span></b>
                                  11 March 2015 15:17<br>
                                  <b><span style=3D"font-weight:bold">To:</span></b>
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                    win-pv-devel@lists.xenproject.org</a><br>
                                  <b><span style=3D"font-weight:bold">Cc:</span></b>
                                  Paul Durrant<br>
                                  <b><span style=3D"font-weight:bold">Subject:</span></b>
                                  [win-pv-devel] xenvif xennet don't
                                  update or load correctly and another
                                  error saw in qemu log</span></font><o:p></o:p></p>
                          </div>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">As
                              I reported time ago there was strange
                              thing when update network components: give
                              "ready to use" instead of "device updated"
                              message at end of driver component
                              install.<br>
                              Today I saw in qemu log of one W7 pro 64
                              bit domU this:<br>
                              xen_platform_log xen platform:
                              XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                              (24.09.2014)<br>
                              xen_platform_log xen platform:
                              XENNET|DriverEntry: XENNET 8.0.0 (0)
                              (24.09.2014)<br>
                              <br>
                              Is probably the first build I installed in
                              this domU and that I already uninstall
                              from control center time ago.<br>
                              <br>
                              other components instead seems loaded
                              correctly the latest build installed:<br>
                              xen_platform_log xen platform:
                              XEN|DllInitialize: XEN 8.0.0 (41)
                              (05.03.2015)<br>
                              xen_platform_log xen platform:
                              XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                              (05.03.2015)<br>
                              xen_platform_log xen platform:
                              XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                              (03.03.2015)<br>
                              xen_platform_log xen platform:
                              XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                              <br>
                              ----------<br>
                              <br>
                              I saw also these errors in qemu log:<br>
                              ...<br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">xen_platform_log
                              xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[1] @
                              00000000.f8002000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000200 - 000003ff]<br>
                              <b><span style=3D"font-weight:bold">xen_platform_log
                                  xen platform: XENBUS|RangeSetPop:
                                  fail1 (c000009a)</span></b><br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[2] @
                              00000000.f8003000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000400 - 000005ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[3] @
                              00000000.f8004000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000600 - 000007ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[4] @
                              00000000.f8005000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000800 - 000009ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[5] @
                              00000000.f8006000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000a00 - 00000bff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[6] @
                              00000000.f8007000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"
                          style=3D"margin-bottom:12.0pt"><font
                            color=3D"black" face=3D"Times New Roman"
                            size=3D"3"><span
                              style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                              New Roman&quot;">...<br>
                              Can someone tell me something about=3F<br>
                              Can they be related to some failed memory
                              balloning error in dom0's kern.log and
                              syslog=3F<br>
                              <br>
                              Full qemu log in attachment is needed.<br>
                              <br>
                              If you need more informations and/or tests
                              tell me and I'll post them.<br>
                              Thanks for any reply and sorry for my bad
                              english.<br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span><o:p></o:p></font></p>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------030806070103030209060007--


--===============1368060636429992527==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1368060636429992527==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 09:59:06 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 09:59:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcWTK-0004wt-9C; Mon, 30 Mar 2015 09:59:06 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcWTI-0004rh-9K
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 09:59:04 +0000
Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id
	25/FA-26324-76E19155; Mon, 30 Mar 2015 09:59:03 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-31.messagelabs.com!1427709540!9788044!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 23929 invoked from network); 30 Mar 2015 09:59:00 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-14.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 09:59:00 -0000
Received: by wgbdm7 with SMTP id dm7so61461790wgb.1
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 02:59:00 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=mSZROGCMHN9BGWg8pn3Pjn8lXQpzlvgFOwF1Sf2OiNk=;
	b=RiqNxuNOtWGSgK19m2dPJpRpF4VmfWxriElJcHwFneVfQVs0vWlzo/CUQNYLD1UxaM
	72lsIvqZatMpAcORqL1i4gs3k+Ljm+fDcT3aOiqVhuNFMTtI7Wg0l5QMIBskZek3cY4/
	6540+TwAKKa0ZW4uuoA8LhEAmBjqgpdlKsdtKJFWDqCB581QO3Rue86hMDLpjNaGaeR0
	x5OMbhrDnhXZ9Qn3a52nsF9Jev7KYtq2aXRuYbKEvIIXRnYZcvYvETlLSs+7SFLDRKlM
	bodR/z+gv9UoO3iYWPEJUk/J2t5QGt8VxPCULGBWdOU+gjMCUaUBLTvFpbh5CUXON4Tt
	wrHQ==
X-Gm-Message-State: ALoCoQnJc4KObPnxSH/X/wwvof/y6p1vWVaPaw0Uidl70SEhPhffM5TyKSQRIWZxSYPZM90SpTr7
X-Received: by 10.180.80.164 with SMTP id s4mr10129013wix.63.1427709540228;
	Mon, 30 Mar 2015 02:59:00 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	fy2sm15570479wic.15.2015.03.30.02.58.56
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 02:58:59 -0700 (PDT)
Message-ID: <55191E5D.8010702@m2r.biz>
Date: Mon, 30 Mar 2015 11:58:53 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1368060636429992527=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============1368060636429992527==
Content-Type: multipart/alternative;
 boundary="------------030806070103030209060007"

This is a multi-part message in MIME format.
--------------030806070103030209060007
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 13442
Content-Transfer-Encoding: quoted-printable

Il 30/03/2015 10:56, Paul Durrant ha scritto:
>
> Thanks for the notes. Perhaps worth a blog entry=3F
>
> Paul
>

Which blog you mean=3F
If you mean the Xen blog is perhaps useful to inform all on the state of 
winpv drivers with all thenotes about them for anyonewant to help in 
testing and/or development.
But in that case I think other and all possibible informations should be 
added, my notes is short for now and probably my english is bad.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 27 March 2015 14:29
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
>     Sounds like your VM is missing something pretty vital then
>     unfortunately.
>
>     Paul
>
>
> I probably found a solution, I did some tests successfull.
> Here a readme with some notes about new winpv drivers based on my tests:
> http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
> Probably can be useful for other users that wants tests new winpv 
> drivers, I think that anyone can improve it and in future probably can 
> be also added to wiki.
>
> About regression reported some days ago seems solved with latest build 
> and I not found other critical/important bugs for now, thanks.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------030806070103030209060007
Content-Type: text/html; charset=windows-1252
Content-Length: 88466
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 30/03/2015 10:56, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ACF.CB0373C0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Thanks for the notes.
              Perhaps worth a blog entry=3F<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    <span id=3D"result_box" class=3D"short_text" lang=3D"en"><span class=3D"hps">Which
        blog</span> <span class=3D"hps">you mean=3F</span></span><br>
    <span id=3D"result_box" class=3D"" lang=3D"en"><span class=3D"hps">If</span>
      <span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span
        class=3D"hps">Xen blog</span> <span class=3D"hps">is</span> <span
        class=3D"hps">perhaps</span> <span class=3D"hps">useful</span> <span
        class=3D"hps">to inform all</span> <span class=3D"hps">on the state
        of</span> <span class=3D"hps">winpv drivers</span> with all the<span
        class=3D"hps"> notes</span> <span class=3D"hps">about them</span> <span
        class=3D"hps"></span></span><span id=3D"result_box" class=3D""
      lang=3D"en"><span class=3D"hps"><span id=3D"result_box"
          class=3D"short_text" lang=3D"en"><span class=3D"hps">for anyone</span></span></span><span
        class=3D"hps"> want to</span> <span class=3D"hps">help</span> <span
        class=3D"hps">in testing and</span><span class=3D"hps">/</span><span
        class=3D"hps">or development</span><span class=3D"">.</span></span><br>
    But in that case I think other and all possibible informations
    should be added, my notes is short for now and probably my english
    is bad.<br>
    <br>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    27 March 2015 14:29<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Sounds
                  like your VM is missing something pretty vital then
                  unfortunately.</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
                I probably found a solution, I did some tests
                successfull.<br>
                Here a readme with some notes about new winpv drivers
                based on my tests:<br>
                <a moz-do-not-send=3D"true"
                  href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
                Probably can be useful for other users that wants tests
                new winpv drivers, I think that anyone can improve it
                and in future probably can be also added to wiki.<br>
                <br>
                About regression reported some days ago seems solved
                with latest build and I not found other
                critical/important bugs for now, thanks.<br>
                <br style=3D"mso-special-character:line-break">
                <!--[if !supportLineBreakNewLine]--><br
                  style=3D"mso-special-character:line-break">
                <!--[endif]--><o:p></o:p></span></font></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      24 March 2015 15:01<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 15:41, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">No,
                    that looks ok. You should not need to do anything
                    magic to re-enable the emulated IDE; the driver
                    should already be there. Can you boot up in safe
                    mode=3F</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I tried also safe mode but was still unable to start.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 14:30<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 24/03/2015
                      12:00, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                      for the logs. The processor-group-awareness patch
                      did introduce a couple of problems in to XENVIF. I
                      just posted a couple of patches that should
                      hopefully fix these. I=92ll apply them later if
                      no-one shouts so there should be a new build by
                      the end of the day.</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    Thanks.<br>
                  </span></font><span class=3D"hps"><span
                    style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                  style=3D"mso-fareast-font-family:&quot;Times New
                  Roman&quot;"> I tried to do a batch for remove pv
                  drivers things that remain after uninstall all from
                  control panel.<br>
                  Instead remove the registry keys about services I
                  removed them with sc command that also delete registry
                  keys and the files about but after reboot I had always
                  blue screen with 7B without nothing in logs, no
                  minidump and also with xen_platform_pci=3D0<br>
                  <br>
                  I did the following commands:<br
                    style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">net stop xenlite<br>
                    sc delete xenlite<br>
                    DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                    sc delete xeniface<br>
                    DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                    sc delete xendisk<br>
                    DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                    sc delete xennet<br>
                    DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                    sc delete xenvbd<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                    sc delete XENVIF<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                    sc delete XENFILT<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                    sc delete XENBUS<br>
                    DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I did something wrong or missed=3F<br>
                    Is needed to add/change registry key about disk
                    controller standard to have emulated qemu controller
                    working=3F<br>
                    I remember something similar with xp changing disk
                    controller but I not found exact reg key to add in
                    windows 7 about with a fast search.<br>
                    <br>
                    Thanks for any reply.<br>
                    <br>
                    <br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US"> Fabio Fantoni [<a
                            moz-do-not-send=3D"true"
                            href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                          <br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          24 March 2015 10:23<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        20/03/2015 11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                        for the delay, I missed this=85</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                        fairly easy=85 The service keys are named the same
                        as the driver, so go look in
                        HKLM/CurrentControlSet/Services and find all the
                        things starting with XEN and then either get rid
                        of them or set the StartType value to 4
                        (disabled).</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Thanks for reply, I'll try to do a bat script for
                      remove all files and registry keys of pv drivers
                      and I'll post it for help also other people having
                      problems about.<br>
                      <br>
                      Today after updating pv drivers to latest build I
                      had blue screen after reboot windows, seems about
                      xenvif.<br>
                      In attachments qemu log and crash minidump.<br>
                      <br>
                      Thanks for any reply and sorry for my bad english.<br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US">
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                            [<a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                            <b><span style=3D"font-weight:bold">On Behalf
                                Of </span></b>Fabio Fantoni<br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            17 March 2015 09:00<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 16/03/2015
                          18:40, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Windows driver removal is a black art
                          and is broken in different ways on different
                          versions of Windows. As you correctly observe,
                          using the pnputil tool does not actually
                          remove the drivers, and hence you=92ll see
                          DllInitialize() and DriverEntry() functions
                          called *<b><span style=3D"font-weight:bold">but</span></b>*
                          there should be no AddDevice() called i.e. the
                          drivers are unbound from the devices but the
                          modules are still present.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>If you also want to stop the driver
                          modules from loading then you need to remove
                          the service keys from the registry, which you
                          should be able to safely do after the reboot.
                          If you just remove the binaries from system32
                          then you may well end up in a situation where
                          the registry is telling the system to load a
                          driver but, when it looks, the binary has
                          gone.</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Can you tell me which ones registry keys I must
                        delete with the manually remove of remaining pv
                        drivers in system32 without cause problems
                        please=3F<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              16 March 2015 15:25<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 11/03/2015
                            16:47, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                            a look in
                            C:\Windows\System32\DriverStore\FileRepository.
                            If you still have packages for old drivers
                            in here then Windows can find them and
                            re-install them even if you think you=92ve
                            uninstalled. The correct way to remove
                            packages is using =91pnputil =96d=92 but it=92s a
                            bit clunky.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Paul</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          I removed all pv drivers visible in windows
                          control panel, after I removed with "pnputil
                          -f -d" all remaining drivers found with
                          "pnputil /e" and rebooted.<br>
                          Now still load latest xenbus (visible from
                          qemu log) and network is not available even if
                          .../FileRepository folder don't have other
                          xen's drivers.<br>
                          I tried a search and I found there are still
                          all pv drivers files in C:\windows\system32
                          and C:\windows\system32\drivers<br>
                          I removed also these files and rebooted and
                          now didn't load pv drivers, emulated network
                          is working and seems ok.<br>
                          Previous week tests instead gave me windows
                          blue screen "registry error" 1 minute after
                          windows boot.<br>
                          <br>
                          Is there another way to clean uninstall all
                          drivers without risk of problems=3F<br>
                          <br>
                          Thanks for any reply and sorry for my bad
                          english.<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                11 March 2015 15:39<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                Paul Durrant; <a moz-do-not-send=3D"true"
href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                Re: [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New Roman" size=3D"3"><span
                              style=3D"font-size:12.0pt">Il 11/03/2015
                              16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                      </div>
                      <blockquote
                        style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                              you tried uninstalling all versions of
                              XENVIF and XENNET and then re-installing
                              the latest=3F Windows should always prefer
                              the newest driver by date but maybe
                              something has gone wrong and for some
                              reason is favouring a really old version
                              you have lying around in DriverStore.</span></font><o:p></o:p></p>
                      </blockquote>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;"><br>
                            Yes, I already uninstalled all old drivers
                            build of all component 3 tests ago, rebooted
                            windows and after installed the new build
                            but seems olders xenvif and xennet still
                            remained even if not visible in control
                            center and always on new xenvif and xennet
                            install give me "ready to use" instead of
                            "device updated" message at end.<br>
                            The only other way I know to delete the
                            drivers is search the files in
                            c:/windows/... but I tried time ago with
                            other things gave me always blue screen on
                            next boot, so I not tried with pv.<br>
                            <br style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                            RangeSetPop error is not anything to worry
                            about. It is expected. It simply means the
                            grant table has run out of space and needs
                            to be expanded, which is why you see the
                            error immediately followed by a map and
                            populate of the next grant table page.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0</span>Paul</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <div style=3D"border:none;border-left:solid blue
                        1.5pt;padding:0cm 0cm 0cm 4.0pt">
                        <div>
                          <div style=3D"border:none;border-top:solid
                            #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                            <p class=3D"MsoNormal"
                              style=3D"mso-outline-level:1"><b><font
                                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                    lang=3D"EN-US">From:</span></font></b><font
                                face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                  lang=3D"EN-US">
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                  [<a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                  <b><span style=3D"font-weight:bold">On
                                      Behalf Of </span></b>Fabio
                                  Fantoni<br>
                                  <b><span style=3D"font-weight:bold">Sent:</span></b>
                                  11 March 2015 15:17<br>
                                  <b><span style=3D"font-weight:bold">To:</span></b>
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                    win-pv-devel@lists.xenproject.org</a><br>
                                  <b><span style=3D"font-weight:bold">Cc:</span></b>
                                  Paul Durrant<br>
                                  <b><span style=3D"font-weight:bold">Subject:</span></b>
                                  [win-pv-devel] xenvif xennet don't
                                  update or load correctly and another
                                  error saw in qemu log</span></font><o:p></o:p></p>
                          </div>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">As
                              I reported time ago there was strange
                              thing when update network components: give
                              "ready to use" instead of "device updated"
                              message at end of driver component
                              install.<br>
                              Today I saw in qemu log of one W7 pro 64
                              bit domU this:<br>
                              xen_platform_log xen platform:
                              XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                              (24.09.2014)<br>
                              xen_platform_log xen platform:
                              XENNET|DriverEntry: XENNET 8.0.0 (0)
                              (24.09.2014)<br>
                              <br>
                              Is probably the first build I installed in
                              this domU and that I already uninstall
                              from control center time ago.<br>
                              <br>
                              other components instead seems loaded
                              correctly the latest build installed:<br>
                              xen_platform_log xen platform:
                              XEN|DllInitialize: XEN 8.0.0 (41)
                              (05.03.2015)<br>
                              xen_platform_log xen platform:
                              XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                              (05.03.2015)<br>
                              xen_platform_log xen platform:
                              XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                              (03.03.2015)<br>
                              xen_platform_log xen platform:
                              XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br>
                              <br>
                              ----------<br>
                              <br>
                              I saw also these errors in qemu log:<br>
                              ...<br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">xen_platform_log
                              xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[1] @
                              00000000.f8002000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000200 - 000003ff]<br>
                              <b><span style=3D"font-weight:bold">xen_platform_log
                                  xen platform: XENBUS|RangeSetPop:
                                  fail1 (c000009a)</span></b><br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[2] @
                              00000000.f8003000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000400 - 000005ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[3] @
                              00000000.f8004000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000600 - 000007ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[4] @
                              00000000.f8005000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000800 - 000009ff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[5] @
                              00000000.f8006000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000a00 - 00000bff]<br>
                              xen_platform_log xen platform:
                              XENBUS|RangeSetPop: fail1 (c000009a)<br>
                              xen_platform_log xen platform: GNTTAB: MAP
                              XENMAPSPACE_grant_table[6] @
                              00000000.f8007000<br>
                              xen_platform_log xen platform:
                              XENBUS|GnttabExpand: added references
                              [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"
                          style=3D"margin-bottom:12.0pt"><font
                            color=3D"black" face=3D"Times New Roman"
                            size=3D"3"><span
                              style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                              New Roman&quot;">...<br>
                              Can someone tell me something about=3F<br>
                              Can they be related to some failed memory
                              balloning error in dom0's kern.log and
                              syslog=3F<br>
                              <br>
                              Full qemu log in attachment is needed.<br>
                              <br>
                              If you need more informations and/or tests
                              tell me and I'll post them.<br>
                              Thanks for any reply and sorry for my bad
                              english.<br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span><o:p></o:p></font></p>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------030806070103030209060007--


--===============1368060636429992527==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============1368060636429992527==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 10:17:19 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 10:17:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcWkx-0007zx-E5; Mon, 30 Mar 2015 10:17:19 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcWkv-0007zs-MX
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 10:17:18 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	33/BC-25404-CA229155; Mon, 30 Mar 2015 10:17:16 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1427710633!12524193!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4302 invoked from network); 30 Mar 2015 10:17:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 10:17:13 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208,217";a="33158354"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMP//8GSAAATCDpA=
Date: Mon, 30 Mar 2015 10:17:12 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
In-Reply-To: <55191E5D.8010702@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============6318530226567800006=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============6318530226567800006==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Yes, the XenProject blog was what I was thinking of. It would be good to ha=
ve your perspective on working with the drivers. I'm sure myself, Lars or R=
uss can help with correcting English.

    Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 10:59
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 10:56, Paul Durrant ha scritto:
Thanks for the notes. Perhaps worth a blog entry?

  Paul

Which blog you mean?
If you mean the Xen blog is perhaps useful to inform all on the state of wi=
npv drivers with all the notes about them for anyone want to help in testin=
g and/or development.
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.










--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ADB.118056F0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Yes, the
<span class=3D"SpellE">XenProject</span> blog was what I was thinking of. I=
t would be good to have your perspective on working with the drivers. I&#82=
17;m sure myself, Lars or Russ can help with correcting English.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;&nb=
sp;&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 10:59<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog entry?</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Which blog</spa=
n></span><span class=3D"shorttext"><span lang=3D"EN" style=3D"mso-fareast-f=
ont-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">you mean?</span=
></span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"=
><br>
</span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-font-fami=
ly:&quot;Times New Roman&quot;;mso-ansi-language:EN">If</span></span><span =
lang=3D"EN" style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;;ms=
o-ansi-language:EN">
<span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span cl=
ass=3D"hps">
Xen blog</span> <span class=3D"hps">is</span> <span class=3D"hps">perhaps</=
span> <span class=3D"hps">
useful</span> <span class=3D"hps">to inform all</span> <span class=3D"hps">=
on the state of</span>
<span class=3D"hps">winpv drivers</span> with all the<span class=3D"hps"> n=
otes</span>
<span class=3D"hps">about them</span> <span class=3D"hps">for anyone want t=
o</span> <span class=3D"hps">
help</span> <span class=3D"hps">in testing and/or development</span>.</span=
><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"><br>
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sounds like your VM is missing something pretty =
vital then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 15:41, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span lang=3D"EN" style=3D"mso-fareast-font-=
family:&quot;Times New Roman&quot;">
</span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;">=
I tried to do a batch for remove pv drivers things that remain after uninst=
all all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 16/03/2015 18:40, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">As I reported time ago there was strange thing when update network compon=
ents: give &quot;ready to use&quot; instead of &quot;device updated&quot; m=
essage
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 0=
0000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">&nbsp;</span></font><o:p></o:p=
></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_--


--===============6318530226567800006==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============6318530226567800006==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 10:17:19 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 10:17:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcWkx-0007zx-E5; Mon, 30 Mar 2015 10:17:19 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcWkv-0007zs-MX
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 10:17:18 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	33/BC-25404-CA229155; Mon, 30 Mar 2015 10:17:16 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1427710633!12524193!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4302 invoked from network); 30 Mar 2015 10:17:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 10:17:13 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208,217";a="33158354"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMP//8GSAAATCDpA=
Date: Mon, 30 Mar 2015 10:17:12 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
In-Reply-To: <55191E5D.8010702@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============6318530226567800006=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============6318530226567800006==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Yes, the XenProject blog was what I was thinking of. It would be good to ha=
ve your perspective on working with the drivers. I'm sure myself, Lars or R=
uss can help with correcting English.

    Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 10:59
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 10:56, Paul Durrant ha scritto:
Thanks for the notes. Perhaps worth a blog entry?

  Paul

Which blog you mean?
If you mean the Xen blog is perhaps useful to inform all on the state of wi=
npv drivers with all the notes about them for anyone want to help in testin=
g and/or development.
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.










--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ADB.118056F0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Yes, the
<span class=3D"SpellE">XenProject</span> blog was what I was thinking of. I=
t would be good to have your perspective on working with the drivers. I&#82=
17;m sure myself, Lars or Russ can help with correcting English.<o:p></o:p>=
</span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;&nb=
sp;&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 10:59<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog entry?</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Which blog</spa=
n></span><span class=3D"shorttext"><span lang=3D"EN" style=3D"mso-fareast-f=
ont-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">you mean?</span=
></span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"=
><br>
</span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-font-fami=
ly:&quot;Times New Roman&quot;;mso-ansi-language:EN">If</span></span><span =
lang=3D"EN" style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;;ms=
o-ansi-language:EN">
<span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span cl=
ass=3D"hps">
Xen blog</span> <span class=3D"hps">is</span> <span class=3D"hps">perhaps</=
span> <span class=3D"hps">
useful</span> <span class=3D"hps">to inform all</span> <span class=3D"hps">=
on the state of</span>
<span class=3D"hps">winpv drivers</span> with all the<span class=3D"hps"> n=
otes</span>
<span class=3D"hps">about them</span> <span class=3D"hps">for anyone want t=
o</span> <span class=3D"hps">
help</span> <span class=3D"hps">in testing and/or development</span>.</span=
><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"><br>
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sounds like your VM is missing something pretty =
vital then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 15:41, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span lang=3D"EN" style=3D"mso-fareast-font-=
family:&quot;Times New Roman&quot;">
</span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;">=
I tried to do a batch for remove pv drivers things that remain after uninst=
all all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 20/03/2015 11:22, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 16/03/2015 18:40, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">As I reported time ago there was strange thing when update network compon=
ents: give &quot;ready to use&quot; instead of &quot;device updated&quot; m=
essage
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 0=
0000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">&nbsp;</span></font><o:p></o:p=
></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C07BAMSPEX01CL01cit_--


--===============6318530226567800006==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============6318530226567800006==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 10:38:19 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 10:38:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcX5H-00022L-CM; Mon, 30 Mar 2015 10:38:19 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcX5F-000226-Rd
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 10:38:18 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	F8/3F-23555-99729155; Mon, 30 Mar 2015 10:38:17 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-7.tower-31.messagelabs.com!1427711893!12236452!1
X-Originating-IP: [209.85.212.177]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25668 invoked from network); 30 Mar 2015 10:38:14 -0000
Received: from mail-wi0-f177.google.com (HELO mail-wi0-f177.google.com)
	(209.85.212.177)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 10:38:14 -0000
Received: by wixm2 with SMTP id m2so83235265wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 03:38:13 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=ql1l+gBLzM9ktpFYPizYwMjS9fjEML0mCtGT91+fo9E=;
	b=Y2XV+q6HmbcB4/x601oC57MU/4xpxOLJS3tHEUoYrzvtSsMjh+q0h2ju45LKY9uXBY
	88oNYrbC4+YL4pq6A4bVz+Lv1qBKZsZnK06EgRZVVPF54fKBtsV7j/HuhgK5pY1CNOxR
	9nBAIzBYvK8vhN5KdLDDwmCDle4QFDksAADysONsM3SQL1H2WMlnb0QiN+SzBtFJPTFm
	1RmAMiAz9fBrHCS6Tr2eMCOm9wGd0vXffYtRNVTEr37q/+uE9RtFnJ5twLswuapQb+Lt
	PJF5VMX88U85KEq7tpQvPBRjh2Dg1tCZjOuaVe6WfjWQNuH7IEZw6WAJnWIveGnCWBiG
	HEqw==
X-Gm-Message-State: ALoCoQnHDiNYEmy8czefxaam/HDxqr3ZKuLCe8D1tzUMwWDNLNq9/XVHG/ByiHcc73HJQDce1QSj
X-Received: by 10.194.88.131 with SMTP id bg3mr63530604wjb.119.1427711893378; 
	Mon, 30 Mar 2015 03:38:13 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id d9sm15093416wib.20.2015.03.30.03.38.08
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 03:38:12 -0700 (PDT)
Message-ID: <5519278F.3030103@m2r.biz>
Date: Mon, 30 Mar 2015 12:38:07 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8088677819436056907=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============8088677819436056907==
Content-Type: multipart/alternative;
 boundary="------------020105010707080600070902"

This is a multi-part message in MIME format.
--------------020105010707080600070902
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 14734
Content-Transfer-Encoding: quoted-printable

Il 30/03/2015 12:17, Paul Durrant ha scritto:
>
> Yes, the XenProject blog was what I was thinking of. It would be good 
> to have your perspective on working with the drivers. I=92m sure myself, 
> Lars or Russ can help with correcting English.
>
> Paul
>

I think that this project is very good but need more people that help 
with testing it, reporting bugs, and possibly help with documentation, 
development etc.
I'm trying to help much as I can with testing, bug reporting and small 
documentations but I don't think I have the skills/knowledge/time for 
other :(
Another things I think are good are:
merging it with xenserver one, both opensource but this seems "only a 
fork" now
prepare for first stable version for release of xen 4.6 if possible
official builds with drivers signed if possible (at least stable builds)
And then it would be great to have alsobugfix-onlybuilds later during 
the development of new versions.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 30 March 2015 10:59
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 30/03/2015 10:56, Paul Durrant ha scritto:
>
>     Thanks for the notes. Perhaps worth a blog entry=3F
>
>     Paul
>
>
> Which blogyou mean=3F
> Ifyou mean the Xen blog is perhaps useful to inform all on the state 
> of winpv drivers with all thenotes about them for anyone want to help 
> in testing and/or development.
> But in that case I think other and all possibible informations should 
> be added, my notes is short for now and probably my english is bad.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 27 March 2015 14:29
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
>     Sounds like your VM is missing something pretty vital then
>     unfortunately.
>
>     Paul
>
>
> I probably found a solution, I did some tests successfull.
> Here a readme with some notes about new winpv drivers based on my tests:
> http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
> Probably can be useful for other users that wants tests new winpv 
> drivers, I think that anyone can improve it and in future probably can 
> be also added to wiki.
>
> About regression reported some days ago seems solved with latest build 
> and I not found other critical/important bugs for now, thanks.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020105010707080600070902
Content-Type: text/html; charset=windows-1252
Content-Length: 97961
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 30/03/2015 12:17, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ADB.118056F0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Yes, the
              <span class=3D"SpellE">XenProject</span> blog was what I was
              thinking of. It would be good to have your perspective on
              working with the drivers. I=92m sure myself, Lars or Russ
              can help with correcting English.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0=A0=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I think that this project is very good but need more people that
    help with testing it, reporting bugs, <span id=3D"result_box"
      class=3D"" lang=3D"en"><span class=3D"hps">and possibly</span> <span
        class=3D"hps">help</span> <span class=3D"hps">with</span> <span
        class=3D"hps">documentation, development</span> <span class=3D"hps">etc.<br>
        I'm trying to help much as I can with testing, bug reporting and
        small documentations but </span></span><span id=3D"result_box"
      class=3D"" lang=3D"en"><span class=3D"hps">I don't think</span> <span
        class=3D"hps">I have the skills</span><span class=3D"hps">/</span><span
        class=3D"hps">knowledge</span><span class=3D"hps">/</span><span
        class=3D"hps">time for other :(<br>
        Another things I think are good are:<br>
        merging it with xenserver one, both opensource but this seems
        "only a fork" now<br>
        prepare for first stable version for release of xen 4.6 if
        possible<br>
        official builds with drivers signed if possible (at least stable
        builds)<br>
        And </span></span><span id=3D"result_box" class=3D"" lang=3D"en"><span
        class=3D"hps"><span id=3D"result_box" class=3D"" lang=3D"en"><span
            class=3D"hps">then</span> <span class=3D"hps">it would be</span>
          <span class=3D"hps">great</span> <span class=3D"hps">to have</span>
          <span class=3D"hps">also</span><span class=3D"hps"></span> <span
            class=3D"hps">bugfix</span><span>-only</span></span></span></span><span
      id=3D"result_box" class=3D"" lang=3D"en"><span class=3D"hps"><span
          id=3D"result_box" class=3D"" lang=3D"en"><span><span id=3D"result_box"
              class=3D"" lang=3D"en"><span class=3D"hps"><span id=3D"result_box"
                  class=3D"" lang=3D"en"> <span class=3D"hps">builds</span></span></span></span></span>
          <span class=3D"hps">later during</span> <span class=3D"hps">the
            development of new</span> <span class=3D"hps">versions.<br>
            <br>
          </span></span></span></span>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    30 March 2015 10:59<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Thanks
                  for the notes. Perhaps worth a blog entry=3F</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
              </span></font><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">Which blog</span></span><span
              class=3D"shorttext"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">
              </span></span><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">you mean=3F</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"><br>
            </span><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">If</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;;mso-ansi-language:EN" lang=3D"EN">
              <span class=3D"hps">you mean</span> <span class=3D"hps">the</span>
              <span class=3D"hps">
                Xen blog</span> <span class=3D"hps">is</span> <span
                class=3D"hps">perhaps</span> <span class=3D"hps">
                useful</span> <span class=3D"hps">to inform all</span> <span
                class=3D"hps">on the state of</span>
              <span class=3D"hps">winpv drivers</span> with all the<span
                class=3D"hps"> notes</span>
              <span class=3D"hps">about them</span> <span class=3D"hps">for
                anyone want to</span> <span class=3D"hps">
                help</span> <span class=3D"hps">in testing and/or
                development</span>.</span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"><br>
              But in that case I think other and all possibible
              informations should be added, my notes is short for now
              and probably my english is bad.<br>
              <br style=3D"mso-special-character:line-break">
              <!--[if !supportLineBreakNewLine]--><br
                style=3D"mso-special-character:line-break">
              <!--[endif]--><o:p></o:p></span></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      27 March 2015 14:29<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sounds
                    like your VM is missing something pretty vital then
                    unfortunately.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I probably found a solution, I did some tests
                  successfull.<br>
                  Here a readme with some notes about new winpv drivers
                  based on my tests:<br>
                  <a moz-do-not-send=3D"true"
                    href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
                  Probably can be useful for other users that wants
                  tests new winpv drivers, I think that anyone can
                  improve it and in future probably can be also added to
                  wiki.<br>
                  <br>
                  About regression reported some days ago seems solved
                  with latest build and I not found other
                  critical/important bugs for now, thanks.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 15:01<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 24/03/2015
                      15:41, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">No,
                      that looks ok. You should not need to do anything
                      magic to re-enable the emulated IDE; the driver
                      should already be there. Can you boot up in safe
                      mode=3F</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I tried also safe mode but was still unable to
                    start.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US"> Fabio Fantoni [<a
                            moz-do-not-send=3D"true"
                            href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                          <br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          24 March 2015 14:30<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        24/03/2015 12:00, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                        for the logs. The processor-group-awareness
                        patch did introduce a couple of problems in to
                        XENVIF. I just posted a couple of patches that
                        should hopefully fix these. I=92ll apply them
                        later if no-one shouts so there should be a new
                        build by the end of the day.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Thanks.<br>
                    </span></font><span class=3D"hps"><span
                      style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                    style=3D"mso-fareast-font-family:&quot;Times New
                    Roman&quot;" lang=3D"EN">
                  </span><span
                    style=3D"mso-fareast-font-family:&quot;Times New
                    Roman&quot;">I tried to do a batch for remove pv
                    drivers things that remain after uninstall all from
                    control panel.<br>
                    Instead remove the registry keys about services I
                    removed them with sc command that also delete
                    registry keys and the files about but after reboot I
                    had always blue screen with 7B without nothing in
                    logs, no minidump and also with xen_platform_pci=3D0<br>
                    <br>
                    I did the following commands:<br
                      style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">net stop
                      xenlite<br>
                      sc delete xenlite<br>
                      DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                      sc delete xeniface<br>
                      DEL /q
                      "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                      sc delete xendisk<br>
                      DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                      sc delete xennet<br>
                      DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                      sc delete xenvbd<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                      sc delete XENVIF<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                      sc delete XENFILT<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                      sc delete XENBUS<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      I did something wrong or missed=3F<br>
                      Is needed to add/change registry key about disk
                      controller standard to have emulated qemu
                      controller working=3F<br>
                      I remember something similar with xp changing disk
                      controller but I not found exact reg key to add in
                      windows 7 about with a fast search.<br>
                      <br>
                      Thanks for any reply.<br>
                      <br>
                      <br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US"> Fabio Fantoni [<a
                              moz-do-not-send=3D"true"
                              href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                            <br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            24 March 2015 10:23<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 20/03/2015
                          11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                          for the delay, I missed this=85</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                          fairly easy=85 The service keys are named the
                          same as the driver, so go look in
                          HKLM/CurrentControlSet/Services and find all
                          the things starting with XEN and then either
                          get rid of them or set the StartType value to
                          4 (disabled).</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Thanks for reply, I'll try to do a bat script
                        for remove all files and registry keys of pv
                        drivers and I'll post it for help also other
                        people having problems about.<br>
                        <br>
                        Today after updating pv drivers to latest build
                        I had blue screen after reboot windows, seems
                        about xenvif.<br>
                        In attachments qemu log and crash minidump.<br>
                        <br>
                        Thanks for any reply and sorry for my bad
                        english.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              17 March 2015 09:00<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 16/03/2015
                            18:40, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Windows driver removal is a black art
                            and is broken in different ways on different
                            versions of Windows. As you correctly
                            observe, using the pnputil tool does not
                            actually remove the drivers, and hence
                            you=92ll see DllInitialize() and DriverEntry()
                            functions called *<b><span
                                style=3D"font-weight:bold">but</span></b>*
                            there should be no AddDevice() called i.e.
                            the drivers are unbound from the devices but
                            the modules are still present.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>If you also want to stop the driver
                            modules from loading then you need to remove
                            the service keys from the registry, which
                            you should be able to safely do after the
                            reboot. If you just remove the binaries from
                            system32 then you may well end up in a
                            situation where the registry is telling the
                            system to load a driver but, when it looks,
                            the binary has gone.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Paul</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          Can you tell me which ones registry keys I
                          must delete with the manually remove of
                          remaining pv drivers in system32 without cause
                          problems please=3F<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                16 March 2015 15:25<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                Paul Durrant; <a moz-do-not-send=3D"true"
href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                Re: [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New Roman" size=3D"3"><span
                              style=3D"font-size:12.0pt">Il 11/03/2015
                              16:47, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                      </div>
                      <blockquote
                        style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                              a look in
                              C:\Windows\System32\DriverStore\FileRepository.
                              If you still have packages for old drivers
                              in here then Windows can find them and
                              re-install them even if you think you=92ve
                              uninstalled. The correct way to remove
                              packages is using =91pnputil =96d=92 but it=92s a
                              bit clunky.</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                                style=3D"mso-spacerun:yes">=A0
                              </span>Paul</span></font><o:p></o:p></p>
                      </blockquote>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;"><br>
                            I removed all pv drivers visible in windows
                            control panel, after I removed with "pnputil
                            -f -d" all remaining drivers found with
                            "pnputil /e" and rebooted.<br>
                            Now still load latest xenbus (visible from
                            qemu log) and network is not available even
                            if .../FileRepository folder don't have
                            other xen's drivers.<br>
                            I tried a search and I found there are still
                            all pv drivers files in C:\windows\system32
                            and C:\windows\system32\drivers<br>
                            I removed also these files and rebooted and
                            now didn't load pv drivers, emulated network
                            is working and seems ok.<br>
                            Previous week tests instead gave me windows
                            blue screen "registry error" 1 minute after
                            windows boot.<br>
                            <br>
                            Is there another way to clean uninstall all
                            drivers without risk of problems=3F<br>
                            <br>
                            Thanks for any reply and sorry for my bad
                            english.<br>
                            <br style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <div style=3D"border:none;border-left:solid blue
                        1.5pt;padding:0cm 0cm 0cm 4.0pt">
                        <div>
                          <div style=3D"border:none;border-top:solid
                            #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                            <p class=3D"MsoNormal"
                              style=3D"mso-outline-level:1"><b><font
                                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                    lang=3D"EN-US">From:</span></font></b><font
                                face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                  lang=3D"EN-US">
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                  [<a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                  <b><span style=3D"font-weight:bold">On
                                      Behalf Of </span></b>Fabio
                                  Fantoni<br>
                                  <b><span style=3D"font-weight:bold">Sent:</span></b>
                                  11 March 2015 15:39<br>
                                  <b><span style=3D"font-weight:bold">To:</span></b>
                                  Paul Durrant; <a
                                    moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                    win-pv-devel@lists.xenproject.org</a><br>
                                  <b><span style=3D"font-weight:bold">Subject:</span></b>
                                  Re: [win-pv-devel] xenvif xennet don't
                                  update or load correctly and another
                                  error saw in qemu log</span></font><o:p></o:p></p>
                          </div>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                        <div>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times New Roman" size=3D"3"><span
                                style=3D"font-size:12.0pt">Il 11/03/2015
                                16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                        </div>
                        <blockquote
                          style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                          <p class=3D"MsoNormal"><font color=3D"#1f497d"
                              face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                                you tried uninstalling all versions of
                                XENVIF and XENNET and then re-installing
                                the latest=3F Windows should always prefer
                                the newest driver by date but maybe
                                something has gone wrong and for some
                                reason is favouring a really old version
                                you have lying around in DriverStore.</span></font><o:p></o:p></p>
                        </blockquote>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times"><br>
                              Yes, I already uninstalled all old drivers
                              build of all component 3 tests ago,
                              rebooted windows and after installed the
                              new build but seems olders xenvif and
                              xennet still remained even if not visible
                              in control center and always on new xenvif
                              and xennet install give me "ready to use"
                              instead of "device updated" message at
                              end.<br>
                              The only other way I know to delete the
                              drivers is search the files in
                              c:/windows/... but I tried time ago with
                              other things gave me always blue screen on
                              next boot, so I not tried with pv.<br>
                              <br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                              RangeSetPop error is not anything to worry
                              about. It is expected. It simply means the
                              grant table has run out of space and needs
                              to be expanded, which is why you see the
                              error immediately followed by a map and
                              populate of the next grant table page.</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <div style=3D"border:none;border-left:solid blue
                          1.5pt;padding:0cm 0cm 0cm 4.0pt">
                          <div>
                            <div style=3D"border:none;border-top:solid
                              #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                              <p class=3D"MsoNormal"
                                style=3D"mso-outline-level:1"><b><font
                                    color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                      lang=3D"EN-US">From:</span></font></b><font
                                  face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                    lang=3D"EN-US">
                                    <a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                    [<a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                    <b><span style=3D"font-weight:bold">On
                                        Behalf Of </span></b>Fabio
                                    Fantoni<br>
                                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                                    11 March 2015 15:17<br>
                                    <b><span style=3D"font-weight:bold">To:</span></b>
                                    <a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                      win-pv-devel@lists.xenproject.org</a><br>
                                    <b><span style=3D"font-weight:bold">Cc:</span></b>
                                    Paul Durrant<br>
                                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                                    [win-pv-devel] xenvif xennet don't
                                    update or load correctly and another
                                    error saw in qemu log</span></font><o:p></o:p></p>
                            </div>
                          </div>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times New" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times
                                New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;">As
                                I reported time ago there was strange
                                thing when update network components:
                                give "ready to use" instead of "device
                                updated" message at end of driver
                                component install.<br>
                                Today I saw in qemu log of one W7 pro 64
                                bit domU this:<br>
                                xen_platform_log xen platform:
                                XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                                (24.09.2014)<br>
                                xen_platform_log xen platform:
                                XENNET|DriverEntry: XENNET 8.0.0 (0)
                                (24.09.2014)<br>
                                <br>
                                Is probably the first build I installed
                                in this domU and that I already
                                uninstall from control center time ago.<br>
                                <br>
                                other components instead seems loaded
                                correctly the latest build installed:<br>
                                xen_platform_log xen platform:
                                XEN|DllInitialize: XEN 8.0.0 (41)
                                (05.03.2015)<br>
                                xen_platform_log xen platform:
                                XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                                (05.03.2015)<br>
                                xen_platform_log xen platform:
                                XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                                (03.03.2015)<br>
                                xen_platform_log xen platform:
                                XENIFACE|DriverEntry: 8.0.0.13
                                (2/3/2015)<br>
                                <br>
                                ----------<br>
                                <br>
                                I saw also these errors in qemu log:<br>
                                ...<br
                                  style=3D"mso-special-character:line-break">
                                <!--[if !supportLineBreakNewLine]--><br
style=3D"mso-special-character:line-break">
                                <!--[endif]--></span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;">xen_platform_log
                                xen platform: GNTTAB: MAP
                                XENMAPSPACE_grant_table[1] @
                                00000000.f8002000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000200 - 000003ff]<br>
                                <b><span style=3D"font-weight:bold">xen_platform_log
                                    xen platform: XENBUS|RangeSetPop:
                                    fail1 (c000009a)</span></b><br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[2] @
                                00000000.f8003000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000400 - 000005ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[3] @
                                00000000.f8004000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000600 - 000007ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[4] @
                                00000000.f8005000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000800 - 000009ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[5] @
                                00000000.f8006000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000a00 - 00000bff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[6] @
                                00000000.f8007000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"
                            style=3D"margin-bottom:12.0pt"><font
                              color=3D"black" face=3D"Times New Roman"
                              size=3D"3"><span
                                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                                New Roman&quot;">...<br>
                                Can someone tell me something about=3F<br>
                                Can they be related to some failed
                                memory balloning error in dom0's
                                kern.log and syslog=3F<br>
                                <br>
                                Full qemu log in attachment is needed.<br>
                                <br>
                                If you need more informations and/or
                                tests tell me and I'll post them.<br>
                                Thanks for any reply and sorry for my
                                bad english.<br
                                  style=3D"mso-special-character:line-break">
                                <!--[if !supportLineBreakNewLine]--><br
style=3D"mso-special-character:line-break">
                                <!--[endif]--></span><o:p></o:p></font></p>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">=A0</span></font><o:p></o:p></p>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020105010707080600070902--


--===============8088677819436056907==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8088677819436056907==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 10:38:19 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 10:38:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcX5H-00022L-CM; Mon, 30 Mar 2015 10:38:19 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcX5F-000226-Rd
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 10:38:18 +0000
Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id
	F8/3F-23555-99729155; Mon, 30 Mar 2015 10:38:17 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-7.tower-31.messagelabs.com!1427711893!12236452!1
X-Originating-IP: [209.85.212.177]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25668 invoked from network); 30 Mar 2015 10:38:14 -0000
Received: from mail-wi0-f177.google.com (HELO mail-wi0-f177.google.com)
	(209.85.212.177)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 10:38:14 -0000
Received: by wixm2 with SMTP id m2so83235265wix.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 03:38:13 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:references:in-reply-to:content-type;
	bh=ql1l+gBLzM9ktpFYPizYwMjS9fjEML0mCtGT91+fo9E=;
	b=Y2XV+q6HmbcB4/x601oC57MU/4xpxOLJS3tHEUoYrzvtSsMjh+q0h2ju45LKY9uXBY
	88oNYrbC4+YL4pq6A4bVz+Lv1qBKZsZnK06EgRZVVPF54fKBtsV7j/HuhgK5pY1CNOxR
	9nBAIzBYvK8vhN5KdLDDwmCDle4QFDksAADysONsM3SQL1H2WMlnb0QiN+SzBtFJPTFm
	1RmAMiAz9fBrHCS6Tr2eMCOm9wGd0vXffYtRNVTEr37q/+uE9RtFnJ5twLswuapQb+Lt
	PJF5VMX88U85KEq7tpQvPBRjh2Dg1tCZjOuaVe6WfjWQNuH7IEZw6WAJnWIveGnCWBiG
	HEqw==
X-Gm-Message-State: ALoCoQnHDiNYEmy8czefxaam/HDxqr3ZKuLCe8D1tzUMwWDNLNq9/XVHG/ByiHcc73HJQDce1QSj
X-Received: by 10.194.88.131 with SMTP id bg3mr63530604wjb.119.1427711893378; 
	Mon, 30 Mar 2015 03:38:13 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id d9sm15093416wib.20.2015.03.30.03.38.08
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 03:38:12 -0700 (PDT)
Message-ID: <5519278F.3030103@m2r.biz>
Date: Mon, 30 Mar 2015 12:38:07 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <55005C86.6040605@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>	<55006197.7060700@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>	<5506F5AE.1000607@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8088677819436056907=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--===============8088677819436056907==
Content-Type: multipart/alternative;
 boundary="------------020105010707080600070902"

This is a multi-part message in MIME format.
--------------020105010707080600070902
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Length: 14734
Content-Transfer-Encoding: quoted-printable

Il 30/03/2015 12:17, Paul Durrant ha scritto:
>
> Yes, the XenProject blog was what I was thinking of. It would be good 
> to have your perspective on working with the drivers. I=92m sure myself, 
> Lars or Russ can help with correcting English.
>
> Paul
>

I think that this project is very good but need more people that help 
with testing it, reporting bugs, and possibly help with documentation, 
development etc.
I'm trying to help much as I can with testing, bug reporting and small 
documentations but I don't think I have the skills/knowledge/time for 
other :(
Another things I think are good are:
merging it with xenserver one, both opensource but this seems "only a 
fork" now
prepare for first stable version for release of xen 4.6 if possible
official builds with drivers signed if possible (at least stable builds)
And then it would be great to have alsobugfix-onlybuilds later during 
the development of new versions.

> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 30 March 2015 10:59
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 30/03/2015 10:56, Paul Durrant ha scritto:
>
>     Thanks for the notes. Perhaps worth a blog entry=3F
>
>     Paul
>
>
> Which blogyou mean=3F
> Ifyou mean the Xen blog is perhaps useful to inform all on the state 
> of winpv drivers with all thenotes about them for anyone want to help 
> in testing and/or development.
> But in that case I think other and all possibible informations should 
> be added, my notes is short for now and probably my english is bad.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 27 March 2015 14:29
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 16:07, Paul Durrant ha scritto:
>
>     Sounds like your VM is missing something pretty vital then
>     unfortunately.
>
>     Paul
>
>
> I probably found a solution, I did some tests successfull.
> Here a readme with some notes about new winpv drivers based on my tests:
> http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
> Probably can be useful for other users that wants tests new winpv 
> drivers, I think that anyone can improve it and in future probably can 
> be also added to wiki.
>
> About regression reported some days ago seems solved with latest build 
> and I not found other critical/important bugs for now, thanks.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 15:01
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 15:41, Paul Durrant ha scritto:
>
>     No, that looks ok. You should not need to do anything magic to
>     re-enable the emulated IDE; the driver should already be there.
>     Can you boot up in safe mode=3F
>
>     Paul
>
>
> I tried also safe mode but was still unable to start.
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 14:30
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 24/03/2015 12:00, Paul Durrant ha scritto:
>
>     Thanks for the logs. The processor-group-awareness patch did
>     introduce a couple of problems in to XENVIF. I just posted a
>     couple of patches that should hopefully fix these. I=92ll apply them
>     later if no-one shouts so there should be a new build by the end
>     of the day.
>
>     Paul
>
>
> Thanks.
> MeanwhileI tried to do a batch for remove pv drivers things that 
> remain after uninstall all from control panel.
> Instead remove the registry keys about services I removed them with sc 
> command that also delete registry keys and the files about but after 
> reboot I had always blue screen with 7B without nothing in logs, no 
> minidump and also with xen_platform_pci=3D0
>
> I did the following commands:
>
> net stop xenlite
> sc delete xenlite
> DEL /q "%SystemRoot%\system32\liteagent.exe"
> sc delete xeniface
> DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
> sc delete xendisk
> DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
> sc delete xennet
> DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
> sc delete xenvbd
> DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
> sc delete XENVIF
> DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
> sc delete XENFILT
> DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
> sc delete XENBUS
> DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"
>
>
> I did something wrong or missed=3F
> Is needed to add/change registry key about disk controller standard to 
> have emulated qemu controller working=3F
> I remember something similar with xp changing disk controller but I 
> not found exact reg key to add in windows 7 about with a fast search.
>
> Thanks for any reply.
>
>
>
>
> *From:*Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> *Sent:* 24 March 2015 10:23
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 20/03/2015 11:22, Paul Durrant ha scritto:
>
>     Sorry for the delay, I missed this=85
>
>     It=92s fairly easy=85 The service keys are named the same as the
>     driver, so go look in HKLM/CurrentControlSet/Services and find all
>     the things starting with XEN and then either get rid of them or
>     set the StartType value to 4 (disabled).
>
>     Paul
>
>
> Thanks for reply, I'll try to do a bat script for remove all files and 
> registry keys of pv drivers and I'll post it for help also other 
> people having problems about.
>
> Today after updating pv drivers to latest build I had blue screen 
> after reboot windows, seems about xenvif.
> In attachments qemu log and crash minidump.
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 17 March 2015 09:00
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 16/03/2015 18:40, Paul Durrant ha scritto:
>
>     Hi,
>
>     Windows driver removal is a black art and is broken in different
>     ways on different versions of Windows. As you correctly observe,
>     using the pnputil tool does not actually remove the drivers, and
>     hence you=92ll see DllInitialize() and DriverEntry() functions
>     called **but** there should be no AddDevice() called i.e. the
>     drivers are unbound from the devices but the modules are still
>     present.
>
>     If you also want to stop the driver modules from loading then you
>     need to remove the service keys from the registry, which you
>     should be able to safely do after the reboot. If you just remove
>     the binaries from system32 then you may well end up in a situation
>     where the registry is telling the system to load a driver but,
>     when it looks, the binary has gone.
>
>     Paul
>
>
> Can you tell me which ones registry keys I must delete with the 
> manually remove of remaining pv drivers in system32 without cause 
> problems please=3F
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 16 March 2015 15:25
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:47, Paul Durrant ha scritto:
>
>     Have a look in C:\Windows\System32\DriverStore\FileRepository. If
>     you still have packages for old drivers in here then Windows can
>     find them and re-install them even if you think you=92ve
>     uninstalled. The correct way to remove packages is using =91pnputil
>     =96d=92 but it=92s a bit clunky.
>
>     Paul
>
>
> I removed all pv drivers visible in windows control panel, after I 
> removed with "pnputil -f -d" all remaining drivers found with "pnputil 
> /e" and rebooted.
> Now still load latest xenbus (visible from qemu log) and network is 
> not available even if .../FileRepository folder don't have other xen's 
> drivers.
> I tried a search and I found there are still all pv drivers files in 
> C:\windows\system32 and C:\windows\system32\drivers
> I removed also these files and rebooted and now didn't load pv 
> drivers, emulated network is working and seems ok.
> Previous week tests instead gave me windows blue screen "registry 
> error" 1 minute after windows boot.
>
> Is there another way to clean uninstall all drivers without risk of 
> problems=3F
>
> Thanks for any reply and sorry for my bad english.
>
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:39
> *To:* Paul Durrant; win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Subject:* Re: [win-pv-devel] xenvif xennet don't update or load 
> correctly and another error saw in qemu log
>
> Il 11/03/2015 16:22, Paul Durrant ha scritto:
>
>     Have you tried uninstalling all versions of XENVIF and XENNET and
>     then re-installing the latest=3F Windows should always prefer the
>     newest driver by date but maybe something has gone wrong and for
>     some reason is favouring a really old version you have lying
>     around in DriverStore.
>
>
> Yes, I already uninstalled all old drivers build of all component 3 
> tests ago, rebooted windows and after installed the new build but 
> seems olders xenvif and xennet still remained even if not visible in 
> control center and always on new xenvif and xennet install give me 
> "ready to use" instead of "device updated" message at end.
> The only other way I know to delete the drivers is search the files in 
> c:/windows/... but I tried time ago with other things gave me always 
> blue screen on next boot, so I not tried with pv.
>
>
> The RangeSetPop error is not anything to worry about. It is expected. 
> It simply means the grant table has run out of space and needs to be 
> expanded, which is why you see the error immediately followed by a map 
> and populate of the next grant table page.
>
> Paul
>
> *From:*win-pv-devel-bounces@lists.xenproject.org 
> <mailto:win-pv-devel-bounces@lists.xenproject.org> 
> [mailto:win-pv-devel-bounces@lists.xenproject.org] *On Behalf Of 
> *Fabio Fantoni
> *Sent:* 11 March 2015 15:17
> *To:* win-pv-devel@lists.xenproject.org 
> <mailto:win-pv-devel@lists.xenproject.org>
> *Cc:* Paul Durrant
> *Subject:* [win-pv-devel] xenvif xennet don't update or load correctly 
> and another error saw in qemu log
>
> As I reported time ago there was strange thing when update network 
> components: give "ready to use" instead of "device updated" message at 
> end of driver component install.
> Today I saw in qemu log of one W7 pro 64 bit domU this:
> xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) 
> (24.09.2014)
> xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) 
> (24.09.2014)
>
> Is probably the first build I installed in this domU and that I 
> already uninstall from control center time ago.
>
> other components instead seems loaded correctly the latest build 
> installed:
> xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) 
> (05.03.2015)
> xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) 
> (03.03.2015)
> xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)
>
> ----------
>
> I saw also these errors in qemu log:
> ...
>
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] 
> @ 00000000.f8002000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000200 - 000003ff]
> *xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)*
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] 
> @ 00000000.f8003000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000400 - 000005ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] 
> @ 00000000.f8004000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000600 - 000007ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] 
> @ 00000000.f8005000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000800 - 000009ff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] 
> @ 00000000.f8006000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000a00 - 00000bff]
> xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
> xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] 
> @ 00000000.f8007000
> xen_platform_log xen platform: XENBUS|GnttabExpand: added references 
> [00000c00 - 00000dff]
>
> ...
> Can someone tell me something about=3F
> Can they be related to some failed memory balloning error in dom0's 
> kern.log and syslog=3F
>
> Full qemu log in attachment is needed.
>
> If you need more informations and/or tests tell me and I'll post them.
> Thanks for any reply and sorry for my bad english.
>


--------------020105010707080600070902
Content-Type: text/html; charset=windows-1252
Content-Length: 97961
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Il 30/03/2015 12:17, Paul Durrant ha
      scritto:<br>
    </div>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <meta http-equiv=3D"Content-Type" content=3D"text/html;
        charset=3Dwindows-1252">
      <meta name=3D"ProgId" content=3D"Word.Document">
      <meta name=3D"Generator" content=3D"Microsoft Word 14">
      <meta name=3D"Originator" content=3D"Microsoft Word 14">
      <link rel=3D"File-List" href=3D"cid:filelist.xml@01D06ADB.118056F0">
      <!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"heading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"caption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph Font"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeholder Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D">Yes, the
              <span class=3D"SpellE">XenProject</span> blog was what I was
              thinking of. It would be good to have your perspective on
              working with the drivers. I=92m sure myself, Lars or Russ
              can help with correcting English.<o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><span
                style=3D"mso-spacerun:yes">=A0=A0=A0
              </span>Paul</span></font></p>
      </div>
    </blockquote>
    <br>
    I think that this project is very good but need more people that
    help with testing it, reporting bugs, <span id=3D"result_box"
      class=3D"" lang=3D"en"><span class=3D"hps">and possibly</span> <span
        class=3D"hps">help</span> <span class=3D"hps">with</span> <span
        class=3D"hps">documentation, development</span> <span class=3D"hps">etc.<br>
        I'm trying to help much as I can with testing, bug reporting and
        small documentations but </span></span><span id=3D"result_box"
      class=3D"" lang=3D"en"><span class=3D"hps">I don't think</span> <span
        class=3D"hps">I have the skills</span><span class=3D"hps">/</span><span
        class=3D"hps">knowledge</span><span class=3D"hps">/</span><span
        class=3D"hps">time for other :(<br>
        Another things I think are good are:<br>
        merging it with xenserver one, both opensource but this seems
        "only a fork" now<br>
        prepare for first stable version for release of xen 4.6 if
        possible<br>
        official builds with drivers signed if possible (at least stable
        builds)<br>
        And </span></span><span id=3D"result_box" class=3D"" lang=3D"en"><span
        class=3D"hps"><span id=3D"result_box" class=3D"" lang=3D"en"><span
            class=3D"hps">then</span> <span class=3D"hps">it would be</span>
          <span class=3D"hps">great</span> <span class=3D"hps">to have</span>
          <span class=3D"hps">also</span><span class=3D"hps"></span> <span
            class=3D"hps">bugfix</span><span>-only</span></span></span></span><span
      id=3D"result_box" class=3D"" lang=3D"en"><span class=3D"hps"><span
          id=3D"result_box" class=3D"" lang=3D"en"><span><span id=3D"result_box"
              class=3D"" lang=3D"en"><span class=3D"hps"><span id=3D"result_box"
                  class=3D"" lang=3D"en"> <span class=3D"hps">builds</span></span></span></span></span>
          <span class=3D"hps">later during</span> <span class=3D"hps">the
            development of new</span> <span class=3D"hps">versions.<br>
            <br>
          </span></span></span></span>
    <blockquote
cite=3D"mid:9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net"
      type=3D"cite">
      <div class=3D"WordSection1">
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p></o:p></span></font></p>
        <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
            size=3D"2"><span
              style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Times
              New Roman&quot;;color:#1F497D"><o:p>=A0</o:p></span></font></p>
        <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm
          0cm 0cm 4.0pt">
          <div>
            <div style=3D"border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class=3D"MsoNormal"><b><font color=3D"black" face=3D"Tahoma"
                    size=3D"2"><span
                      style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                      New
                      Roman&quot;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold"
                      lang=3D"EN-US">From:</span></font></b><font
                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
                    style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times
                    New
                    Roman&quot;;color:windowtext;mso-ansi-language:EN-US"
                    lang=3D"EN-US"> Fabio Fantoni
                    [<a class=3D"moz-txt-link-freetext" href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>] <br>
                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                    30 March 2015 10:59<br>
                    <b><span style=3D"font-weight:bold">To:</span></b>
                    Paul Durrant; <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:win-pv-devel@lists.xenproject.org">win-pv-devel@lists.xenproject.org</a><br>
                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                    Re: [win-pv-devel] xenvif xennet don't update or
                    load correctly and another error saw in qemu log<o:p></o:p></span></font></p>
            </div>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span style=3D"font-size:12.0pt"><o:p>=A0</o:p></span></font></p>
          <div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha
                  scritto:<o:p></o:p></span></font></p>
          </div>
          <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">Thanks
                  for the notes. Perhaps worth a blog entry=3F</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
                  style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                  New Roman \;color\:\#1F497D&quot;;color:#1F497D"><span
                    style=3D"mso-spacerun:yes">=A0
                  </span>Paul</span></font><o:p></o:p></p>
          </blockquote>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><br>
              </span></font><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">Which blog</span></span><span
              class=3D"shorttext"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">
              </span></span><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">you mean=3F</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"><br>
            </span><span class=3D"hps"><span
                style=3D"mso-fareast-font-family:&quot;Times New
                Roman&quot;;mso-ansi-language:EN" lang=3D"EN">If</span></span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;;mso-ansi-language:EN" lang=3D"EN">
              <span class=3D"hps">you mean</span> <span class=3D"hps">the</span>
              <span class=3D"hps">
                Xen blog</span> <span class=3D"hps">is</span> <span
                class=3D"hps">perhaps</span> <span class=3D"hps">
                useful</span> <span class=3D"hps">to inform all</span> <span
                class=3D"hps">on the state of</span>
              <span class=3D"hps">winpv drivers</span> with all the<span
                class=3D"hps"> notes</span>
              <span class=3D"hps">about them</span> <span class=3D"hps">for
                anyone want to</span> <span class=3D"hps">
                help</span> <span class=3D"hps">in testing and/or
                development</span>.</span><span
              style=3D"mso-fareast-font-family:&quot;Times New
              Roman&quot;"><br>
              But in that case I think other and all possibible
              informations should be added, my notes is short for now
              and probably my english is bad.<br>
              <br style=3D"mso-special-character:line-break">
              <!--[if !supportLineBreakNewLine]--><br
                style=3D"mso-special-character:line-break">
              <!--[endif]--><o:p></o:p></span></p>
          <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
              size=3D"2"><span
                style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times
                New Roman \;color\:\#1F497D&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
          <div style=3D"border:none;border-left:solid blue
            1.5pt;padding:0cm 0cm 0cm 4.0pt">
            <div>
              <div style=3D"border:none;border-top:solid #B5C4DF
                1.0pt;padding:3.0pt 0cm 0cm 0cm">
                <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                      color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                        lang=3D"EN-US">From:</span></font></b><font
                    face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                      lang=3D"EN-US"> Fabio Fantoni [<a
                        moz-do-not-send=3D"true"
                        href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                      <br>
                      <b><span style=3D"font-weight:bold">Sent:</span></b>
                      27 March 2015 14:29<br>
                      <b><span style=3D"font-weight:bold">To:</span></b>
                      Paul Durrant; <a moz-do-not-send=3D"true"
                        href=3D"mailto:win-pv-devel@lists.xenproject.org">
                        win-pv-devel@lists.xenproject.org</a><br>
                      <b><span style=3D"font-weight:bold">Subject:</span></b>
                      Re: [win-pv-devel] xenvif xennet don't update or
                      load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
              </div>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            <div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                    New Roman&quot;">Il 24/03/2015 16:07, Paul Durrant
                    ha scritto:</span></font><o:p></o:p></p>
            </div>
            <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sounds
                    like your VM is missing something pretty vital then
                    unfortunately.</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                      style=3D"mso-spacerun:yes">=A0
                    </span>Paul</span></font><o:p></o:p></p>
            </blockquote>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;"><br>
                  I probably found a solution, I did some tests
                  successfull.<br>
                  Here a readme with some notes about new winpv drivers
                  based on my tests:<br>
                  <a moz-do-not-send=3D"true"
                    href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
                  Probably can be useful for other users that wants
                  tests new winpv drivers, I think that anyone can
                  improve it and in future probably can be also added to
                  wiki.<br>
                  <br>
                  About regression reported some days ago seems solved
                  with latest build and I not found other
                  critical/important bugs for now, thanks.<br>
                  <br style=3D"mso-special-character:line-break">
                  <!--[if !supportLineBreakNewLine]--><br
                    style=3D"mso-special-character:line-break">
                  <!--[endif]--></span></font><o:p></o:p></p>
            <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
            <div style=3D"border:none;border-left:solid blue
              1.5pt;padding:0cm 0cm 0cm 4.0pt">
              <div>
                <div style=3D"border:none;border-top:solid #B5C4DF
                  1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                        color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                          lang=3D"EN-US">From:</span></font></b><font
                      face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                        lang=3D"EN-US"> Fabio Fantoni [<a
                          moz-do-not-send=3D"true"
                          href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                        <br>
                        <b><span style=3D"font-weight:bold">Sent:</span></b>
                        24 March 2015 15:01<br>
                        <b><span style=3D"font-weight:bold">To:</span></b>
                        Paul Durrant; <a moz-do-not-send=3D"true"
                          href=3D"mailto:win-pv-devel@lists.xenproject.org">
                          win-pv-devel@lists.xenproject.org</a><br>
                        <b><span style=3D"font-weight:bold">Subject:</span></b>
                        Re: [win-pv-devel] xenvif xennet don't update or
                        load correctly and another error saw in qemu log</span></font><o:p></o:p></p>
                </div>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roman , serif" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roman , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              <div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Ro" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Ro&quot;,&quot;serif&quot;">Il 24/03/2015
                      15:41, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
              </div>
              <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">No,
                      that looks ok. You should not need to do anything
                      magic to re-enable the emulated IDE; the driver
                      should already be there. Can you boot up in safe
                      mode=3F</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                        style=3D"mso-spacerun:yes">=A0
                      </span>Paul</span></font><o:p></o:p></p>
              </blockquote>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;"><br>
                    I tried also safe mode but was still unable to
                    start.<br>
                    <br style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span></font><o:p></o:p></p>
              <p class=3D"MsoNormal"><font color=3D"#1f497d" face=3D"Calibri"
                  size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
              <div style=3D"border:none;border-left:solid blue
                1.5pt;padding:0cm 0cm 0cm 4.0pt">
                <div>
                  <div style=3D"border:none;border-top:solid #B5C4DF
                    1.0pt;padding:3.0pt 0cm 0cm 0cm">
                    <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                          color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                            lang=3D"EN-US">From:</span></font></b><font
                        face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                          lang=3D"EN-US"> Fabio Fantoni [<a
                            moz-do-not-send=3D"true"
                            href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                          <br>
                          <b><span style=3D"font-weight:bold">Sent:</span></b>
                          24 March 2015 14:30<br>
                          <b><span style=3D"font-weight:bold">To:</span></b>
                          Paul Durrant; <a moz-do-not-send=3D"true"
                            href=3D"mailto:win-pv-devel@lists.xenproject.org">
                            win-pv-devel@lists.xenproject.org</a><br>
                          <b><span style=3D"font-weight:bold">Subject:</span></b>
                          Re: [win-pv-devel] xenvif xennet don't update
                          or load correctly and another error saw in
                          qemu log</span></font><o:p></o:p></p>
                  </div>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roman" size=3D"3"><span style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                <div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New Ro , serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New Ro , serif&quot;,&quot;serif&quot;">Il
                        24/03/2015 12:00, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                </div>
                <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
                        for the logs. The processor-group-awareness
                        patch did introduce a couple of problems in to
                        XENVIF. I just posted a couple of patches that
                        should hopefully fix these. I=92ll apply them
                        later if no-one shouts so there should be a new
                        build by the end of the day.</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                          style=3D"mso-spacerun:yes">=A0
                        </span>Paul</span></font><o:p></o:p></p>
                </blockquote>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      Thanks.<br>
                    </span></font><span class=3D"hps"><span
                      style=3D"mso-ansi-language:EN" lang=3D"EN">Meanwhile</span></span><span
                    style=3D"mso-fareast-font-family:&quot;Times New
                    Roman&quot;" lang=3D"EN">
                  </span><span
                    style=3D"mso-fareast-font-family:&quot;Times New
                    Roman&quot;">I tried to do a batch for remove pv
                    drivers things that remain after uninstall all from
                    control panel.<br>
                    Instead remove the registry keys about services I
                    removed them with sc command that also delete
                    registry keys and the files about but after reboot I
                    had always blue screen with 7B without nothing in
                    logs, no minidump and also with xen_platform_pci=3D0<br>
                    <br>
                    I did the following commands:<br
                      style=3D"mso-special-character:line-break">
                    <!--[if !supportLineBreakNewLine]--><br
                      style=3D"mso-special-character:line-break">
                    <!--[endif]--></span><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">net stop
                      xenlite<br>
                      sc delete xenlite<br>
                      DEL /q "%SystemRoot%\system32\liteagent.exe"<br>
                      sc delete xeniface<br>
                      DEL /q
                      "%SystemRoot%\system32\drivers\xeniface.sys"<br>
                      sc delete xendisk<br>
                      DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"<br>
                      sc delete xennet<br>
                      DEL /q "%SystemRoot%\system32\drivers\xennet.sys"<br>
                      sc delete xenvbd<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"<br>
                      sc delete XENVIF<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"<br>
                      sc delete XENFILT<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"<br>
                      sc delete XENBUS<br>
                      DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"</span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;"><br>
                      I did something wrong or missed=3F<br>
                      Is needed to add/change registry key about disk
                      controller standard to have emulated qemu
                      controller working=3F<br>
                      I remember something similar with xp changing disk
                      controller but I not found exact reg key to add in
                      windows 7 about with a fast search.<br>
                      <br>
                      Thanks for any reply.<br>
                      <br>
                      <br>
                      <br style=3D"mso-special-character:line-break">
                      <!--[if !supportLineBreakNewLine]--><br
                        style=3D"mso-special-character:line-break">
                      <!--[endif]--></span></font><o:p></o:p></p>
                <p class=3D"MsoNormal"><font color=3D"#1f497d"
                    face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                <div style=3D"border:none;border-left:solid blue
                  1.5pt;padding:0cm 0cm 0cm 4.0pt">
                  <div>
                    <div style=3D"border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                            color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                              lang=3D"EN-US">From:</span></font></b><font
                          face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                            lang=3D"EN-US"> Fabio Fantoni [<a
                              moz-do-not-send=3D"true"
                              href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fantoni@m2r.biz</a>]
                            <br>
                            <b><span style=3D"font-weight:bold">Sent:</span></b>
                            24 March 2015 10:23<br>
                            <b><span style=3D"font-weight:bold">To:</span></b>
                            Paul Durrant; <a moz-do-not-send=3D"true"
                              href=3D"mailto:win-pv-devel@lists.xenproject.org">
                              win-pv-devel@lists.xenproject.org</a><br>
                            <b><span style=3D"font-weight:bold">Subject:</span></b>
                            Re: [win-pv-devel] xenvif xennet don't
                            update or load correctly and another error
                            saw in qemu log</span></font><o:p></o:p></p>
                    </div>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                      New
                      " size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;Times
                        New
                        &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                  <div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif
                        , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;serif
                          , serif&quot;,&quot;serif&quot;">Il 20/03/2015
                          11:22, Paul Durrant ha scritto:</span></font><o:p></o:p></p>
                  </div>
                  <blockquote
                    style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sorry
                          for the delay, I missed this=85</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">It=92s
                          fairly easy=85 The service keys are named the
                          same as the driver, so go look in
                          HKLM/CurrentControlSet/Services and find all
                          the things starting with XEN and then either
                          get rid of them or set the StartType value to
                          4 (disabled).</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                            style=3D"mso-spacerun:yes">=A0
                          </span>Paul</span></font><o:p></o:p></p>
                  </blockquote>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;"><br>
                        Thanks for reply, I'll try to do a bat script
                        for remove all files and registry keys of pv
                        drivers and I'll post it for help also other
                        people having problems about.<br>
                        <br>
                        Today after updating pv drivers to latest build
                        I had blue screen after reboot windows, seems
                        about xenvif.<br>
                        In attachments qemu log and crash minidump.<br>
                        <br>
                        Thanks for any reply and sorry for my bad
                        english.<br>
                        <br style=3D"mso-special-character:line-break">
                        <!--[if !supportLineBreakNewLine]--><br
                          style=3D"mso-special-character:line-break">
                        <!--[endif]--></span></font><o:p></o:p></p>
                  <p class=3D"MsoNormal"><font color=3D"#1f497d"
                      face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                  <div style=3D"border:none;border-left:solid blue
                    1.5pt;padding:0cm 0cm 0cm 4.0pt">
                    <div>
                      <div style=3D"border:none;border-top:solid #B5C4DF
                        1.0pt;padding:3.0pt 0cm 0cm 0cm">
                        <p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font
                              color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                lang=3D"EN-US">From:</span></font></b><font
                            face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                              lang=3D"EN-US">
                              <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                              [<a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                              <b><span style=3D"font-weight:bold">On
                                  Behalf Of </span></b>Fabio Fantoni<br>
                              <b><span style=3D"font-weight:bold">Sent:</span></b>
                              17 March 2015 09:00<br>
                              <b><span style=3D"font-weight:bold">To:</span></b>
                              Paul Durrant; <a moz-do-not-send=3D"true"
                                href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                win-pv-devel@lists.xenproject.org</a><br>
                              <b><span style=3D"font-weight:bold">Subject:</span></b>
                              Re: [win-pv-devel] xenvif xennet don't
                              update or load correctly and another error
                              saw in qemu log</span></font><o:p></o:p></p>
                      </div>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New , serif" size=3D"3"><span
                          style=3D"font-size:12.0pt;font-family:&quot;Times
                          New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    <div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New Roman" size=3D"3"><span
                            style=3D"font-size:12.0pt">Il 16/03/2015
                            18:40, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                    </div>
                    <blockquote
                      style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Windows driver removal is a black art
                            and is broken in different ways on different
                            versions of Windows. As you correctly
                            observe, using the pnputil tool does not
                            actually remove the drivers, and hence
                            you=92ll see DllInitialize() and DriverEntry()
                            functions called *<b><span
                                style=3D"font-weight:bold">but</span></b>*
                            there should be no AddDevice() called i.e.
                            the drivers are unbound from the devices but
                            the modules are still present.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>If you also want to stop the driver
                            modules from loading then you need to remove
                            the service keys from the registry, which
                            you should be able to safely do after the
                            reboot. If you just remove the binaries from
                            system32 then you may well end up in a
                            situation where the registry is telling the
                            system to load a driver but, when it looks,
                            the binary has gone.</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                              style=3D"mso-spacerun:yes">=A0
                            </span>Paul</span></font><o:p></o:p></p>
                    </blockquote>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt"><br>
                          Can you tell me which ones registry keys I
                          must delete with the manually remove of
                          remaining pv drivers in system32 without cause
                          problems please=3F<br>
                          <br style=3D"mso-special-character:line-break">
                          <!--[if !supportLineBreakNewLine]--><br
                            style=3D"mso-special-character:line-break">
                          <!--[endif]--><o:p></o:p></span></font></p>
                    <p class=3D"MsoNormal"><font color=3D"#1f497d"
                        face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                    <div style=3D"border:none;border-left:solid blue
                      1.5pt;padding:0cm 0cm 0cm 4.0pt">
                      <div>
                        <div style=3D"border:none;border-top:solid #B5C4DF
                          1.0pt;padding:3.0pt 0cm 0cm 0cm">
                          <p class=3D"MsoNormal"
                            style=3D"mso-outline-level:1"><b><font
                                color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                  lang=3D"EN-US">From:</span></font></b><font
                              face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                lang=3D"EN-US">
                                <a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                [<a moz-do-not-send=3D"true"
                                  href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                <b><span style=3D"font-weight:bold">On
                                    Behalf Of </span></b>Fabio Fantoni<br>
                                <b><span style=3D"font-weight:bold">Sent:</span></b>
                                16 March 2015 15:25<br>
                                <b><span style=3D"font-weight:bold">To:</span></b>
                                Paul Durrant; <a moz-do-not-send=3D"true"
href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                  win-pv-devel@lists.xenproject.org</a><br>
                                <b><span style=3D"font-weight:bold">Subject:</span></b>
                                Re: [win-pv-devel] xenvif xennet don't
                                update or load correctly and another
                                error saw in qemu log</span></font><o:p></o:p></p>
                        </div>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times New" size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                      <div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New Roman" size=3D"3"><span
                              style=3D"font-size:12.0pt">Il 11/03/2015
                              16:47, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                      </div>
                      <blockquote
                        style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                              a look in
                              C:\Windows\System32\DriverStore\FileRepository.
                              If you still have packages for old drivers
                              in here then Windows can find them and
                              re-install them even if you think you=92ve
                              uninstalled. The correct way to remove
                              packages is using =91pnputil =96d=92 but it=92s a
                              bit clunky.</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span
                                style=3D"mso-spacerun:yes">=A0
                              </span>Paul</span></font><o:p></o:p></p>
                      </blockquote>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;"><br>
                            I removed all pv drivers visible in windows
                            control panel, after I removed with "pnputil
                            -f -d" all remaining drivers found with
                            "pnputil /e" and rebooted.<br>
                            Now still load latest xenbus (visible from
                            qemu log) and network is not available even
                            if .../FileRepository folder don't have
                            other xen's drivers.<br>
                            I tried a search and I found there are still
                            all pv drivers files in C:\windows\system32
                            and C:\windows\system32\drivers<br>
                            I removed also these files and rebooted and
                            now didn't load pv drivers, emulated network
                            is working and seems ok.<br>
                            Previous week tests instead gave me windows
                            blue screen "registry error" 1 minute after
                            windows boot.<br>
                            <br>
                            Is there another way to clean uninstall all
                            drivers without risk of problems=3F<br>
                            <br>
                            Thanks for any reply and sorry for my bad
                            english.<br>
                            <br style=3D"mso-special-character:line-break">
                            <!--[if !supportLineBreakNewLine]--><br
                              style=3D"mso-special-character:line-break">
                            <!--[endif]--></span></font><o:p></o:p></p>
                      <p class=3D"MsoNormal"><font color=3D"#1f497d"
                          face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                      <div style=3D"border:none;border-left:solid blue
                        1.5pt;padding:0cm 0cm 0cm 4.0pt">
                        <div>
                          <div style=3D"border:none;border-top:solid
                            #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                            <p class=3D"MsoNormal"
                              style=3D"mso-outline-level:1"><b><font
                                  color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                    lang=3D"EN-US">From:</span></font></b><font
                                face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                  lang=3D"EN-US">
                                  <a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                  [<a moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                  <b><span style=3D"font-weight:bold">On
                                      Behalf Of </span></b>Fabio
                                  Fantoni<br>
                                  <b><span style=3D"font-weight:bold">Sent:</span></b>
                                  11 March 2015 15:39<br>
                                  <b><span style=3D"font-weight:bold">To:</span></b>
                                  Paul Durrant; <a
                                    moz-do-not-send=3D"true"
                                    href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                    win-pv-devel@lists.xenproject.org</a><br>
                                  <b><span style=3D"font-weight:bold">Subject:</span></b>
                                  Re: [win-pv-devel] xenvif xennet don't
                                  update or load correctly and another
                                  error saw in qemu log</span></font><o:p></o:p></p>
                          </div>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times New , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              New , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                        <div>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times New Roman" size=3D"3"><span
                                style=3D"font-size:12.0pt">Il 11/03/2015
                                16:22, Paul Durrant ha scritto:<o:p></o:p></span></font></p>
                        </div>
                        <blockquote
                          style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
                          <p class=3D"MsoNormal"><font color=3D"#1f497d"
                              face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Have
                                you tried uninstalling all versions of
                                XENVIF and XENNET and then re-installing
                                the latest=3F Windows should always prefer
                                the newest driver by date but maybe
                                something has gone wrong and for some
                                reason is favouring a really old version
                                you have lying around in DriverStore.</span></font><o:p></o:p></p>
                        </blockquote>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times"><br>
                              Yes, I already uninstalled all old drivers
                              build of all component 3 tests ago,
                              rebooted windows and after installed the
                              new build but seems olders xenvif and
                              xennet still remained even if not visible
                              in control center and always on new xenvif
                              and xennet install give me "ready to use"
                              instead of "device updated" message at
                              end.<br>
                              The only other way I know to delete the
                              drivers is search the files in
                              c:/windows/... but I tried time ago with
                              other things gave me always blue screen on
                              next boot, so I not tried with pv.<br>
                              <br
                                style=3D"mso-special-character:line-break">
                              <!--[if !supportLineBreakNewLine]--><br
                                style=3D"mso-special-character:line-break">
                              <!--[endif]--></span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">The
                              RangeSetPop error is not anything to worry
                              about. It is expected. It simply means the
                              grant table has run out of space and needs
                              to be expanded, which is why you see the
                              error immediately followed by a map and
                              populate of the next grant table page.</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <p class=3D"MsoNormal"><font color=3D"#1f497d"
                            face=3D"Calibri" size=3D"2"><span
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">=A0</span></font><o:p></o:p></p>
                        <div style=3D"border:none;border-left:solid blue
                          1.5pt;padding:0cm 0cm 0cm 4.0pt">
                          <div>
                            <div style=3D"border:none;border-top:solid
                              #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                              <p class=3D"MsoNormal"
                                style=3D"mso-outline-level:1"><b><font
                                    color=3D"black" face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US;font-weight:bold"
                                      lang=3D"EN-US">From:</span></font></b><font
                                  face=3D"Tahoma" size=3D"2"><span
style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US"
                                    lang=3D"EN-US">
                                    <a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-bounces@lists.xenproject.org</a>
                                    [<a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
                                    <b><span style=3D"font-weight:bold">On
                                        Behalf Of </span></b>Fabio
                                    Fantoni<br>
                                    <b><span style=3D"font-weight:bold">Sent:</span></b>
                                    11 March 2015 15:17<br>
                                    <b><span style=3D"font-weight:bold">To:</span></b>
                                    <a moz-do-not-send=3D"true"
                                      href=3D"mailto:win-pv-devel@lists.xenproject.org">
                                      win-pv-devel@lists.xenproject.org</a><br>
                                    <b><span style=3D"font-weight:bold">Cc:</span></b>
                                    Paul Durrant<br>
                                    <b><span style=3D"font-weight:bold">Subject:</span></b>
                                    [win-pv-devel] xenvif xennet don't
                                    update or load correctly and another
                                    error saw in qemu log</span></font><o:p></o:p></p>
                            </div>
                          </div>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times New" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times
                                New&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;">As
                                I reported time ago there was strange
                                thing when update network components:
                                give "ready to use" instead of "device
                                updated" message at end of driver
                                component install.<br>
                                Today I saw in qemu log of one W7 pro 64
                                bit domU this:<br>
                                xen_platform_log xen platform:
                                XENVIF|DriverEntry: XENVIF 8.0.0 (0)
                                (24.09.2014)<br>
                                xen_platform_log xen platform:
                                XENNET|DriverEntry: XENNET 8.0.0 (0)
                                (24.09.2014)<br>
                                <br>
                                Is probably the first build I installed
                                in this domU and that I already
                                uninstall from control center time ago.<br>
                                <br>
                                other components instead seems loaded
                                correctly the latest build installed:<br>
                                xen_platform_log xen platform:
                                XEN|DllInitialize: XEN 8.0.0 (41)
                                (05.03.2015)<br>
                                xen_platform_log xen platform:
                                XENFILT|DriverEntry: XENFILT 8.0.0 (41)
                                (05.03.2015)<br>
                                xen_platform_log xen platform:
                                XENDISK|DriverEntry:XENDISK 8.0.0 (18)
                                (03.03.2015)<br>
                                xen_platform_log xen platform:
                                XENIFACE|DriverEntry: 8.0.0.13
                                (2/3/2015)<br>
                                <br>
                                ----------<br>
                                <br>
                                I saw also these errors in qemu log:<br>
                                ...<br
                                  style=3D"mso-special-character:line-break">
                                <!--[if !supportLineBreakNewLine]--><br
style=3D"mso-special-character:line-break">
                                <!--[endif]--></span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"><font color=3D"black"
                              face=3D"Times" size=3D"3"><span
                                style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;">xen_platform_log
                                xen platform: GNTTAB: MAP
                                XENMAPSPACE_grant_table[1] @
                                00000000.f8002000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000200 - 000003ff]<br>
                                <b><span style=3D"font-weight:bold">xen_platform_log
                                    xen platform: XENBUS|RangeSetPop:
                                    fail1 (c000009a)</span></b><br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[2] @
                                00000000.f8003000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000400 - 000005ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[3] @
                                00000000.f8004000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000600 - 000007ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[4] @
                                00000000.f8005000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000800 - 000009ff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[5] @
                                00000000.f8006000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000a00 - 00000bff]<br>
                                xen_platform_log xen platform:
                                XENBUS|RangeSetPop: fail1 (c000009a)<br>
                                xen_platform_log xen platform: GNTTAB:
                                MAP XENMAPSPACE_grant_table[6] @
                                00000000.f8007000<br>
                                xen_platform_log xen platform:
                                XENBUS|GnttabExpand: added references
                                [00000c00 - 00000dff]</span></font><o:p></o:p></p>
                          <p class=3D"MsoNormal"
                            style=3D"margin-bottom:12.0pt"><font
                              color=3D"black" face=3D"Times New Roman"
                              size=3D"3"><span
                                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                                New Roman&quot;">...<br>
                                Can someone tell me something about=3F<br>
                                Can they be related to some failed
                                memory balloning error in dom0's
                                kern.log and syslog=3F<br>
                                <br>
                                Full qemu log in attachment is needed.<br>
                                <br>
                                If you need more informations and/or
                                tests tell me and I'll post them.<br>
                                Thanks for any reply and sorry for my
                                bad english.<br
                                  style=3D"mso-special-character:line-break">
                                <!--[if !supportLineBreakNewLine]--><br
style=3D"mso-special-character:line-break">
                                <!--[endif]--></span><o:p></o:p></font></p>
                        </div>
                        <p class=3D"MsoNormal"><font color=3D"black"
                            face=3D"Times , serif" size=3D"3"><span
                              style=3D"font-size:12.0pt;font-family:&quot;Times
                              ,
                              serif&quot;,&quot;serif&quot;;mso-bidi-font-family:Times">=A0</span></font><o:p></o:p></p>
                      </div>
                      <p class=3D"MsoNormal"><font color=3D"black"
                          face=3D"Times
                          " size=3D"3"><span
                            style=3D"font-size:12.0pt;font-family:&quot;Times
                            &quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                    </div>
                    <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times
                        New Roman" size=3D"3"><span
                          style=3D"font-size:12.0pt">=A0<o:p></o:p></span></font></p>
                  </div>
                  <p class=3D"MsoNormal"><font color=3D"black" face=3D"serif ,
                      serif" size=3D"3"><span
                        style=3D"font-size:12.0pt;font-family:&quot;serif
                        , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
                </div>
                <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                    Roma , serif" size=3D"3"><span
                      style=3D"font-size:12.0pt;font-family:&quot;Times
                      New Roma , serif&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
              </div>
              <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                  Roma" size=3D"3"><span
                    style=3D"font-size:12.0pt;font-family:&quot;Times New
                    Roma&quot;,&quot;serif&quot;">=A0</span></font><o:p></o:p></p>
            </div>
            <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
                Roman" size=3D"3"><span
                  style=3D"font-size:12.0pt;font-family:&quot;Times New
                  Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;Times
                  New Roman&quot;">=A0</span></font><o:p></o:p></p>
          </div>
          <p class=3D"MsoNormal"><font color=3D"black" face=3D"Times New
              Roman" size=3D"3"><span
                style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times
                New Roman&quot;"><o:p>=A0</o:p></span></font></p>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------020105010707080600070902--


--===============8088677819436056907==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============8088677819436056907==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 11:00:14 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 11:00:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcXQT-0004Pz-I7; Mon, 30 Mar 2015 11:00:13 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcXQR-0004Pu-Dl
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 11:00:11 +0000
Received: from [85.158.137.68] by server-10.bemta-3.messagelabs.com id
	CB/B2-14673-ABC29155; Mon, 30 Mar 2015 11:00:10 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-31.messagelabs.com!1427713208!12263717!1
X-Originating-IP: [74.125.82.43]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8678 invoked from network); 30 Mar 2015 11:00:08 -0000
Received: from mail-wg0-f43.google.com (HELO mail-wg0-f43.google.com)
	(74.125.82.43)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 11:00:08 -0000
Received: by wgdm6 with SMTP id m6so169840136wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 04:00:08 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:content-type:content-transfer-encoding;
	bh=d9Z60+oWK8PASadi2JTZF2nJTu2DdgE4icwGyYy+ItM=;
	b=eCH4LeIo9gjIHxGUlFwB4XJ87W4dTKDkemc/5zSjOtDN1EJ1msL3Iayu8Gy+Mt2JP3
	4hgLuxZAt8InlQN1aQescQ2rDBPC1kSrCO7uYU118jrsARpMaRLCJUB6oim1QvfFZdj1
	BUS9eWX8zigwm0Df4wa7fO7xKMKglHqay/QoGPQKP6jB0CN98Zhu7jRXmnLH9SiyrF40
	d4MKvhlNEz6dTX16YQXitmYg/H33YU7gLR4H8cZQJ0cJkG+wRyzEY4qdxGVdFo+ZkLLK
	cV1j4xdXjTqnvdwgU1xPDszT4KaBFGBhkqjM+YFKMoRqG+BhPfFDZWLqbgvxtpwehTp8
	FzhA==
X-Gm-Message-State: ALoCoQnmfJqdgta/DHea5/DhKtGOjtrOoiZNf7vLX/qsxWbFqeFXCPHkmnSAvOard35tcEnfL2xH
X-Received: by 10.180.78.161 with SMTP id c1mr19387690wix.36.1427713207123;
	Mon, 30 Mar 2015 04:00:07 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	l10sm15224293wje.15.2015.03.30.04.00.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 04:00:06 -0700 (PDT)
Message-ID: <55192CB4.7030802@m2r.biz>
Date: Mon, 30 Mar 2015 13:00:04 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] Multiple save/restore failing with windows 8.1 64
	bit domU
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

I tried 2 times multiple save/restore (start domU, use it for some 
minutes, do a save restore, use it, do another save/restore) and in both 
case second save failed:

> xl -vvv save W8 /mnt/vm/save/W8
> libxl: debug: libxl.c:6705:libxl_retrieve_domain_configuration: no 
> vtpm from xenstore for domain 40
> libxl: debug: libxl.c:6707:libxl_retrieve_domain_configuration: no pci 
> from xenstore for domain 40
> Saving to /mnt/vm/save/W8 new xl format (info 0x1/0x0/1941)
> libxl: debug: libxl.c:953:libxl_domain_suspend: ao 0x68d910: create: 
> how=(nil) callback=(nil) poller=0x68d970
> libxl: debug: libxl_dom.c:1573:libxl__toolstack_save: domain=40 
> toolstack data size=49
> libxl: debug: libxl.c:975:libxl_domain_suspend: ao 0x68d910: 
> inprogress: poller=0x68d970, flags=i
> libxl-save-helper: debug: starting save: Success
> xc: detail: xc_domain_save: starting save of domid 40
> libxl: debug: libxl_dom.c:1278:domain_suspend_callback_common: issuing 
> PVHVM suspend request via XenBus control node
> libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch 
> w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0: register 
> slotnum=3
> libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68dae0 
> wpath=/local/domain/40/control/shutdown token=3/0: event 
> epath=/local/domain/40/control/shutdown
> libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch 
> w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0: 
> deregister slotnum=3
> libxl: debug: 
> libxl_dom.c:1360:domain_suspend_common_pvcontrol_suspending: guest 
> acknowledged suspend request
> libxl: debug: libxl_dom.c:1379:domain_suspend_common_wait_guest: wait 
> for the guest to suspend
> libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch 
> w=0x68daf8 wpath=@releaseDomain token=3/1: register slotnum=3
> libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68daf8 
> wpath=@releaseDomain token=3/1: event epath=@releaseDomain
> libxl: error: libxl_dom.c:1451:suspend_common_wait_guest_timeout: 
> guest did not suspend, timed out
> libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch 
> w=0x68daf8 wpath=@releaseDomain token=3/1: deregister slotnum=3
> xc: error: Suspend request failed: Internal error
> xc: error: Domain appears not to have suspended: Internal error
> libxl-save-helper: xc_domain_save.c:2077: xc_domain_save: Assertion 
> `rc' failed.
> libxl: error: libxl_utils.c:430:libxl_read_exactly: file/stream 
> truncated reading ipc msg header from domain 40 save/restore helper 
> stdout pipe
> libxl: error: libxl_exec.c:129:libxl_report_child_exitstatus: domain 
> 40 save/restore helper [-1] died due to fatal signal Aborted
> libxl: error: libxl_dom.c:2035:remus_teardown_done: Remus: failed to 
> teardown device for guest with domid 40, rc -3
> libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910: 
> complete, rc=-3
> libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> Failed to save domain, resuming domain
> libxl: debug: libxl.c:542:libxl_domain_resume: ao 0x68d910: create: 
> how=(nil) callback=(nil) poller=0x68d970
> xc: error: Dom 40 not suspended: (shutdown 0, reason 255): Internal error
> libxl: error: libxl.c:511:libxl__domain_resume: xc_domain_resume 
> failed for domain 40: Invalid argument
> libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910: 
> complete, rc=-3
> libxl: debug: libxl.c:545:libxl_domain_resume: ao 0x68d910: 
> inprogress: poller=0x68d970, flags=ic
> libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> xc: debug: hypercall buffer: total allocations:29 total releases:29
> xc: debug: hypercall buffer: current allocations:0 maximum allocations:2
> xc: debug: hypercall buffer: cache current size:2
> xc: debug: hypercall buffer: cache hits:20 misses:2 toobig:7

If you need more informations/tests tell me and I'll post them.

Thanks for any reply and sorry for my bad english.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 11:00:14 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 11:00:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcXQT-0004Pz-I7; Mon, 30 Mar 2015 11:00:13 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcXQR-0004Pu-Dl
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 11:00:11 +0000
Received: from [85.158.137.68] by server-10.bemta-3.messagelabs.com id
	CB/B2-14673-ABC29155; Mon, 30 Mar 2015 11:00:10 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-31.messagelabs.com!1427713208!12263717!1
X-Originating-IP: [74.125.82.43]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8678 invoked from network); 30 Mar 2015 11:00:08 -0000
Received: from mail-wg0-f43.google.com (HELO mail-wg0-f43.google.com)
	(74.125.82.43)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 11:00:08 -0000
Received: by wgdm6 with SMTP id m6so169840136wgd.2
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 04:00:08 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:content-type:content-transfer-encoding;
	bh=d9Z60+oWK8PASadi2JTZF2nJTu2DdgE4icwGyYy+ItM=;
	b=eCH4LeIo9gjIHxGUlFwB4XJ87W4dTKDkemc/5zSjOtDN1EJ1msL3Iayu8Gy+Mt2JP3
	4hgLuxZAt8InlQN1aQescQ2rDBPC1kSrCO7uYU118jrsARpMaRLCJUB6oim1QvfFZdj1
	BUS9eWX8zigwm0Df4wa7fO7xKMKglHqay/QoGPQKP6jB0CN98Zhu7jRXmnLH9SiyrF40
	d4MKvhlNEz6dTX16YQXitmYg/H33YU7gLR4H8cZQJ0cJkG+wRyzEY4qdxGVdFo+ZkLLK
	cV1j4xdXjTqnvdwgU1xPDszT4KaBFGBhkqjM+YFKMoRqG+BhPfFDZWLqbgvxtpwehTp8
	FzhA==
X-Gm-Message-State: ALoCoQnmfJqdgta/DHea5/DhKtGOjtrOoiZNf7vLX/qsxWbFqeFXCPHkmnSAvOard35tcEnfL2xH
X-Received: by 10.180.78.161 with SMTP id c1mr19387690wix.36.1427713207123;
	Mon, 30 Mar 2015 04:00:07 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	l10sm15224293wje.15.2015.03.30.04.00.05
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 04:00:06 -0700 (PDT)
Message-ID: <55192CB4.7030802@m2r.biz>
Date: Mon, 30 Mar 2015 13:00:04 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] Multiple save/restore failing with windows 8.1 64
	bit domU
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

I tried 2 times multiple save/restore (start domU, use it for some 
minutes, do a save restore, use it, do another save/restore) and in both 
case second save failed:

> xl -vvv save W8 /mnt/vm/save/W8
> libxl: debug: libxl.c:6705:libxl_retrieve_domain_configuration: no 
> vtpm from xenstore for domain 40
> libxl: debug: libxl.c:6707:libxl_retrieve_domain_configuration: no pci 
> from xenstore for domain 40
> Saving to /mnt/vm/save/W8 new xl format (info 0x1/0x0/1941)
> libxl: debug: libxl.c:953:libxl_domain_suspend: ao 0x68d910: create: 
> how=(nil) callback=(nil) poller=0x68d970
> libxl: debug: libxl_dom.c:1573:libxl__toolstack_save: domain=40 
> toolstack data size=49
> libxl: debug: libxl.c:975:libxl_domain_suspend: ao 0x68d910: 
> inprogress: poller=0x68d970, flags=i
> libxl-save-helper: debug: starting save: Success
> xc: detail: xc_domain_save: starting save of domid 40
> libxl: debug: libxl_dom.c:1278:domain_suspend_callback_common: issuing 
> PVHVM suspend request via XenBus control node
> libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch 
> w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0: register 
> slotnum=3
> libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68dae0 
> wpath=/local/domain/40/control/shutdown token=3/0: event 
> epath=/local/domain/40/control/shutdown
> libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch 
> w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0: 
> deregister slotnum=3
> libxl: debug: 
> libxl_dom.c:1360:domain_suspend_common_pvcontrol_suspending: guest 
> acknowledged suspend request
> libxl: debug: libxl_dom.c:1379:domain_suspend_common_wait_guest: wait 
> for the guest to suspend
> libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch 
> w=0x68daf8 wpath=@releaseDomain token=3/1: register slotnum=3
> libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68daf8 
> wpath=@releaseDomain token=3/1: event epath=@releaseDomain
> libxl: error: libxl_dom.c:1451:suspend_common_wait_guest_timeout: 
> guest did not suspend, timed out
> libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch 
> w=0x68daf8 wpath=@releaseDomain token=3/1: deregister slotnum=3
> xc: error: Suspend request failed: Internal error
> xc: error: Domain appears not to have suspended: Internal error
> libxl-save-helper: xc_domain_save.c:2077: xc_domain_save: Assertion 
> `rc' failed.
> libxl: error: libxl_utils.c:430:libxl_read_exactly: file/stream 
> truncated reading ipc msg header from domain 40 save/restore helper 
> stdout pipe
> libxl: error: libxl_exec.c:129:libxl_report_child_exitstatus: domain 
> 40 save/restore helper [-1] died due to fatal signal Aborted
> libxl: error: libxl_dom.c:2035:remus_teardown_done: Remus: failed to 
> teardown device for guest with domid 40, rc -3
> libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910: 
> complete, rc=-3
> libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> Failed to save domain, resuming domain
> libxl: debug: libxl.c:542:libxl_domain_resume: ao 0x68d910: create: 
> how=(nil) callback=(nil) poller=0x68d970
> xc: error: Dom 40 not suspended: (shutdown 0, reason 255): Internal error
> libxl: error: libxl.c:511:libxl__domain_resume: xc_domain_resume 
> failed for domain 40: Invalid argument
> libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910: 
> complete, rc=-3
> libxl: debug: libxl.c:545:libxl_domain_resume: ao 0x68d910: 
> inprogress: poller=0x68d970, flags=ic
> libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> xc: debug: hypercall buffer: total allocations:29 total releases:29
> xc: debug: hypercall buffer: current allocations:0 maximum allocations:2
> xc: debug: hypercall buffer: cache current size:2
> xc: debug: hypercall buffer: cache hits:20 misses:2 toobig:7

If you need more informations/tests tell me and I'll post them.

Thanks for any reply and sorry for my bad english.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 11:04:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 11:04:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcXUH-0004Y4-Rb; Mon, 30 Mar 2015 11:04:09 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcXUG-0004Xz-IC
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 11:04:08 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
	9F/10-20070-7AD29155; Mon, 30 Mar 2015 11:04:07 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-206.messagelabs.com!1427713446!12581524!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15610 invoked from network); 30 Mar 2015 11:04:07 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-13.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 11:04:07 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208";a="33159677"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: Multiple save/restore failing with windows 8.1 64 bit domU
Thread-Index: AQHQati05+G/VEyHyUKbEtI7jazazZ003Bog
Date: Mon, 30 Mar 2015 11:04:06 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C18B@AMSPEX01CL01.citrite.net>
References: <55192CB4.7030802@m2r.biz>
In-Reply-To: <55192CB4.7030802@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Multiple save/restore failing with windows 8.1
	64 bit domU
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 30 March 2015 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: Multiple save/restore failing with windows 8.1 64 bit domU
> 
> I tried 2 times multiple save/restore (start domU, use it for some
> minutes, do a save restore, use it, do another save/restore) and in both
> case second save failed:

Ok. I'll try to repro. Looks like the drivers ack-ed the suspend request but then didn't manage to quiesce before libxl timed out.

  Paul

> 
> > xl -vvv save W8 /mnt/vm/save/W8
> > libxl: debug: libxl.c:6705:libxl_retrieve_domain_configuration: no
> > vtpm from xenstore for domain 40
> > libxl: debug: libxl.c:6707:libxl_retrieve_domain_configuration: no pci
> > from xenstore for domain 40
> > Saving to /mnt/vm/save/W8 new xl format (info 0x1/0x0/1941)
> > libxl: debug: libxl.c:953:libxl_domain_suspend: ao 0x68d910: create:
> > how=(nil) callback=(nil) poller=0x68d970
> > libxl: debug: libxl_dom.c:1573:libxl__toolstack_save: domain=40
> > toolstack data size=49
> > libxl: debug: libxl.c:975:libxl_domain_suspend: ao 0x68d910:
> > inprogress: poller=0x68d970, flags=i
> > libxl-save-helper: debug: starting save: Success
> > xc: detail: xc_domain_save: starting save of domid 40
> > libxl: debug: libxl_dom.c:1278:domain_suspend_callback_common: issuing
> > PVHVM suspend request via XenBus control node
> > libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch
> > w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0:
> register
> > slotnum=3
> > libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68dae0
> > wpath=/local/domain/40/control/shutdown token=3/0: event
> > epath=/local/domain/40/control/shutdown
> > libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch
> > w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0:
> > deregister slotnum=3
> > libxl: debug:
> > libxl_dom.c:1360:domain_suspend_common_pvcontrol_suspending: guest
> > acknowledged suspend request
> > libxl: debug: libxl_dom.c:1379:domain_suspend_common_wait_guest:
> wait
> > for the guest to suspend
> > libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch
> > w=0x68daf8 wpath=@releaseDomain token=3/1: register slotnum=3
> > libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68daf8
> > wpath=@releaseDomain token=3/1: event epath=@releaseDomain
> > libxl: error: libxl_dom.c:1451:suspend_common_wait_guest_timeout:
> > guest did not suspend, timed out
> > libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch
> > w=0x68daf8 wpath=@releaseDomain token=3/1: deregister slotnum=3
> > xc: error: Suspend request failed: Internal error
> > xc: error: Domain appears not to have suspended: Internal error
> > libxl-save-helper: xc_domain_save.c:2077: xc_domain_save: Assertion
> > `rc' failed.
> > libxl: error: libxl_utils.c:430:libxl_read_exactly: file/stream
> > truncated reading ipc msg header from domain 40 save/restore helper
> > stdout pipe
> > libxl: error: libxl_exec.c:129:libxl_report_child_exitstatus: domain
> > 40 save/restore helper [-1] died due to fatal signal Aborted
> > libxl: error: libxl_dom.c:2035:remus_teardown_done: Remus: failed to
> > teardown device for guest with domid 40, rc -3
> > libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910:
> > complete, rc=-3
> > libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> > Failed to save domain, resuming domain
> > libxl: debug: libxl.c:542:libxl_domain_resume: ao 0x68d910: create:
> > how=(nil) callback=(nil) poller=0x68d970
> > xc: error: Dom 40 not suspended: (shutdown 0, reason 255): Internal error
> > libxl: error: libxl.c:511:libxl__domain_resume: xc_domain_resume
> > failed for domain 40: Invalid argument
> > libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910:
> > complete, rc=-3
> > libxl: debug: libxl.c:545:libxl_domain_resume: ao 0x68d910:
> > inprogress: poller=0x68d970, flags=ic
> > libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> > xc: debug: hypercall buffer: total allocations:29 total releases:29
> > xc: debug: hypercall buffer: current allocations:0 maximum allocations:2
> > xc: debug: hypercall buffer: cache current size:2
> > xc: debug: hypercall buffer: cache hits:20 misses:2 toobig:7
> 
> If you need more informations/tests tell me and I'll post them.
> 
> Thanks for any reply and sorry for my bad english.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 11:04:09 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 11:04:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcXUH-0004Y4-Rb; Mon, 30 Mar 2015 11:04:09 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcXUG-0004Xz-IC
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 11:04:08 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
	9F/10-20070-7AD29155; Mon, 30 Mar 2015 11:04:07 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-206.messagelabs.com!1427713446!12581524!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15610 invoked from network); 30 Mar 2015 11:04:07 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-13.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 11:04:07 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208";a="33159677"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: Multiple save/restore failing with windows 8.1 64 bit domU
Thread-Index: AQHQati05+G/VEyHyUKbEtI7jazazZ003Bog
Date: Mon, 30 Mar 2015 11:04:06 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C18B@AMSPEX01CL01.citrite.net>
References: <55192CB4.7030802@m2r.biz>
In-Reply-To: <55192CB4.7030802@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Multiple save/restore failing with windows 8.1
	64 bit domU
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 30 March 2015 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: Multiple save/restore failing with windows 8.1 64 bit domU
> 
> I tried 2 times multiple save/restore (start domU, use it for some
> minutes, do a save restore, use it, do another save/restore) and in both
> case second save failed:

Ok. I'll try to repro. Looks like the drivers ack-ed the suspend request but then didn't manage to quiesce before libxl timed out.

  Paul

> 
> > xl -vvv save W8 /mnt/vm/save/W8
> > libxl: debug: libxl.c:6705:libxl_retrieve_domain_configuration: no
> > vtpm from xenstore for domain 40
> > libxl: debug: libxl.c:6707:libxl_retrieve_domain_configuration: no pci
> > from xenstore for domain 40
> > Saving to /mnt/vm/save/W8 new xl format (info 0x1/0x0/1941)
> > libxl: debug: libxl.c:953:libxl_domain_suspend: ao 0x68d910: create:
> > how=(nil) callback=(nil) poller=0x68d970
> > libxl: debug: libxl_dom.c:1573:libxl__toolstack_save: domain=40
> > toolstack data size=49
> > libxl: debug: libxl.c:975:libxl_domain_suspend: ao 0x68d910:
> > inprogress: poller=0x68d970, flags=i
> > libxl-save-helper: debug: starting save: Success
> > xc: detail: xc_domain_save: starting save of domid 40
> > libxl: debug: libxl_dom.c:1278:domain_suspend_callback_common: issuing
> > PVHVM suspend request via XenBus control node
> > libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch
> > w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0:
> register
> > slotnum=3
> > libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68dae0
> > wpath=/local/domain/40/control/shutdown token=3/0: event
> > epath=/local/domain/40/control/shutdown
> > libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch
> > w=0x68dae0 wpath=/local/domain/40/control/shutdown token=3/0:
> > deregister slotnum=3
> > libxl: debug:
> > libxl_dom.c:1360:domain_suspend_common_pvcontrol_suspending: guest
> > acknowledged suspend request
> > libxl: debug: libxl_dom.c:1379:domain_suspend_common_wait_guest:
> wait
> > for the guest to suspend
> > libxl: debug: libxl_event.c:577:libxl__ev_xswatch_register: watch
> > w=0x68daf8 wpath=@releaseDomain token=3/1: register slotnum=3
> > libxl: debug: libxl_event.c:514:watchfd_callback: watch w=0x68daf8
> > wpath=@releaseDomain token=3/1: event epath=@releaseDomain
> > libxl: error: libxl_dom.c:1451:suspend_common_wait_guest_timeout:
> > guest did not suspend, timed out
> > libxl: debug: libxl_event.c:615:libxl__ev_xswatch_deregister: watch
> > w=0x68daf8 wpath=@releaseDomain token=3/1: deregister slotnum=3
> > xc: error: Suspend request failed: Internal error
> > xc: error: Domain appears not to have suspended: Internal error
> > libxl-save-helper: xc_domain_save.c:2077: xc_domain_save: Assertion
> > `rc' failed.
> > libxl: error: libxl_utils.c:430:libxl_read_exactly: file/stream
> > truncated reading ipc msg header from domain 40 save/restore helper
> > stdout pipe
> > libxl: error: libxl_exec.c:129:libxl_report_child_exitstatus: domain
> > 40 save/restore helper [-1] died due to fatal signal Aborted
> > libxl: error: libxl_dom.c:2035:remus_teardown_done: Remus: failed to
> > teardown device for guest with domid 40, rc -3
> > libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910:
> > complete, rc=-3
> > libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> > Failed to save domain, resuming domain
> > libxl: debug: libxl.c:542:libxl_domain_resume: ao 0x68d910: create:
> > how=(nil) callback=(nil) poller=0x68d970
> > xc: error: Dom 40 not suspended: (shutdown 0, reason 255): Internal error
> > libxl: error: libxl.c:511:libxl__domain_resume: xc_domain_resume
> > failed for domain 40: Invalid argument
> > libxl: debug: libxl_event.c:1766:libxl__ao_complete: ao 0x68d910:
> > complete, rc=-3
> > libxl: debug: libxl.c:545:libxl_domain_resume: ao 0x68d910:
> > inprogress: poller=0x68d970, flags=ic
> > libxl: debug: libxl_event.c:1738:libxl__ao__destroy: ao 0x68d910: destroy
> > xc: debug: hypercall buffer: total allocations:29 total releases:29
> > xc: debug: hypercall buffer: current allocations:0 maximum allocations:2
> > xc: debug: hypercall buffer: cache current size:2
> > xc: debug: hypercall buffer: cache hits:20 misses:2 toobig:7
> 
> If you need more informations/tests tell me and I'll post them.
> 
> Thanks for any reply and sorry for my bad english.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 12:30:22 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 12:30:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcYpi-0001Gf-3F; Mon, 30 Mar 2015 12:30:22 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcYpg-0001GM-12
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 12:30:20 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	01/1D-23180-AD149155; Mon, 30 Mar 2015 12:30:18 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1427718616!14227747!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21845 invoked from network); 30 Mar 2015 12:30:16 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 12:30:16 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208,217";a="33161851"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMP//8GSAAATCDpD//+TmgP//wJIA
Date: Mon, 30 Mar 2015 12:30:14 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C374@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
	<5519278F.3030103@m2r.biz>
In-Reply-To: <5519278F.3030103@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4393287189818993463=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============4393287189818993463==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for your thoughts. Your contributions to driver testing are very muc=
h appreciated.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 11:38
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 12:17, Paul Durrant ha scritto:
Yes, the XenProject blog was what I was thinking of. It would be good to ha=
ve your perspective on working with the drivers. I'm sure myself, Lars or R=
uss can help with correcting English.

    Paul

I think that this project is very good but need more people that help with =
testing it, reporting bugs, and possibly help with documentation, developme=
nt etc.
I'm trying to help much as I can with testing, bug reporting and small docu=
mentations but I don't think I have the skills/knowledge/time for other :(
Another things I think are good are:
merging it with xenserver one, both opensource but this seems "only a fork"=
 now
prepare for first stable version for release of xen 4.6 if possible
official builds with drivers signed if possible (at least stable builds)
And then it would be great to have also bugfix-only builds later during the=
 development of new versions.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 10:59
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 10:56, Paul Durrant ha scritto:
Thanks for the notes. Perhaps worth a blog entry?

  Paul

Which blog you mean?
If you mean the Xen blog is perhaps useful to inform all on the state of wi=
npv drivers with all the notes about them for anyone want to help in testin=
g and/or development.
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.











--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06AED.A70488B0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle30
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for your thoughts. Your contributio=
ns
 to driver testing are very much appreciated.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 11:38<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 30/03/2015 12:17, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Yes, the XenProject blog was what I was thinking of.
 It would be good to have your perspective on working with the drivers. I&#=
8217;m sure myself, Lars or Russ can help with correcting English.</span></=
font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I think that this project is very good but need more people that help with =
testing it, reporting bugs,
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">and possibly</s=
pan></span><span lang=3D"EN" style=3D"mso-fareast-font-family:&quot;Times N=
ew Roman&quot;;mso-ansi-language:EN">
<span class=3D"hps">help</span> <span class=3D"hps">with</span> <span class=
=3D"hps">documentation, development</span>
<span class=3D"hps">etc.</span></span><span class=3D"hps"><span lang=3D"EN"=
 style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">I'm trying to h=
elp much as I can with testing, bug reporting and small documentations but =
I don't think</span></span><span lang=3D"EN" style=3D"mso-fareast-font-fami=
ly:&quot;Times New Roman&quot;;mso-ansi-language:EN">
<span class=3D"hps">I have the skills/knowledge/time for other :(</span></s=
pan><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><b=
r>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Another things =
I think are good are:</span></span><span class=3D"hps"><span lang=3D"EN" st=
yle=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">merging it with=
 xenserver one, both opensource but this seems &quot;only a fork&quot; now<=
/span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langua=
ge:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">prepare for fir=
st stable version for release of xen 4.6 if possible</span></span><span cla=
ss=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">official builds=
 with drivers signed if possible (at least stable builds)</span></span><spa=
n class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">And then it wou=
ld be great to have also bugfix-only builds later during the development of=
 new versions.</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"=
mso-ansi-language:EN"><br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></span><span style=3D"mso-fareast-font-family:&quot;Times =
New Roman&quot;"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 10:59<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog entry=
?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Which blog</span></span><span class=3D"shorttext"><span lang=3D"EN"=
 style=3D"mso-ansi-language:EN">
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">you mean?</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"><br>
</span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"=
>If</span></span><span lang=3D"EN" style=3D"mso-ansi-language:EN">
<span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span cl=
ass=3D"hps">
Xen blog</span> <span class=3D"hps">is</span> <span class=3D"hps">perhaps</=
span> <span class=3D"hps">
useful</span> <span class=3D"hps">to inform all</span> <span class=3D"hps">=
on the state of</span>
<span class=3D"hps">winpv drivers</span> with all the<span class=3D"hps"> n=
otes</span>
<span class=3D"hps">about them</span> <span class=3D"hps">for anyone want t=
o</span> <span class=3D"hps">
help</span> <span class=3D"hps">in testing and/or development</span>.</span=
><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"><br>
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 16:07, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sounds like your VM is missing something pretty =
vital then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span lang=3D"EN" style=3D"mso-fareast-font-=
family:&quot;Times New Roman&quot;;mso-ansi-language:EN">
</span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;">=
I tried to do a batch for remove pv drivers things that remain after uninst=
all all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 20/03/2015 11:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 16/03/2015 18:40, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">As I reported time ago there was strange thing when update network compon=
ents: give &quot;ready to use&quot; instead of &quot;device updated&quot; m=
essage
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 0=
0000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">&nbsp;</span></font><o:p></o:p=
></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_--


--===============4393287189818993463==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============4393287189818993463==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 12:30:22 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 12:30:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcYpi-0001Gf-3F; Mon, 30 Mar 2015 12:30:22 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcYpg-0001GM-12
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 12:30:20 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
	01/1D-23180-AD149155; Mon, 30 Mar 2015 12:30:18 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1427718616!14227747!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	HTML_MESSAGE,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21845 invoked from network); 30 Mar 2015 12:30:16 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 12:30:16 -0000
X-IronPort-AV: E=Sophos;i="5.11,493,1422921600"; d="scan'208,217";a="33161851"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] xenvif xennet don't update or load correctly
	and another error saw in qemu log
Thread-Index: AQHQXA55RAT0rIiZsEuDIrfR4UCRs50XZSAw///1AICAABLN4IAHxMoAgAA1S1CAAPF9AIAE3ZzAgAY58wCAABq0EIAAKmQAgAATEUD///V9gIAAErAQgASbgYCABGpUMP//8GSAAATCDpD//+TmgP//wJIA
Date: Mon, 30 Mar 2015 12:30:14 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C374@AMSPEX01CL01.citrite.net>
References: <55005C86.6040605@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583EB59@AMSPEX01CL01.citrite.net>
	<55006197.7060700@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583ED17@AMSPEX01CL01.citrite.net>
	<5506F5AE.1000607@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025844451@AMSPEX01CL01.citrite.net>
	<5507ECF6.4080902@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584C15A@AMSPEX01CL01.citrite.net>
	<55113AF4.4010808@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02584FB92@AMSPEX01CL01.citrite.net>
	<551174EA.50103@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850046@AMSPEX01CL01.citrite.net>
	<55117C17.3000208@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025850130@AMSPEX01CL01.citrite.net>
	<55156935.80702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585B6F5@AMSPEX01CL01.citrite.net>
	<55191E5D.8010702@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585C07B@AMSPEX01CL01.citrite.net>
	<5519278F.3030103@m2r.biz>
In-Reply-To: <5519278F.3030103@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly and
 another error saw in qemu log
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4393287189818993463=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============4393287189818993463==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_"

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Thanks for your thoughts. Your contributions to driver testing are very muc=
h appreciated.

  Paul

From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 11:38
To: Paul Durrant; win-pv-devel@lists.xenproject.org
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 12:17, Paul Durrant ha scritto:
Yes, the XenProject blog was what I was thinking of. It would be good to ha=
ve your perspective on working with the drivers. I'm sure myself, Lars or R=
uss can help with correcting English.

    Paul

I think that this project is very good but need more people that help with =
testing it, reporting bugs, and possibly help with documentation, developme=
nt etc.
I'm trying to help much as I can with testing, bug reporting and small docu=
mentations but I don't think I have the skills/knowledge/time for other :(
Another things I think are good are:
merging it with xenserver one, both opensource but this seems "only a fork"=
 now
prepare for first stable version for release of xen 4.6 if possible
official builds with drivers signed if possible (at least stable builds)
And then it would be great to have also bugfix-only builds later during the=
 development of new versions.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 30 March 2015 10:59
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 30/03/2015 10:56, Paul Durrant ha scritto:
Thanks for the notes. Perhaps worth a blog entry?

  Paul

Which blog you mean?
If you mean the Xen blog is perhaps useful to inform all on the state of wi=
npv drivers with all the notes about them for anyone want to help in testin=
g and/or development.
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 27 March 2015 14:29
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 16:07, Paul Durrant ha scritto:
Sounds like your VM is missing something pretty vital then unfortunately.

  Paul

I probably found a solution, I did some tests successfull.
Here a readme with some notes about new winpv drivers based on my tests:
http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.

About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 15:01
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 15:41, Paul Durrant ha scritto:
No, that looks ok. You should not need to do anything magic to re-enable th=
e emulated IDE; the driver should already be there. Can you boot up in safe=
 mode?

  Paul

I tried also safe mode but was still unable to start.



From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 14:30
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 24/03/2015 12:00, Paul Durrant ha scritto:
Thanks for the logs. The processor-group-awareness patch did introduce a co=
uple of problems in to XENVIF. I just posted a couple of patches that shoul=
d hopefully fix these. I'll apply them later if no-one shouts so there shou=
ld be a new build by the end of the day.

  Paul

Thanks.
Meanwhile I tried to do a batch for remove pv drivers things that remain af=
ter uninstall all from control panel.
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0

I did the following commands:

net stop xenlite
sc delete xenlite
DEL /q "%SystemRoot%\system32\liteagent.exe"
sc delete xeniface
DEL /q "%SystemRoot%\system32\drivers\xeniface.sys"
sc delete xendisk
DEL /q "%SystemRoot%\system32\drivers\xendisk.sys"
sc delete xennet
DEL /q "%SystemRoot%\system32\drivers\xennet.sys"
sc delete xenvbd
DEL /q "%SystemRoot%\system32\drivers\xenvbd.sys"
sc delete XENVIF
DEL /q "%SystemRoot%\system32\drivers\xenvif.sys"
sc delete XENFILT
DEL /q "%SystemRoot%\system32\drivers\xenfilt.sys"
sc delete XENBUS
DEL /q "%SystemRoot%\system32\drivers\xenbus.sys"

I did something wrong or missed?
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.

Thanks for any reply.





From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
Sent: 24 March 2015 10:23
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 20/03/2015 11:22, Paul Durrant ha scritto:
Sorry for the delay, I missed this...

It's fairly easy... The service keys are named the same as the driver, so g=
o look in HKLM/CurrentControlSet/Services and find all the things starting =
with XEN and then either get rid of them or set the StartType value to 4 (d=
isabled).

  Paul

Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.

Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.
In attachments qemu log and crash minidump.

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 17 March 2015 09:00
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 16/03/2015 18:40, Paul Durrant ha scritto:
Hi,

  Windows driver removal is a black art and is broken in different ways on =
different versions of Windows. As you correctly observe, using the pnputil =
tool does not actually remove the drivers, and hence you'll see DllInitiali=
ze() and DriverEntry() functions called *but* there should be no AddDevice(=
) called i.e. the drivers are unbound from the devices but the modules are =
still present.
  If you also want to stop the driver modules from loading then you need to=
 remove the service keys from the registry, which you should be able to saf=
ely do after the reboot. If you just remove the binaries from system32 then=
 you may well end up in a situation where the registry is telling the syste=
m to load a driver but, when it looks, the binary has gone.

  Paul

Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 16 March 2015 15:25
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:47, Paul Durrant ha scritto:
Have a look in C:\Windows\System32\DriverStore\FileRepository. If you still=
 have packages for old drivers in here then Windows can find them and re-in=
stall them even if you think you've uninstalled. The correct way to remove =
packages is using 'pnputil -d' but it's a bit clunky.

  Paul

I removed all pv drivers visible in windows control panel, after I removed =
with "pnputil -f -d" all remaining drivers found with "pnputil /e" and rebo=
oted.
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.
Previous week tests instead gave me windows blue screen "registry error" 1 =
minute after windows boot.

Is there another way to clean uninstall all drivers without risk of problem=
s?

Thanks for any reply and sorry for my bad english.



From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:39
To: Paul Durrant; win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lis=
ts.xenproject.org>
Subject: Re: [win-pv-devel] xenvif xennet don't update or load correctly an=
d another error saw in qemu log

Il 11/03/2015 16:22, Paul Durrant ha scritto:
Have you tried uninstalling all versions of XENVIF and XENNET and then re-i=
nstalling the latest? Windows should always prefer the newest driver by dat=
e but maybe something has gone wrong and for some reason is favouring a rea=
lly old version you have lying around in DriverStore.

Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install give me "ready to use" instead of "dev=
ice updated" message at end.
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.



The RangeSetPop error is not anything to worry about. It is expected. It si=
mply means the grant table has run out of space and needs to be expanded, w=
hich is why you see the error immediately followed by a map and populate of=
 the next grant table page.

Paul


From: win-pv-devel-bounces@lists.xenproject.org<mailto:win-pv-devel-bounces=
@lists.xenproject.org> [mailto:win-pv-devel-bounces@lists.xenproject.org] O=
n Behalf Of Fabio Fantoni
Sent: 11 March 2015 15:17
To: win-pv-devel@lists.xenproject.org<mailto:win-pv-devel@lists.xenproject.=
org>
Cc: Paul Durrant
Subject: [win-pv-devel] xenvif xennet don't update or load correctly and an=
other error saw in qemu log

As I reported time ago there was strange thing when update network componen=
ts: give "ready to use" instead of "device updated" message at end of drive=
r component install.
Today I saw in qemu log of one W7 pro 64 bit domU this:
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)

Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.

other components instead seems loaded correctly the latest build installed:
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)

----------

I saw also these errors in qemu log:
...

xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 000=
00000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]
...
Can someone tell me something about?
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?

Full qemu log in attachment is needed.

If you need more informations and/or tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.











--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"ProgId" content=3D"Word.Document">
<meta name=3D"Generator" content=3D"Microsoft Word 14">
<meta name=3D"Originator" content=3D"Microsoft Word 14">
<link rel=3D"File-List" href=3D"cid:filelist.xml@01D06AED.A70488B0"><!--[if=
 gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:DoNotExpandShiftReturn/>
<w:BreakWrappedTables/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val=3D"Cambria Math"/>
<m:brkBin m:val=3D"before"/>
<m:brkBinSub m:val=3D"&#45;-"/>
<m:smallFrac m:val=3D"off"/>
<m:dispDef/>
<m:lMargin m:val=3D"0"/>
<m:rMargin m:val=3D"0"/>
<m:defJc m:val=3D"centerGroup"/>
<m:wrapIndent m:val=3D"1440"/>
<m:intLim m:val=3D"subSup"/>
<m:naryLim m:val=3D"undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi=
Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D=
"267">
<w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
<w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 3"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 4"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 5"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 6"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 7"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 8"/>
<w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he=
ading 9"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
<w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
<w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c=
aption"/>
<w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
<w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F=
ont"/>
<w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
<w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
<w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Table Grid"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold=
er Text"/>
<w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide=
WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
<w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"=
/>
<w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
<w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
<w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
<w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
<w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
<w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid=
eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
<w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
<w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T=
OC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
	{font-family:"Times New Roman \;color\:\#1F497D";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roman \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                Roma";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A                  Ro";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Roma \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New Ro \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"serif \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times New \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:"Times\000D\000A";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536859905 -1073711039 9 0 511 0;}
@font-face
	{font-family:"Times \, serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	text-decoration:underline;
	text-underline:single;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle20
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle21
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.shorttext
	{mso-style-name:short_text;
	mso-style-unhide:no;}
span.hps
	{mso-style-name:hps;
	mso-style-unhide:no;}
span.EmailStyle26
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle27
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle28
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle29
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.EmailStyle30
	{mso-style-type:personal-reply;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	color:#1F497D;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=
=3D"tab-interval:36.0pt">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D">Thanks for your thoughts. Your contributio=
ns
 to driver testing are very much appreciated.<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul<o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-fareast-font-family:Calibri;mso-bidi-font-family:&quot;Time=
s New Roman&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></font></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><font size=3D"2" color=3D"black" face=3D"Tahoma">=
<span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quo=
t;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times New Roman&quo=
t;;color:windowtext;mso-ansi-language:EN-US;font-weight:bold">From:</span><=
/font></b><font size=3D"2" color=3D"black" face=3D"Tahoma"><span lang=3D"EN=
-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-se=
rif&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;;color:windowt=
ext;mso-ansi-language:EN-US">
 Fabio Fantoni [mailto:fabio.fantoni@m2r.biz] <br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 11:38<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; win-pv-dev=
el@lists.xenproject.org<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log<o:p></o:p></span></font></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;">Il 30/03/2015 12:17, Paul Durrant ha scritto:<o:p></o:p></s=
pan></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">Yes, the XenProject blog was what I was thinking of.
 It would be good to have your perspective on working with the drivers. I&#=
8217;m sure myself, Lars or Russ can help with correcting English.</span></=
font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><br>
I think that this project is very good but need more people that help with =
testing it, reporting bugs,
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">and possibly</s=
pan></span><span lang=3D"EN" style=3D"mso-fareast-font-family:&quot;Times N=
ew Roman&quot;;mso-ansi-language:EN">
<span class=3D"hps">help</span> <span class=3D"hps">with</span> <span class=
=3D"hps">documentation, development</span>
<span class=3D"hps">etc.</span></span><span class=3D"hps"><span lang=3D"EN"=
 style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">I'm trying to h=
elp much as I can with testing, bug reporting and small documentations but =
I don't think</span></span><span lang=3D"EN" style=3D"mso-fareast-font-fami=
ly:&quot;Times New Roman&quot;;mso-ansi-language:EN">
<span class=3D"hps">I have the skills/knowledge/time for other :(</span></s=
pan><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><b=
r>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">Another things =
I think are good are:</span></span><span class=3D"hps"><span lang=3D"EN" st=
yle=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">merging it with=
 xenserver one, both opensource but this seems &quot;only a fork&quot; now<=
/span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langua=
ge:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">prepare for fir=
st stable version for release of xen 4.6 if possible</span></span><span cla=
ss=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">official builds=
 with drivers signed if possible (at least stable builds)</span></span><spa=
n class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"><br>
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN">And then it wou=
ld be great to have also bugfix-only builds later during the development of=
 new versions.</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"=
mso-ansi-language:EN"><br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></span><span style=3D"mso-fareast-font-family:&quot;Times =
New Roman&quot;"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;mso-bidi-font-family:&quot;Times New Roman \;color\:\#1F497D&qu=
ot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 30 March 2015 10:59<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p=
></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;">Il 30/03/2015 10:56, Paul Durrant ha scritto:</span>=
</font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the notes. Perhaps worth a blog entry=
?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;"><br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Which blog</span></span><span class=3D"shorttext"><span lang=3D"EN"=
 style=3D"mso-ansi-language:EN">
</span></span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">you mean?</span></span><span style=3D"mso-fareast-font-family:&quot=
;Times New Roman&quot;"><br>
</span><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-language:EN"=
>If</span></span><span lang=3D"EN" style=3D"mso-ansi-language:EN">
<span class=3D"hps">you mean</span> <span class=3D"hps">the</span> <span cl=
ass=3D"hps">
Xen blog</span> <span class=3D"hps">is</span> <span class=3D"hps">perhaps</=
span> <span class=3D"hps">
useful</span> <span class=3D"hps">to inform all</span> <span class=3D"hps">=
on the state of</span>
<span class=3D"hps">winpv drivers</span> with all the<span class=3D"hps"> n=
otes</span>
<span class=3D"hps">about them</span> <span class=3D"hps">for anyone want t=
o</span> <span class=3D"hps">
help</span> <span class=3D"hps">in testing and/or development</span>.</span=
><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"><br>
But in that case I think other and all possibible informations should be ad=
ded, my notes is short for now and probably my english is bad.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 27 March 2015 14:29<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New R=
oman , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                  Ro"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                  Ro&quot;,&quot;serif&quot;">Il 24/03/2015 16:07, Paul Dur=
rant ha scritto:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sounds like your VM is missing something pretty =
vital then unfortunately.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;"><br>
I probably found a solution, I did some tests successfull.<br>
Here a readme with some notes about new winpv drivers based on my tests:<br=
>
<a href=3D"http://fantu.info/xen/Notes_new_xen_winpv_drivers.7z">http://fan=
tu.info/xen/Notes_new_xen_winpv_drivers.7z</a><br>
Probably can be useful for other users that wants tests new winpv drivers, =
I think that anyone can improve it and in future probably can be also added=
 to wiki.<br>
<br>
About regression reported some days ago seems solved with latest build and =
I not found other critical/important bugs for now, thanks.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 15:01<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
o , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro ,=
 serif&quot;,&quot;serif&quot;">Il 24/03/2015 15:41, Paul Durrant ha scritt=
o:</span></font><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">No, that looks ok. You should not need to do any=
thing magic to re-enable the emulated IDE; the driver should already
 be there. Can you boot up in safe mode?</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;"><br>
I tried also safe mode but was still unable to start.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 14:30<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
"><span style=3D"font-size:12.0pt;font-family:&quot;Times New
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">Il 24/03/2015 12:00, Paul Durrant ha scritto:</span></fon=
t><o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Thanks for the logs. The processor-group-awarene=
ss patch did introduce a couple of problems in to XENVIF. I just
 posted a couple of patches that should hopefully fix these. I&#8217;ll app=
ly them later if no-one shouts so there should be a new build by the end of=
 the day.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
Thanks.<br>
</span></font><span class=3D"hps"><span lang=3D"EN" style=3D"mso-ansi-langu=
age:EN">Meanwhile</span></span><span lang=3D"EN" style=3D"mso-fareast-font-=
family:&quot;Times New Roman&quot;;mso-ansi-language:EN">
</span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&quot;">=
I tried to do a batch for remove pv drivers things that remain after uninst=
all all from control panel.<br>
Instead remove the registry keys about services I removed them with sc comm=
and that also delete registry keys and the files about but after reboot I h=
ad always blue screen with 7B without nothing in logs, no minidump and also=
 with xen_platform_pci=3D0<br>
<br>
I did the following commands:<br style=3D"mso-special-character:line-break"=
>
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">net stop xenlite<br>
sc delete xenlite<br>
DEL /q &quot;%SystemRoot%\system32\liteagent.exe&quot;<br>
sc delete xeniface<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xeniface.sys&quot;<br>
sc delete xendisk<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xendisk.sys&quot;<br>
sc delete xennet<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xennet.sys&quot;<br>
sc delete xenvbd<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvbd.sys&quot;<br>
sc delete XENVIF<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenvif.sys&quot;<br>
sc delete XENFILT<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenfilt.sys&quot;<br>
sc delete XENBUS<br>
DEL /q &quot;%SystemRoot%\system32\drivers\xenbus.sys&quot;</span></font><o=
:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;"><br>
I did something wrong or missed?<br>
Is needed to add/change registry key about disk controller standard to have=
 emulated qemu controller working?<br>
I remember something similar with xp changing disk controller but I not fou=
nd exact reg key to add in windows 7 about with a fast search.<br>
<br>
Thanks for any reply.<br>
<br>
<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
 Fabio Fantoni [<a href=3D"mailto:fabio.fantoni@m2r.biz">mailto:fabio.fanto=
ni@m2r.biz</a>]
<br>
<b><span style=3D"font-weight:bold">Sent:</span></b> 24 March 2015 10:23<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 20/03/2015 11:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Sorry for the delay, I missed this&#8230;</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">It&#8217;s fairly easy&#8230; The service keys a=
re named the same as the driver, so go look in HKLM/CurrentControlSet/Servi=
ces
 and find all the things starting with XEN and then either get rid of them =
or set the StartType value to 4 (disabled).</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt"><br>
Thanks for reply, I'll try to do a bat script for remove all files and regi=
stry keys of pv drivers and I'll post it for help also other people having =
problems about.<br>
<br>
Today after updating pv drivers to latest build I had blue screen after reb=
oot windows, seems about xenvif.<br>
In attachments qemu log and crash minidump.<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]><o:p></o:p></span></font></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 17 March 2015 09:00<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 16/03/2015 18:40, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Hi,</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Windows driver removal is a black art and is broken in different way=
s on different versions of Windows. As you correctly observe, using the pnp=
util tool does not actually remove the drivers, and hence you&#8217;ll see =
DllInitialize() and DriverEntry() functions
 called *<b><span style=3D"font-weight:bold">but</span></b>* there should b=
e no AddDevice() called i.e. the drivers are unbound from the devices but t=
he modules are still present.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>If you also want to stop the driver modules from loading then you ne=
ed to remove the service keys from the registry, which you should be able t=
o safely do after the reboot. If you just remove the binaries from system32=
 then you may well end up in a situation
 where the registry is telling the system to load a driver but, when it loo=
ks, the binary has gone.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;"><br>
Can you tell me which ones registry keys I must delete with the manually re=
move of remaining pv drivers in system32 without cause problems please?<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 16 March 2015 15:25<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:47, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have a look in C:\Windows\System32\DriverStore\F=
ileRepository. If you still have packages for old drivers in here
 then Windows can find them and re-install them even if you think you&#8217=
;ve uninstalled. The correct way to remove packages is using &#8216;pnputil=
 &#8211;d&#8217; but it&#8217;s a bit clunky.</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D"><span style=3D"mso-spacerun:yes">&nbsp;
</span>Paul</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times"><br>
I removed all pv drivers visible in windows control panel, after I removed =
with &quot;pnputil -f -d&quot; all remaining drivers found with &quot;pnput=
il /e&quot; and rebooted.<br>
Now still load latest xenbus (visible from qemu log) and network is not ava=
ilable even if .../FileRepository folder don't have other xen's drivers.<br=
>
I tried a search and I found there are still all pv drivers files in C:\win=
dows\system32 and C:\windows\system32\drivers<br>
I removed also these files and rebooted and now didn't load pv drivers, emu=
lated network is working and seems ok.<br>
Previous week tests instead gave me windows blue screen &quot;registry erro=
r&quot; 1 minute after windows boot.<br>
<br>
Is there another way to clean uninstall all drivers without risk of problem=
s?<br>
<br>
Thanks for any reply and sorry for my bad english.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:39<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> Paul Durrant; <a href=3D=
"mailto:win-pv-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Subject:</span></b> Re: [win-pv-devel] =
xenvif xennet don't update or load correctly and another error saw in qemu =
log</span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New">=
<span style=3D"font-size:12.0pt;font-family:&quot;Times New&quot;,&quot;ser=
if&quot;">&nbsp;</span></font><o:p></o:p></p>
<div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">Il 11/03/2015 16:22, Paul Durrant ha=
 scritto:<o:p></o:p></span></font></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Have you tried uninstalling all versions of XENV=
IF and XENNET and then re-installing the latest? Windows should
 always prefer the newest driver by date but maybe something has gone wrong=
 and for some reason is favouring a really old version you have lying aroun=
d in DriverStore.</span></font><o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
"><br>
Yes, I already uninstalled all old drivers build of all component 3 tests a=
go, rebooted windows and after installed the new build but seems olders xen=
vif and xennet still remained even if not visible in control center and alw=
ays on new xenvif and xennet install
 give me &quot;ready to use&quot; instead of &quot;device updated&quot; mes=
sage at end.<br>
The only other way I know to delete the drivers is search the files in c:/w=
indows/... but I tried time ago with other things gave me always blue scree=
n on next boot, so I not tried with pv.<br>
<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">The RangeSetPop error is not anything to worry a=
bout. It is expected. It simply means the grant table has run
 out of space and needs to be expanded, which is why you see the error imme=
diately followed by a map and populate of the next grant table page.</span>=
</font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">Paul</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"2" color=3D"#1f497d" face=3D"Calibri">=
<span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-=
serif&quot;;color:#1F497D">&nbsp;</span></font><o:p></o:p></p>
<div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm =
4.0pt">
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"mso-outline-level:1"><b><font size=3D"2" co=
lor=3D"black" face=3D"Tahoma"><span lang=3D"EN-US" style=3D"font-size:10.0p=
t;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-ansi-language:E=
N-US;font-weight:bold">From:</span></font></b><font size=3D"2" face=3D"Taho=
ma"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahoma=
&quot;,&quot;sans-serif&quot;;mso-ansi-language:EN-US">
<a href=3D"mailto:win-pv-devel-bounces@lists.xenproject.org">win-pv-devel-b=
ounces@lists.xenproject.org</a> [<a href=3D"mailto:win-pv-devel-bounces@lis=
ts.xenproject.org">mailto:win-pv-devel-bounces@lists.xenproject.org</a>]
<b><span style=3D"font-weight:bold">On Behalf Of </span></b>Fabio Fantoni<b=
r>
<b><span style=3D"font-weight:bold">Sent:</span></b> 11 March 2015 15:17<br=
>
<b><span style=3D"font-weight:bold">To:</span></b> <a href=3D"mailto:win-pv=
-devel@lists.xenproject.org">
win-pv-devel@lists.xenproject.org</a><br>
<b><span style=3D"font-weight:bold">Cc:</span></b> Paul Durrant<br>
<b><span style=3D"font-weight:bold">Subject:</span></b> [win-pv-devel] xenv=
if xennet don't update or load correctly and another error saw in qemu log<=
/span></font><o:p></o:p></p>
</div>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New ,=
 serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New , serif=
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">As I reported time ago there was strange thing when update network compon=
ents: give &quot;ready to use&quot; instead of &quot;device updated&quot; m=
essage
 at end of driver component install.<br>
Today I saw in qemu log of one W7 pro 64 bit domU this:<br>
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.=
2014)<br>
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.=
2014)<br>
<br>
Is probably the first build I installed in this domU and that I already uni=
nstall from control center time ago.<br>
<br>
other components instead seems loaded correctly the latest build installed:=
<br>
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (41) (05.03.201=
5)<br>
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (41) (05.=
03.2015)<br>
xen_platform_log xen platform: XENDISK|DriverEntry:XENDISK 8.0.0 (18) (03.0=
3.2015)<br>
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.13 (2/3/2015)<br=
>
<br>
----------<br>
<br>
I saw also these errors in qemu log:<br>
...<br style=3D"mso-special-character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span></font><o:p></o:p></p>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 0=
0000000.f8002000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
200 - 000003ff]<br>
<b><span style=3D"font-weight:bold">xen_platform_log xen platform: XENBUS|R=
angeSetPop: fail1 (c000009a)</span></b><br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[2] @ 000=
00000.f8003000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
400 - 000005ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[3] @ 000=
00000.f8004000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
600 - 000007ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[4] @ 000=
00000.f8005000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
800 - 000009ff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[5] @ 000=
00000.f8006000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
a00 - 00000bff]<br>
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)<br>
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[6] @ 000=
00000.f8007000<br>
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000=
c00 - 00000dff]</span></font><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><font size=3D"3" colo=
r=3D"black" face=3D"Times New Roman"><span style=3D"font-size:12.0pt;mso-fa=
reast-font-family:&quot;Times New Roman&quot;">...<br>
Can someone tell me something about?<br>
Can they be related to some failed memory balloning error in dom0's kern.lo=
g and syslog?<br>
<br>
Full qemu log in attachment is needed.<br>
<br>
If you need more informations and/or tests tell me and I'll post them.<br>
Thanks for any reply and sorry for my bad english.<br style=3D"mso-special-=
character:line-break">
<![if !supportLineBreakNewLine]><br style=3D"mso-special-character:line-bre=
ak">
<![endif]></span><o:p></o:p></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times"><spa=
n style=3D"font-size:12.0pt;font-family:&quot;Times&quot;,&quot;serif&quot;=
">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;Times , serif&quot;,&=
quot;serif&quot;;mso-bidi-font-family:Times">&nbsp;</span></font><o:p></o:p=
></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times
"><span style=3D"font-size:12.0pt;font-family:&quot;Times
&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt">&nbsp;<o:p></o:p></span></font></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"serif , ser=
if"><span style=3D"font-size:12.0pt;font-family:&quot;serif , serif&quot;,&=
quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oma , serif"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Ro=
ma , serif&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
                Roma"><span style=3D"font-size:12.0pt;font-family:&quot;Tim=
es New
                Roma&quot;,&quot;serif&quot;">&nbsp;</span></font><o:p></o:=
p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New
              Roman"><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New
              Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:&quot;T=
imes New Roman&quot;">&nbsp;</span></font><o:p></o:p></p>
</div>
<p class=3D"MsoNormal"><font size=3D"3" color=3D"black" face=3D"Times New R=
oman"><span style=3D"font-size:12.0pt;mso-fareast-font-family:&quot;Times N=
ew Roman&quot;"><o:p>&nbsp;</o:p></span></font></p>
</div>
</div>
</body>
</html>

--_000_9AAE0902D5BC7E449B7C8E4E778ABCD02585C374AMSPEX01CL01cit_--


--===============4393287189818993463==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============4393287189818993463==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 12:52:14 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 12:52:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcZAs-0003ug-Bx; Mon, 30 Mar 2015 12:52:14 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YcZAr-0003uQ-5l
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 12:52:13 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	06/AF-18531-CF649155; Mon, 30 Mar 2015 12:52:12 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1427719926!12220577!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28184 invoked from network); 30 Mar 2015 12:52:07 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 12:52:07 -0000
Received: by wicne17 with SMTP id ne17so30119156wic.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 05:52:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=ADJHR4YWYsjJ9xcwGv7hgjVqXF6KN4uMFGXUwPRBwDM=;
	b=PAESMcQ2DHelnvh/nP8bE6P5HFhaBXDgeMeIgiQRc9Au/54Fp+NKnxN3WOA0GJuN4w
	vpGqV1G6TLdhkPcxKBAkQf77oD+mStIpZEF0kchJKhfHcJlUMQFFR+0rUZbaDr/Fkm2j
	4zUF+YaaJiJsWcypOaQJ+3MbCAPyTjZ1nPNW+TCrXNuOqOq2/ekrHhbvkrNSFIozzgxI
	kXPqfDhOqnPwl5O4+C6ZjYPErPTrClPH66TgPcenE0SW2m8QNRhKmSjY+Scc+FFmpHCq
	ceQjteS6e9ACelPKu1lT3r/+i3fXsto/LYk7svHSrKMkheSwr2fYPdt+XhuhXtTmOymi
	SOew==
X-Received: by 10.181.11.133 with SMTP id ei5mr22516673wid.87.1427719926586;
	Mon, 30 Mar 2015 05:52:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id g8sm15583117wiy.19.2015.03.30.05.52.04
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 05:52:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon, 30 Mar 2015 13:51:51 +0100
Message-Id: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to IoConnectInterruptEx() is
not supported prior to Windows 7, so when Group == 0 (which will always be
true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
in which case it is documented that Windows will assume Group == 0.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/fdo.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 8d8b125..3c3e9a0 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
         (*Interrupt)->Line = Raw->u.Interrupt.Vector;
 
     RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
-    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
     Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
     Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
     Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
@@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
     }
 
+    Connect.Version = (Connect.FullySpecified.Group != 0) ?
+                      CONNECT_FULLY_SPECIFIED_GROUP :
+                      CONNECT_FULLY_SPECIFIED;
+
     status = IoConnectInterruptEx(&Connect);
     if (!NT_SUCCESS(status))
         goto fail2;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 12:52:14 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 12:52:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcZAs-0003ug-Bx; Mon, 30 Mar 2015 12:52:14 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pdurrant@gmail.com>) id 1YcZAr-0003uQ-5l
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 12:52:13 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	06/AF-18531-CF649155; Mon, 30 Mar 2015 12:52:12 +0000
X-Env-Sender: pdurrant@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1427719926!12220577!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28184 invoked from network); 30 Mar 2015 12:52:07 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 12:52:07 -0000
Received: by wicne17 with SMTP id ne17so30119156wic.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 05:52:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:to:cc:subject:date:message-id;
	bh=ADJHR4YWYsjJ9xcwGv7hgjVqXF6KN4uMFGXUwPRBwDM=;
	b=PAESMcQ2DHelnvh/nP8bE6P5HFhaBXDgeMeIgiQRc9Au/54Fp+NKnxN3WOA0GJuN4w
	vpGqV1G6TLdhkPcxKBAkQf77oD+mStIpZEF0kchJKhfHcJlUMQFFR+0rUZbaDr/Fkm2j
	4zUF+YaaJiJsWcypOaQJ+3MbCAPyTjZ1nPNW+TCrXNuOqOq2/ekrHhbvkrNSFIozzgxI
	kXPqfDhOqnPwl5O4+C6ZjYPErPTrClPH66TgPcenE0SW2m8QNRhKmSjY+Scc+FFmpHCq
	ceQjteS6e9ACelPKu1lT3r/+i3fXsto/LYk7svHSrKMkheSwr2fYPdt+XhuhXtTmOymi
	SOew==
X-Received: by 10.181.11.133 with SMTP id ei5mr22516673wid.87.1427719926586;
	Mon, 30 Mar 2015 05:52:06 -0700 (PDT)
Received: from localhost.localdomain ([185.25.64.249])
	by mx.google.com with ESMTPSA id g8sm15583117wiy.19.2015.03.30.05.52.04
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 05:52:05 -0700 (PDT)
From: Paul Durrant <pdurrant@gmail.com>
X-Google-Original-From: Paul Durrant <paul.durrant@citrix.com>
To: win-pv-devel@lists.xenproject.org
Date: Mon, 30 Mar 2015 13:51:51 +0100
Message-Id: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to IoConnectInterruptEx() is
not supported prior to Windows 7, so when Group == 0 (which will always be
true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
in which case it is documented that Windows will assume Group == 0.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 src/xenbus/fdo.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 8d8b125..3c3e9a0 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
         (*Interrupt)->Line = Raw->u.Interrupt.Vector;
 
     RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
-    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
     Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
     Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
     Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
@@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
         Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
     }
 
+    Connect.Version = (Connect.FullySpecified.Group != 0) ?
+                      CONNECT_FULLY_SPECIFIED_GROUP :
+                      CONNECT_FULLY_SPECIFIED;
+
     status = IoConnectInterruptEx(&Connect);
     if (!NT_SUCCESS(status))
         goto fail2;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 14:20:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 14:20:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcaYY-00082q-Nn; Mon, 30 Mar 2015 14:20:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcaYX-00082F-6m
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 14:20:45 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	B9/55-18531-CBB59155; Mon, 30 Mar 2015 14:20:44 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-31.messagelabs.com!1427725243!12292054!1
X-Originating-IP: [209.85.212.176]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6342 invoked from network); 30 Mar 2015 14:20:43 -0000
Received: from mail-wi0-f176.google.com (HELO mail-wi0-f176.google.com)
	(209.85.212.176)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 14:20:43 -0000
Received: by wicne17 with SMTP id ne17so33452206wic.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 07:20:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=mKP6Zugve24gYgrDEAUErc9owjFnu99u/rAkl5IeSdo=;
	b=NJoDS2E6K7sTZqOO46lmvDPE/yFFSOx3BK8giedXM5M5B9kd453j8arGezFzdGF+Pp
	wLGlTvevu5ABxTPseQ1G1s+domt8koLQ1Bo9KO+KXNWPnfC3RxkFdjDLvV+9bEZvcf7Y
	+LD4uBnSzTacYAUk8XWVvWLgEIwKKxf/Fjgm5wRO9LDSBL3dvjU5zgzCrkQf+n2ccXbb
	oudHWklsKxi0t4GBGbD/xA8C7ibStQwnMOnPYCPQCZqjTHxI2ZzV2CZ02LbD2NL9ynek
	aZcpktC7BgRXUKJCpo0sNqh6Mi8Xg6ZNvty1Whn6eupZfUnTK941nDDXnnaqdHe2vr82
	okZw==
X-Gm-Message-State: ALoCoQmcYEyto+YxInBe5AacsCjY0m7eCGfs8yb1YOCMYqANUUtjJ8H7OHDFeRubtumHf789q3yo
X-Received: by 10.180.221.108 with SMTP id qd12mr5616055wic.41.1427725240748; 
	Mon, 30 Mar 2015 07:20:40 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id e2sm15933751wjy.46.2015.03.30.07.20.38
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 07:20:39 -0700 (PDT)
Message-ID: <55195BB2.3020302@m2r.biz>
Date: Mon, 30 Mar 2015 16:20:34 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <pdurrant@gmail.com>, win-pv-devel@lists.xenproject.org
References: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
In-Reply-To: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 30/03/2015 14:51, Paul Durrant ha scritto:
> Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to IoConnectInterruptEx() is
> not supported prior to Windows 7, so when Group == 0 (which will always be
> true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
> in which case it is documented that Windows will assume Group == 0.

Thanks, I want test it with the official build (I saw git push one hour 
ago or more) but downloading it seems don't updated (files changes on 24 
march).
The automatic build system do a new build after git push or similar and 
now have a problem or is different case?

Thanks for any reply and sorry if I bother you.

>
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> ---
>   src/xenbus/fdo.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
> index 8d8b125..3c3e9a0 100644
> --- a/src/xenbus/fdo.c
> +++ b/src/xenbus/fdo.c
> @@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
>           (*Interrupt)->Line = Raw->u.Interrupt.Vector;
>   
>       RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
> -    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
>       Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
>       Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
>       Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
> @@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
>           Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
>       }
>   
> +    Connect.Version = (Connect.FullySpecified.Group != 0) ?
> +                      CONNECT_FULLY_SPECIFIED_GROUP :
> +                      CONNECT_FULLY_SPECIFIED;
> +
>       status = IoConnectInterruptEx(&Connect);
>       if (!NT_SUCCESS(status))
>           goto fail2;


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 14:20:46 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 14:20:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcaYY-00082q-Nn; Mon, 30 Mar 2015 14:20:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1YcaYX-00082F-6m
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 14:20:45 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	B9/55-18531-CBB59155; Mon, 30 Mar 2015 14:20:44 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-31.messagelabs.com!1427725243!12292054!1
X-Originating-IP: [209.85.212.176]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6342 invoked from network); 30 Mar 2015 14:20:43 -0000
Received: from mail-wi0-f176.google.com (HELO mail-wi0-f176.google.com)
	(209.85.212.176)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 14:20:43 -0000
Received: by wicne17 with SMTP id ne17so33452206wic.0
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 30 Mar 2015 07:20:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=mKP6Zugve24gYgrDEAUErc9owjFnu99u/rAkl5IeSdo=;
	b=NJoDS2E6K7sTZqOO46lmvDPE/yFFSOx3BK8giedXM5M5B9kd453j8arGezFzdGF+Pp
	wLGlTvevu5ABxTPseQ1G1s+domt8koLQ1Bo9KO+KXNWPnfC3RxkFdjDLvV+9bEZvcf7Y
	+LD4uBnSzTacYAUk8XWVvWLgEIwKKxf/Fjgm5wRO9LDSBL3dvjU5zgzCrkQf+n2ccXbb
	oudHWklsKxi0t4GBGbD/xA8C7ibStQwnMOnPYCPQCZqjTHxI2ZzV2CZ02LbD2NL9ynek
	aZcpktC7BgRXUKJCpo0sNqh6Mi8Xg6ZNvty1Whn6eupZfUnTK941nDDXnnaqdHe2vr82
	okZw==
X-Gm-Message-State: ALoCoQmcYEyto+YxInBe5AacsCjY0m7eCGfs8yb1YOCMYqANUUtjJ8H7OHDFeRubtumHf789q3yo
X-Received: by 10.180.221.108 with SMTP id qd12mr5616055wic.41.1427725240748; 
	Mon, 30 Mar 2015 07:20:40 -0700 (PDT)
Received: from [192.168.1.3] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id e2sm15933751wjy.46.2015.03.30.07.20.38
	(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 30 Mar 2015 07:20:39 -0700 (PDT)
Message-ID: <55195BB2.3020302@m2r.biz>
Date: Mon, 30 Mar 2015 16:20:34 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <pdurrant@gmail.com>, win-pv-devel@lists.xenproject.org
References: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
In-Reply-To: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 30/03/2015 14:51, Paul Durrant ha scritto:
> Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to IoConnectInterruptEx() is
> not supported prior to Windows 7, so when Group == 0 (which will always be
> true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
> in which case it is documented that Windows will assume Group == 0.

Thanks, I want test it with the official build (I saw git push one hour 
ago or more) but downloading it seems don't updated (files changes on 24 
march).
The automatic build system do a new build after git push or similar and 
now have a problem or is different case?

Thanks for any reply and sorry if I bother you.

>
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> ---
>   src/xenbus/fdo.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
> index 8d8b125..3c3e9a0 100644
> --- a/src/xenbus/fdo.c
> +++ b/src/xenbus/fdo.c
> @@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
>           (*Interrupt)->Line = Raw->u.Interrupt.Vector;
>   
>       RtlZeroMemory(&Connect, sizeof (IO_CONNECT_INTERRUPT_PARAMETERS));
> -    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
>       Connect.FullySpecified.PhysicalDeviceObject = __FdoGetPhysicalDeviceObject(Fdo);
>       Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated->ShareDisposition == CmResourceShareShared);
>       Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
> @@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
>           Connect.FullySpecified.ProcessorEnableMask = Translated->u.Interrupt.Affinity;
>       }
>   
> +    Connect.Version = (Connect.FullySpecified.Group != 0) ?
> +                      CONNECT_FULLY_SPECIFIED_GROUP :
> +                      CONNECT_FULLY_SPECIFIED;
> +
>       status = IoConnectInterruptEx(&Connect);
>       if (!NT_SUCCESS(status))
>           goto fail2;


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 14:26:01 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 14:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycadd-0000Vc-4I; Mon, 30 Mar 2015 14:26:01 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1Ycadc-0000VW-8g
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 14:26:00 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	20/72-18531-7FC59155; Mon, 30 Mar 2015 14:25:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1427725558!7898461!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22865 invoked from network); 30 Mar 2015 14:25:58 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 14:25:58 -0000
X-IronPort-AV: E=Sophos;i="5.11,494,1422921600"; d="scan'208";a="33165825"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, Paul Durrant <pdurrant@gmail.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
Thread-Index: AQHQauhtW/HgiOwwrUakmKA1TakhVJ008gYAgAAiWTA=
Date: Mon, 30 Mar 2015 14:25:58 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C5EE@AMSPEX01CL01.citrite.net>
References: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
	<55195BB2.3020302@m2r.biz>
In-Reply-To: <55195BB2.3020302@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
> Sent: 30 March 2015 15:21
> To: Paul Durrant; win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
> 
> Il 30/03/2015 14:51, Paul Durrant ha scritto:
> > Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to
> IoConnectInterruptEx() is
> > not supported prior to Windows 7, so when Group == 0 (which will always
> be
> > true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
> > in which case it is documented that Windows will assume Group == 0.
> 
> Thanks, I want test it with the official build (I saw git push one hour
> ago or more) but downloading it seems don't updated (files changes on 24
> march).
> The automatic build system do a new build after git push or similar and
> now have a problem or is different case?
> 

It's still building! The build VM does a full SDV build. It's being going for 1 hr 27 mins so far. Should hopefully be done in about another 30 mins or so. SDV is sloooooow :-/

  Paul

> Thanks for any reply and sorry if I bother you.
> 
> >
> > Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > ---
> >   src/xenbus/fdo.c | 5 ++++-
> >   1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
> > index 8d8b125..3c3e9a0 100644
> > --- a/src/xenbus/fdo.c
> > +++ b/src/xenbus/fdo.c
> > @@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
> >           (*Interrupt)->Line = Raw->u.Interrupt.Vector;
> >
> >       RtlZeroMemory(&Connect, sizeof
> (IO_CONNECT_INTERRUPT_PARAMETERS));
> > -    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
> >       Connect.FullySpecified.PhysicalDeviceObject =
> __FdoGetPhysicalDeviceObject(Fdo);
> >       Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated-
> >ShareDisposition == CmResourceShareShared);
> >       Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
> > @@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
> >           Connect.FullySpecified.ProcessorEnableMask = Translated-
> >u.Interrupt.Affinity;
> >       }
> >
> > +    Connect.Version = (Connect.FullySpecified.Group != 0) ?
> > +                      CONNECT_FULLY_SPECIFIED_GROUP :
> > +                      CONNECT_FULLY_SPECIFIED;
> > +
> >       status = IoConnectInterruptEx(&Connect);
> >       if (!NT_SUCCESS(status))
> >           goto fail2;
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Mar 30 14:26:01 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 30 Mar 2015 14:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycadd-0000Vc-4I; Mon, 30 Mar 2015 14:26:01 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1Ycadc-0000VW-8g
	for win-pv-devel@lists.xenproject.org; Mon, 30 Mar 2015 14:26:00 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
	20/72-18531-7FC59155; Mon, 30 Mar 2015 14:25:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1427725558!7898461!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22865 invoked from network); 30 Mar 2015 14:25:58 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	30 Mar 2015 14:25:58 -0000
X-IronPort-AV: E=Sophos;i="5.11,494,1422921600"; d="scan'208";a="33165825"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, Paul Durrant <pdurrant@gmail.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
Thread-Index: AQHQauhtW/HgiOwwrUakmKA1TakhVJ008gYAgAAiWTA=
Date: Mon, 30 Mar 2015 14:25:58 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585C5EE@AMSPEX01CL01.citrite.net>
References: <1427719911-7224-1-git-send-email-paul.durrant@citrix.com>
	<55195BB2.3020302@m2r.biz>
In-Reply-To: <55195BB2.3020302@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
> Sent: 30 March 2015 15:21
> To: Paul Durrant; win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: Re: [win-pv-devel] [PATCH] Windows Server 2008 compatibility fix
> 
> Il 30/03/2015 14:51, Paul Durrant ha scritto:
> > Use of the CONNECT_FULLY_SPECIFIED_GROUP flag to
> IoConnectInterruptEx() is
> > not supported prior to Windows 7, so when Group == 0 (which will always
> be
> > true for any OS prior to Windows 7) just use CONNECT_FULLY_SPECIFIED
> > in which case it is documented that Windows will assume Group == 0.
> 
> Thanks, I want test it with the official build (I saw git push one hour
> ago or more) but downloading it seems don't updated (files changes on 24
> march).
> The automatic build system do a new build after git push or similar and
> now have a problem or is different case?
> 

It's still building! The build VM does a full SDV build. It's being going for 1 hr 27 mins so far. Should hopefully be done in about another 30 mins or so. SDV is sloooooow :-/

  Paul

> Thanks for any reply and sorry if I bother you.
> 
> >
> > Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > ---
> >   src/xenbus/fdo.c | 5 ++++-
> >   1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
> > index 8d8b125..3c3e9a0 100644
> > --- a/src/xenbus/fdo.c
> > +++ b/src/xenbus/fdo.c
> > @@ -1857,7 +1857,6 @@ FdoConnectInterrupt(
> >           (*Interrupt)->Line = Raw->u.Interrupt.Vector;
> >
> >       RtlZeroMemory(&Connect, sizeof
> (IO_CONNECT_INTERRUPT_PARAMETERS));
> > -    Connect.Version = CONNECT_FULLY_SPECIFIED_GROUP;
> >       Connect.FullySpecified.PhysicalDeviceObject =
> __FdoGetPhysicalDeviceObject(Fdo);
> >       Connect.FullySpecified.ShareVector = (BOOLEAN)(Translated-
> >ShareDisposition == CmResourceShareShared);
> >       Connect.FullySpecified.InterruptMode = (*Interrupt)->InterruptMode;
> > @@ -1879,6 +1878,10 @@ FdoConnectInterrupt(
> >           Connect.FullySpecified.ProcessorEnableMask = Translated-
> >u.Interrupt.Affinity;
> >       }
> >
> > +    Connect.Version = (Connect.FullySpecified.Group != 0) ?
> > +                      CONNECT_FULLY_SPECIFIED_GROUP :
> > +                      CONNECT_FULLY_SPECIFIED;
> > +
> >       status = IoConnectInterruptEx(&Connect);
> >       if (!NT_SUCCESS(status))
> >           goto fail2;
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 05:51:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 05:51:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycp4w-0002gm-4A; Tue, 31 Mar 2015 05:51:10 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1Ycp4u-0002ge-0v
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 05:51:08 +0000
Received: from [85.158.139.211] by server-8.bemta-5.messagelabs.com id
	28/14-19484-BC53A155; Tue, 31 Mar 2015 05:51:07 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1427781065!12736595!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32321 invoked from network); 31 Mar 2015 05:51:06 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-8.tower-206.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 31 Mar 2015 05:51:06 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 7B2D0209A8
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 31 Mar 2015 01:51:02 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 31 Mar 2015 01:51:05 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=S+lptnu3Syw7jko2
	IcWM8tBLix4=; b=cZi9i8P5O/RRxkUE5rikZKMx7W7vUc0cMWxhVigR35OwACXK
	mWEUBZXtlzPbeZsDHSHMRh8FUCe8OvCSEH5An8HJjkowRAmieEF2zP7150duU/0x
	+p+gR+qzAl12MpP5Z7UXDAp9/UPYka+3v/WUmjiWEoVV//BSmWhxDubLl/o=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=S+lptnu3Syw7jko
	2IcWM8tBLix4=; b=DbeU8LWoBFUnI3Ij8L+j6EK75aUuAhlaQQ3LVNrlM52VDpC
	StsyIH5qk+Fg/CLK8W6X0lcnr4bsEbm2oC4a1V8r7IyomtcTs9wjy6q3sVsp75kI
	pOjZHYkocLvvIIitIK+dvg7ayuc4kv8a1lwhC/sn+qOhfFroF7WXPyWAVCkc=
X-Sasl-enc: Tsj3pGZdnT2TQ+rl4tnD+P/9s1R+Am9ruyykm/35iG+y 1427781064
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 5319AC00022;
	Tue, 31 Mar 2015 01:51:04 -0400 (EDT)
Message-ID: <551A35C6.8080600@invisiblethingslab.com>
Date: Tue, 31 Mar 2015 07:51:02 +0200
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
In-Reply-To: <5502E5CF.4030804@invisiblethingslab.com>
Content-Length: 4843
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpBZnRlciBzb21l
IHRob3VnaHQgSSd2ZSBkZWNpZGVkIHRvIGltcGxlbWVudCB0aGUgbWlzc2luZyBwaWVjZXMgaW4g
dGhlCkdQTFBWIGRyaXZlcnMgZmlyc3QsIG1vc3RseSB0byBub3QgZG8gbWFueSB0aGluZ3MgYXQg
b25jZSAobGlrZQpwb3J0aW5nIG91ciBXaW5kb3dzIHRvb2xzIHRvIHVzZSB0aGUgbmV3IGRyaXZl
cnMsIGNoYW5naW5nIG91ciBidWlsZApwcm9jZXNzIGV0YykuIEknbGwgZGVmaW5pdGVseSB0ZXN0
IHRoZSBuZXcgZHJpdmVycyBvbmNlIFF1YmVzIHIzCmJlY29tZXMgbW9yZSBzdGFibGUuCgpJIGhh
dmUgc29tZSBxdWVzdGlvbnMgdGhvdWdoLCBtb3N0bHkgb24gdGhlIHRvcGljIG9mIFhlbidzIGdy
YW50Cm1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNhbGxzLiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdt
IGEgbmV3Y29tZXIgdG8KWGVuIEFQSSBvbiB0aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3Rp
bmcgZG9jdW1lbnRhdGlvbiBzZWVtcwpwcmV0dHkgaW1wZW5ldHJhYmxlLiBUaGUgb3ZlcmFsbCBw
aWN0dXJlIGlzIG1vc3RseSBjbGVhciwgYnV0IG1hbnkKaW1wb3J0YW50IGRldGFpbHMgc2VlbSBt
aXNzaW5nLgoKTGV0J3MgdGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0
aGUgaGVhZGVyIHdlIHNlZToKCklmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBh
IG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdAogKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFk
ZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQKICogICAgIGEgUFRFIGF0
IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bwog
KiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUKICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
LgoKSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5cGUgb2YgYWRk
cmVzcyBzaG91bGQgYmUKcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRoZSBzZWN0aW9uIGFi
b3ZlIHNheXMgIm1hcHBpbmcgd2lsbCBiZQphZGRlZCBhdCBlaXRoZXIgYSBob3N0IHZpcnR1YWwg
YWRkcmVzcy4uLiIgYnV0IEkgZG91YnQgYSBWQSBpcyB3YW50ZWQsCmJlY2F1c2UgSSdkIG5lZWQg
dG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRvIHBhc3MgYSBWQSB0byB0aGlzCmNhbGws
IGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRzZWxmLiBTaG91bGQgdGhpcyBiZSBh
CnBoeXNpY2FsIGFkZHJlc3M/IEEgUEZOPyBTb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCkFmdGVy
IHJlYWRpbmcgc29tZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBzYXcgdGhhdCBp
dAoiYWxsb2NhdGVkIiB0aGUgYWRkcmVzcyBmb3IgdGhlIG1hcHBlZCBwYWdlIHZpYSB0aGUgYmFs
bG9vbiBkcml2ZXIuIE9uCldpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5nIGEgcGFnZSBmcm9tIFhl
biB2aWEKWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBhcyBJIGtub3cuIEJ1dCB0
aGVuIGFnYWluOgpYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0
aGUgYWxsb2NhdGVkIHBhZ2UuIFdoYXQKZ29vZCBpcyB0aGlzIGZvciB0aGUgYWJvdmUgcHVycG9z
ZT8gSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgYSBIVk0KZG9lc24ndCBrbm93IHJlYWwgTUZO
cy4gU2hvdWxkIEkgdHJhbnNsYXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4KYW5kIHRoZW4g
cGFzcyBpdCB0byBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywg
aG93CnRvIHBlcmZvcm0gc3VjaCB0cmFuc2xhdGlvbj8KCkkgZXhwZXJpbWVudGVkIHdpdGggc29t
ZSBYRU5NRU0gaHlwZXJjYWxscy4gWEVOTUVNX21hY2hwaHlzX21hcHBpbmcKInJldHVybnMgdGhl
IGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlz
Cm1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQgbWVhbmluZyBvZiBzdWNoIHRh
YmxlIGlzIG5vdApleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5zbGF0ZXMgcmVhbCBNRk5zIGlu
dG8gR01GTnMgaW4gc29tZSB3YXkuClRoZSBjYWxsIHN1Y2NlZWRlcyB3aXRoIGZvbGxvd2luZyBv
dXRwdXQgdmFsdWVzOgoKdl9zdGFydCAgMHhmZmZmODAwMGAwMDAwMDAwMAp2X2VuZCAgICAweGZm
ZmY4MDQwYDAwMDAwMDAwCm1heF9tZm4gIDB4MDAwMDAwMDdgZmZmZmZmZmYKCi4uLmJ1dCB0aGF0
IFZBIHJhbmdlIGFwcGVhcnMgdG8gYmUgbm90IGFjY2Vzc2libGUvbm90IG1hcHBlZC4KClhFTk1F
TV9tYWNocGh5c19tZm5fbGlzdCBjYWxsIGFsc28gd29ya2VkIGFuZCByZXR1cm5lZCBhIGxpc3Qg
b2YgOQp2YWx1ZXMgb24gbXkgdGVzdCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEkn
bSBub3QgcmVhbGx5IHN1cmUKd2hhdCB0byBtYWtlIG9mIHRoZW0sIHRoZSBkZXNjcmlwdGlvbiBp
c24ndCB2ZXJ5IGhlbHBmdWwgZm9yIHNvbWVvbmUKd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhv
dyB0aGlzIHdvcmtzOiAiUmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzCm9mIDJNQiBleHRlbnRz
IGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIi4KCk1heWJlIEkn
bSBvdmVyY29tcGxpY2F0aW5nIHRoaW5ncyBhbmQgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91
cy4KSSdkIHdlbGNvbWUgYW55IGNvcnJlY3Rpb25zIGFuZC9vciBoaW50cyA6KQoKLSAtLSAKUmFm
YcWCIFdvamR5xYJhClF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3BlcgotLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQoKaVFFY0JBRUJBZ0FHQlFKVkdqWEdBQW9KRUlXaTlyQjJHclc3
N3NRSUFMRDZvK2k5a0NERWk1YmlsQzdFVmJuUQphQ094UXl0YXJub0tLYzd1RzNQbEhxYnhHWVIr
Y1BLYnpDRURyWEg5ME1rRk1rMTdML2JzU1locFQ3U1Q4RW1aClFvUmRWdTdFUFQ1MlhJV0RxWVFa
VC9CSndJbDZrWE5FaTZKWE9wNWRsQ0tXbkNGV2twZ1AraXluckFPbXUwaW4KWjA0c1FCTFAwandz
VGdvUGRlQlB5R1Y2cndkOHpkY2pZM0dHZDRwMExIaXN0VzAxUjErNXF1aFNwdGJ6aWVxRQovbGtq
TFNUQkVESlh5bTducHhLckUvV3NmemZGemphaTBZSm9PTkVmNW4vSGpDYkZQWmdZUWF3NEwwMEor
MnM1CmxuYTd6OEUvLzhrRnl5eVQrQ0txbHFyMk13NmhMSmtqakdEaWZnZG5KOTUyNVRLaW50THk3
UFhGTWFhdUJjTT0KPVNvZmYKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 05:51:11 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 05:51:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycp4w-0002gm-4A; Tue, 31 Mar 2015 05:51:10 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1Ycp4u-0002ge-0v
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 05:51:08 +0000
Received: from [85.158.139.211] by server-8.bemta-5.messagelabs.com id
	28/14-19484-BC53A155; Tue, 31 Mar 2015 05:51:07 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1427781065!12736595!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32321 invoked from network); 31 Mar 2015 05:51:06 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-8.tower-206.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 31 Mar 2015 05:51:06 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 7B2D0209A8
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 31 Mar 2015 01:51:02 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 31 Mar 2015 01:51:05 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=S+lptnu3Syw7jko2
	IcWM8tBLix4=; b=cZi9i8P5O/RRxkUE5rikZKMx7W7vUc0cMWxhVigR35OwACXK
	mWEUBZXtlzPbeZsDHSHMRh8FUCe8OvCSEH5An8HJjkowRAmieEF2zP7150duU/0x
	+p+gR+qzAl12MpP5Z7UXDAp9/UPYka+3v/WUmjiWEoVV//BSmWhxDubLl/o=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=S+lptnu3Syw7jko
	2IcWM8tBLix4=; b=DbeU8LWoBFUnI3Ij8L+j6EK75aUuAhlaQQ3LVNrlM52VDpC
	StsyIH5qk+Fg/CLK8W6X0lcnr4bsEbm2oC4a1V8r7IyomtcTs9wjy6q3sVsp75kI
	pOjZHYkocLvvIIitIK+dvg7ayuc4kv8a1lwhC/sn+qOhfFroF7WXPyWAVCkc=
X-Sasl-enc: Tsj3pGZdnT2TQ+rl4tnD+P/9s1R+Am9ruyykm/35iG+y 1427781064
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 5319AC00022;
	Tue, 31 Mar 2015 01:51:04 -0400 (EDT)
Message-ID: <551A35C6.8080600@invisiblethingslab.com>
Date: Tue, 31 Mar 2015 07:51:02 +0200
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
In-Reply-To: <5502E5CF.4030804@invisiblethingslab.com>
Content-Length: 4843
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpBZnRlciBzb21l
IHRob3VnaHQgSSd2ZSBkZWNpZGVkIHRvIGltcGxlbWVudCB0aGUgbWlzc2luZyBwaWVjZXMgaW4g
dGhlCkdQTFBWIGRyaXZlcnMgZmlyc3QsIG1vc3RseSB0byBub3QgZG8gbWFueSB0aGluZ3MgYXQg
b25jZSAobGlrZQpwb3J0aW5nIG91ciBXaW5kb3dzIHRvb2xzIHRvIHVzZSB0aGUgbmV3IGRyaXZl
cnMsIGNoYW5naW5nIG91ciBidWlsZApwcm9jZXNzIGV0YykuIEknbGwgZGVmaW5pdGVseSB0ZXN0
IHRoZSBuZXcgZHJpdmVycyBvbmNlIFF1YmVzIHIzCmJlY29tZXMgbW9yZSBzdGFibGUuCgpJIGhh
dmUgc29tZSBxdWVzdGlvbnMgdGhvdWdoLCBtb3N0bHkgb24gdGhlIHRvcGljIG9mIFhlbidzIGdy
YW50Cm1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNhbGxzLiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdt
IGEgbmV3Y29tZXIgdG8KWGVuIEFQSSBvbiB0aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3Rp
bmcgZG9jdW1lbnRhdGlvbiBzZWVtcwpwcmV0dHkgaW1wZW5ldHJhYmxlLiBUaGUgb3ZlcmFsbCBw
aWN0dXJlIGlzIG1vc3RseSBjbGVhciwgYnV0IG1hbnkKaW1wb3J0YW50IGRldGFpbHMgc2VlbSBt
aXNzaW5nLgoKTGV0J3MgdGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0
aGUgaGVhZGVyIHdlIHNlZToKCklmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBh
IG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdAogKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFk
ZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQKICogICAgIGEgUFRFIGF0
IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bwog
KiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUKICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
LgoKSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5cGUgb2YgYWRk
cmVzcyBzaG91bGQgYmUKcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRoZSBzZWN0aW9uIGFi
b3ZlIHNheXMgIm1hcHBpbmcgd2lsbCBiZQphZGRlZCBhdCBlaXRoZXIgYSBob3N0IHZpcnR1YWwg
YWRkcmVzcy4uLiIgYnV0IEkgZG91YnQgYSBWQSBpcyB3YW50ZWQsCmJlY2F1c2UgSSdkIG5lZWQg
dG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRvIHBhc3MgYSBWQSB0byB0aGlzCmNhbGws
IGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRzZWxmLiBTaG91bGQgdGhpcyBiZSBh
CnBoeXNpY2FsIGFkZHJlc3M/IEEgUEZOPyBTb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCkFmdGVy
IHJlYWRpbmcgc29tZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBzYXcgdGhhdCBp
dAoiYWxsb2NhdGVkIiB0aGUgYWRkcmVzcyBmb3IgdGhlIG1hcHBlZCBwYWdlIHZpYSB0aGUgYmFs
bG9vbiBkcml2ZXIuIE9uCldpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5nIGEgcGFnZSBmcm9tIFhl
biB2aWEKWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBhcyBJIGtub3cuIEJ1dCB0
aGVuIGFnYWluOgpYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0
aGUgYWxsb2NhdGVkIHBhZ2UuIFdoYXQKZ29vZCBpcyB0aGlzIGZvciB0aGUgYWJvdmUgcHVycG9z
ZT8gSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgYSBIVk0KZG9lc24ndCBrbm93IHJlYWwgTUZO
cy4gU2hvdWxkIEkgdHJhbnNsYXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4KYW5kIHRoZW4g
cGFzcyBpdCB0byBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywg
aG93CnRvIHBlcmZvcm0gc3VjaCB0cmFuc2xhdGlvbj8KCkkgZXhwZXJpbWVudGVkIHdpdGggc29t
ZSBYRU5NRU0gaHlwZXJjYWxscy4gWEVOTUVNX21hY2hwaHlzX21hcHBpbmcKInJldHVybnMgdGhl
IGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlz
Cm1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQgbWVhbmluZyBvZiBzdWNoIHRh
YmxlIGlzIG5vdApleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5zbGF0ZXMgcmVhbCBNRk5zIGlu
dG8gR01GTnMgaW4gc29tZSB3YXkuClRoZSBjYWxsIHN1Y2NlZWRlcyB3aXRoIGZvbGxvd2luZyBv
dXRwdXQgdmFsdWVzOgoKdl9zdGFydCAgMHhmZmZmODAwMGAwMDAwMDAwMAp2X2VuZCAgICAweGZm
ZmY4MDQwYDAwMDAwMDAwCm1heF9tZm4gIDB4MDAwMDAwMDdgZmZmZmZmZmYKCi4uLmJ1dCB0aGF0
IFZBIHJhbmdlIGFwcGVhcnMgdG8gYmUgbm90IGFjY2Vzc2libGUvbm90IG1hcHBlZC4KClhFTk1F
TV9tYWNocGh5c19tZm5fbGlzdCBjYWxsIGFsc28gd29ya2VkIGFuZCByZXR1cm5lZCBhIGxpc3Qg
b2YgOQp2YWx1ZXMgb24gbXkgdGVzdCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEkn
bSBub3QgcmVhbGx5IHN1cmUKd2hhdCB0byBtYWtlIG9mIHRoZW0sIHRoZSBkZXNjcmlwdGlvbiBp
c24ndCB2ZXJ5IGhlbHBmdWwgZm9yIHNvbWVvbmUKd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhv
dyB0aGlzIHdvcmtzOiAiUmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzCm9mIDJNQiBleHRlbnRz
IGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIi4KCk1heWJlIEkn
bSBvdmVyY29tcGxpY2F0aW5nIHRoaW5ncyBhbmQgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91
cy4KSSdkIHdlbGNvbWUgYW55IGNvcnJlY3Rpb25zIGFuZC9vciBoaW50cyA6KQoKLSAtLSAKUmFm
YcWCIFdvamR5xYJhClF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3BlcgotLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQoKaVFFY0JBRUJBZ0FHQlFKVkdqWEdBQW9KRUlXaTlyQjJHclc3
N3NRSUFMRDZvK2k5a0NERWk1YmlsQzdFVmJuUQphQ094UXl0YXJub0tLYzd1RzNQbEhxYnhHWVIr
Y1BLYnpDRURyWEg5ME1rRk1rMTdML2JzU1locFQ3U1Q4RW1aClFvUmRWdTdFUFQ1MlhJV0RxWVFa
VC9CSndJbDZrWE5FaTZKWE9wNWRsQ0tXbkNGV2twZ1AraXluckFPbXUwaW4KWjA0c1FCTFAwandz
VGdvUGRlQlB5R1Y2cndkOHpkY2pZM0dHZDRwMExIaXN0VzAxUjErNXF1aFNwdGJ6aWVxRQovbGtq
TFNUQkVESlh5bTducHhLckUvV3NmemZGemphaTBZSm9PTkVmNW4vSGpDYkZQWmdZUWF3NEwwMEor
MnM1CmxuYTd6OEUvLzhrRnl5eVQrQ0txbHFyMk13NmhMSmtqakdEaWZnZG5KOTUyNVRLaW50THk3
UFhGTWFhdUJjTT0KPVNvZmYKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 09:54:32 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 09:54:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcssS-00037Z-4B; Tue, 31 Mar 2015 09:54:32 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcssR-00037Q-AE
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 09:54:31 +0000
Received: from [193.109.254.147] by server-6.bemta-14.messagelabs.com id
	73/A2-16511-6DE6A155; Tue, 31 Mar 2015 09:54:30 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1427795669!14497018!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22587 invoked from network); 31 Mar 2015 09:54:29 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	31 Mar 2015 09:54:29 -0000
X-IronPort-AV: E=Sophos;i="5.11,500,1422921600"; d="scan'208";a="33184921"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1wgAA2aoCAG7mbAIAAYSCg
Date: Tue, 31 Mar 2015 09:54:28 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
In-Reply-To: <551A35C6.8080600@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTUg
MDY6NTENCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRl
Y2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNzaW5nIHBpZWNlcyBpbiB0aGUNCj4gR1BMUFYgZHJp
dmVycyBmaXJzdCwgbW9zdGx5IHRvIG5vdCBkbyBtYW55IHRoaW5ncyBhdCBvbmNlIChsaWtlDQo+
IHBvcnRpbmcgb3VyIFdpbmRvd3MgdG9vbHMgdG8gdXNlIHRoZSBuZXcgZHJpdmVycywgY2hhbmdp
bmcgb3VyIGJ1aWxkDQo+IHByb2Nlc3MgZXRjKS4gSSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5l
dyBkcml2ZXJzIG9uY2UgUXViZXMgcjMNCj4gYmVjb21lcyBtb3JlIHN0YWJsZS4NCj4gDQoNCk9r
LCBmYWlyIGVub3VnaC4NCg0KPiBJIGhhdmUgc29tZSBxdWVzdGlvbnMgdGhvdWdoLCBtb3N0bHkg
b24gdGhlIHRvcGljIG9mIFhlbidzIGdyYW50DQo+IG1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNh
bGxzLiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdtIGEgbmV3Y29tZXIgdG8NCj4gWGVuIEFQSSBvbiB0
aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiBzZWVtcw0KPiBw
cmV0dHkgaW1wZW5ldHJhYmxlLiBUaGUgb3ZlcmFsbCBwaWN0dXJlIGlzIG1vc3RseSBjbGVhciwg
YnV0IG1hbnkNCj4gaW1wb3J0YW50IGRldGFpbHMgc2VlbSBtaXNzaW5nLg0KPiANCj4gTGV0J3Mg
dGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0aGUgaGVhZGVyIHdlIHNl
ZToNCj4gDQo+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBhIG1hcHBpbmcg
d2lsbCBiZSBhZGRlZCBhdA0KPiAgKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3Mg
aW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQNCj4gICogICAgIGEgUFRFIGF0IHRo
ZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bw0KPiAg
KiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUNCj4gICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2Fk
ZHI+Lg0KPiANCj4gSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5
cGUgb2YgYWRkcmVzcyBzaG91bGQgYmUNCj4gcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRo
ZSBzZWN0aW9uIGFib3ZlIHNheXMgIm1hcHBpbmcgd2lsbCBiZQ0KPiBhZGRlZCBhdCBlaXRoZXIg
YSBob3N0IHZpcnR1YWwgYWRkcmVzcy4uLiIgYnV0IEkgZG91YnQgYSBWQSBpcyB3YW50ZWQsDQo+
IGJlY2F1c2UgSSdkIG5lZWQgdG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRvIHBhc3Mg
YSBWQSB0byB0aGlzDQo+IGNhbGwsIGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRz
ZWxmLiBTaG91bGQgdGhpcyBiZSBhDQo+IHBoeXNpY2FsIGFkZHJlc3M/IEEgUEZOPyBTb21ldGhp
bmcgZWxzZSBlbnRpcmVseT8NCj4gDQoNCkh5cGVyY2FsbHMgb24gSFZNIGd1ZXN0cyB1c3VhbGx5
IGRlYWwgaW4gR0ZOcy4gVGhlcmUncyBiYXNpY2FsbHkgbm8gd2F5IGZvciBhbiBIVk0gZ3Vlc3Qg
dG8gZ2V0IGhvbGQgb2YgTUZOIHZhbHVlcy4gUFYgZ3Vlc3RzIE9UT0ggZGVhbCBpbiBNRk5zLg0K
DQo+IEFmdGVyIHJlYWRpbmcgc29tZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBz
YXcgdGhhdCBpdA0KPiAiYWxsb2NhdGVkIiB0aGUgYWRkcmVzcyBmb3IgdGhlIG1hcHBlZCBwYWdl
IHZpYSB0aGUgYmFsbG9vbiBkcml2ZXIuIE9uDQo+IFdpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5n
IGEgcGFnZSBmcm9tIFhlbiB2aWENCj4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZh
ciBhcyBJIGtub3cuDQoNClVubGVzcyB5b3VyIHRvb2xzdGFjayBpcyBhbGxvY2F0aW5nIGV4dHJh
IG1lbW9yeSB0aGF0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGd1ZXN0IFAyTSB0aGVuIHRoYXQncyBn
b2luZyB0byBmYWlsLiBJIHRoaW5rIHdoYXQgeW91IHByb2JhYmx5IHdhbnQgdG8gZG8gaXMgZWl0
aGVyIGZpbmQgYSAnaG9sZScgKGkuZS4gR0ZOcyBub3QgcG9wdWxhdGVkIHdpdGggUkFNKSBzdWNo
IGFzIHRoZSBYZW4gUGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiBzcGFjZSwgb3IgY3JlYXRlIGEg
aG9sZSB1c2luZyBkZWNyZWFzZV9yZXNlcnZhdGlvbi4gRWl0aGVyIHdheSwgeW91J2xsIGhhdmUg
YSBHRk4gaW4geW91ciBoYW5kLg0KDQo+IEJ1dCB0aGVuIGFnYWluOg0KPiBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0aGUgYWxsb2NhdGVkIHBhZ2UuIFdoYXQN
Cj4gZ29vZCBpcyB0aGlzIGZvciB0aGUgYWJvdmUgcHVycG9zZT8gSWYgSSB1bmRlcnN0YW5kIGNv
cnJlY3RseSwgYSBIVk0NCj4gZG9lc24ndCBrbm93IHJlYWwgTUZOcy4gU2hvdWxkIEkgdHJhbnNs
YXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4NCj4gYW5kIHRoZW4gcGFzcyBpdCB0byBHTlRU
QUJPUF9tYXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywgaG93DQo+IHRvIHBlcmZv
cm0gc3VjaCB0cmFuc2xhdGlvbj8NCj4gDQo+IEkgZXhwZXJpbWVudGVkIHdpdGggc29tZSBYRU5N
RU0gaHlwZXJjYWxscy4NCj4gWEVOTUVNX21hY2hwaHlzX21hcHBpbmcNCj4gInJldHVybnMgdGhl
IGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlz
DQo+IG1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQgbWVhbmluZyBvZiBzdWNo
IHRhYmxlIGlzIG5vdA0KPiBleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5zbGF0ZXMgcmVhbCBN
Rk5zIGludG8gR01GTnMgaW4gc29tZSB3YXkuDQo+IFRoZSBjYWxsIHN1Y2NlZWRlcyB3aXRoIGZv
bGxvd2luZyBvdXRwdXQgdmFsdWVzOg0KPiANCj4gdl9zdGFydCAgMHhmZmZmODAwMGAwMDAwMDAw
MA0KPiB2X2VuZCAgICAweGZmZmY4MDQwYDAwMDAwMDAwDQo+IG1heF9tZm4gIDB4MDAwMDAwMDdg
ZmZmZmZmZmYNCj4gDQo+IC4uLmJ1dCB0aGF0IFZBIHJhbmdlIGFwcGVhcnMgdG8gYmUgbm90IGFj
Y2Vzc2libGUvbm90IG1hcHBlZC4NCj4gDQo+IFhFTk1FTV9tYWNocGh5c19tZm5fbGlzdCBjYWxs
IGFsc28gd29ya2VkIGFuZCByZXR1cm5lZCBhIGxpc3Qgb2YgOQ0KPiB2YWx1ZXMgb24gbXkgdGVz
dCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEknbSBub3QgcmVhbGx5IHN1cmUNCj4g
d2hhdCB0byBtYWtlIG9mIHRoZW0sIHRoZSBkZXNjcmlwdGlvbiBpc24ndCB2ZXJ5IGhlbHBmdWwg
Zm9yIHNvbWVvbmUNCj4gd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhvdyB0aGlzIHdvcmtzOiAi
UmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzDQo+IG9mIDJNQiBleHRlbnRzIGNvbXByaXNpbmcg
dGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIi4NCj4gDQo+IE1heWJlIEknbSBvdmVy
Y29tcGxpY2F0aW5nIHRoaW5ncyBhbmQgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91cy4NCj4g
SSdkIHdlbGNvbWUgYW55IGNvcnJlY3Rpb25zIGFuZC9vciBoaW50cyA6KQ0KDQpZZWFoLCBJIHRo
aW5rIHlvdSdyZSBvdmVyY29tcGxpY2F0aW5nIHRoaW5ncyA6LSkgU2VlIGFib3ZlLg0KDQogIFBh
dWwNCg0KPiANCj4gLSAtLQ0KPiBSYWZhxYIgV29qZHnFgmENCj4gUXViZXMgVG9vbHMgZm9yIFdp
bmRvd3MgZGV2ZWxvcGVyDQo+IC0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQo+IA0KPiBp
UUVjQkFFQkFnQUdCUUpWR2pYR0FBb0pFSVdpOXJCMkdyVzc3c1FJQUxENm8raTlrQ0RFaTViaWxD
N0VWYm4NCj4gUQ0KPiBhQ094UXl0YXJub0tLYzd1RzNQbEhxYnhHWVIrY1BLYnpDRURyWEg5ME1r
Rk1rMTdML2JzU1locFQ3U1Q4RQ0KPiBtWg0KPiBRb1JkVnU3RVBUNTJYSVdEcVlRWlQvQkp3SWw2
a1hORWk2SlhPcDVkbENLV25DRldrcGdQK2l5bnJBT211DQo+IDBpbg0KPiBaMDRzUUJMUDBqd3NU
Z29QZGVCUHlHVjZyd2Q4emRjalkzR0dkNHAwTEhpc3RXMDFSMSs1cXVoU3B0YnppZXENCj4gRQ0K
PiAvbGtqTFNUQkVESlh5bTducHhLckUvV3NmemZGemphaTBZSm9PTkVmNW4vSGpDYkZQWmdZUWF3
NEwwMEorMnM1DQo+IGxuYTd6OEUvLzhrRnl5eVQrQ0txbHFyMk13NmhMSmtqakdEaWZnZG5KOTUy
NVRLaW50THk3UFhGTWFhdUJjTT0NCj4gPVNvZmYNCj4gLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0t
LS0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4t
cHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 09:54:32 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 09:54:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcssS-00037Z-4B; Tue, 31 Mar 2015 09:54:32 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1YcssR-00037Q-AE
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 09:54:31 +0000
Received: from [193.109.254.147] by server-6.bemta-14.messagelabs.com id
	73/A2-16511-6DE6A155; Tue, 31 Mar 2015 09:54:30 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1427795669!14497018!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22587 invoked from network); 31 Mar 2015 09:54:29 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	31 Mar 2015 09:54:29 -0000
X-IronPort-AV: E=Sophos;i="5.11,500,1422921600"; d="scan'208";a="33184921"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1wgAA2aoCAG7mbAIAAYSCg
Date: Tue, 31 Mar 2015 09:54:28 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
In-Reply-To: <551A35C6.8080600@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTUg
MDY6NTENCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRl
Y2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNzaW5nIHBpZWNlcyBpbiB0aGUNCj4gR1BMUFYgZHJp
dmVycyBmaXJzdCwgbW9zdGx5IHRvIG5vdCBkbyBtYW55IHRoaW5ncyBhdCBvbmNlIChsaWtlDQo+
IHBvcnRpbmcgb3VyIFdpbmRvd3MgdG9vbHMgdG8gdXNlIHRoZSBuZXcgZHJpdmVycywgY2hhbmdp
bmcgb3VyIGJ1aWxkDQo+IHByb2Nlc3MgZXRjKS4gSSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5l
dyBkcml2ZXJzIG9uY2UgUXViZXMgcjMNCj4gYmVjb21lcyBtb3JlIHN0YWJsZS4NCj4gDQoNCk9r
LCBmYWlyIGVub3VnaC4NCg0KPiBJIGhhdmUgc29tZSBxdWVzdGlvbnMgdGhvdWdoLCBtb3N0bHkg
b24gdGhlIHRvcGljIG9mIFhlbidzIGdyYW50DQo+IG1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNh
bGxzLiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdtIGEgbmV3Y29tZXIgdG8NCj4gWGVuIEFQSSBvbiB0
aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiBzZWVtcw0KPiBw
cmV0dHkgaW1wZW5ldHJhYmxlLiBUaGUgb3ZlcmFsbCBwaWN0dXJlIGlzIG1vc3RseSBjbGVhciwg
YnV0IG1hbnkNCj4gaW1wb3J0YW50IGRldGFpbHMgc2VlbSBtaXNzaW5nLg0KPiANCj4gTGV0J3Mg
dGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0aGUgaGVhZGVyIHdlIHNl
ZToNCj4gDQo+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBhIG1hcHBpbmcg
d2lsbCBiZSBhZGRlZCBhdA0KPiAgKiAgICAgZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3Mg
aW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQNCj4gICogICAgIGEgUFRFIGF0IHRo
ZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bw0KPiAg
KiAgICAgcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUNCj4gICogICAgIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2Fk
ZHI+Lg0KPiANCj4gSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5
cGUgb2YgYWRkcmVzcyBzaG91bGQgYmUNCj4gcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRo
ZSBzZWN0aW9uIGFib3ZlIHNheXMgIm1hcHBpbmcgd2lsbCBiZQ0KPiBhZGRlZCBhdCBlaXRoZXIg
YSBob3N0IHZpcnR1YWwgYWRkcmVzcy4uLiIgYnV0IEkgZG91YnQgYSBWQSBpcyB3YW50ZWQsDQo+
IGJlY2F1c2UgSSdkIG5lZWQgdG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRvIHBhc3Mg
YSBWQSB0byB0aGlzDQo+IGNhbGwsIGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRz
ZWxmLiBTaG91bGQgdGhpcyBiZSBhDQo+IHBoeXNpY2FsIGFkZHJlc3M/IEEgUEZOPyBTb21ldGhp
bmcgZWxzZSBlbnRpcmVseT8NCj4gDQoNCkh5cGVyY2FsbHMgb24gSFZNIGd1ZXN0cyB1c3VhbGx5
IGRlYWwgaW4gR0ZOcy4gVGhlcmUncyBiYXNpY2FsbHkgbm8gd2F5IGZvciBhbiBIVk0gZ3Vlc3Qg
dG8gZ2V0IGhvbGQgb2YgTUZOIHZhbHVlcy4gUFYgZ3Vlc3RzIE9UT0ggZGVhbCBpbiBNRk5zLg0K
DQo+IEFmdGVyIHJlYWRpbmcgc29tZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBz
YXcgdGhhdCBpdA0KPiAiYWxsb2NhdGVkIiB0aGUgYWRkcmVzcyBmb3IgdGhlIG1hcHBlZCBwYWdl
IHZpYSB0aGUgYmFsbG9vbiBkcml2ZXIuIE9uDQo+IFdpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5n
IGEgcGFnZSBmcm9tIFhlbiB2aWENCj4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZh
ciBhcyBJIGtub3cuDQoNClVubGVzcyB5b3VyIHRvb2xzdGFjayBpcyBhbGxvY2F0aW5nIGV4dHJh
IG1lbW9yeSB0aGF0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGd1ZXN0IFAyTSB0aGVuIHRoYXQncyBn
b2luZyB0byBmYWlsLiBJIHRoaW5rIHdoYXQgeW91IHByb2JhYmx5IHdhbnQgdG8gZG8gaXMgZWl0
aGVyIGZpbmQgYSAnaG9sZScgKGkuZS4gR0ZOcyBub3QgcG9wdWxhdGVkIHdpdGggUkFNKSBzdWNo
IGFzIHRoZSBYZW4gUGxhdGZvcm0gUENJIGRldmljZSdzIEJBUiBzcGFjZSwgb3IgY3JlYXRlIGEg
aG9sZSB1c2luZyBkZWNyZWFzZV9yZXNlcnZhdGlvbi4gRWl0aGVyIHdheSwgeW91J2xsIGhhdmUg
YSBHRk4gaW4geW91ciBoYW5kLg0KDQo+IEJ1dCB0aGVuIGFnYWluOg0KPiBYRU5NRU1faW5jcmVh
c2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0aGUgYWxsb2NhdGVkIHBhZ2UuIFdoYXQN
Cj4gZ29vZCBpcyB0aGlzIGZvciB0aGUgYWJvdmUgcHVycG9zZT8gSWYgSSB1bmRlcnN0YW5kIGNv
cnJlY3RseSwgYSBIVk0NCj4gZG9lc24ndCBrbm93IHJlYWwgTUZOcy4gU2hvdWxkIEkgdHJhbnNs
YXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4NCj4gYW5kIHRoZW4gcGFzcyBpdCB0byBHTlRU
QUJPUF9tYXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywgaG93DQo+IHRvIHBlcmZv
cm0gc3VjaCB0cmFuc2xhdGlvbj8NCj4gDQo+IEkgZXhwZXJpbWVudGVkIHdpdGggc29tZSBYRU5N
RU0gaHlwZXJjYWxscy4NCj4gWEVOTUVNX21hY2hwaHlzX21hcHBpbmcNCj4gInJldHVybnMgdGhl
IGxvY2F0aW9uIGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19waHlz
DQo+IG1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQgbWVhbmluZyBvZiBzdWNo
IHRhYmxlIGlzIG5vdA0KPiBleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5zbGF0ZXMgcmVhbCBN
Rk5zIGludG8gR01GTnMgaW4gc29tZSB3YXkuDQo+IFRoZSBjYWxsIHN1Y2NlZWRlcyB3aXRoIGZv
bGxvd2luZyBvdXRwdXQgdmFsdWVzOg0KPiANCj4gdl9zdGFydCAgMHhmZmZmODAwMGAwMDAwMDAw
MA0KPiB2X2VuZCAgICAweGZmZmY4MDQwYDAwMDAwMDAwDQo+IG1heF9tZm4gIDB4MDAwMDAwMDdg
ZmZmZmZmZmYNCj4gDQo+IC4uLmJ1dCB0aGF0IFZBIHJhbmdlIGFwcGVhcnMgdG8gYmUgbm90IGFj
Y2Vzc2libGUvbm90IG1hcHBlZC4NCj4gDQo+IFhFTk1FTV9tYWNocGh5c19tZm5fbGlzdCBjYWxs
IGFsc28gd29ya2VkIGFuZCByZXR1cm5lZCBhIGxpc3Qgb2YgOQ0KPiB2YWx1ZXMgb24gbXkgdGVz
dCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEknbSBub3QgcmVhbGx5IHN1cmUNCj4g
d2hhdCB0byBtYWtlIG9mIHRoZW0sIHRoZSBkZXNjcmlwdGlvbiBpc24ndCB2ZXJ5IGhlbHBmdWwg
Zm9yIHNvbWVvbmUNCj4gd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhvdyB0aGlzIHdvcmtzOiAi
UmV0dXJucyBhIGxpc3Qgb2YgTUZOIGJhc2VzDQo+IG9mIDJNQiBleHRlbnRzIGNvbXByaXNpbmcg
dGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIi4NCj4gDQo+IE1heWJlIEknbSBvdmVy
Y29tcGxpY2F0aW5nIHRoaW5ncyBhbmQgb3Zlcmxvb2tlZCBzb21ldGhpbmcgb2J2aW91cy4NCj4g
SSdkIHdlbGNvbWUgYW55IGNvcnJlY3Rpb25zIGFuZC9vciBoaW50cyA6KQ0KDQpZZWFoLCBJIHRo
aW5rIHlvdSdyZSBvdmVyY29tcGxpY2F0aW5nIHRoaW5ncyA6LSkgU2VlIGFib3ZlLg0KDQogIFBh
dWwNCg0KPiANCj4gLSAtLQ0KPiBSYWZhxYIgV29qZHnFgmENCj4gUXViZXMgVG9vbHMgZm9yIFdp
bmRvd3MgZGV2ZWxvcGVyDQo+IC0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQo+IA0KPiBp
UUVjQkFFQkFnQUdCUUpWR2pYR0FBb0pFSVdpOXJCMkdyVzc3c1FJQUxENm8raTlrQ0RFaTViaWxD
N0VWYm4NCj4gUQ0KPiBhQ094UXl0YXJub0tLYzd1RzNQbEhxYnhHWVIrY1BLYnpDRURyWEg5ME1r
Rk1rMTdML2JzU1locFQ3U1Q4RQ0KPiBtWg0KPiBRb1JkVnU3RVBUNTJYSVdEcVlRWlQvQkp3SWw2
a1hORWk2SlhPcDVkbENLV25DRldrcGdQK2l5bnJBT211DQo+IDBpbg0KPiBaMDRzUUJMUDBqd3NU
Z29QZGVCUHlHVjZyd2Q4emRjalkzR0dkNHAwTEhpc3RXMDFSMSs1cXVoU3B0YnppZXENCj4gRQ0K
PiAvbGtqTFNUQkVESlh5bTducHhLckUvV3NmemZGemphaTBZSm9PTkVmNW4vSGpDYkZQWmdZUWF3
NEwwMEorMnM1DQo+IGxuYTd6OEUvLzhrRnl5eVQrQ0txbHFyMk13NmhMSmtqakdEaWZnZG5KOTUy
NVRLaW50THk3UFhGTWFhdUJjTT0NCj4gPVNvZmYNCj4gLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0t
LS0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4t
cHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 12:21:43 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 12:21:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcvAt-0003Iy-8t; Tue, 31 Mar 2015 12:21:43 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YcvAs-0003Im-0H
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 12:21:42 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	38/F5-25404-5519A155; Tue, 31 Mar 2015 12:21:41 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1427804500!7484286!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6795 invoked from network); 31 Mar 2015 12:21:40 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-206.messagelabs.com with DHE-RSA-AES256-SHA
	encrypted SMTP; 31 Mar 2015 12:21:40 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 3BEFF20A12
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 31 Mar 2015 08:21:36 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 31 Mar 2015 08:21:39 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=At0fdwkoYZz060N7
	5nvRR0YQIPo=; b=nOQRrqoEOO7uAnaCMPLfOBzfKPJeHa7UTj+a1z1MOnmw+Quq
	Z7U85nu7I0Rum762JUhFuExdnDmEPo9bFdc4OBQu2SJfqJi5Ofj75/s4xsLRMM3b
	RKNU5xxoZcYikFmx7qXGybpjmhWk8C8LfpWHUOfd/QiS9vPLZu9orJi69Ow=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=At0fdwkoYZz060N
	75nvRR0YQIPo=; b=Pl0X2C3qCXFeuYyL1e9kOq2M0uwzgEWQEhWQ5WJefHdCLTr
	29tWf4Kj3GoFzkH+PYRJSQo+tgO3TZMmByjtzEEQ5JRA0BAFmrtgVNDwTJKnxuxk
	lHOPPP9RbJYIkSbv80CvUG/k1EzysYh1iBHtI2si3vqak09m5bJEJr9259zI=
X-Sasl-enc: wKMZJR0lGTcLWhLmJPdC5YPngCxygQfnOSVGXnCRDknU 1427804498
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 9B36DC0001D;
	Tue, 31 Mar 2015 08:21:38 -0400 (EDT)
Message-ID: <551A9150.9080705@invisiblethingslab.com>
Date: Tue, 31 Mar 2015 14:21:36 +0200
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
Content-Length: 6493
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTMxIDExOjU0LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206IFJhZmHFgiBXb2pkecWCYQo+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdz
bGFiLmNvbV0gU2VudDogMzEgTWFyY2ggMjAxNSAwNjo1MSAKPj4gVG86IFBhdWwgRHVycmFudDsg
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOgo+PiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQViBEcml2ZXJzCj4+
IAo+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRlY2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNz
aW5nIHBpZWNlcyBpbgo+IHRoZSBHUExQViBkcml2ZXJzIGZpcnN0LCBtb3N0bHkgdG8gbm90IGRv
IG1hbnkgdGhpbmdzIGF0IG9uY2UKPiAobGlrZSBwb3J0aW5nIG91ciBXaW5kb3dzIHRvb2xzIHRv
IHVzZSB0aGUgbmV3IGRyaXZlcnMsIGNoYW5naW5nCj4gb3VyIGJ1aWxkIHByb2Nlc3MgZXRjKS4g
SSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5ldyBkcml2ZXJzIG9uY2UKPiBRdWJlcyByMyBiZWNv
bWVzIG1vcmUgc3RhYmxlLgo+IAo+IAo+PiBPaywgZmFpciBlbm91Z2guCj4gCj4gSSBoYXZlIHNv
bWUgcXVlc3Rpb25zIHRob3VnaCwgbW9zdGx5IG9uIHRoZSB0b3BpYyBvZiBYZW4ncyBncmFudCAK
PiBtYXBwaW5nIGFuZCBtZW1vcnkgaHlwZXJjYWxscy4gQXMgSSB3cm90ZSBiZWZvcmUsIEknbSBh
IG5ld2NvbWVyCj4gdG8gWGVuIEFQSSBvbiB0aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3Rp
bmcgZG9jdW1lbnRhdGlvbgo+IHNlZW1zIHByZXR0eSBpbXBlbmV0cmFibGUuIFRoZSBvdmVyYWxs
IHBpY3R1cmUgaXMgbW9zdGx5IGNsZWFyLCBidXQKPiBtYW55IGltcG9ydGFudCBkZXRhaWxzIHNl
ZW0gbWlzc2luZy4KPiAKPiBMZXQncyB0YWtlIHRoZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGNh
bGwuIEluIHRoZSBoZWFkZXIgd2Ugc2VlOgo+IAo+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVj
aWZpZWQgdGhlbiBhIG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdCAqCj4gZWl0aGVyIGEgaG9zdCB2
aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQgKgo+IGEg
UFRFIGF0IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGlu
ZyB0byAqCj4gcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNf
cHRlIGZsYWcsIGFuZCB0aGUgKgo+IGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
Lgo+IAo+IEknbSBwYXNzaW5nIEdOVE1BUF9ob3N0X21hcCBmbGFnLCBidXQgd2hhdCB0eXBlIG9m
IGFkZHJlc3Mgc2hvdWxkCj4gYmUgcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRoZSBzZWN0
aW9uIGFib3ZlIHNheXMgIm1hcHBpbmcgd2lsbAo+IGJlIGFkZGVkIGF0IGVpdGhlciBhIGhvc3Qg
dmlydHVhbCBhZGRyZXNzLi4uIiBidXQgSSBkb3VidCBhIFZBIGlzCj4gd2FudGVkLCBiZWNhdXNl
IEknZCBuZWVkIHRvIGFsbG9jYXRlIHNvbWUga2VybmVsIG1lbW9yeSB0byBwYXNzIGEKPiBWQSB0
byB0aGlzIGNhbGwsIGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRzZWxmLiBTaG91
bGQKPiB0aGlzIGJlIGEgcGh5c2ljYWwgYWRkcmVzcz8gQSBQRk4/IFNvbWV0aGluZyBlbHNlIGVu
dGlyZWx5Pwo+IAo+IAo+PiBIeXBlcmNhbGxzIG9uIEhWTSBndWVzdHMgdXN1YWxseSBkZWFsIGlu
IEdGTnMuIFRoZXJlJ3MgYmFzaWNhbGx5Cj4+IG5vIHdheSBmb3IgYW4gSFZNIGd1ZXN0IHRvIGdl
dCBob2xkIG9mIE1GTiB2YWx1ZXMuIFBWIGd1ZXN0cyBPVE9ICj4+IGRlYWwgaW4gTUZOcy4KPiAK
PiBBZnRlciByZWFkaW5nIHNvbWUgTGludXggY29kZSB0aGF0IHVzZXMgdGhpcyBjYWxsIEkgc2F3
IHRoYXQgaXQgCj4gImFsbG9jYXRlZCIgdGhlIGFkZHJlc3MgZm9yIHRoZSBtYXBwZWQgcGFnZSB2
aWEgdGhlIGJhbGxvb24gZHJpdmVyLgo+IE9uIFdpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5nIGEg
cGFnZSBmcm9tIFhlbiB2aWEgCj4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBh
cyBJIGtub3cuCj4gCj4+IFVubGVzcyB5b3VyIHRvb2xzdGFjayBpcyBhbGxvY2F0aW5nIGV4dHJh
IG1lbW9yeSB0aGF0J3Mgbm90Cj4+IGFscmVhZHkgaW4gdGhlIGd1ZXN0IFAyTSB0aGVuIHRoYXQn
cyBnb2luZyB0byBmYWlsLiBJIHRoaW5rIHdoYXQKPj4geW91IHByb2JhYmx5IHdhbnQgdG8gZG8g
aXMgZWl0aGVyIGZpbmQgYSAnaG9sZScgKGkuZS4gR0ZOcyBub3QKPj4gcG9wdWxhdGVkIHdpdGgg
UkFNKSBzdWNoIGFzIHRoZSBYZW4gUGxhdGZvcm0gUENJIGRldmljZSdzIEJBUgo+PiBzcGFjZSwg
b3IgY3JlYXRlIGEgaG9sZSB1c2luZyBkZWNyZWFzZV9yZXNlcnZhdGlvbi4gRWl0aGVyIHdheSwK
Pj4geW91J2xsIGhhdmUgYSBHRk4gaW4geW91ciBoYW5kLgoKSSBzZWUgdGhhdCBjdXJyZW50bHkg
dGhlIGZ1bmN0aW9uIHRoYXQgbWFwcyB0aGUgZ3JhbnQgdGFibGUgaXRzZWxmCmNyZWF0ZXMgc3Vj
aCAiaG9sZXMiIHdpdGggWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLgo+IAo+IEJ1dCB0aGVu
IGFnYWluOiBYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0aGUK
PiBhbGxvY2F0ZWQgcGFnZS4gV2hhdCBnb29kIGlzIHRoaXMgZm9yIHRoZSBhYm92ZSBwdXJwb3Nl
PyBJZiBJCj4gdW5kZXJzdGFuZCBjb3JyZWN0bHksIGEgSFZNIGRvZXNuJ3Qga25vdyByZWFsIE1G
TnMuIFNob3VsZCBJCj4gdHJhbnNsYXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4gYW5kIHRo
ZW4gcGFzcyBpdCB0bwo+IEdOVFRBQk9QX21hcF9ncmFudF9yZWYgYXMgdGhlIGFkZHJlc3M/IElm
IHNvLCBob3cgdG8gcGVyZm9ybSBzdWNoCj4gdHJhbnNsYXRpb24/Cj4gCj4gSSBleHBlcmltZW50
ZWQgd2l0aCBzb21lIFhFTk1FTSBoeXBlcmNhbGxzLiAKPiBYRU5NRU1fbWFjaHBoeXNfbWFwcGlu
ZyAicmV0dXJucyB0aGUgbG9jYXRpb24gaW4gdmlydHVhbCBhZGRyZXNzCj4gc3BhY2Ugb2YgdGhl
IG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIiwgYnV0IHRoZSBzdHJ1Y3R1cmUgYW5kCj4g
bWVhbmluZyBvZiBzdWNoIHRhYmxlIGlzIG5vdCBleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5z
bGF0ZXMgcmVhbAo+IE1GTnMgaW50byBHTUZOcyBpbiBzb21lIHdheS4gVGhlIGNhbGwgc3VjY2Vl
ZGVzIHdpdGggZm9sbG93aW5nCj4gb3V0cHV0IHZhbHVlczoKPiAKPiB2X3N0YXJ0ICAweGZmZmY4
MDAwYDAwMDAwMDAwIHZfZW5kICAgIDB4ZmZmZjgwNDBgMDAwMDAwMDAgbWF4X21mbgo+IDB4MDAw
MDAwMDdgZmZmZmZmZmYKPiAKPiAuLi5idXQgdGhhdCBWQSByYW5nZSBhcHBlYXJzIHRvIGJlIG5v
dCBhY2Nlc3NpYmxlL25vdCBtYXBwZWQuCj4gCj4gWEVOTUVNX21hY2hwaHlzX21mbl9saXN0IGNh
bGwgYWxzbyB3b3JrZWQgYW5kIHJldHVybmVkIGEgbGlzdCBvZiA5IAo+IHZhbHVlcyBvbiBteSB0
ZXN0IEhWTSAoV2luNyB4NjQgd2l0aCAxR0Igb2YgUkFNKS4gSSdtIG5vdCByZWFsbHkKPiBzdXJl
IHdoYXQgdG8gbWFrZSBvZiB0aGVtLCB0aGUgZGVzY3JpcHRpb24gaXNuJ3QgdmVyeSBoZWxwZnVs
IGZvcgo+IHNvbWVvbmUgd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhvdyB0aGlzIHdvcmtzOiAi
UmV0dXJucyBhIGxpc3Qgb2YKPiBNRk4gYmFzZXMgb2YgMk1CIGV4dGVudHMgY29tcHJpc2luZyB0
aGUgbWFjaGluZV90b19waHlzIG1hcHBpbmcKPiB0YWJsZSIuCj4gCj4gTWF5YmUgSSdtIG92ZXJj
b21wbGljYXRpbmcgdGhpbmdzIGFuZCBvdmVybG9va2VkIHNvbWV0aGluZwo+IG9idmlvdXMuIEkn
ZCB3ZWxjb21lIGFueSBjb3JyZWN0aW9ucyBhbmQvb3IgaGludHMgOikKPiAKPj4gWWVhaCwgSSB0
aGluayB5b3UncmUgb3ZlcmNvbXBsaWNhdGluZyB0aGluZ3MgOi0pIFNlZSBhYm92ZS4KPiAKPj4g
UGF1bAoKVGhhbmsgeW91LCBJJ2xsIHRpbmtlciBzb21lIG1vcmUgYW5kIHJlcG9ydCB3aGF0IGNv
bWVzIG91dCBvZiBpdC4KCi0gLS0gClJhZmHFgiBXb2pkecWCYQpRdWJlcyBUb29scyBmb3IgV2lu
ZG93cyBkZXZlbG9wZXIKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRRWNCQUVCQWdB
R0JRSlZHcEZRQUFvSkVJV2k5ckIyR3JXN3psOEgvaWlaT1Y5OW1FRWx1SmZWc1kvMjRYUkIKeTk1
OXI0cGY1NkxjMlVuZnBBOU1NQ1JnTW9rUVNwNlE3ZTVuOUtHQ1p5blZZa1JyUFhDU0lneHJGdDY3
Q0RDMgpFdmpvQVFCQzc1dlV5YVB2M2F2OFhmK0JFa1lkUnlUVzlsanM2aXREbGFJcHV4NTcvWjZy
TWZxZC9vS0xoR0E3CnBmS2Y5eG1zOHdmTzhzVm8zVk5SclkyR0duSTQxUTRjb1cvMzdEdHZRU2dU
K1Y4dklvdnAyNlo1VDYvZG8wekQKeEhUSTRpbDFxTWsvRk5MZkhoU1pjTWlZampQeEtmczhCb1ow
TFY4KzBkY3oxcW9scEkvSWVjcEVoakZWOWFheQpOMmhEb2tOR3FGRjFlZWQ4Y1lrY2xTWGlaRnhq
ZnNtait5M2d3QXUzdEJSRmloZ0o2NFR2dHVzQTZZTlNYVUk9Cj1mZjZRCi0tLS0tRU5EIFBHUCBT
SUdOQVRVUkUtLS0tLQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 12:21:43 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 12:21:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1YcvAt-0003Iy-8t; Tue, 31 Mar 2015 12:21:43 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <omeg@invisiblethingslab.com>) id 1YcvAs-0003Im-0H
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 12:21:42 +0000
Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id
	38/F5-25404-5519A155; Tue, 31 Mar 2015 12:21:41 +0000
X-Env-Sender: omeg@invisiblethingslab.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1427804500!7484286!1
X-Originating-IP: [66.111.4.26]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTExLjQuMjYgPT4gMTIyNTM=\n
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6795 invoked from network); 31 Mar 2015 12:21:40 -0000
Received: from out2-smtp.messagingengine.com (HELO
	out2-smtp.messagingengine.com) (66.111.4.26)
	by server-14.tower-206.messagelabs.com with DHE-RSA-AES256-SHA
	encrypted SMTP; 31 Mar 2015 12:21:40 -0000
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
	by mailout.nyi.internal (Postfix) with ESMTP id 3BEFF20A12
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 31 Mar 2015 08:21:36 -0400 (EDT)
Received: from frontend1 ([10.202.2.160])
	by compute5.internal (MEProxy); Tue, 31 Mar 2015 08:21:39 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=At0fdwkoYZz060N7
	5nvRR0YQIPo=; b=nOQRrqoEOO7uAnaCMPLfOBzfKPJeHa7UTj+a1z1MOnmw+Quq
	Z7U85nu7I0Rum762JUhFuExdnDmEPo9bFdc4OBQu2SJfqJi5Ofj75/s4xsLRMM3b
	RKNU5xxoZcYikFmx7qXGybpjmhWk8C8LfpWHUOfd/QiS9vPLZu9orJi69Ow=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=
	messagingengine.com; h=content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=At0fdwkoYZz060N
	75nvRR0YQIPo=; b=Pl0X2C3qCXFeuYyL1e9kOq2M0uwzgEWQEhWQ5WJefHdCLTr
	29tWf4Kj3GoFzkH+PYRJSQo+tgO3TZMmByjtzEEQ5JRA0BAFmrtgVNDwTJKnxuxk
	lHOPPP9RbJYIkSbv80CvUG/k1EzysYh1iBHtI2si3vqak09m5bJEJr9259zI=
X-Sasl-enc: wKMZJR0lGTcLWhLmJPdC5YPngCxygQfnOSVGXnCRDknU 1427804498
Received: from [192.168.0.3] (unknown [89.67.247.126])
	by mail.messagingengine.com (Postfix) with ESMTPA id 9B36DC0001D;
	Tue, 31 Mar 2015 08:21:38 -0400 (EDT)
Message-ID: <551A9150.9080705@invisiblethingslab.com>
Date: Tue, 31 Mar 2015 14:21:36 +0200
From: =?UTF-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:31.0) Gecko/20100101 Thunderbird/31.5.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <54FF50FF.3070304@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>	<5501BBEF.20309@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>	<5501C789.6030202@invisiblethingslab.com>	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
Content-Length: 6493
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEExCgpPbiAyMDE1LTAz
LTMxIDExOjU0LCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tIEZyb206IFJhZmHFgiBXb2pkecWCYQo+PiBbbWFpbHRvOm9tZWdAaW52aXNpYmxldGhpbmdz
bGFiLmNvbV0gU2VudDogMzEgTWFyY2ggMjAxNSAwNjo1MSAKPj4gVG86IFBhdWwgRHVycmFudDsg
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIFN1YmplY3Q6IFJlOgo+PiBbd2luLXB2
LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVzZSB0aGUgV2luZG93cyBQViBEcml2ZXJzCj4+
IAo+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRlY2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNz
aW5nIHBpZWNlcyBpbgo+IHRoZSBHUExQViBkcml2ZXJzIGZpcnN0LCBtb3N0bHkgdG8gbm90IGRv
IG1hbnkgdGhpbmdzIGF0IG9uY2UKPiAobGlrZSBwb3J0aW5nIG91ciBXaW5kb3dzIHRvb2xzIHRv
IHVzZSB0aGUgbmV3IGRyaXZlcnMsIGNoYW5naW5nCj4gb3VyIGJ1aWxkIHByb2Nlc3MgZXRjKS4g
SSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5ldyBkcml2ZXJzIG9uY2UKPiBRdWJlcyByMyBiZWNv
bWVzIG1vcmUgc3RhYmxlLgo+IAo+IAo+PiBPaywgZmFpciBlbm91Z2guCj4gCj4gSSBoYXZlIHNv
bWUgcXVlc3Rpb25zIHRob3VnaCwgbW9zdGx5IG9uIHRoZSB0b3BpYyBvZiBYZW4ncyBncmFudCAK
PiBtYXBwaW5nIGFuZCBtZW1vcnkgaHlwZXJjYWxscy4gQXMgSSB3cm90ZSBiZWZvcmUsIEknbSBh
IG5ld2NvbWVyCj4gdG8gWGVuIEFQSSBvbiB0aGlzIGxldmVsIGFuZCB0byBtZSB0aGUgZXhpc3Rp
bmcgZG9jdW1lbnRhdGlvbgo+IHNlZW1zIHByZXR0eSBpbXBlbmV0cmFibGUuIFRoZSBvdmVyYWxs
IHBpY3R1cmUgaXMgbW9zdGx5IGNsZWFyLCBidXQKPiBtYW55IGltcG9ydGFudCBkZXRhaWxzIHNl
ZW0gbWlzc2luZy4KPiAKPiBMZXQncyB0YWtlIHRoZSBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmIGNh
bGwuIEluIHRoZSBoZWFkZXIgd2Ugc2VlOgo+IAo+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVj
aWZpZWQgdGhlbiBhIG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdCAqCj4gZWl0aGVyIGEgaG9zdCB2
aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQgKgo+IGEg
UFRFIGF0IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGlu
ZyB0byAqCj4gcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNf
cHRlIGZsYWcsIGFuZCB0aGUgKgo+IGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
Lgo+IAo+IEknbSBwYXNzaW5nIEdOVE1BUF9ob3N0X21hcCBmbGFnLCBidXQgd2hhdCB0eXBlIG9m
IGFkZHJlc3Mgc2hvdWxkCj4gYmUgcGFzc2VkIGZvciB0aGUgbWFwcGVkIHBhZ2U/IFRoZSBzZWN0
aW9uIGFib3ZlIHNheXMgIm1hcHBpbmcgd2lsbAo+IGJlIGFkZGVkIGF0IGVpdGhlciBhIGhvc3Qg
dmlydHVhbCBhZGRyZXNzLi4uIiBidXQgSSBkb3VidCBhIFZBIGlzCj4gd2FudGVkLCBiZWNhdXNl
IEknZCBuZWVkIHRvIGFsbG9jYXRlIHNvbWUga2VybmVsIG1lbW9yeSB0byBwYXNzIGEKPiBWQSB0
byB0aGlzIGNhbGwsIGFuZCBhbGxvY2F0aW9uIG1lYW5zIG1hcHBpbmcgaW4gaXRzZWxmLiBTaG91
bGQKPiB0aGlzIGJlIGEgcGh5c2ljYWwgYWRkcmVzcz8gQSBQRk4/IFNvbWV0aGluZyBlbHNlIGVu
dGlyZWx5Pwo+IAo+IAo+PiBIeXBlcmNhbGxzIG9uIEhWTSBndWVzdHMgdXN1YWxseSBkZWFsIGlu
IEdGTnMuIFRoZXJlJ3MgYmFzaWNhbGx5Cj4+IG5vIHdheSBmb3IgYW4gSFZNIGd1ZXN0IHRvIGdl
dCBob2xkIG9mIE1GTiB2YWx1ZXMuIFBWIGd1ZXN0cyBPVE9ICj4+IGRlYWwgaW4gTUZOcy4KPiAK
PiBBZnRlciByZWFkaW5nIHNvbWUgTGludXggY29kZSB0aGF0IHVzZXMgdGhpcyBjYWxsIEkgc2F3
IHRoYXQgaXQgCj4gImFsbG9jYXRlZCIgdGhlIGFkZHJlc3MgZm9yIHRoZSBtYXBwZWQgcGFnZSB2
aWEgdGhlIGJhbGxvb24gZHJpdmVyLgo+IE9uIFdpbmRvd3MgdGhpcyBtZWFucyBnZXR0aW5nIGEg
cGFnZSBmcm9tIFhlbiB2aWEgCj4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBh
cyBJIGtub3cuCj4gCj4+IFVubGVzcyB5b3VyIHRvb2xzdGFjayBpcyBhbGxvY2F0aW5nIGV4dHJh
IG1lbW9yeSB0aGF0J3Mgbm90Cj4+IGFscmVhZHkgaW4gdGhlIGd1ZXN0IFAyTSB0aGVuIHRoYXQn
cyBnb2luZyB0byBmYWlsLiBJIHRoaW5rIHdoYXQKPj4geW91IHByb2JhYmx5IHdhbnQgdG8gZG8g
aXMgZWl0aGVyIGZpbmQgYSAnaG9sZScgKGkuZS4gR0ZOcyBub3QKPj4gcG9wdWxhdGVkIHdpdGgg
UkFNKSBzdWNoIGFzIHRoZSBYZW4gUGxhdGZvcm0gUENJIGRldmljZSdzIEJBUgo+PiBzcGFjZSwg
b3IgY3JlYXRlIGEgaG9sZSB1c2luZyBkZWNyZWFzZV9yZXNlcnZhdGlvbi4gRWl0aGVyIHdheSwK
Pj4geW91J2xsIGhhdmUgYSBHRk4gaW4geW91ciBoYW5kLgoKSSBzZWUgdGhhdCBjdXJyZW50bHkg
dGhlIGZ1bmN0aW9uIHRoYXQgbWFwcyB0aGUgZ3JhbnQgdGFibGUgaXRzZWxmCmNyZWF0ZXMgc3Vj
aCAiaG9sZXMiIHdpdGggWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLgo+IAo+IEJ1dCB0aGVu
IGFnYWluOiBYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRpb24gcmV0dXJucyBhIE1GTiBvZiB0aGUK
PiBhbGxvY2F0ZWQgcGFnZS4gV2hhdCBnb29kIGlzIHRoaXMgZm9yIHRoZSBhYm92ZSBwdXJwb3Nl
PyBJZiBJCj4gdW5kZXJzdGFuZCBjb3JyZWN0bHksIGEgSFZNIGRvZXNuJ3Qga25vdyByZWFsIE1G
TnMuIFNob3VsZCBJCj4gdHJhbnNsYXRlIHN1Y2ggTUZOIGludG8gYSBHTUZOL0dQRk4gYW5kIHRo
ZW4gcGFzcyBpdCB0bwo+IEdOVFRBQk9QX21hcF9ncmFudF9yZWYgYXMgdGhlIGFkZHJlc3M/IElm
IHNvLCBob3cgdG8gcGVyZm9ybSBzdWNoCj4gdHJhbnNsYXRpb24/Cj4gCj4gSSBleHBlcmltZW50
ZWQgd2l0aCBzb21lIFhFTk1FTSBoeXBlcmNhbGxzLiAKPiBYRU5NRU1fbWFjaHBoeXNfbWFwcGlu
ZyAicmV0dXJucyB0aGUgbG9jYXRpb24gaW4gdmlydHVhbCBhZGRyZXNzCj4gc3BhY2Ugb2YgdGhl
IG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nIHRhYmxlIiwgYnV0IHRoZSBzdHJ1Y3R1cmUgYW5kCj4g
bWVhbmluZyBvZiBzdWNoIHRhYmxlIGlzIG5vdCBleHBsYWluZWQuIEkgYXNzdW1lIGl0IHRyYW5z
bGF0ZXMgcmVhbAo+IE1GTnMgaW50byBHTUZOcyBpbiBzb21lIHdheS4gVGhlIGNhbGwgc3VjY2Vl
ZGVzIHdpdGggZm9sbG93aW5nCj4gb3V0cHV0IHZhbHVlczoKPiAKPiB2X3N0YXJ0ICAweGZmZmY4
MDAwYDAwMDAwMDAwIHZfZW5kICAgIDB4ZmZmZjgwNDBgMDAwMDAwMDAgbWF4X21mbgo+IDB4MDAw
MDAwMDdgZmZmZmZmZmYKPiAKPiAuLi5idXQgdGhhdCBWQSByYW5nZSBhcHBlYXJzIHRvIGJlIG5v
dCBhY2Nlc3NpYmxlL25vdCBtYXBwZWQuCj4gCj4gWEVOTUVNX21hY2hwaHlzX21mbl9saXN0IGNh
bGwgYWxzbyB3b3JrZWQgYW5kIHJldHVybmVkIGEgbGlzdCBvZiA5IAo+IHZhbHVlcyBvbiBteSB0
ZXN0IEhWTSAoV2luNyB4NjQgd2l0aCAxR0Igb2YgUkFNKS4gSSdtIG5vdCByZWFsbHkKPiBzdXJl
IHdoYXQgdG8gbWFrZSBvZiB0aGVtLCB0aGUgZGVzY3JpcHRpb24gaXNuJ3QgdmVyeSBoZWxwZnVs
IGZvcgo+IHNvbWVvbmUgd2hvIGRvZXNuJ3QgYWxyZWFkeSBrbm93IGhvdyB0aGlzIHdvcmtzOiAi
UmV0dXJucyBhIGxpc3Qgb2YKPiBNRk4gYmFzZXMgb2YgMk1CIGV4dGVudHMgY29tcHJpc2luZyB0
aGUgbWFjaGluZV90b19waHlzIG1hcHBpbmcKPiB0YWJsZSIuCj4gCj4gTWF5YmUgSSdtIG92ZXJj
b21wbGljYXRpbmcgdGhpbmdzIGFuZCBvdmVybG9va2VkIHNvbWV0aGluZwo+IG9idmlvdXMuIEkn
ZCB3ZWxjb21lIGFueSBjb3JyZWN0aW9ucyBhbmQvb3IgaGludHMgOikKPiAKPj4gWWVhaCwgSSB0
aGluayB5b3UncmUgb3ZlcmNvbXBsaWNhdGluZyB0aGluZ3MgOi0pIFNlZSBhYm92ZS4KPiAKPj4g
UGF1bAoKVGhhbmsgeW91LCBJJ2xsIHRpbmtlciBzb21lIG1vcmUgYW5kIHJlcG9ydCB3aGF0IGNv
bWVzIG91dCBvZiBpdC4KCi0gLS0gClJhZmHFgiBXb2pkecWCYQpRdWJlcyBUb29scyBmb3IgV2lu
ZG93cyBkZXZlbG9wZXIKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRRWNCQUVCQWdB
R0JRSlZHcEZRQUFvSkVJV2k5ckIyR3JXN3psOEgvaWlaT1Y5OW1FRWx1SmZWc1kvMjRYUkIKeTk1
OXI0cGY1NkxjMlVuZnBBOU1NQ1JnTW9rUVNwNlE3ZTVuOUtHQ1p5blZZa1JyUFhDU0lneHJGdDY3
Q0RDMgpFdmpvQVFCQzc1dlV5YVB2M2F2OFhmK0JFa1lkUnlUVzlsanM2aXREbGFJcHV4NTcvWjZy
TWZxZC9vS0xoR0E3CnBmS2Y5eG1zOHdmTzhzVm8zVk5SclkyR0duSTQxUTRjb1cvMzdEdHZRU2dU
K1Y4dklvdnAyNlo1VDYvZG8wekQKeEhUSTRpbDFxTWsvRk5MZkhoU1pjTWlZampQeEtmczhCb1ow
TFY4KzBkY3oxcW9scEkvSWVjcEVoakZWOWFheQpOMmhEb2tOR3FGRjFlZWQ4Y1lrY2xTWGlaRnhq
ZnNtait5M2d3QXUzdEJSRmloZ0o2NFR2dHVzQTZZTlNYVUk9Cj1mZjZRCi0tLS0tRU5EIFBHUCBT
SUdOQVRVUkUtLS0tLQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 12:59:07 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 12:59:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycvl5-0008UQ-7P; Tue, 31 Mar 2015 12:59:07 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1Ycvl4-0008TM-3Y
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 12:59:06 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	80/C8-13265-91A9A155; Tue, 31 Mar 2015 12:59:05 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1427806744!8954625!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30919 invoked from network); 31 Mar 2015 12:59:04 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	31 Mar 2015 12:59:04 -0000
X-IronPort-AV: E=Sophos;i="5.11,501,1422921600"; d="scan'208";a="33190214"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1wgAA2aoCAG7mbAIAAYSCggAAMAACAACuggA==
Date: Tue, 31 Mar 2015 12:59:02 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D6DA@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
	<551A9150.9080705@invisiblethingslab.com>
In-Reply-To: <551A9150.9080705@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTUg
MTM6MjINCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IE9uIDIwMTUtMDMtMzEgMTE6NTQsIFBhdWwg
RHVycmFudCB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbTogUmFm
YcWCIFdvamR5xYJhDQo+ID4+IFttYWlsdG86b21lZ0BpbnZpc2libGV0aGluZ3NsYWIuY29tXSBT
ZW50OiAzMSBNYXJjaCAyMDE1IDA2OjUxDQo+ID4+IFRvOiBQYXVsIER1cnJhbnQ7IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0OiBSZToNCj4gPj4gW3dpbi1wdi1kZXZl
bF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdpbmRvd3MgUFYgRHJpdmVycw0KPiA+Pg0K
PiA+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRlY2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNz
aW5nIHBpZWNlcyBpbg0KPiA+IHRoZSBHUExQViBkcml2ZXJzIGZpcnN0LCBtb3N0bHkgdG8gbm90
IGRvIG1hbnkgdGhpbmdzIGF0IG9uY2UNCj4gPiAobGlrZSBwb3J0aW5nIG91ciBXaW5kb3dzIHRv
b2xzIHRvIHVzZSB0aGUgbmV3IGRyaXZlcnMsIGNoYW5naW5nDQo+ID4gb3VyIGJ1aWxkIHByb2Nl
c3MgZXRjKS4gSSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5ldyBkcml2ZXJzIG9uY2UNCj4gPiBR
dWJlcyByMyBiZWNvbWVzIG1vcmUgc3RhYmxlLg0KPiA+DQo+ID4NCj4gPj4gT2ssIGZhaXIgZW5v
dWdoLg0KPiA+DQo+ID4gSSBoYXZlIHNvbWUgcXVlc3Rpb25zIHRob3VnaCwgbW9zdGx5IG9uIHRo
ZSB0b3BpYyBvZiBYZW4ncyBncmFudA0KPiA+IG1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNhbGxz
LiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdtIGEgbmV3Y29tZXINCj4gPiB0byBYZW4gQVBJIG9uIHRo
aXMgbGV2ZWwgYW5kIHRvIG1lIHRoZSBleGlzdGluZyBkb2N1bWVudGF0aW9uDQo+ID4gc2VlbXMg
cHJldHR5IGltcGVuZXRyYWJsZS4gVGhlIG92ZXJhbGwgcGljdHVyZSBpcyBtb3N0bHkgY2xlYXIs
IGJ1dA0KPiA+IG1hbnkgaW1wb3J0YW50IGRldGFpbHMgc2VlbSBtaXNzaW5nLg0KPiA+DQo+ID4g
TGV0J3MgdGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0aGUgaGVhZGVy
IHdlIHNlZToNCj4gPg0KPiA+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBh
IG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdCAqDQo+ID4gZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFk
ZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQgKg0KPiA+IGEgUFRFIGF0
IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0byAq
DQo+ID4gcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUgKg0KPiA+IGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
Lg0KPiA+DQo+ID4gSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5
cGUgb2YgYWRkcmVzcyBzaG91bGQNCj4gPiBiZSBwYXNzZWQgZm9yIHRoZSBtYXBwZWQgcGFnZT8g
VGhlIHNlY3Rpb24gYWJvdmUgc2F5cyAibWFwcGluZyB3aWxsDQo+ID4gYmUgYWRkZWQgYXQgZWl0
aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuLi4iIGJ1dCBJIGRvdWJ0IGEgVkEgaXMNCj4gPiB3
YW50ZWQsIGJlY2F1c2UgSSdkIG5lZWQgdG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRv
IHBhc3MgYQ0KPiA+IFZBIHRvIHRoaXMgY2FsbCwgYW5kIGFsbG9jYXRpb24gbWVhbnMgbWFwcGlu
ZyBpbiBpdHNlbGYuIFNob3VsZA0KPiA+IHRoaXMgYmUgYSBwaHlzaWNhbCBhZGRyZXNzPyBBIFBG
Tj8gU29tZXRoaW5nIGVsc2UgZW50aXJlbHk/DQo+ID4NCj4gPg0KPiA+PiBIeXBlcmNhbGxzIG9u
IEhWTSBndWVzdHMgdXN1YWxseSBkZWFsIGluIEdGTnMuIFRoZXJlJ3MgYmFzaWNhbGx5DQo+ID4+
IG5vIHdheSBmb3IgYW4gSFZNIGd1ZXN0IHRvIGdldCBob2xkIG9mIE1GTiB2YWx1ZXMuIFBWIGd1
ZXN0cyBPVE9IDQo+ID4+IGRlYWwgaW4gTUZOcy4NCj4gPg0KPiA+IEFmdGVyIHJlYWRpbmcgc29t
ZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBzYXcgdGhhdCBpdA0KPiA+ICJhbGxv
Y2F0ZWQiIHRoZSBhZGRyZXNzIGZvciB0aGUgbWFwcGVkIHBhZ2UgdmlhIHRoZSBiYWxsb29uIGRy
aXZlci4NCj4gPiBPbiBXaW5kb3dzIHRoaXMgbWVhbnMgZ2V0dGluZyBhIHBhZ2UgZnJvbSBYZW4g
dmlhDQo+ID4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBhcyBJIGtub3cuDQo+
ID4NCj4gPj4gVW5sZXNzIHlvdXIgdG9vbHN0YWNrIGlzIGFsbG9jYXRpbmcgZXh0cmEgbWVtb3J5
IHRoYXQncyBub3QNCj4gPj4gYWxyZWFkeSBpbiB0aGUgZ3Vlc3QgUDJNIHRoZW4gdGhhdCdzIGdv
aW5nIHRvIGZhaWwuIEkgdGhpbmsgd2hhdA0KPiA+PiB5b3UgcHJvYmFibHkgd2FudCB0byBkbyBp
cyBlaXRoZXIgZmluZCBhICdob2xlJyAoaS5lLiBHRk5zIG5vdA0KPiA+PiBwb3B1bGF0ZWQgd2l0
aCBSQU0pIHN1Y2ggYXMgdGhlIFhlbiBQbGF0Zm9ybSBQQ0kgZGV2aWNlJ3MgQkFSDQo+ID4+IHNw
YWNlLCBvciBjcmVhdGUgYSBob2xlIHVzaW5nIGRlY3JlYXNlX3Jlc2VydmF0aW9uLiBFaXRoZXIg
d2F5LA0KPiA+PiB5b3UnbGwgaGF2ZSBhIEdGTiBpbiB5b3VyIGhhbmQuDQo+IA0KPiBJIHNlZSB0
aGF0IGN1cnJlbnRseSB0aGUgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBncmFudCB0YWJsZSBpdHNl
bGYNCj4gY3JlYXRlcyBzdWNoICJob2xlcyIgd2l0aCBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRp
b24uDQoNClllYWgsIEkgdXNlZCB0byBkbyB0aGF0IHRvbyBidXQgdGhlc2UgZGF5cyBJIGp1c3Qg
cHV0IGEgc2ltcGxlIHBhZ2UgYWxsb2NhdG9yIG9uIHRvcCBvZiB0aGUgUENJIEJBUiBzcGFjZS4g
R29vZCB0aGF0IHlvdSBoYXZlIHNvbWUgY29kZSB0byBjb3B5J24ncGFzdGUgdGhvdWdoIDotKQ0K
DQo+ID4NCj4gPiBCdXQgdGhlbiBhZ2FpbjogWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIHJl
dHVybnMgYSBNRk4gb2YgdGhlDQo+ID4gYWxsb2NhdGVkIHBhZ2UuIFdoYXQgZ29vZCBpcyB0aGlz
IGZvciB0aGUgYWJvdmUgcHVycG9zZT8gSWYgSQ0KPiA+IHVuZGVyc3RhbmQgY29ycmVjdGx5LCBh
IEhWTSBkb2Vzbid0IGtub3cgcmVhbCBNRk5zLiBTaG91bGQgSQ0KPiA+IHRyYW5zbGF0ZSBzdWNo
IE1GTiBpbnRvIGEgR01GTi9HUEZOIGFuZCB0aGVuIHBhc3MgaXQgdG8NCj4gPiBHTlRUQUJPUF9t
YXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywgaG93IHRvIHBlcmZvcm0gc3VjaA0K
PiA+IHRyYW5zbGF0aW9uPw0KPiA+DQo+ID4gSSBleHBlcmltZW50ZWQgd2l0aCBzb21lIFhFTk1F
TSBoeXBlcmNhbGxzLg0KPiA+IFhFTk1FTV9tYWNocGh5c19tYXBwaW5nICJyZXR1cm5zIHRoZSBs
b2NhdGlvbiBpbiB2aXJ0dWFsIGFkZHJlc3MNCj4gPiBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19w
aHlzIG1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQNCj4gPiBtZWFuaW5nIG9m
IHN1Y2ggdGFibGUgaXMgbm90IGV4cGxhaW5lZC4gSSBhc3N1bWUgaXQgdHJhbnNsYXRlcyByZWFs
DQo+ID4gTUZOcyBpbnRvIEdNRk5zIGluIHNvbWUgd2F5LiBUaGUgY2FsbCBzdWNjZWVkZXMgd2l0
aCBmb2xsb3dpbmcNCj4gPiBvdXRwdXQgdmFsdWVzOg0KPiA+DQo+ID4gdl9zdGFydCAgMHhmZmZm
ODAwMGAwMDAwMDAwMCB2X2VuZCAgICAweGZmZmY4MDQwYDAwMDAwMDAwIG1heF9tZm4NCj4gPiAw
eDAwMDAwMDA3YGZmZmZmZmZmDQo+ID4NCj4gPiAuLi5idXQgdGhhdCBWQSByYW5nZSBhcHBlYXJz
IHRvIGJlIG5vdCBhY2Nlc3NpYmxlL25vdCBtYXBwZWQuDQo+ID4NCj4gPiBYRU5NRU1fbWFjaHBo
eXNfbWZuX2xpc3QgY2FsbCBhbHNvIHdvcmtlZCBhbmQgcmV0dXJuZWQgYSBsaXN0IG9mIDkNCj4g
PiB2YWx1ZXMgb24gbXkgdGVzdCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEknbSBu
b3QgcmVhbGx5DQo+ID4gc3VyZSB3aGF0IHRvIG1ha2Ugb2YgdGhlbSwgdGhlIGRlc2NyaXB0aW9u
IGlzbid0IHZlcnkgaGVscGZ1bCBmb3INCj4gPiBzb21lb25lIHdobyBkb2Vzbid0IGFscmVhZHkg
a25vdyBob3cgdGhpcyB3b3JrczogIlJldHVybnMgYSBsaXN0IG9mDQo+ID4gTUZOIGJhc2VzIG9m
IDJNQiBleHRlbnRzIGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nDQo+ID4g
dGFibGUiLg0KPiA+DQo+ID4gTWF5YmUgSSdtIG92ZXJjb21wbGljYXRpbmcgdGhpbmdzIGFuZCBv
dmVybG9va2VkIHNvbWV0aGluZw0KPiA+IG9idmlvdXMuIEknZCB3ZWxjb21lIGFueSBjb3JyZWN0
aW9ucyBhbmQvb3IgaGludHMgOikNCj4gPg0KPiA+PiBZZWFoLCBJIHRoaW5rIHlvdSdyZSBvdmVy
Y29tcGxpY2F0aW5nIHRoaW5ncyA6LSkgU2VlIGFib3ZlLg0KPiA+DQo+ID4+IFBhdWwNCj4gDQo+
IFRoYW5rIHlvdSwgSSdsbCB0aW5rZXIgc29tZSBtb3JlIGFuZCByZXBvcnQgd2hhdCBjb21lcyBv
dXQgb2YgaXQuDQo+IA0KDQpUaGFua3MsDQoNCiAgUGF1bA0KDQo+IC0gLS0NCj4gUmFmYcWCIFdv
amR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAtLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFKVkdwRlFBQW9KRUlXaTly
QjJHclc3emw4SC9paVpPVjk5bUVFbHVKZlZzWS8yNFhSQg0KPiB5OTU5cjRwZjU2TGMyVW5mcEE5
TU1DUmdNb2tRU3A2UTdlNW45S0dDWnluVllrUnJQWENTSWd4ckZ0NjdDRA0KPiBDMg0KPiBFdmpv
QVFCQzc1dlV5YVB2M2F2OFhmK0JFa1lkUnlUVzlsanM2aXREbGFJcHV4NTcvWjZyTWZxZC9vS0xo
R0E3DQo+IHBmS2Y5eG1zOHdmTzhzVm8zVk5SclkyR0duSTQxUTRjb1cvMzdEdHZRU2dUK1Y4dklv
dnAyNlo1VDYvZG8wDQo+IHpEDQo+IHhIVEk0aWwxcU1rL0ZOTGZIaFNaY01pWWpqUHhLZnM4Qm9a
MExWOCswZGN6MXFvbHBJL0llY3BFaGpGVjlhYXkNCj4gTjJoRG9rTkdxRkYxZWVkOGNZa2NsU1hp
WkZ4amZzbWoreTNnd0F1M3RCUkZpaGdKNjRUdnR1c0E2WU5TWFVJPQ0KPiA9ZmY2UQ0KPiAtLS0t
LUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 31 12:59:07 2015
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 31 Mar 2015 12:59:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1Ycvl5-0008UQ-7P; Tue, 31 Mar 2015 12:59:07 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1Ycvl4-0008TM-3Y
	for win-pv-devel@lists.xenproject.org; Tue, 31 Mar 2015 12:59:06 +0000
Received: from [85.158.137.68] by server-1.bemta-3.messagelabs.com id
	80/C8-13265-91A9A155; Tue, 31 Mar 2015 12:59:05 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1427806744!8954625!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.13.6; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30919 invoked from network); 31 Mar 2015 12:59:04 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	31 Mar 2015 12:59:04 -0000
X-IronPort-AV: E=Sophos;i="5.11,501,1422921600"; d="scan'208";a="33190214"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: =?utf-8?B?UmFmYcWCIFdvamR5xYJh?= <omeg@invisiblethingslab.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
Thread-Index: AQHQW28a3XmHyTKwcEWapCOzUcYchJ0XicZggAFueICAABaqUP//9yuAgAARPoCAACCOgIAA7Q1wgAA2aoCAG7mbAIAAYSCggAAMAACAACuggA==
Date: Tue, 31 Mar 2015 12:59:02 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD02585D6DA@AMSPEX01CL01.citrite.net>
References: <54FF50FF.3070304@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02583F14E@AMSPEX01CL01.citrite.net>
	<5501BBEF.20309@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840336@AMSPEX01CL01.citrite.net>
	<5501C789.6030202@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840578@AMSPEX01CL01.citrite.net>
	<5501F14F.7090105@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD025840FC6@AMSPEX01CL01.citrite.net>
	<5502E5CF.4030804@invisiblethingslab.com>
	<551A35C6.8080600@invisiblethingslab.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD02585D2E9@AMSPEX01CL01.citrite.net>
	<551A9150.9080705@invisiblethingslab.com>
In-Reply-To: <551A9150.9080705@invisiblethingslab.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] Porting libvchan to use the Windows PV Drivers
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZhxYIgV29qZHnFgmEgW21h
aWx0bzpvbWVnQGludmlzaWJsZXRoaW5nc2xhYi5jb21dDQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTUg
MTM6MjINCj4gVG86IFBhdWwgRHVycmFudDsgd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IFN1YmplY3Q6IFJlOiBbd2luLXB2LWRldmVsXSBQb3J0aW5nIGxpYnZjaGFuIHRvIHVz
ZSB0aGUgV2luZG93cyBQViBEcml2ZXJzDQo+IA0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVT
U0FHRS0tLS0tDQo+IEhhc2g6IFNIQTENCj4gDQo+IE9uIDIwMTUtMDMtMzEgMTE6NTQsIFBhdWwg
RHVycmFudCB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0gRnJvbTogUmFm
YcWCIFdvamR5xYJhDQo+ID4+IFttYWlsdG86b21lZ0BpbnZpc2libGV0aGluZ3NsYWIuY29tXSBT
ZW50OiAzMSBNYXJjaCAyMDE1IDA2OjUxDQo+ID4+IFRvOiBQYXVsIER1cnJhbnQ7IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyBTdWJqZWN0OiBSZToNCj4gPj4gW3dpbi1wdi1kZXZl
bF0gUG9ydGluZyBsaWJ2Y2hhbiB0byB1c2UgdGhlIFdpbmRvd3MgUFYgRHJpdmVycw0KPiA+Pg0K
PiA+IEFmdGVyIHNvbWUgdGhvdWdodCBJJ3ZlIGRlY2lkZWQgdG8gaW1wbGVtZW50IHRoZSBtaXNz
aW5nIHBpZWNlcyBpbg0KPiA+IHRoZSBHUExQViBkcml2ZXJzIGZpcnN0LCBtb3N0bHkgdG8gbm90
IGRvIG1hbnkgdGhpbmdzIGF0IG9uY2UNCj4gPiAobGlrZSBwb3J0aW5nIG91ciBXaW5kb3dzIHRv
b2xzIHRvIHVzZSB0aGUgbmV3IGRyaXZlcnMsIGNoYW5naW5nDQo+ID4gb3VyIGJ1aWxkIHByb2Nl
c3MgZXRjKS4gSSdsbCBkZWZpbml0ZWx5IHRlc3QgdGhlIG5ldyBkcml2ZXJzIG9uY2UNCj4gPiBR
dWJlcyByMyBiZWNvbWVzIG1vcmUgc3RhYmxlLg0KPiA+DQo+ID4NCj4gPj4gT2ssIGZhaXIgZW5v
dWdoLg0KPiA+DQo+ID4gSSBoYXZlIHNvbWUgcXVlc3Rpb25zIHRob3VnaCwgbW9zdGx5IG9uIHRo
ZSB0b3BpYyBvZiBYZW4ncyBncmFudA0KPiA+IG1hcHBpbmcgYW5kIG1lbW9yeSBoeXBlcmNhbGxz
LiBBcyBJIHdyb3RlIGJlZm9yZSwgSSdtIGEgbmV3Y29tZXINCj4gPiB0byBYZW4gQVBJIG9uIHRo
aXMgbGV2ZWwgYW5kIHRvIG1lIHRoZSBleGlzdGluZyBkb2N1bWVudGF0aW9uDQo+ID4gc2VlbXMg
cHJldHR5IGltcGVuZXRyYWJsZS4gVGhlIG92ZXJhbGwgcGljdHVyZSBpcyBtb3N0bHkgY2xlYXIs
IGJ1dA0KPiA+IG1hbnkgaW1wb3J0YW50IGRldGFpbHMgc2VlbSBtaXNzaW5nLg0KPiA+DQo+ID4g
TGV0J3MgdGFrZSB0aGUgR05UVEFCT1BfbWFwX2dyYW50X3JlZiBjYWxsLiBJbiB0aGUgaGVhZGVy
IHdlIHNlZToNCj4gPg0KPiA+IElmIEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBh
IG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBhdCAqDQo+ID4gZWl0aGVyIGEgaG9zdCB2aXJ0dWFsIGFk
ZHJlc3MgaW4gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSwgb3IgYXQgKg0KPiA+IGEgUFRFIGF0
IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0byAq
DQo+ID4gcGVyZm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRl
IGZsYWcsIGFuZCB0aGUgKg0KPiA+IGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIDxob3N0X2FkZHI+
Lg0KPiA+DQo+ID4gSSdtIHBhc3NpbmcgR05UTUFQX2hvc3RfbWFwIGZsYWcsIGJ1dCB3aGF0IHR5
cGUgb2YgYWRkcmVzcyBzaG91bGQNCj4gPiBiZSBwYXNzZWQgZm9yIHRoZSBtYXBwZWQgcGFnZT8g
VGhlIHNlY3Rpb24gYWJvdmUgc2F5cyAibWFwcGluZyB3aWxsDQo+ID4gYmUgYWRkZWQgYXQgZWl0
aGVyIGEgaG9zdCB2aXJ0dWFsIGFkZHJlc3MuLi4iIGJ1dCBJIGRvdWJ0IGEgVkEgaXMNCj4gPiB3
YW50ZWQsIGJlY2F1c2UgSSdkIG5lZWQgdG8gYWxsb2NhdGUgc29tZSBrZXJuZWwgbWVtb3J5IHRv
IHBhc3MgYQ0KPiA+IFZBIHRvIHRoaXMgY2FsbCwgYW5kIGFsbG9jYXRpb24gbWVhbnMgbWFwcGlu
ZyBpbiBpdHNlbGYuIFNob3VsZA0KPiA+IHRoaXMgYmUgYSBwaHlzaWNhbCBhZGRyZXNzPyBBIFBG
Tj8gU29tZXRoaW5nIGVsc2UgZW50aXJlbHk/DQo+ID4NCj4gPg0KPiA+PiBIeXBlcmNhbGxzIG9u
IEhWTSBndWVzdHMgdXN1YWxseSBkZWFsIGluIEdGTnMuIFRoZXJlJ3MgYmFzaWNhbGx5DQo+ID4+
IG5vIHdheSBmb3IgYW4gSFZNIGd1ZXN0IHRvIGdldCBob2xkIG9mIE1GTiB2YWx1ZXMuIFBWIGd1
ZXN0cyBPVE9IDQo+ID4+IGRlYWwgaW4gTUZOcy4NCj4gPg0KPiA+IEFmdGVyIHJlYWRpbmcgc29t
ZSBMaW51eCBjb2RlIHRoYXQgdXNlcyB0aGlzIGNhbGwgSSBzYXcgdGhhdCBpdA0KPiA+ICJhbGxv
Y2F0ZWQiIHRoZSBhZGRyZXNzIGZvciB0aGUgbWFwcGVkIHBhZ2UgdmlhIHRoZSBiYWxsb29uIGRy
aXZlci4NCj4gPiBPbiBXaW5kb3dzIHRoaXMgbWVhbnMgZ2V0dGluZyBhIHBhZ2UgZnJvbSBYZW4g
dmlhDQo+ID4gWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIGFzIGZhciBhcyBJIGtub3cuDQo+
ID4NCj4gPj4gVW5sZXNzIHlvdXIgdG9vbHN0YWNrIGlzIGFsbG9jYXRpbmcgZXh0cmEgbWVtb3J5
IHRoYXQncyBub3QNCj4gPj4gYWxyZWFkeSBpbiB0aGUgZ3Vlc3QgUDJNIHRoZW4gdGhhdCdzIGdv
aW5nIHRvIGZhaWwuIEkgdGhpbmsgd2hhdA0KPiA+PiB5b3UgcHJvYmFibHkgd2FudCB0byBkbyBp
cyBlaXRoZXIgZmluZCBhICdob2xlJyAoaS5lLiBHRk5zIG5vdA0KPiA+PiBwb3B1bGF0ZWQgd2l0
aCBSQU0pIHN1Y2ggYXMgdGhlIFhlbiBQbGF0Zm9ybSBQQ0kgZGV2aWNlJ3MgQkFSDQo+ID4+IHNw
YWNlLCBvciBjcmVhdGUgYSBob2xlIHVzaW5nIGRlY3JlYXNlX3Jlc2VydmF0aW9uLiBFaXRoZXIg
d2F5LA0KPiA+PiB5b3UnbGwgaGF2ZSBhIEdGTiBpbiB5b3VyIGhhbmQuDQo+IA0KPiBJIHNlZSB0
aGF0IGN1cnJlbnRseSB0aGUgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBncmFudCB0YWJsZSBpdHNl
bGYNCj4gY3JlYXRlcyBzdWNoICJob2xlcyIgd2l0aCBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRp
b24uDQoNClllYWgsIEkgdXNlZCB0byBkbyB0aGF0IHRvbyBidXQgdGhlc2UgZGF5cyBJIGp1c3Qg
cHV0IGEgc2ltcGxlIHBhZ2UgYWxsb2NhdG9yIG9uIHRvcCBvZiB0aGUgUENJIEJBUiBzcGFjZS4g
R29vZCB0aGF0IHlvdSBoYXZlIHNvbWUgY29kZSB0byBjb3B5J24ncGFzdGUgdGhvdWdoIDotKQ0K
DQo+ID4NCj4gPiBCdXQgdGhlbiBhZ2FpbjogWEVOTUVNX2luY3JlYXNlX3Jlc2VydmF0aW9uIHJl
dHVybnMgYSBNRk4gb2YgdGhlDQo+ID4gYWxsb2NhdGVkIHBhZ2UuIFdoYXQgZ29vZCBpcyB0aGlz
IGZvciB0aGUgYWJvdmUgcHVycG9zZT8gSWYgSQ0KPiA+IHVuZGVyc3RhbmQgY29ycmVjdGx5LCBh
IEhWTSBkb2Vzbid0IGtub3cgcmVhbCBNRk5zLiBTaG91bGQgSQ0KPiA+IHRyYW5zbGF0ZSBzdWNo
IE1GTiBpbnRvIGEgR01GTi9HUEZOIGFuZCB0aGVuIHBhc3MgaXQgdG8NCj4gPiBHTlRUQUJPUF9t
YXBfZ3JhbnRfcmVmIGFzIHRoZSBhZGRyZXNzPyBJZiBzbywgaG93IHRvIHBlcmZvcm0gc3VjaA0K
PiA+IHRyYW5zbGF0aW9uPw0KPiA+DQo+ID4gSSBleHBlcmltZW50ZWQgd2l0aCBzb21lIFhFTk1F
TSBoeXBlcmNhbGxzLg0KPiA+IFhFTk1FTV9tYWNocGh5c19tYXBwaW5nICJyZXR1cm5zIHRoZSBs
b2NhdGlvbiBpbiB2aXJ0dWFsIGFkZHJlc3MNCj4gPiBzcGFjZSBvZiB0aGUgbWFjaGluZV90b19w
aHlzIG1hcHBpbmcgdGFibGUiLCBidXQgdGhlIHN0cnVjdHVyZSBhbmQNCj4gPiBtZWFuaW5nIG9m
IHN1Y2ggdGFibGUgaXMgbm90IGV4cGxhaW5lZC4gSSBhc3N1bWUgaXQgdHJhbnNsYXRlcyByZWFs
DQo+ID4gTUZOcyBpbnRvIEdNRk5zIGluIHNvbWUgd2F5LiBUaGUgY2FsbCBzdWNjZWVkZXMgd2l0
aCBmb2xsb3dpbmcNCj4gPiBvdXRwdXQgdmFsdWVzOg0KPiA+DQo+ID4gdl9zdGFydCAgMHhmZmZm
ODAwMGAwMDAwMDAwMCB2X2VuZCAgICAweGZmZmY4MDQwYDAwMDAwMDAwIG1heF9tZm4NCj4gPiAw
eDAwMDAwMDA3YGZmZmZmZmZmDQo+ID4NCj4gPiAuLi5idXQgdGhhdCBWQSByYW5nZSBhcHBlYXJz
IHRvIGJlIG5vdCBhY2Nlc3NpYmxlL25vdCBtYXBwZWQuDQo+ID4NCj4gPiBYRU5NRU1fbWFjaHBo
eXNfbWZuX2xpc3QgY2FsbCBhbHNvIHdvcmtlZCBhbmQgcmV0dXJuZWQgYSBsaXN0IG9mIDkNCj4g
PiB2YWx1ZXMgb24gbXkgdGVzdCBIVk0gKFdpbjcgeDY0IHdpdGggMUdCIG9mIFJBTSkuIEknbSBu
b3QgcmVhbGx5DQo+ID4gc3VyZSB3aGF0IHRvIG1ha2Ugb2YgdGhlbSwgdGhlIGRlc2NyaXB0aW9u
IGlzbid0IHZlcnkgaGVscGZ1bCBmb3INCj4gPiBzb21lb25lIHdobyBkb2Vzbid0IGFscmVhZHkg
a25vdyBob3cgdGhpcyB3b3JrczogIlJldHVybnMgYSBsaXN0IG9mDQo+ID4gTUZOIGJhc2VzIG9m
IDJNQiBleHRlbnRzIGNvbXByaXNpbmcgdGhlIG1hY2hpbmVfdG9fcGh5cyBtYXBwaW5nDQo+ID4g
dGFibGUiLg0KPiA+DQo+ID4gTWF5YmUgSSdtIG92ZXJjb21wbGljYXRpbmcgdGhpbmdzIGFuZCBv
dmVybG9va2VkIHNvbWV0aGluZw0KPiA+IG9idmlvdXMuIEknZCB3ZWxjb21lIGFueSBjb3JyZWN0
aW9ucyBhbmQvb3IgaGludHMgOikNCj4gPg0KPiA+PiBZZWFoLCBJIHRoaW5rIHlvdSdyZSBvdmVy
Y29tcGxpY2F0aW5nIHRoaW5ncyA6LSkgU2VlIGFib3ZlLg0KPiA+DQo+ID4+IFBhdWwNCj4gDQo+
IFRoYW5rIHlvdSwgSSdsbCB0aW5rZXIgc29tZSBtb3JlIGFuZCByZXBvcnQgd2hhdCBjb21lcyBv
dXQgb2YgaXQuDQo+IA0KDQpUaGFua3MsDQoNCiAgUGF1bA0KDQo+IC0gLS0NCj4gUmFmYcWCIFdv
amR5xYJhDQo+IFF1YmVzIFRvb2xzIGZvciBXaW5kb3dzIGRldmVsb3Blcg0KPiAtLS0tLUJFR0lO
IFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiANCj4gaVFFY0JBRUJBZ0FHQlFKVkdwRlFBQW9KRUlXaTly
QjJHclc3emw4SC9paVpPVjk5bUVFbHVKZlZzWS8yNFhSQg0KPiB5OTU5cjRwZjU2TGMyVW5mcEE5
TU1DUmdNb2tRU3A2UTdlNW45S0dDWnluVllrUnJQWENTSWd4ckZ0NjdDRA0KPiBDMg0KPiBFdmpv
QVFCQzc1dlV5YVB2M2F2OFhmK0JFa1lkUnlUVzlsanM2aXREbGFJcHV4NTcvWjZyTWZxZC9vS0xo
R0E3DQo+IHBmS2Y5eG1zOHdmTzhzVm8zVk5SclkyR0duSTQxUTRjb1cvMzdEdHZRU2dUK1Y4dklv
dnAyNlo1VDYvZG8wDQo+IHpEDQo+IHhIVEk0aWwxcU1rL0ZOTGZIaFNaY01pWWpqUHhLZnM4Qm9a
MExWOCswZGN6MXFvbHBJL0llY3BFaGpGVjlhYXkNCj4gTjJoRG9rTkdxRkYxZWVkOGNZa2NsU1hp
WkZ4amZzbWoreTNnd0F1M3RCUkZpaGdKNjRUdnR1c0E2WU5TWFVJPQ0KPiA9ZmY2UQ0KPiAtLS0t
LUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

